深度网络中的目标检测算法YOLO系列-YOLOv2论文理解

一、简述

YOLOv2 ---YOLO9000

YOLO9000可以检测超过9000种类别的实时检测系统。
采用多尺度训练方法,YOLOv2可以根据速度和精度需求调整输入尺寸。目标检测和分类的共训练方法,采用该方法使得可以实时检测9000类别。

Better-更好

1、Batch Normalization—批标准化

提高了网络收敛性。通过对YOLO的每一个卷积层增加Batch normalization,去掉Dropout,也不会产生过拟合。

2、High resolution classifier—高分辨率分类器

YOLO从224 * 224增加到了448 * 448,采用新的高分辨率在分类数据集上预训练10个epoch。

3、convolutional with anchor boxes—提出anchor进行卷积学习

去除了YOLO的全卷积层(之前时采用全连接层直接预测bbox),采用固定框(Anchor boxes)来预测bbox。
首先,去除了一个pooling层,来提高卷积层分辨率。然后,修改网络输入尺寸,448-》416,使得特征图只有一个中心。输入尺寸416,下采样率32倍,输出13 * 13尺寸的特征图。
采用anchor boxes,提高了精度。在LOYO时,每张图预测98个boxes(7 * 7 * 2)。YOLOv2则可以超过1000个boxes。(845 = 13 * 13 * 5),其中5是num_anchor,论文中使用了5.

4、dimension clusters—维度聚类 *

之前Anchor boxes的尺寸是手动选择的,如果选出更好的boxes,可以让模型更容易。在gt上跑了一下K-mean聚类,来选择比较好的Anchor值。
k=5时,有提升。k=9,提升就更加明显。(当然,具有的值还是试试比较好)

5、direct location prediction—直接预测 *

用Anchor boxes的方法。会让model变得不稳定。由于没有约束,所以anchor box可以时图像中的任意点。为了让网络进行预测落在固定范围,网络使用一个logistics activation来对网络结果进行限制。
网络在每一个网格单元gird cell中预测出5个bounding boxes。每个bbox有五个坐标值(tx,ty,tw,th,t0)。假设一个网格单元对于图像左上角的偏移量是 cx,cy,bbox prior的宽高(pw,ph)(上面设定的anchor),那么预测结果就是
bx = f(tx) + cx;
by = f(ty) + cy;
bw = pw e^tw
bh = ph e^th

6.fine-grained features—细粒度特征(多尺度特征融合)

YOLO加了一个Pass through layer,获取之前某个26*26分辨率的层的特征。这个pass through layer把高分辨率特征和低分辨率特征联系在一起,方法是把相邻的特征堆积在不同的channel之中。从而把26 * 26 * 512–>13 * 13 * 2048。(直接展开堆积到通道上)

7.multi-scale training—多尺度训练

最初的YOLO输入尺寸为448 * 448,加入anchor boxes后,输入尺寸416 * 416。模型只包含卷积层和池化层,因此可以随意改变输入尺寸。
训练时,每隔几轮便改变模型尺寸,以使模型对不同尺寸图像具有鲁棒性。每个 10 batches,模型随机选择一种新的输入尺寸(320,352,……,608)32的倍数,因为模型下采样因子为32。最小320 * 320,最大608 * 608,改变输入尺寸,继续训练。

Faster–更快

YOLO使用了类似GoodLenet的网络结构,计算量比VGG16小,但精度不变。

Darknet-19 有19个卷积层和5个max pooling层

YOLOv2使用3 * 3 filler,每次pooling之后都增加一倍channel的数量。YOLOv2使用全局平均pooling,使用batch normilazation来让训练更稳定,加速收敛,使得model规范化。

分类训练

网络训练在ImageNet 1000类分类训练集,训练了160epochs,使用随机梯度下降,初始学习率为0.1,power 4,weight decay 0.0005,momentum 0.9.
使用标准的数据预处理方法:随机裁剪,旋转,变换颜色,饱和度,曝光度。
(预训练)在训练时,先在224224的图像上初始训练,然后在大分辨率448448,训练10个epoch,初始学习率0.001.

检测训练

网络去掉了最后一个卷积层,后加上了三个33卷积层,每个卷积层有1024个filters,每个卷积层接一个11卷积层,Filter个数为需要输出数。对于VOC数据,网络预测出每个网格单元预测五个bounding Boxes,每个BBoxes预测5个坐标和20类,所以一共125个Filter((20+5)*5)
网络训练了160epoches,初始化学习率0.001,分隔为10,60,90epochs,weight decay 0.0005,monentum 0.9,数据增广相同。

你可能感兴趣的:(目标检测,深度学习)