Yolo系列其二:Yolo_v2

介绍

相信SSD的横空出世委实给了Yolo许多压力。在目标检测准确性上Yolo本来就弱于Faster-RCNN,它的提出之初就主打其能保持一定检测准确性的同时实现更快乃至实时的速度。可同一年SSD的出现表明端到端的单阶段目标检测模型如果善加调理(更激进的data augmentation, multi scales feature maps,更多的default boxes数目,直接使用conv filter来从feature maps中得到位置、类别等信息)在拥有较快速度的同时,一样可以达到与像Faster-RCNN等双阶段目标检测模型类似的准确度。

经过一年的蛰伏之后,Yolo卷土重来,于2016年推出了改进后的Yolo v2。它有效地借鉴了Faster-RCNN/SSD中使用的思想,成功地使Yolo v2模型成为了新的state-of-art端到端目标检测网络。

Yolo_v2

Yolo v2

不多废话,直接说下Yolo v2相对于之前的Yolo v1所多的改进吧。

BN(batch normalization)的引入

BN自提出以来已经在多个视觉领域得到了较好的证明。Yolo v2通过在之前Yolo中用到的所有conv层加入bn,整个模型的检测mAP有效提升了近2%。此外BN的引入也让作者放弃了在新的模型中使用之前用于防止模型过拟合的dropout层。

finetune时高精度分类器的使用

当初Yolo模型在训练时先使用224x224的图片输入来预训练自己的特征提取网络;然后再将输入的图片尺度增大到448x448,进面继续使用检测数据集对其进行finetune。这意味着上述finetune中网络需要重新学习识别大尺度(448)的图片以及学习进行其上的目标检测工作。

在Yolo v2中,在拿到224x224的分类数据集train过的模型后先使用448x448的分类数据集finetune上10个epochs,然后再使用448x448的目标检测数据集进行接下来的目标检测工作的finetune。。

实现表明finetune时高精度分类器的预先finetune操作可带来最终目标检测模型近4%的map提升。

使用卷积操作的Anchor boxes

Yolo v1模型当初直接在特征提取主干网络最后端生成的feature maps上后接FC,然后生成得到预测的目标框的类别、位置等信息。

而在Yolo v2中,像Faster-RCNN的RPN网络或者SSD等一样,开始直接使用conv filters来提取生成prior boxes(又叫Anchor boxes)的位置偏移及类别等信息。与其它网络略不同的是Yolo v2特意选了416x416的image size作为输入,这样经过前端的数个特征提取卷积层与pool层后(stride为32),最终的feature map大小为13x13,恰是个奇数。这样它就可以有效地预测最中心grid位置的目标(这一trick来自于一个数据集常识即一般我们training用的数据集上,目标往往是在图片的中央区域)。

相对于Yolo v1中直接使用FC来预测目标框的类别与位置,使用卷积生成anchor boxes位置与类别的方法会带来mAP约0.3的下降,但会导致较大的召回率(Recall ratio)提升,约7%。这使得这一模型可进一步改良、提升的空间加大。

使用K-means cluster来选取anchor boxes

作者直接在目标检测训练数据集上对所有的目标框进行k-means聚类最终得到了Avg IOU与模型复杂度均不错的anchor boxes组合。如下为所使用的k-means中的距离衡量公式:

d(box; centroid) = 1 − IOU(box; centroid)

如下是它在VOC与COCO数据集上的聚类结果。最终在模型训练时选取了k = 5个anchor box。

Box_k-means聚类方法在VOC与COCO数据集上的结果

直接目标框位置检测

Yolo v2同RPN等网络一样使用了卷积来生成anchor boxes的位置信息。但它在使用像Faster-RCNN或SSD中那样来进行位置偏离计算的方法来预测predicted box的位置时发现训练时非常容易出现震荡。如下为RPN网络所用的位置计算公式:

x = (tx ∗ wa) − xa
y = (ty ∗ ha) − ya

为了消除此一问题,作者使用如下公式直接对目标框位置进行预测。其中tx, ty, tw, th, 和to为网络预测得到的值,而cx与cy表示anchor box对图片的相对位置,pw与ph是anchor box的长与宽。

bx = σ(tx) + cx
by = σ(ty) + cy
bw = pwet~w~
bh = phet~h~
Pr(object) ∗ IOU(b; object) = σ(to)

下图中可看到更详细的解释。

Bounding_box位置的预测

细粒度特征的使用

SSD在目标检测时通过使用多尺度的feature maps特征,最终能够cover尺度广泛的目标,从而获得了较高的检测mAP。Yolo v2也吸取了此一优点。但它并不像SSD那样分别在不同的feature maps之上对不同尺度大小的anchor box进行预测,而是将拥有较细粒度特征的层变形后(使得与后面粗粒度的特征层有着一样的size,有些类似于用于super resolution的subpixel层;比如若其细粒度特征层为26x26x512,而最后一层粗粒度特征层的size则为13x13,于是这里会将它变形为13x13x1024从而与最后一个特征层有着一样的size,进行能在channel level上进行合并)与后面粗粒度的特征层结合在一起用于后续的anchor box预测。

多尺度训练

之前Yolo v1的固定图片输入大小为448x448,而Yolo v2因为Anchor box的引入从而将输入变为了416x416。进一步为了使得模型能够对各种尺度的图片进行有效检测,作者在训练Yolo v2时不再固定image size,而是每训练10个epochs随机地从一个组合{320; 352; :::; 608}中选取(注意它们都是32的倍数,因为darknet网络的步长为32)一个数作为输入的image size。此种训练方法被证明可有效地使得网络学会去自动识别各种尺度大小的图片。

Darknet-19

Yolo v2还采用了有着19个Conv 层与5个maxpooling层的darknet-19作为模型的特征提取前端网络。在此网络中引入了BN用于稳定训练,加快收敛,同时防止模型过拟合。

下图为darknet-19网络的组成。

Darknet-19网络

总结

自下表中我们可以清楚看到Yolo v2相对于Yolo v1共作出了哪些改变以及这些改变分别对模型性能提升所发挥的作用。

自Yolo至Yolo_v2所发生的变化及带来的提升

实验结果

下表为Yolo v2与其它目标检测网络在VOC2007上的结果比较。有些小置疑,不明白为何Yolo v2甚至能够胜得了Faster-RCNN。笔者曾使用一个16 nodes的普通机群训练过SSD,可以在VOC07+12数据集上得到78.2%的test mAP精度。。所以作者的结果值得怀疑啊,呵呵。。

Yolo与其它目标检测模型在VOC2007上的结果比较

代码分析

以下为它的输入及训练时的超参配置。

[net]
# Testing
batch=1
subdivisions=1
# Training
# batch=64
# subdivisions=8
width=416
height=416
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1

learning_rate=0.001
burn_in=1000
max_batches = 500200
policy=steps
steps=400000,450000
scales=.1,.1

以下为Anchor层的选择及设置参数。当然还有最终的模型loss计算及设置。

[region]
anchors =  0.57273, 0.677385, 1.87446, 2.06253, 3.33843, 5.47434, 7.88282, 3.52778, 9.77052, 9.16828
bias_match=1
classes=80
coords=4
num=5
softmax=1
jitter=.3
rescore=1

object_scale=5
noobject_scale=1
class_scale=1
coord_scale=1

absolute=1
thresh = .6
random=1

参考文献

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,050评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,538评论 1 306
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,673评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,622评论 0 218
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,047评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,974评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,129评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,893评论 0 209
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,654评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,828评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,297评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,619评论 3 262
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,326评论 3 243
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,176评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,975评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,118评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,909评论 2 278

推荐阅读更多精彩内容