一文读懂目标检测(入门版)

目标检测(Object Detection)是计算机视觉(Computer Vision,CV)领域的一个热门方向,广泛应用于自动驾驶,工业检测,视频监控及航空航天等领域,其基本流程是在给定图像中找到关注目标,确定目标类别并输出相应的坐标位置(常使用矩形框)。

图像分类、目标检测、分割是计算机视觉领域的三大任务
图像理解的三个层次
图 图像理解的三个层次

1.分类(Classification),对输入的图像进行描述,从已有的类标签集合中找出最符合的标签分配给该图像。分类虽然是最简单、最基础的图像理解任务,但却为其他复杂任务奠定了基础。
2.检测(Detection),相对于分类任务关心整体,给出整幅图像的内容描述,检测更加关注目标,需要同时获得目标的类别及位置信息(Classification+Localization)。

3.分割(Segmentation),分割包括语义分割(Semantic Segmentation)和实例分割(Instance Segmentation),前者是对前背景分离任务的拓展,要求将图中每一点像素标注为某个物体类别,同一物体的不同实例不需要单独分割; 而后者是检测任务的拓展,是目标检测+语义分割的综合体,要求精确到物体的边缘(相比目标识别框更为精细),相比语义分割,实例分割可以标注出图像中的不同个体。

语义分割与实例分割对比
图 语义分割与实例分割对比

图像分类是将图像划分为单个类别(一般对应特征最为明显的物体),但现实世界中的大部分图像通常包含不只一个物体,如果强行使用分类模型进行分类,得到的结果也并不一定准确。诸如此类的情况,就需要使用目标检测算法,目前学术和工业界主要将目标检测算法分成三类:

1.传统的目标检测框架
(1)候选区域选择(滑动窗口、选择性搜索等);
(2)对不同的候选区域进行特征提取(SIFT、HOG等);
(3)使用分类器进行分类(SVM、Adaboost等)。

2.基于深度学习的Two Stages目标检测框架(准确度有优势)
此类算法将检测问题分为两个阶段,第一阶段生成大量可能含有目标的候选区域(Region Proposal),并附加大概的位置信息;第二个阶段对其进行分类,选出包含目标的候选区域并对其位置进行修正(常使用R-CNN、Fast R-CNN、Faster R-CNN等算法)。

3.基于深度学习的One Stage目标检测框架(速度有优势)
此类检测算法属于端到端(End-to-End),不需要生成大量候选区域的阶段,而是将问题转化为回归(Regression)问题处理,使用完整图像作为输入,直接在图像的多个位置上回归出该位置的目标边框及所属类别(常使用Yolo、SSD、CornerNet等算法)。

常用指标
1…mAP(mean Average Presion)
在多类别检测中,每个类别都有一个0~1之间的数值,用来衡量模型的performance,取所有类别的AP平均值就是mAP(相同数据集下,mAP值越大越好)。

2.FPS(每秒传输帧数,Frames Per Second)
用于评判系统速度,FPS越高,实时性越好。

总结
未来的工作主要集中在准确度与速度的博弈之中。
各种目标检测算法的详细介绍请参考我的其他文章。

猜你喜欢

转载自blog.csdn.net/weixin_41006390/article/details/105086823