最近几天看目标检测的一篇论文 YOLO,这篇论文是发表于CVPR2016,作者是Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi。虽然这篇论文发表于2016年,但却不失是one stage中的一篇经典论文,V1也是YOLO系列的开山之作。
论文名称:You only look once unified real-time object detection
论文链接:https://arxiv.org/pdf/1506.02640.pdf
代码下载:https://github.com/pjreddie/darknet
预备知识
为了 更好让大家理解YOLO V1,我接下来先介绍下 分类,对象定位,对象检测它们之间的联系和区别。
图像分类:顾名思义,是一个输入图像,输出对该图像内容分类的描述的问题。
对象定位: 一般是指一张图有一个类别,有单个物体需要去定位,且物体较大,位于图片的中间。
目标检测:是指图片中有多个对象, 有可能是不同种类,并且将图片中的多个对象位置输出
下面从分类——>对象定位——>YOLO讲。之所以这样讲,是为了方便大家理解YOLO V1的思想
由于分类比较简单,我就不详细解释,下面通过一幅图介绍下,
如图所示,输入一张图片,经过卷积操作和全连接操后,得到 一个N*1维的列向量,其中N表示类别数。在这里我先假设N=4
分别是 car, dog,people,background。图片的理论输出是(1,0,0,0)T。
若我们想知道car的位置,我们该如何? 这就涉及到了目标定位,如下图所示。
我们可以让神经网络多输出几个单元 0<x,y,w,h<1 ,它们分别表示目标的中心位置,以及目标的宽高。 所以上图的输出就变成了y=(pc,x,y,w,h,c1,c2,c3)T 其中pc表示输出的这个框是否含有目标,若有就pc=1,否则pc=0.相当于说明图像分类的background
关于目标定位的损失函数可以定义平方误差和为:
这里解释下,图片中没有目标时,即我们不关注 x,y,w,h,c1...
以上就是对分类,和目标定位的解释,可能存在偏差,望大家理解。接下来我正式介绍YOLO V1
YOLO V1算法介绍
传统的目标检测算法是将检测工作视作分类器(RCNN,Fast RCNN,Faster RCNN等),而本文的作者在YOLO算法中把目标检测问题看作一个回归问题,也就是说