目标检测:YOLO系列v1、v2、v3

YOLO

动机

人类对于物体只需要看一眼就能知道该物体是什么,在什么位置,人类的视觉系统是非常快速而准确的,因此如果能够加速算法使得计算机系统也能够快速而准确的话,就能够代替人而实现无人驾驶。
而目前的一些方法,RCNN系列的都是一套复杂的流程,首先生成一些可能的边框区域,再对边框进行分类,之后再修正边框的位置,然后再对其他的边框再进行处理,这个过程是非常复杂的,所以速度也非常慢。
于是想到将基于候选区域的检测问题转化为回归问题,直接在图上就能够得到目标的类别和位置,只需要对图像处理一次。(You Only Look Once)

主要创新点

改革的候选框框架

改革的候选框框架主要是通过将原图分割为S*S的网格,每个网格负责以该网格为中心的目标物体,例如图中第2列,第5行网格是狗的中心位置,就由这个网格负责检测出狗。主要是通过以该网格为中心,生成B个候选框来表示待测区域,其实这个网格与Faster RCNN中的锚点概念类似,都是在原图上选出一系列的处于中心位置的点或者网格,分别以这些点和网格为中心生成一些候选框来代替传统算法提取候选区域,当然在YOLO网络中候选框位置并不会真的生成,像RCNN系列那样讲生成的候选区域一个一个进行分类和回归的判定,YOLO网络则是一次性预测所有的格子所包含的边框,他们的位置以及类别。
目标检测:YOLO系列v1、v2、v3

YOLO分类回归原理

上一节中提到了YOLO网络提取候选框的方法是通过将原始的图像分割成SxS个网格,每个网格负责B个以该网格为中心的边框。而每个边框需要5个参数表示,分别为(x,y,w,h)表示边框的位置区域,以及一个置信度来表示该边框与真实边框重合的程度,而每个网格预测的类别数目为C。
因此经过网络的最后一个全连接层输出的是一个SxSx(Bx5+C)维的张量,分别表示每个网格生成区域的位置、位置的置信度以及它的类别。
这样就实现了只通过一次网络就能够在整个图像上预测出所有的目标的位置和类别,算法的复杂程度大大减小了,从而进入实时检测的时代。

算法

目标检测:YOLO系列v1、v2、v3
YOLO网络实现的目标检测的算法大体如8.2.2节,首先将原始图像重新设置大小至448x448,接着对一整个图像送入网络,网络主要包含两个部分,其中一部分为24层的卷积层,以及2层全连接层,全连接层的输出则为SxSx(Bx5+C),在文中S=7,B=2,C=20,因此输出的7x7x30维度的张量,预测了49个网格所代表的区域,每个网格预测两个区域,每个区域中有5个参数,分别为位置信息以及置信度,而置信度包括是否包含目标以及与真实候选框的重合程度,因此置信度为两者的乘积(不包含目标则为0,包含目标则为重合度),以及一共20类别中每个类别的概率。因此YOLO不但实现了端到端的目标检测网络(相较于Fast RCNN),并且在对原始输入图像一次性就能预测出所有区域是否包含目标以及目标的类型。

优缺点

YOLO网络虽然准确率有所下降,但是达到了实时检测的标准。

准确率

相较于那些实时的目标检测系统DPM,YOLO在VOC数据集上的准确率有显著提高,可以达到63.4%,即使是更快速的迷你网络的Fast YOLO也有52.7%,但是与非实时的基于深度学习的目标检测系统例如Fast RCNN,准确率略有下降。

运行速度

YOLO网络相较于RCNN系列有关于候选区域框架的改革大大提高了检测的速度,使得YOLO网络达到了实时检测的标准,检测速度达到45fps,而在YOLO基础上用9层卷积层代替原先24层卷积层的迷你网络的Fast YOLO检测速度可以达到155fps。

缺点

  • 由于改变了原始的候选区域提取的思想,虽然提高了检测的速度,但是准确率有所下降;
  • 一个网格只能检测两个边框一个类别,如果一个网格包含了多个物体则只能检测出一个物体;
  • 选出的候选区域有限,对于一些小尺度的目标无法检测出来;

YOLOv2

TODO

YOLOv3

TODO