范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

使用OpenCVPython检测对象

  使用 OpenCV-Python 检测对象 Object DetectionTwo stage目标检测算法One stage 目标检测算法 Haar Cascadesexample 1example 2 SSD RetinaNet R-CNN Fast-rcnn Faster R-CNN Mask R-CNN yolo Reference 使用 OpenCV-Python 检测对象
  OpenCV 是用于计算机视觉、机器学习和图像处理的庞大开源库,现在它在实时操作中发挥着重要作用,这在当今的系统中非常重要 通过使用它,人们可以处理图像和视频以识别物体、面部,甚至是人类的笔迹。本文重点介绍检测对象。 Object Detection
  对象检测是一种与计算机视觉、图像处理和深度学习相关的计算机技术,用于检测图像和视频中的对象实例
  目标检测算法的任务是找出图像中所有感兴趣的目标(物体),确定他们的类别和位置。
  计算机视觉中的图像分类获取图像并预测图像中的对象,而对象检测不仅可以预测对象,还可以根据边界框找到它们的位置。 例如,当我们构建游泳池分类器时,我们获取输入图像并预测它是否包含游泳池,而对象检测模型也会告诉我们游泳池的位置。
  分类和物体检测的区别?
  假设图像中最多有一个类和一个对象,那么对象检测模型的输出应该包括: 存在物体的概率 边界框的高度 边界框的宽度 边界框中心点 的水平坐标 边界框中心点的纵坐标 这只是指定输出的约定之一,不同的模型和实现可能有不同的格式,但是思路是一样的,都是输出物体的概率和位置。
  2.为什么滑动窗口方法不起作用? 很自然地想到在图像分类模型之上构建对象检测模型。一旦我们有了一个好的图像分类器,检测对象的一种简单方法是在图像上滑动一个"窗口",然后对该窗口中的图像(图像的裁剪区域)是否属于所需类型进行分类。 听起来很简单!好吧,至少有两个问题:您如何知道窗口的大小以使其始终包含对象?不同类型的对象(棕榈树和游泳池),即使是相同类型的对象(例如小型建筑物和大型建筑物)也可以具有不同的大小。 纵横比(边界框的高宽比)。许多物体可以以各种形状存在,例如建筑物的占地面积与棕榈树的纵横比不同。 为了解决这些问题,我们必须尝试不同大小/形状的滑动窗口,这是非常计算密集的,尤其是对于深度神经网络。
  在实践中,主流的目标检测算法有两种: Two stage目标检测算法
  首先识别预计会找到对象的区域,然后使用卷积网络仅在这些区域中检测对象。先进行区域生成(region proposal,RP)(一个可能包含待检测物体的预选框),再通过卷积神经网络进行样本分类。 任务:特征提取->生成RP->分类/定位回归。 常见Two stage目标检测算法有:R-CNN、SPP-Net、Fast R-CNN和R-FCN等。 One stage 目标检测算法
  另一方面,像 YOLO(You Only Look Once)[1] 和 SSD(Single-Shot Detector)[2] 等算法使用完全卷积的方法,其中网络能够一次找到图像中的所有对象( 因此通过卷积网络"单次拍摄"或"看一次"不用RP,直接在网络中提取特征来预测物体分类和位置。 任务:特征提取->分类/定位回归。 常见的one stage目标检测算法有:OverFeat、YOLOv1、YOLOv3、SSD和RetinaNet等。
  Haar Cascades
  Haar特征选择 类似 Haar 的特征由暗区和亮区组成。 它通过取暗区域强度之和与亮区域强度之和的差来产生单个值。 这样做是为了提取识别对象所需的有用元素。 viola 和 jones 提出的特征是:
  创建积分图像(Integral Images) 积分图像中的给定像素是左侧所有像素及其上方所有像素的总和,由于提取 Haar-like 特征的过程涉及计算暗矩形区域和亮矩形区域的差异,积分图像的引入显着减少了完成此任务所需的时间 AdaBoost Training该算法从所有特征中选择最佳特征,它将多个"弱分类器"(最佳特征)组合成一个"强分类器",生成的"强分类器"基本上是所有"弱分类器"的线性组合。 级联分类器(Cascade Classifier)它是一种将越来越复杂的分类器(如 AdaBoost)组合在级联中的方法,它允许快速丢弃负输入(非人脸),同时在有希望或正人脸区域上花费更多计算。它显着减少了计算时间并提高了处理效率。 example 1
  Opening an image import cv2 from matplotlib import pyplot as plt   # Opening image img = cv2.imread("image.jpg")  # OpenCV opens images as BRG # but we want it as RGB and # we also need a grayscale # version img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # Creates the environment # of the picture and shows it plt.subplot(1, 1, 1) plt.imshow(img_rgb) plt.show()
  Recognition 我们将使用 OpenCV 的 detectMultiScale() 函数来识别大符号和小符号: # Use minSize because for not  # bothering with extra-small  # dots that would look like STOP signs found = stop_data.detectMultiScale(img_gray,                                     minSize =(20, 20))    # Don"t do anything if there"s  # no sign amount_found = len(found)       if amount_found != 0:            # There may be more than one     # sign in the image     for (x, y, width, height) in found:                    # We draw a green rectangle around         # every recognized sign         cv2.rectangle(img_rgb, (x, y),                        (x + height, y + width),                        (0, 255, 0), 5)import cv2 from matplotlib import pyplot as plt  # Opening image img = cv2.imread("image.jpg")  # OpenCV opens images as BRG # but we want it as RGB We"ll # also need a grayscale version img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)   # Use minSize because for not # bothering with extra-small # dots that would look like STOP signs stop_data = cv2.CascadeClassifier("stop_data.xml")  found = stop_data.detectMultiScale(img_gray, 								minSize =(20, 20))  # Don"t do anything if there"s # no sign amount_found = len(found)  if amount_found != 0: 	 	# There may be more than one 	# sign in the image 	for (x, y, width, height) in found: 		 		# We draw a green rectangle around 		# every recognized sign 		cv2.rectangle(img_rgb, (x, y), 					(x + height, y + width), 					(0, 255, 0), 5) 		 # Creates the environment of # the picture and shows it plt.subplot(1, 1, 1) plt.imshow(img_rgb) plt.show()
  example 2
  OpenCV 带有许多预训练的分类器。这些 XML 文件可以通过 cv2 模块的 cascadeClassifier 方法加载。在这里,我们将使用 haarcascade_frontalface_default.xml 来检测人脸。 import cv2 from matplotlib import pyplot as plt  # loading the image img = cv2.imread("./img/footballteam.png")  # converting the image to grayscale # 最初,图像是三层图像(即RGB),因此将其转换为一层图像(即灰度)。 gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 加载所需的 haar-cascade XML 分类器文件 # cv2模块中的CascadeClassifier方法支持加载haar-cascade XML文件 # 要"haarcascade_frontalface_default.xml"进行人脸检测。 haar_cascade = cv2.CascadeClassifier("./img/haarcascade_frontalface_default.xml")  # Applying the face detection method on the grayscale image #在灰度图像上应用人脸检测方法 # 这是使用 cv2::CascadeClassifier::detectMultiScale 方法完成的,该方法返回检测到的人脸的边界矩形(即 x、y、w、h)。 #  它有两个参数,即 scaleFactor 和 minNeighbors。 ScaleFactor 确定窗口大小的增加因子,最初从大小"minSize"开始, # 并且在测试了该大小的所有窗口之后,窗口被"scaleFactor"放大,窗口大小上升到"maxSize"。 # 如果"scaleFactor"很大,(例如,2.0),步骤会更少,所以检测会更快,但我们可能会错过大小在两个测试尺度之间的对象。 (默认比例因子为 1.3)。 # "minNeighbors"的值越高,误报的数量就越少,在人脸错误检测方面的错误也就越少。 但是,也有可能遗漏一些不清楚的面部痕迹。  faces_rect = haar_cascade.detectMultiScale(gray_img, scaleFactor=1.1, minNeighbors=9)  # Iterating through rectangles of detected faces # 遍历检测到的人脸的矩形 # 通过 cv2 模块的 rectangle 方法通过迭代所有检测到的人脸,在检测到的人脸周围绘制矩形。  for (x, y, w, h) in faces_rect:     cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), thickness=2)  cv2.imshow("Detected faces", img) cv2.waitKey(0)  plt.subplot(1, 1, 1) plt.imshow(img) plt.show()
  input:
  output:
  ps: 我们假设您对卷积神经网络 (CNN) 概念有一些基本了解。 您可以通过阅读这篇简短的论文"深度学习卷积算法指南"来更新您的 CNN 知识 SSD
  SSD 是一个统一的单一网络目标检测框架。
  RetinaNet
  RetinaNet 是最好的单阶段目标检测模型之一,已被证明可以很好地处理密集和小规模目标。因此,它已成为一种流行的对象检测模型,可用于航空和卫星图像。 R-CNN
  R-CNN(具有卷积神经网络的区域)架构是多种算法的组合。 它首先使用选择搜索算法来选择 2000 个可能包含对象的区域建议。 这些区域提议或感兴趣区域(RoI)中的每一个都通过卷积网络进行处理以获得特征图。 然后将特征图传递给 SVM 模型以对对象类进行分类,并传递给回归模型以获得紧密的边界框 [2]。 这种方法在当时虽然新颖,但速度极慢 预训练模型。选择一个预训练模型(pre-trained)神经网络(如AlexNet、VGG)。 重新训练全连接层使用需要检测的目标重新训练(re-train)最后全连接层(connected layer)。 提取prosals并计算 CNN 特征。利用选择性搜索(Slective Search)算法提取所有prosals(大约2000幅images),调整(resize/warp)它们固定大小,以满足CNN输入,然后将feature map 保存到本地磁盘。 训练 SVM 。利用feature map 训练SVM来对目标和背景进行分类(每个类一个二进制SVM)。 边界框回归(Bounding boxes Regression)。训练将输出一些校正因子的线性回归分类器。
  Fast-rcnn将原图上的提议框按照几何比例缩放到特征图上 利用RoI Pooling将不同尺寸的特征图变换到相同大小 最后基于相同尺寸的特征图进行分类和回归。 Fast R-CNN 是对 R-CNN 的改进。 在这个模型中,不是将 2000 个区域中的每一个都输入到单独的 CNN 中,而是将整个图像输入到单个 CNN 中。 这导致所有感兴趣区域的组合特征图。 使用类似于 R-CNN 中使用的算法来选择区域建议。 一个 RoI 池化层用于提取所有候选区域的特征图并将其调整为相同大小。 然后将其传递到具有两个分支的全连接层 - 一个 softmax 分类器为每个类提供概率,一个边界框回归器用于精确的边界框坐标 [3]。 与 R-CNN 相比,这种设计加快了目标检测任务,但仍不足以处理大型数据集。 Faster R-CNN
  在 Faster R-CNN 出现之前,它的同时代人一直在使用各种算法进行区域提议,这些算法在 CPU 上进行计算并造成瓶颈。 Faster R-CNN 通过将 Fast R-CNN 中的选择搜索算法替换为称为区域提议网络 (RPN) 的卷积网络来改进对象检测架构。 模型架构的其余部分与 Fast R-CNN 相同——图像被馈送到 CNN 以生成特征图,RPN 提出的区域的特征从中被选择并由池化层调整大小并馈送到 FC 层 有两个头,一个softmax分类器和一个边界框回归器。 这种设计提高了检测速度并使其更接近实时 输入、数据预处理。首先,假设样本图片image,尺寸大小Q×P,将其输入Faster-RCNN网络,然后进行resize操作,处理图片的尺寸到H×W,适应模型要求。 Conv layers(backbone提取特征)。Faster-RCNN可以采用多种的主干特征提取网络,常用的有VGG,Resnet,Xception等等。该feature maps被共享用于后续RPN层和全连接层。也就是使用共享的卷积层为全图提取特征。 Region Proposal Networks。RPN网络用于生成region proposals(目标候选区域)。将RPN生成的候选框投影到特征图上获得相应的特征矩阵。该层通过softmax判断anchors(锚)属于前景或者背景,再利用bounding box regression修正anchors获得精确的proposals。 RoI Pooling。该层收集输入的feature maps和proposals,将每个特征矩阵缩放到7×7大小的特征图,综合这些信息后提取proposal 和feature maps,送入后续全连接层判定目标类别。 Classifier。通过全连接层得到最后的概率,计算得到类别,同时再次bounding box regression获得检测框最终的精确位置。尤其注意的是,Faster R-CNN真正实现了端到端的训练(end-to-end training)。 Mask R-CNN
  (....)yolo
  YOLO(You Only Look Once)是最受欢迎的对象检测模型系列之一。它的优势在于提供实时检测,同时接近最先进的对象检测模型的准确性。 在早期的目标检测工作中,模型要么使用滑动窗口技术,要么使用区域提议网络。滑动窗口,顾名思义,通过在图像上滑动窗口来选择感兴趣区域 (RoI),然后在所选 RoI 中执行分类以检测对象。
  区域提议网络分两步工作——首先,它们提取区域提议,然后使用 CNN 特征对提议的区域进行分类。滑动窗口方法不是很精确和准确,尽管一些基于区域的网络可以非常准确,但它们往往速度较慢。随后出现了 SSD、YOLO 和 RetinaNet 等一次性目标检测器。这些模型在图像的单次通过中检测对象,因此速度更快,并且可以匹配基于区域的检测器的准确性。 SSD 指南解释了一次性目标检测模型的基本组成部分。您还可以在此处阅读 RetinaNet 指南。这些模型已经是 ArcGIS API for Python 的一部分,并且 YOLOv3 的添加在我们的深度学习工具箱中提供了另一个工具。 arcgis.learn 中 YOLOv3 的最大优势在于它预加载了在 COCO 数据集上预训练的权重。这使得它可以立即用于作为 COCO 数据集一部分的 80 个常见对象(汽车、卡车、人等)
  ReferenceA guide to convolution arithmetic for deep learning Fast R-CNN Rapid Object Detection using a Boosted Cascade of Simple Features Computer Vision and Pattern Recognition/SSD: Single Shot MultiBox Detectorcode : https://github.com/weiliu89/caffe/tree/ssdPPT : http://www.cs.unc.edu/~wliu/papers/ssd_eccv2016_slide.pdf RetinaNet/ Focal Loss for Dense Object Detectioncode : https://github.com/facebookresearch/Detectron YOLOv3 Object Detector You Only Look Once: Unified, Real-Time Object Detection YOLO9000: Better, Faster, Stronger Rich feature hierarchies for accurate object detection and semantic segmentation Fast R-CNN Towards Real-Time Object Detection with Region Proposal Networks darknet opencv cascade classifier training Faster R-CNN Object Detector 一文读懂Faster RCNN 目标检测之Faster R-CNN Faster R-CNN详解code: https://github.com/rbgirshick/py-faster-rcnn Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

淘宝真的不行了吗?我给大家报道一下把,淘宝最近出了个特陶,我在特陶上买了20节5号南孚电池,购买时特意咨询了商家质量问题,商家放心购买,因此我就下单买了,因为是特陶,价格比较便宜总共付了不到19元把假如允许球员自由转会,队员是愿意转会到天津女排还是江苏女排?这个问题问一下袁心玥,就能得到满意的答案。袁心玥是最有体会,也是最有发言权的。看看袁心玥在江苏队像个受气包似的。袁心玥在天津女排开心的像个孩子一样,这才是充分的享受排球带来的快乐。世界上哪个足球俱乐部的球迷最多?个人认为世界足球俱乐部里球迷最多的应该是曼联,当然我并没有能力做细致的调查,只是单纯的通过我对于足球的了解所做的判断。很多人会说现在足坛球迷最多的俱乐部一定是皇马和巴萨,没错,论粉本赛季最后悔的球员非贝兹莫尔莫属,他是否会成为下一个考辛斯?贝兹莫尔湖人是给过机会,刚开始来湖人,球队还让他打首发,不过效果不太好,进攻端太差了,三分投不进到算了,就连上空篮都不进,这就离谱了。湖人选择贝兹莫尔是看中他的三分跟防守,说实话贝中国男篮VS日本男篮一触即发,你认为杜锋的双塔战术会赢吗?双塔肯定要陪3控卫组合,周琦被隔离导致双塔战术失效,我们凑齐最优秀的控卫和内线杜锋今年的选人就充分考虑名气和状态,甚至控卫的人选让他把容易配合的内线搭档也带来,从队伍看是广东和辽宁闲鱼上有经历过比较什么吃惊的事情吗?我在闲鱼上卖一台尼康P900s,几乎全新因为没啥机会用,开价3000,一位二手商家来买,讲价到2800,他拍下,我改价,第二天我发货,然后收货确认交易完成。过了两个礼拜,我不知为啥广州队欠薪球员停训,120亿球场被收回,为何有人落井下石?广州队昔日的风光让不少人心生嫉妒,如今球队遇到困难就会有人落井下石。世预赛战罢,中超停摆,足协杯等着决赛,亚冠联赛冠军出炉的感觉刺激着中国球迷的神经。在2021赛季亚冠联赛当中,阿你是怎么来到的,头条什么最吸引你?我是无意中稀里糊涂进的头条,当时看的什么已记不住了,然后稀里糊涂的登了录,又在悟空问答里稀里糊涂的答了一个问题,就这样稀里糊涂的走到了现在在头条吸引我的地方,就是可以在这里写自己的为何感觉足球运动员比赛90分钟都不喊累,而篮球48分钟却累的虚脱呢?大错特错!谁说足球运动员比赛90分钟不喊累?我平时足球踢的多,篮球也玩,但相对足球来说少一些,我来回答这个问题!足球运动和篮球运动都是对体力消耗特别大的运动,但两者之间又有很多不同市级国企,薪酬待遇并不高,但是并不好进入。为什么?我是一名HR,关注我,为你解答职场困惑。国企本来工资就不高呀,国企的工作主要是稳定性和福利好,工作压力小,至于为什么难进,有以下原因一国企对员工要求较高别看很多国企效益不咋地,但是国乒拿了那么多世界冠军,收入却不如足球篮球,心里会不平衡吗?国乒收入没有那么低,也只有极个别的球员收入高于国乒题主说的国乒运动员指的应该是世界冠军,乒乓球被称为国球,一方面是因为容国团拿到第一个世界冠军,另一方面也是因为国乒在过去几十年守业
VIVO迭代新旗舰加量不加价?这样的拍照旗舰机你爱了嘛?说起今年的国产手机,蓝系真的很努力。iQOO从iQOO9系列更新到Neo6系列,骁龙8天玑9000轮番登场,尤其是快速充电直接升级到200W,10分钟充满电的体验,从第二季度开始,NVIDIAGeForceRTX4080显卡实物泄露,同样更酷更厚的设计NVIDIAGeForceRTX4080FounderEdition显卡,双插槽但更厚的设计据称NVIDIAGeForceRTX4080FoundersEdition显卡的第一批图iPhone14系列要来了,现在降价的iPhone13系列,还值得入手吗?说实话,离iPhone14系列发布的日子,确实没有多久了。很多老果粉都关注着iPhone14系列的消息,想着等iPhone14系列上市以后,然后就把手头上的手机给换掉。要知道iPh续航黑科技?华为Mate50系列没电也能用进入9月,新一轮的旗舰大战也正式拉开帷幕,其中最引人注目的自然是很快就将与我们见面的华为Mate50系列和苹果iPhone14系列,其中前者将于9月6日正式亮相。随着发布会进入最后别着急买iPhone13!这款国产影像旗舰更值得入手,颜值高性能强头条创作挑战赛可能很多朋友在入手旗舰机的时候,会先考虑iPhone手机,比如畅销的iPhone13,但其实国产高端旗舰机也热闹起来了,而且无不例外都是主攻影像系统,各大厂商都发布了OnitsukaTiger鬼塚虎发布2022秋冬TIGERBODY系列日本时尚品牌OnitsukaTiger鬼塚虎不断呈献富于现代气息的系列单品,巧妙结合经典传承与锐意创新,并融蕴时尚格调与运动风范。OnitsukaTiger鬼塚虎发布2022秋冬T为什么马云要在欧洲两个多月,难道又赚了几个亿?马老师最传奇的地方,或许不是创立了阿里,不是开创了支付宝,而是在巅峰时刻选择了退休,留给世人一个最闪耀的背影。就如同他喜欢的金庸武侠小说中的武侠大师,从此隐退,过闲云野鹤的日子,深朱之文和袁庆在视频里显得特别的暧昧,不知道大衣嫂会不会吃醋?8月23日,著名歌唱家大衣哥朱之文和袁庆在视频里面显得特别的暧昧,而且袁庆看到大衣哥在对她傻笑,还特别的害羞。网友看到这里吐槽不知道大衣嫂玉华看到这个视频会不会吃醋呀。袁庆看大衣哥感知微末,见于芯底,骁龙8K视频,让真实触手可及无论是专业摄影人士还是普通的拍摄小白,都对像素有着近乎偏执的追求,像素越高,拍出的成品就会更为清晰细节丰富,即使放大很多倍去看,依然如初。手机影像技术在近十来年得到了长足的发展,从海关总署前8月我国外贸进出口总值同比增长10。1央视新闻海关总署今天(7日)公布,今年前8个月,我国外贸进出口总值27。3万亿元,同比增长10。1。其中,出口15。48万亿元,同比增长14。2进口11。82万亿元,同比增长5。2国家能源局进一步推动大型风电光伏基地建成并网中证网讯(记者张军)9月7日,国家能源局网站消息,9月2日,国家能源局召开8月份全国可再生能源开发建设形势分析视频会。会议要求,要进一步推动大型风电光伏基地建成并网,第一批基地项目