论文地址:YOLOv2
论文概述
YOLOv2在YOLOv1的基础上进行改进,使用一种全新的多尺度的训练方法在变化的输入尺寸上进行训练,在运行速度和精度之间达到极好的平衡。在67FPS情况下,YOLOv2在VOC2007训练集上达到76.8mAP。在40FPS,YOLOv2在VOC2007上达到78.6mAP。在保持实时性的效果下,超过当前的最先进技术:使用ResNet的Faster R-CNN和SSD。同时本文也提出一种在目标检测和目标分类数据集上进行联合训练的分层树结构,使用该方法实现在coco检测数据集和ImageNet分类数据集上同时训练YOLO9000。该联合训练策略允许YOLO9000在没有标注的检测数据的情况下预测检测目标的类别。
改进之处
考虑到YOLOv1相关工作的误差来源主要有以下两点:
- 定位误差
- recall(召回率)太低
批归一化
使用该方法在mAP上获得2%的提升,同时有助于对模型进行正则化。使用批归一化,可以移除模型dropout环节而不导致过拟合。
高分辨率分类器
该策略主要使用完全的 448 × 448 448 \times 448 448×448分辨率的输入图片训练10轮神经网络,然后用训练得到的网络来执行检测任务,该策略提升4%的mAP。
使用anchor Boxes 进行卷积
借鉴Faster R-CNN的RPN网络使用Anchor Boxes的策略,来为每一个anchor box预测offset和置信度。由于预测层是卷积的,RPN网络在feature map的每个位置预测对应的offsets而不是坐标,这极大地简化问题也使得网络的学习更加简单。
细节
- 移除YOLOv1的全卷积层,使用anchor box来预测边界框。将输入尺寸由448改为416,使其满足feature map只有唯一中心位置而不是有四个邻近中心。对416尺寸输入图像使用32的因子进行下采样能够得到 13 × 13 13 \times 13 13×13的feature map的输出。
- 对每个anchor box预测其对应类别和可能目标,这一点和YOLOv1基本相同。
- 使用anchor box可以改变YOLOv1在每幅图片上只预测98个边界框的缺陷,能够达到每幅图预测数超过一千。
维度聚类
在YOLO上使用anchor box的缺陷:边界框的维数是手动设置的,好的设置能是网络的训练更加简单,预测效果更好。
为克服上述手动调节的缺陷,本文采用k-means 聚类来自行选择最合适的anchor box 尺寸。考虑到使用欧氏距离计算预测精度大的边界框比小的产生更多错误,YOLOv2使用IOU评价指标进行距离度量:
下面对三种聚类策略和纯粹的anchor box计算各自的Avg IOU进行比较,结果如下:
直接坐标预测
在使用anchor boxes和YOLO结合时,会遇到第二个问题:模型不稳定,特别是在早期的网络迭代过程中。绝大多数不稳定因素都是由于预测box的坐标
(
x
,
y
)
(x,y)
(x,y)。为此本文对该方法进行改进,预测位置坐标和grid cell的相关关系。这样能够对真值进行限界,使其落入0-1之间,同时使用逻辑回归激活函数来约束预测值落入这个区间。
网络在输出的feature map上对每个cell预测5个边界框,同时在每个边界框上预测5个坐标参数
t
x
,
t
y
,
t
w
,
t
h
,
t
o
t_x,t_y,t_w,t_h,t_o
tx,ty,tw,th,to。如果单元格偏离图像的左上角
(
c
x
,
c
y
)
(c_x,c_y)
(cx,cy),并且前面的边界框具有宽度和高度
p
w
,
p
h
p_w,p_h
pw,ph,则预测对应于:
对位置预测进行约束,参数的学习会更加简单,同时网络也更加稳定。使用维数聚类和直接预测边界框的中心位置在使用anchor boxes的基础上,在YOLOv1的基础上实现5%的提升。
细粒度的特征
经过修改的YOLOv1在
13
×
13
13\times13
13×13的feature map 上预测检测目标。Faster R-CNN和SSD都通过在不同的feature map上运行网络来得到一系列不同的分辨率。本文采用一种不同的方法,只需添加一个passthrough图层,它可以从26 x 26分辨率的早期图层中获取特征。
passthrough层将更高分辨率的特征和更低分辨率的特征通过在不同通道堆叠邻近特征联系起来。这提升了1%的执行效果。
多尺度训练
为了使YOLOv2在不同尺寸的图片上运行时具备鲁棒性,本文采取每进行10次迭代就改变网络输入尺寸的策略,而不固定输入图片的尺寸。考虑到下采样器的尺寸为32,选取下列32的倍数的尺寸:
320
,
352
,
.
.
.
,
608
{320,352,...,608}
320,352,...,608。
更进一步的实验
全新特征提取模块(darknet19)
Darknet-19(更轻量级的特征提取网络)
作者提出的Darknet-19网络包含19个卷积层和5个max pooling层,要比YOLOv1中使用的GoogleNet的参数要少。darknet-19的结构示意图如下。
最终展示一下YOLOv2在darknet-13下的整体网络结构图。
分级分类
主要是使用多标签模型合并ImageNet分类数据集和coco检测数据集。
关键词:WordNet 、 graph、a hierarchical tree
公式如下:
考虑到ImageNet是个更大的数据集,为了平衡数据集需要对coco数据集进行上采样,以使ImageNet数据集是coco数据集的4倍。
分层结构实际效果图如下: