什么是目标检测?
目标检测object detection, 就是在给定的图片中精确找到物体所在的位置,并标注出物体的类别,所以目标检测要解决的问题有两个:
(1) 目标在哪里?表现就是给我这个物体的包围框box的左上和右下的坐标(xmin,ymin,xmax,ymax)
(2)目标是什么?是人还是车还是飞机?
难点在哪里?
上面的两个问题并不容易解决,目标的尺寸范围很大,一个人有可能只占据了一张图片的1/10,可能只有20个像素,也可能覆盖了整张图片,有1000个像素;目标物体的角度,姿态不定,而且可以出现在图片的任何地方,更何况物体还可以是多个类别.
深度学习框架下的方法都有那些?
目前的目标检测算法分为两类:
一类是two-stage,two-stage检测算法将检测问题划分为两个阶段,首先产生候选区域(region proposals),然后对候选区域分类(一般还需要对位置精修),这一类的典型代表是R-CNN, Fast R-CNN, Faster R-CNN,Mask R-CNN家族。他们识别错误率低,漏识别率也较低,但速度较慢,不能满足实时检测场景。
另一类方式称为one-stage检测算法,其不需要region proposal阶段,直接产生物体的类别概率和位置坐标值,经过单次检测即可直接得到最终的检测结果,因此有着更快的检测速度,比较典型的算法如YOLO,YOLOv2,YOLOv3,SSD,RetinaNet等。
YOLO算法的全拼是You Only Look Once,顾名思义就是只看一次,进一步把目标判定和目标识别两个步骤合二为一,所以识别速度有了很大提升,达到每秒45帧,而在快速版YOLO(Fast YOLO,卷积层更少)中,可以达到每秒155帧,这样就完全能满足实时性要求(达到24帧每秒,人眼就认为是连续的)。