YOLO论文阅读 ⽬标检测: You Only Look Once: Unified, Real-Time Object Detection 2018.12.20

You only look once (YOLO) is a state-of-the-art, real-time object detection system. On a Pascal Titan X it processes images at 30 FPS and has a mAP of 57.9% on COCO test-dev

https://pjreddie.com/darknet/yolo/

YOLO核心思想:

从R-CNN到Fast R-CNN一直采用的思路是proposal+分类 (proposal 提供位置信息, 分类提供类别信息)精度已经很高,但是速度还不行。 YOLO提供了另一种更为直接的思路: 直接在输出层回归bounding box的位置和bounding box所属的类别(整张图作为网络的输入,把 目标检测(Object Detection) 的问题转化成一个 回归( Regression )问题)。

YOLO论文阅读 ⽬标检测: You Only Look Once: Unified, Real-Time Object Detection 2018.12.20

摘要

1、之前的目标检测方法采用目标分类思想解决检测问题,本文提出一个基于回归的框架,用于目标的定位及识别。
2、一个网络,一次预测即可获得目标的检测框(bounding boxs)和 类别概率。
3、所提目标检测框架运算速度非常快。在Titan X 上,基本YOLO 模型45帧/S。简化版本Fast YOLO模型可达到155F/s.
4、相比其他检测器,yolo定位误差较大,但是flase positive 较少。
5、YOLO泛化能力较高。

引言

1、现有目标检测框架典型的有滑窗检测(如 DPM算法)和Region proposal方式(如 RCNN)。
2、YOLO将目标检测是为回归问题。通过像素值直接预测bboxes和类别概率。
3、YOLO通过全图训练网络,并优化检测器性能,该方式有如下优势:  
1)YOLO fast.因为基于回归的框架简单,不需要额外复杂流程  
2)YOLO 检测目标时,利用全图信息。与滑窗和基于候选框的检测技术不同,YOLO在训练及检测的时候不仅利用目标特征还学习上下文信息。Faster RCNN产生虚警的愿意是没用利用上下文信息。  
3)YOLO学习泛化的目标信息。 在精度上相差很多。

大致流程:

YOLO论文阅读 ⽬标检测: You Only Look Once: Unified, Real-Time Object Detection 2018.12.20
Resize成448448,图片分割得到77网格(cell)
CNN提取特征和预测:卷积部分负责提特征。全链接部分负责预测:a) 772=98个bounding box(bbox) 的坐标
和是否有物体的confidence 。 b) 7*7=49个cell所属20个物体的概率。
过滤bbox(通过nms)

YOLO论文阅读 ⽬标检测: You Only Look Once: Unified, Real-Time Object Detection 2018.12.20

图2:模型。我们的系统模型抽象为一个回归问题。它将图片分为一个一个的网格并且同时地预测边界框、置信分数以及类别概率。这些预测将被编码为S×S×(B*5+C)的张量。

(通用公式: SxS个网格,每个网格要预测B个bounding box还要预测C个categories,输出就是S x S x (5*B+C)的一个tensor。 注意:class信息是针对每个网格的,confidence信息是针对每个bounding box的)

统一的检测器:

2.1网络设计:特征提取层+额外分类检测层

受GoogleLetnet 网络设计启发。( GoogleLetnet共22层,考虑pooling 层,共27层。后接平均池化层,并送入分类器)
YOLO网络设计共24层卷积层,后接2层全链接层。 (用1×1 reduction layers 紧跟 3×3 convolutional layers 取代Goolenet的 inception modules )
预训练分类网络: 在 ImageNet 1000-class competition dataset上预训练一个分类网络,这个网络是Figure3中的前20个卷机网络+average-pooling layer+ fully connected layer (此时网络输入是224224)。
训练检测网络:转换模型去执行检测任务,《Object detection networks on convolutional feature maps》提到说在预训练网络中增加卷积和全链接层可以改善性能。在他们例子基础上添加4个卷积层和2个全链接层,随机初始化权重。检测要求细粒度的视觉信息,所以把网络输入也又224
224变成448*448。见Figure3。

YOLO论文阅读 ⽬标检测: You Only Look Once: Unified, Real-Time Object Detection 2018.12.20

YOLO论文阅读 ⽬标检测: You Only Look Once: Unified, Real-Time Object Detection 2018.12.20
YOLO论文阅读 ⽬标检测: You Only Look Once: Unified, Real-Time Object Detection 2018.12.20
YOLO论文阅读 ⽬标检测: You Only Look Once: Unified, Real-Time Object Detection 2018.12.20
一幅图片分成7x7个网格(grid cell),某个物体的中心落在这个网格中此网格就负责预测这个物体。一幅图片分成7x7个网格(grid cell),某个物体的中心落在这个网格中此网格就负责预测这个物体。

最后一层输出为 (77)30的维度。每个 1130的维度对应原图77个cell中的一个,11*30中含有类别预测和bbox坐标预测。总得来讲就是让网格负责类别信息,bounding box主要负责坐标信息(部分负责类别信息:confidence也算类别信息)。具体如下:

YOLO论文阅读 ⽬标检测: You Only Look Once: Unified, Real-Time Object Detection 2018.12.20
YOLO论文阅读 ⽬标检测: You Only Look Once: Unified, Real-Time Object Detection 2018.12.20
YOLO论文阅读 ⽬标检测: You Only Look Once: Unified, Real-Time Object Detection 2018.12.20
每个网格还要预测类别信息,论文中有20类。7x7的网格,每个网格要预测2个 bounding box 和 20个类别概率,输出就是 7x7x(5x2 + 20) 。 (通用公式: SxS个网格,每个网格要预测B个bounding box还要预测C个categories,输出就是S x S x (5*B+C)的一个tensor。 注意:class信息是针对每个网格的,confidence信息是针对每个bounding box的)

损失函数设计:

YOLO论文阅读 ⽬标检测: You Only Look Once: Unified, Real-Time Object Detection 2018.12.20
2.4 测试

Test的时候,每个网格预测的class信息和bounding box预测的confidence信息相乘。
说白了,就是预测置信度与类别概率的乘积。


实验结果

YOLO论文阅读 ⽬标检测: You Only Look Once: Unified, Real-Time Object Detection 2018.12.20
YOLO论文阅读 ⽬标检测: You Only Look Once: Unified, Real-Time Object Detection 2018.12.20
YOLO论文阅读 ⽬标检测: You Only Look Once: Unified, Real-Time Object Detection 2018.12.20
YOLO论文阅读 ⽬标检测: You Only Look Once: Unified, Real-Time Object Detection 2018.12.20
YOLO论文阅读 ⽬标检测: You Only Look Once: Unified, Real-Time Object Detection 2018.12.20
YOLO论文阅读 ⽬标检测: You Only Look Once: Unified, Real-Time Object Detection 2018.12.20