从图像识别到目标检测

图像识别是将图像划分为单个类别,通常对应于图像中最突出的物体。但是现实世界的很多图像通常包含的不只是一个物体,此时如果使用图像识别模型为图像分配一个单一标签其实是非常粗糙的,并不准确。对于这样的情况,就需要目标检测(object detection)。
目标检测简单来说就是在图像识别的基础上,以包围盒(bounding box)的形式把物体框出来。目标检测在很多场景有用,如无人驾驶和安防系统。

一、目标检测的基本概念

1、bbox(包围盒)

bbox(bounding box)是定位任务里的概念,即给出物体在图片中的定位区域。一般表示为(xmin, ymin, xmax, ymax)。(xmin, ymin)为bbox左下角的坐标,(xmax, ymax)为右上角的坐标。

2、IoU(交并比)

IoU(Intersection over Union)表示预测框(candidate bound)与真实框(ground truth bound)之间的重叠程度,也就是它们的交集与并集的面积比,计算公式为:IOU=(A∩B)/(A∪B)。IOU越大,说明两个边框重合度越高。最理想情况是完全重叠,即比值为1。

3、NMS(非极大值抑制)

目标检测的过程中在同一目标的位置上会产生大量的候选框,这些候选框相互之间可能会有重叠,此时我们需要利用非极大值抑制找到最佳的目标边界框,消除冗余的边界框。

二、目标检测算法综述

1、传统的目标检测框架

滑窗法(Sliding Window)是一种经典的目标检测方法。
主要包括四个步骤:
(1)利用不同尺寸的滑动窗口框住图中的某一部分。
(2)提取窗口内的视觉特征,比如人脸检测常用的Harr特征,行人检测和普通目标检测常用的HOG特征等。
(3)利用分类器进行识别,比如常用的SVM模型。
(4)对检测到目标的窗口采用非极大值抑制(Non-Maximum Suppression, NMS)的方法进行筛选。

滑窗法简单易于理解,但是按不同窗口大小进行图像全局搜索导致效率低下,而且设计窗口大小时候还需要考虑物体的长宽比。所以,不推荐使用滑窗法。

2、深度学习目标检测框架

基于深度学习算法的一系列目标检测算法大致可以分为两大流派:
两步走(two-stage)方案:先产生候选区域然后再进行CNN分类(RCNN系列)。
一步走(one-stage)方案:不需要产生候选区域,将目标检测作为回归任务来处理(YOLO系列)

三、目标检测常用的数据集

目标检测常用的数据集包括PASCAL VOC、ImageNet、MS COCO等,这些数据集用于研究者测试算法性能或者用于竞赛。

1、PASCAL VOC

PASCAL VOC是目标检测、分类、分割等领域一个有名的数据集。从2005到2012年,共举办了8个不同的挑战赛。PASCAL VOC包含约10,000张带有边界框的图片用于训练和验证。但是,PASCAL VOC数据集仅包含20个类别,因此其被看成目标检测问题的一个基准数据集。
官方网址

2、ImageNet

ImageNet在2013年放出了包含边界框的目标检测数据集。训练数据集包含500,000张图片,属于200类物体。由于数据集太大,训练所需计算量很大,因而很少使用。同时,由于类别数也比较多,目标检测的难度也相当大。
官方网址

3、MS COCO

COCO(Common Objects in Context)是一个新的图像识别、分割和图像语义数据集,由微软赞助,图像中不仅有标注类别、位置信息,还有对图像的语义文本描述。
官方网址

四、目标检测的评估指标

1、mAP(检测精度指标)

首先需要介绍P-R曲线,它是以精度(precision)和召回率(recall)作为纵、横轴坐标,通过选取不同阈值时对应的精度和召回率画出的二维曲线。一般来说,精度越高,召回越低,反之亦然。

P-R曲线围起来的面积被叫作AP值(Average Precision,平均精度),通常来说一个越好的分类器,AP值越高。
在目标检测中,每一类物体都可以根据精度和召回率绘制出该类的P-R曲线,得到检测该类的AP值,把检测各类物体的AP值取平均可以得到一个新的指标mAP(Mean Average Precision)。我们一般把mAP作为目标检测中衡量检测精度的指标。

2、FPS(检测速度指标)

只有速度快,才能实现实时检测,这对一些应用场景极其重要。评估速度的常用指标是每秒帧率(Frame Per Second,FPS),即每秒内可以处理的图片数量。当然。另外也可以使用处理一张图片所需时间来评估检测速度,时间越短,速度越快。

0%