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

使用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

8岁身高134竟然矮了18厘米!哈医大一院群力儿科专家提醒身高要参考骨骼年龄防范肥胖引发的疾病孩子是家庭的希望,孩子是祖国的未来。每一个小朋友在成长的每个阶段,都需要成年人细致照顾和贴心关注。哈尔滨医科大学附属第一医院群力小儿内科主任崔岚巍教授介绍,因为生长发育问题来门诊就这5种疾病可能无法被治愈,你知道吗?别再乱花冤枉钱了老李今年63岁,10年前就查出了高血压,也一直通过服药来稳定,但是,日复一日的服用药物,让他感到厌倦,他经常抱怨这些年吃的降压药,估计能够填满整个房间的抽屉了,唉,要是能够彻底摆脱小孩脸上有个包,不是蚊子咬,警惕是这种疾病齐鲁晚报齐鲁壹点记者韩虹丽通讯员徐静静孩子的脸上有个小硬物,像个小包快,奶奶说是蚊子咬的,邻居说像血管瘤。不会真得了什么病吧,这可急坏了小宝的妈妈。经过山东大学齐鲁儿童医院的检查,Knight加盟BLG已成定局!LPL多方线索显示BLG将组建超级强队各位LPL的观众和英雄联盟召唤师大家好,这里是天下游戏汇。昨天经历了Faker的离队风波之后,LCK现在展开了对Nuguri最后的争夺,本以为Nuguri已经签约DK了,但是后面N航天员上太空可以带枪吗?俄罗斯不讲武德,竟然藏在救生包里随着神舟十二号的成功上天,激发了很多人对航天事业的关注,也有着各种奇奇怪怪的问题出现。其中有人好奇,如果航天员在太空中打起来怎么办?他们会带枪上太空吗?随着人类探索宇宙的脚步一步步奥尼尔生涯三分球22投1中,命中率4。5,姚明邓肯霍华德呢?自从小球时代来临后,几乎所有的球星都会一手三分,包括那些本该制霸篮下的四号位和五号位,以约基奇为例,他在上赛季一共出手过237次三分,命中92球,命中率高达38。8,而到了新赛季,火箭战胜公牛塞拉斯做了这些调整才是获胜的关键北京时间11月25日,火箭在主场以118113战胜公牛队,终结了15连败,拿到赛季的第2场胜利,而公牛则遭遇两连败。本场比赛开始前,据美国媒体报道,据多位消息人士透露,火箭正在权衡俄罗斯112月,全给你安排妥妥滴112月,每月一个俄罗斯城市地区,一整年都给你安排得妥妥滴!准备好,出发1月贝加尔湖()1月,最美好的开始,一定要献给贝加尔湖。1月中旬,蓝冰季开始!一切魔幻的唯美的冻人的让人难以当湖人遇到困境,詹姆斯应该怀念谁?詹姆斯是这个星球上最好的球员之一,至少在过去的十年里,这个理论都没有任何问题。詹姆斯一次次上演奇迹,带领球队取得新的巅峰。给破败的湖人带来希望,给克利夫兰带来历史上的第一座总冠军奖孩子普遍烂牙,跟家长有直接关系,一个习惯养成轻松保护宝宝牙齿我是一个全职妈妈,一个不断实现自我价值的全职妈妈。拒绝焦虑,拒绝内卷,轻松育儿,理性对待婚姻生活,宽容应对婆媳关系,希望我的一些观点能够让你豁然开朗,能够带给你正能量,解决你的现实刘涛对自己真够下血本的,把自己的牙齿全部敲掉,换成全新烤瓷牙拼命三娘刘涛对自己也是真够下血本的,曾因自己的牙齿黄,不整齐,影响自己的演艺事业,痛下决心,把自己的牙齿全部敲掉,换成全新的烤瓷牙。据说刘涛换的烤瓷牙一颗就价值4万元,那满满的一嘴
为什么穿丝袜的女孩子,都喜欢脱鞋晾脚?不知道大家有没有注意过穿丝袜的女孩子们都会出现的共性现象脱鞋晾脚就连美若天仙的女明星张馨予也忍不住想脱鞋晾晾脚遭到网友的强烈批评指责其不顾个人形象,素质差!那么可爱的女孩子们为什么恩比德4253无缘今日最佳!因为哈登狂砍14920刷新联盟4大记录今天NBA的比赛不算多,但有不少球员有着精彩的表现。利拉德格兰特杰伦布朗特雷杨巴特勒约基奇英格拉姆哈里伯顿恩比德哈登等人发挥出色,数据也不错。但要被评为今日最佳球员的那一位是毫无悬陆仙人法国首秀气质不输国际超模从农村野模登上巴黎时装周近日,一个草根模特陆仙人,他来自中国广西,最开始通过运用树枝和塑料布等材料制作成服饰,走红网络,最终登上了巴黎时装周,在国际上展示我们的中国风采。这个故事传达出一种草根精神,即使没国际超模刘雯脸颊塌陷,颧骨高突,瘦到脱相哪里美?国际超模刘雯在巴黎时装周上完全释放了自己?上身只有两条绑带遮住,几乎一丝不挂,瘦到肩胛骨突出,脸颊完全凹陷,颧骨很高,两条黑丝带象征性的遮住那不高的峰这就是世界闻名中国长沙出生的超她被誉为体坛第一美女,颜值身材碾压女明星,今晒照怀孕即将临盆你膨胀了我的身体,却温暖了我的心!这是前艺术体操运动员舒思瑶,近段时间在社交媒体上晒出自己怀孕的照片配的文。照片上,舒思瑶与富豪老公李杰都穿着黑色的情侣套装。舒思瑶的腹部凸起明显,内斯塔对阵热刺米兰不能摆大巴,必须主动攻出去让对手陷入困境直播吧3月7日讯接受米兰体育报记者采访时,米兰名宿内斯塔谈到了接下来米兰对阵热刺的次回合比赛。内斯塔表示首回合米兰10取胜,所以次回合他们就应该摆大巴吗?我不这么想,我认为恰恰相反国际乒联最新世界排名王艺迪首次超越王曼昱梁靖崑重返男单前六3月7日,国际乒联更新了2023年第10周的世界排名。男单方面,樊振东马龙和王楚钦稳居前三位,梁靖崑位列第六女单前十中,孙颖莎陈梦王艺迪王曼昱和陈幸同占据五个席位男双方面,樊振东王形如枯槁,要靠身上这两条遮丑布,才能拿国际大奖?巴黎时装周,这个起源于1910年由法国时装协会主办的秀场,全球的明星艺人超模纷纷争着蜂拥而至。有的人是为了看秀,有的人是为了工作,如超模刘雯贺聪。长期关注时尚圈的网友,纸巾啊什么都90年代明星妈妈,男明星异样的穿搭,丝袜两姐妹,用图逛历史今天在网上看见一位网友分享了妈妈的一组90年代的照片,简直太美了吧,乌黑的大波浪卷儿,扎个高马尾,这头身比例,感觉比有些明星还要漂亮千倍万倍,只可远观而不可亵玩焉,这颜值就是小说里埃弗拉我没有为曼联的惨败失去理智,如今红魔正朝正确方向前进直播吧3月7日讯曼联客场0比7惨败利物浦的余震仍在,日前曼联名宿埃弗拉和费迪南德作客FIVE播客时谈到了这场比赛。埃弗拉说我从来没有失去理智,如今的曼联正朝着正确的方向前进,但他们女人有这3个感觉,可能是排卵期来了,不用再费力花时间去算了阿紫是一家外企的经理,在公司已经工作12年了,老板眼里她是一个合格的员工,下属眼里,她是一个颇有手腕的女强人,在业内也算得上小有名气。但是这样厉害的阿紫,在家庭生活中却是一地鸡毛。