YOLO系列(一)—— You Only Look Once:Unified, Real-Time Object Detection

本系列分为三篇,此文为本系列第二篇,其他文章:
YOLO系列(一)—— You Only Look Once:Unified, Real-Time Object Detection
YOLO系列(二)—— YOLO9000:Better, Faster, Stronger

project: https://pjreddie.com/darknet/yolo/
paper: You Only Look Once:Unified, Real-Time Object Detection

个人认为YOLO最大的特点是在目标检测任务中实现了end-to-end的网络结构,不需要复杂的pipeline,实现了速度上的提升。
大体的检测过程如下图所示:
YOLO系列(一)—— You Only Look Once:Unified, Real-Time Object Detection_第1张图片

将图像分割成S×S的网格,每个网格负责检测中心点落在该网格下的物体。

首先来看一下网络的整体结构:
YOLO系列(一)—— You Only Look Once:Unified, Real-Time Object Detection_第2张图片

该网络包括24个卷积层2个全连接层以及5个池化层。

解释一下网络输出的7×7×30维的向量:7×7代表将输入划分为7×7的小格,30包括voc数据集包含的20种物体种类,以及每个grid预测两个bounding box,每个bounding box包含5维的宽高位置以及置信度信息,一共是30维(宽高是相对于整张图片宽高,位置是和grid cell的相对距离,置信度是IOU)。
由网络结构我们可以得到一些信息:
1)由最后的全连接层可知,每一个grid的预测都可以用到输入图像的所有信息,而不是只可以用到grid附近的图像
2)由于包含全连接层,输入图像的尺寸不可改变,必须是448×448

还有一个比较重要的部分就是损失函数的设计:
YOLO系列(一)—— You Only Look Once:Unified, Real-Time Object Detection_第3张图片

损失函数整体上是平方和误差,但在此基础上做了一些调整:
1)给不同的损失部分乘上不同的系数,其中 λ c o o r d = 5 \lambda_{coord}=5 λcoord=5 λ n o o b j = 0.5 \lambda_{noobj}=0.5 λnoobj=0.5
2)宽和高开平方
开平方是由于,对于相同的误差,其对小的box来说影响比大的box更大,开平方可以减小这种差别,但也不可以完全消除。

该模型的优点:
1)结构简单,检测速度快
2)每个box的检测都可以看到全局的信息,使背景误检率低
3)通用性强,对于艺术类作品中的物体检测同样适用(不太确定是什么原因造成的)

缺点:
1)由于包含全连接层,输入大小必须固定为448×448
2)在准确率上落后于state-of-the-art的模型,识别物体位置精准性差,召回率低,特别是对于小物体来说
造成上述缺点的原因:
1)每一个cell只可以预测一个物体,多个物体落在同一个cell时,只可以检测到一个物体
2)小物体localization error贡献的loss相对较少,虽然开平方有一定缓解效果
3)特征经过了32倍的下采样,特征不够精细,且没有多尺度特征
4)直接预测宽高,模型不够稳定
5)个人认为loss的各个系数还有调整的空间

对于上述缺点,YOLOv2中对其中的一些做了修改。

YOLO系列(二)—— YOLO9000:Better, Faster, Stronger

你可能感兴趣的:(深度学习)