目标检测(Object Detection)实质上上多目标的定位,即在一个图片中定位多个目标物体,包括分类和定位,也就是多个目标分别在哪里?分别属于那个类别?
图像分类常用算法:
VGG
GoogleNet
ResNet
目标检测常用算法:
RCNN
Fast RNN
Faster RCNN
SSD
YOLO
目标检测
检测图片中所有物体(模型关注的物体)的
●类别标签(Category Label)
●位置(最小外接矩形/Bounding Box) 通常表示为(x,y,w,h),其中(x,y)表示矩形框中心坐标,(w,h)表示矩形框长宽。
目标检测和其他任务的区别:
什么是语义分割?
与普通的图像分类任务不同,语义分割要求对图像中的每个像素进行分类,而不仅仅是对整个图像进行分类。换句话说,语义分割的目标是为图像中的每个像素赋予一个标签,指示其所属的语义类别。这意味着图像中的不同区域(如物体、背景、人等)都应被准确地标注和分割出来。
目标检测的步骤:
●目标检测主要需要解决三个问题 :
怎样确定位置(什么地方有目标)
怎样提取特征
怎样分类(目标属于什么类别)
●传统的目标检测一 般使用滑动窗口的框架,主要包括三个步骤:
利用不同尺寸的滑动窗口框出图中的某一 部分作为候选区域;
提取候选区域相关的视觉特征。比如人脸检测常用的Harr特征;行人检测常用HOG特征等;
利用分类器进行识别,比如常用的SVM模型。
R-CNN
在传统目标检测算法中,多尺度形变部件模型(DPM)的效果相对是比较优秀的;在DPM中将物体看成是多个不同组件的结合,其效果不错,但是检测速度相对比较慢。随着深度学习模型效果的优化,基于深度学习的目标检测算法盖过了传统计算机视觉中的目标检测算法(DPM),从而导致很多之前研究传统目标检测算法的人员转向深度学习,并且现在工业界中应用最多的目标检测方式以深度学习为主。
R-CNN是奠定深度学习方向发展目标检测的的基础算法,是第一个真正可以工业级应用的目标检测解决方案,是结合区域提名(RegionProposal)和卷积神经网络(CNN)的一种目标检测算法。
基于深度学习的目标检测算法
●目前主流的目标检测算法主要是基于深度学习模型,主要可以分为两大类: two-stage检测算法和one- stage检测算法。
●two-stage检测算法将检测问题划分为两个阶段,首先基于region proposals (区域推荐)产生目标候选框,然后再对候选区域进行分类与回归,这类算法实现主要有: R-CNN、SPPNET、 FastR-CNN、 FasterR-CNN等 。
●one-stage检测算法是一 种端到端的检测算法,仅仅使用一个卷积神经网络CNN直接预测不同目标的类别与位置,这类算法实现主要有: SSD、 YOLO、 FPN等。
什么是Region Proposal?
Region Proposal是目标检测领域的一个关键概念。它是指在图像中提出潜在包含物体的候选区域,以便进一步对这些区域进行分类和定位。
Region Proposal的常见方法包括:
-
Selective Search(选择性搜索): 自底向上通过合并相似的区域来生成最终的候选区域。
-
EdgeBoxes: EdgeBoxes是一种基于边缘检测的Region Proposal方法,它利用图像中的边缘信息来定位候选区域,以提高检测的效率和准确率。
-
R-CNN系列方法(如Fast R-CNN、Faster R-CNN等): 这些方法通过引入区域建议网络(Region Proposal Network,RPN),在图像中生成候选区域,并与分类器共同训练,从而实现端到端的目标检测。
置信度
●一幅图片的检测结果,由多个Bounding Box组成,一个Bounding Box包括以下信息:
Bounding Box的位置信息(x,y,w,h)以及这个Bounding Box的置信度。
Bounding Box的位置信息(x,y,w,h)由中心点坐标和宽高组成。
Bounding Box的置信度表示该边框包含目标的概率。
●Bounding Box的置信度的计算通常基于边界框与目标的重叠程度、目标的大
小和形状等因素。不同的目标检测算法可能使用不同的方法来计算置信度(不同算法下置信度是没有比较意义的),但它们的基本思想是相似的。
●属于每个类别的置信度,这个置信度与图片分类任务的置信度的定义是相同的。
IoU(评价Region Proposal定位精度的评价方式)
IoU(Intersection over Union)。IoU定义了两个bounding box的重叠度,也就是两个bounding
box重叠区域的面积占总面积的比值。
mAP指标
前面我们已经讲述了如何计算Precision和Recall,但是,正如前面所述,至少有两个变量会影响Precision和Recall,即IoU和Bounding Box的置信度阈值。IoU是一 个简单的几何度量,可以很容易标准化。但是置信度却在不同模型会差异较大,可能在一个模型中置信度采用0.5却等价于在其它模型中采用0.8置信度,这会导致precision-recall曲线变化。为此,PASCAL VOC组织者想到了一 种方法来解决这个问题,即要采用一种可以用于任何模型的评估指标,即mAP(mean Average Precision)。
mAP(mean Average Precision)在目标检测中定义为平均精度评估指标值。mAP就是 每一类平均精度AP (Average Precision) 的均值。AP就是对PR曲线(P:precision, R: recall, 横轴R,纵轴P)求均值。
根据predict的置信度阈值进行排序, 上图中就是predict1 (0.9)、 predict2(0.8)、 predict3(0.7)的顺序,计算在不同阈值的情况下,Predicision和Reall的值:
●阈值0.9,无视所有小于0.9的predict(只对最左边的预测计算精度),那么此时TP=1,FP=0,precision=1,所有标签数目为3,那么recall=1/3;
●阈值0.8,无视所有小于0.8的predict(只对前两个预测计算精度),那么此时TP=1, FP=1, precision=1/2,所有标签数目为3,那么recall=1/3;
●阈值0.7,无视所有小于0.7的predict(对三个预测都计算精度), 那么此时TP=2, FP= 1, precision=2/3, 所有标签数目为3,那么recall=2/3。
NMS
●非极大值抑制(Non-Maximum-Suppression,NMS),顾名思义就是抑制不是极大值的元素,可以理解为局部最大搜索。是目标检测中常用的一种精修bounding box的方式。
●产生proposal后使用分类网络给出每个框的每类置信度,使用回归网络修正位置,最终应用NMS返回最终位置。
对于CNN网络提取出来的Bounding Box列表B以及其对应的置信度S,采用下列执行过程来进行NMS操作:
- 从S和B中选择最大置信度score(至少大于0)以及对应Bounding Box框M,将其从B/S集合中移除,并将M加入到最终检测结果集合D中。
- 计算B中剩下所有的Bounding Box和M之间的IOU值,如果|OU值大于阈值t,那么表示这两个框比较相似,则将其从集合B中移除,否则不进行任何操作。
- 重复上述两个操作,直到集合B为空。
- NOTE: .上述操作针对每个类别进行操作。
lambelimg
功能:一种进行目标检测的标注工具;
官网: https://github.com/heartexlabs/labelimg
安装: pip install labelimg
文章来源:https://www.toymoban.com/news/detail-838261.html
文章来源地址https://www.toymoban.com/news/detail-838261.html
到了这里,关于【目标检测】1. 目标检测概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!