目标检测模型 YOLOv1 (You Only Look Once: Unified, Real-Time Object Detection)
YOLOv1
一、背景
按照时间顺序的一些目标检测方法:
-
使用分类器进行目标检测,大致思想是使用一个分类器,然后对测试图像的不同位置进行评估。如DPM,使用滑动窗口在图片上运行分类器。
-
R-CNN系列
(1)最早的R-CNN,在原图上使用Selective Search算法提取region proposal,每个区域扭曲后输入CNN,提取出特征,再分别SVM的训练分类器和locator。训练与检测需要多个阶段,时间空间消耗巨大。
(2) FRCN在此基础上,通过修改损失函数将分类与目标框损失合并,设计了RoI池化层使不同大小的目标框的特征可以被池化为同一尺度的特征向量,将CNN与分类器与BBox回归器合并为一段,带来训练速度提升。但是region proposal与卷积网络仍是分割的,图片须先提取区域再输入网络,测试速度很慢。
(3) Faster RCNN本质上是使用RPN(区域建议网络:在特征图上通过一个3*3的卷积,每一个位置预测k个目标框)代替了Selective Search算法,再加上Fast RCNN,RPN与Fast RCNN可以共享特征,所以目标检测过程被合并为单段(本质上还是proposal+classifier)。但是虽然Faster RCNN的主要目的是提高检测速度,实际检测速度是5帧(基于VGG),与实时检测仍有距离。
- YOLO提供了新的想法:将目标检测定义为一个回归问题,直接通过图像回归得到分类概率和边界框坐标。基于这个想法,系统使用一个神经网络就可以实现目标检测,网络从一整张图片中提取特征,同时对所有的类的所有边界框进行预测,这代表着网络可以从全局提取信息,同时可以端到端地进行训练和检测。因而这对训练和检测速度带来了巨大的提升,Fast版本的YOLO检测速度可以达到150帧。
二、YOLO模型
系统将输入图片分为S*S个栅格,如果目标中心落在哪个栅格,它就负责检测这个目标。
在YOLO中,目标的位置信息是根据栅格左上角的偏移量来表示的(用x, y, w, h表示,(x, y)是预测框中心在栅格中的坐标,w, h是基于原图的预测框的宽和高),这是目标中心位于某个栅格,这个栅格就负责检测的意义。
每个栅格会预测B个边界框,每个边界框都有置信度,这个置信度=是否有目标*IOU ,即
,所以每个边界框预测5个值:x, y, w, h, confidence。
每个栅格也会预测C个类的条件概率
,这是在有目标的条件下,各个类的概率。
所以YOLO的思路是将一整张图片输入,经过CNN提取特征,然后通过全连接层,最后输出 S × S × ( B ∗ 5 + C ) S\times S\times (B*5 + C) S×S×(B∗5+C)的特征向量,整个过程是端到端的,只需要看一次输入图像,这就是You only look once的意思。
比如在PASCAL VOC数据集,数据分为20类,使用 7 × 7 7\times 7 7×7的栅格,每个栅格产生两个预测框,最终输出就为 7 × 7 × ( 2 ∗ 5 + 20 ) 7\times 7\times (2*5 + 20) 7×7×(2∗5+20)的向量。
在测试时将类的置信度与含有目标的置信度相乘
就能得到每个类的置信度。
系统使用的CNN包含24个卷积层和两个全连接层,借鉴了GoogLeNet,使用了 1 × 1 1\times 1 1×1和 3 × 3 3\times 3 3×3卷积的组合。
在测试时对输出使用非极大抑制NMS(找出IOU最大的边界框、删去不满足阈值的边界框)就可以削减数量得到最终的结果。
NMS: 对预测同一类目标的目标框按照预测目标的置信度排序,选择一个置信度最高的目标框,如果其他的框与它的IoU大于某个阈值,就删除那个框。本质上是保留一个位置上预测最准的框,去掉与它重叠很大的框。
loss = 坐标误差 + IOU误差 + 分类误差
实际损失函数:
位置信息在输出中只有8个维度,分类信息有20维,为了平衡 =>
没有目标的栅格占比更多,可能导致网络不稳定甚至发散 =>
物体的大小差异对损失函数的影响有差异 => 使用平方根
详细解释:
注:
表示第i个栅格的第j个bbox是否负责检测该object(与该object的ground truth的IOU最大的bbox负责该object的检测),负责那么为1,否则为0.
三、优缺点
优点:
1)快:只需要训练一个CNN,检测时YOLO达到45帧,Fast YOLO达到155帧
2)准确率优于其他实时模型模型
3)信息从全局提取,优于滑动窗口、区域建议等方法。Fast RCNN会错误地将目标识别为背景,由于其信息视野不够大,YOLO这一点做的更好。
4)泛化能力强:艺术作品中的识别准确度比DPM和RCNN更高。
缺点:
1)由于栅格的设计,对于多个小物体的识别不好。
2)准确率不够高:仍低于优秀的非实时检测模型,如FRCN。
四、参考
You Only Look Once: Unified, Real-Time Object Detection
知乎:YOLO详解
https://zhuanlan.zhihu.com/p/25236464
博客园:目标检测之YOLO V1
https://www.cnblogs.com/wangguchangqing/p/10406367.html