前言

   物体检测是计算机视觉的典型问题之一,是使用框来标记图像中对象的位置并指定对象的类别。从传统的人工设计特征和浅层分类器的框架到基于深度学习的端到端检测框架,目标检测越来越成熟。

                 

   在学习YOLO算法前,我还是先从物体检测算法发展开始学习。学习以往出现的物体检测算法,了解其各自的优缺点以及YOLO算法在此基础上有何改善。

其他物体检测算法

(一)RCNN算法

   RCNN(Region with CNN feature),即region proposals(候选区域)+CNN,是将CNN引入目标检测领域的开山之作,大大提高了目标检测的效果,在其后也是出现了更优异的版本Fast RCNN, Faster RCNN。该算法主要可以分为三个步骤,(1)候选区域选择、(2)CNN特征提取、(3)分类与边界回归。

           

(二)Faster RCNN算法

   Faster RCNN,与RCNN相比Faster RCNN效率更高。 对于 FasterRCNN,RCNN,Fast RCNN 最大的区别在于,目标检测所需的四个步骤:候选区域生成、特征提取、分类器分类和回归回归器,这四个步骤都是在神经网络上开发,全部在GPU上执行,大大提高了运算效率。

(一)SSD算法

   RCNN,faster RCNN,这几种检测方法需要几种方法来获得候选区域并使用高质量的分类器对这些候选区域进行分类。虽然这些方法的检测精度相对较高,但由于计算开销大,其实并不不适用于实时检测或嵌入式设备。 

   SSD(Single Shot MultiBox Detector),属于one-stage方法,主要思想是在图像的不同位置均匀地执行高密度采样。 抽样时可以使用不同的比例和纵横比进行采样,使用 CNN 提取特征,并直接执行分类和回归。优点是速度快,因为整个过程只需要一个步骤。

                     

YOLO

   YOLO(YOU ONLY LOOK ONCE),最早是由reddon等人发表的一篇论文《YOLO: Unified, Real-Time Object Detection》。与前面几种物体检测算法对比,其有以下几个优点:1.简单 2.更新快 3.吃资源低 4.应用广。yolo算法相较于其他物体检测算法,其代码规模较小。更新快,作为一个开源代码,从V1的提出到现在比较成熟的V5,也只过了6年,并且算法还在不断的优化中。吃资源低,基本上大部分的电脑都能去跑yolo算法,其对cpu、gpu的要求不是很高,快捷。应用广,在服务器或者边缘设备下,其布置比较快捷方便。

核心思想

        YOLO检测网络包括24个卷积层2个全连接层,其中,卷积层用来提取图像特征全连接层用来预测图像位置和类别概率值。

                                                   

      YOLO将输入图像划分为SxS网格。每个网格负责检测“落入”该网格的对象。如果一个物体的中心位置的坐标被归类到一个网格中,这个网格负责找到这个物体。如下图所示,图中目标狗的中心点(红色原点)为第5行和第2行的网格,因此该网格用于预测图像中的目标狗。

                                                                                       

       每个格子会输出B个bounding box信息,C个物体属于某种类别的概率信息。Bounding box包含5个数据值(x,y,w,h,confidence)。x y 指的是当前网格预测的物体边界框中心位置的坐标。 w h 是边界框的宽度和高度。

confidence反映当前bounding box是否包含物体以及物体位置的准确性,计算方式如下:

                                                                                       confidence = P(object) * IOU

   其中,若bounding box包含物体,则P(object) = 1;否则P(object) = 0. IOU(intersection over union)为预测bounding box与物体真实区域的交集面积。

                                                   

       当然,YOLO也有自己需要完善的地方。比如说在初代,YOLO识别物体位置精准性较差并且在正类中其成功预测的概率较低。不过随着几代版本的更替,YOLO也在快速发展,相信学习它会对自己有提升。