YOLOv2 论文

        YOLOv2在YOLO9000:Better,Faster,Stronger 这篇论文里,论文作者希望YOLOv2能检测大量类别的物体,但是目标检测的数据集因为标注昂贵所以都类别有限,作者在论文中介绍了YOLOv2,同时还使用了联合训练(同时训练分类和检测),以及合并数据集等方法使得YOLOv2能识别9000个类别,所以论文题目为YOLO9000。

本文专注于YOLOv2的模型结构,省略了联合训练以及一些结果等内容。

论文部分

2.Better 

        相对于先进的目标检测系统,YOLO有各种缺点。对YOLO的错误分析(与Fast R-CNN)相比发现YOLO会出现大量的定位错误。此外,YOLO与候选框方法相比召回率较低。因此我们主要关注在保持分类精度的同时提高定位准确率和召回率

        计算机视觉领域通常倾向于更大更深的网络。更好的性能往往伴随着更大的网络或者集成多个模型。然而,YOLOv2我们希望能做到更精确但保持快速。与放大我们的网络相反,我们简化了我们的网络,并使其更容易学习。我们将以往的研究中的各种方法与我们的新想法结合来提高YOLO的性能。

Batch Normalization.

        批量归一化在消除对其它规范化方法的需要的同时,导致收敛性的显著增加。通过在YOLO的所有卷积层中添加批量归一化,我们提高了YOLO 2%的mAP.批量归一化帮助模型的正则化。有了批量归一化我们在不带来过拟合可以从模型移除dropout。

High Resolution Classifier.

        所有的sota检测方法使用分类器预训练在ImageNet. 从AlexNet 开始大多分类器在小于224x224上操作。原来的YOLO训练分类器网络在224x244 并在检测时增加分辨率到448. 这意味着网络必须同时学习目标检测并调整到新的输入像素。

        在YOLOv2中,我们首先使用分类网络在全448x448的ImageNet 上进行微调。这给予了网络来调整它的滤波器来更好地应对高分辨率地输入。我们在检测上微调最后地网络。这高分辨网络让我们提高了4%的mAP.

        YOLO使用全连接网络直接预测边界框,并在开始的卷积提取特征。与直接预测坐标不同,Faster R-CNN使用手工设计的先验框来预测边界框。在Faster R-CNN中只使用卷积层的候选区域提取网络RPN为每个锚框预测偏移和置信度。因为预测层是卷积层,RPN在特征图中的每个位置预测这些偏移而不是坐标,简化了问题,使得网络更容易学习。

        我们从YOLO中移除了全连接层并使用了锚框来预测边界框。首先,我们移除了池化层使得卷积层的输出具有更高的分辨率。我们也将网络的输入从448x448降到416。做这一步的目的是我们希望输出的特征图分辨率是奇数,因此具有一个中心的栅格。物体,特别是大物体倾向于落在图像的中心,所以检测这些物体时有一个单独的中心栅格比落在周围四个栅格要好。YOLO的卷积层下采样因子是32,所以输入为412x412 的图像输出为13x13的特征图。

        当我们移动到锚框时,我们也将类预测机制与空间位置解耦,而是为每个锚框预测类和对象。遵循YOLO,目标预测仍然预测真实框和提议框的IOU,类别预测预测给定存在对象时该类的条件概率。(v1 中一个格子一个类别,v2是一个检测框一个类别)

        使用锚框,我们获得了一个小的精度下降。YOLO每张图片仅预测98个检测框,但是使用锚框,我们的模型可以预测多余1000个检测框。没有锚框我们的中间模型能达到69.5% mAP 且召回率为81%。使用锚框后,我们的模型获得69.2% mAP 并且召回率为88%。尽管mAP下降,但是增加了召回率 意味着模型具有更多提高的空间。

Dimension Clusters.

        我们在YOLO中使用锚框的时候遇到了两个问题,第一个是锚框的维度是手工选取得。网络可以学习调整锚框到合适的大小,但是如果我们选取更好的先验可以让网络更容易去学习到好的检测性能。

        与手工选取锚框不同,我们使用k-mean 聚类算法在训练集自动寻找锚框。如果我们使用标准k-mean 方法使用欧几里得距离,大的检测框会比小检测框产生更多的误差。然而,我们想找的先验是能让网络达到好的IOU分数,这与使用欧几里德距离选取得先验框无关。

因此,我们衡量距离的指标使用

d(box,centroid)=1-IOU(box,centroid)

我们对不同的k值运行k-means,并以最接近的质心绘制平均IOU,见图2.我们选择K=5 作为模型复杂度和高召回率的最佳权衡。聚类中心与手工选取的锚框显著不同,更少的矮宽的锚框,更多高瘦的锚框。

         

        我们在表1中比较了我们聚类方法得到的最接近先验锚框与手工挑选的锚框的平均IOU。在只有5个先验时,质心的表现与9个锚框相似,平均IOU为61.0,而不是60.9。如果我们使用九个质心,我们可以看到较高的平均IOU。这说明了使用k-mean来产生锚框,会让模型具有更好的表示,使任务更容易去学习。

Direct location prediction.

当在YOLO中使用锚框时遇到第二个问题:模型不稳定,特别是早期迭代的时候。大多不稳定现象来自预测检测框的中心点(x,y)定位导致的。在候选区域网络中预测tx 和ty,中心点(x,y) 等于

x = (t_x*w_a)-x_a\\y = (t_y*h_a)-y_a

例如,如果预测得到tx=1的话,坐标将使锚框向右移动整个锚框的宽度。如果tx=-1 坐标将使锚框向左移动整个锚框的宽度。(锚框宽度较大的话,锚框中心可能飘到栅格之外,如果优化回来会非常困难)

这个公式是没有限制的,可以让任何一个锚框落在图像的任何一个位置,不管在什么位置预测箱子。随机初始化的模型需要很长的时间才能稳定到预测合理的偏移。

与预测偏移相反,我们遵循YOLO的方法直接预测相对于栅格的位置坐标。这就将基本真值限制在0和1之间。我们使用逻辑激活来限制网络的预测落在这个范围内。网络预测在输出特征图的每个格子上预测5个边界框。每个边界框预测五个值,tx,ty,tw,th,to。栅格的左上角(cx,cy) 和 锚框的先验宽度pw和高度ph,对应的预测结果为:

b_x = \sigma(t_x)+c_x\\b_y=\sigma(t_y)+c_y\\b_w = p_we^{t_w}\\b_h = p_he^{t_h}\\Pr(object)*IOU(b,object)=\sigma(t_o)

由于我们对位置预测进行了约束,参数化更容易学习,使得网络更加稳定。使用维度簇并直接预测边界框的中心位置,YOLO比使用锚框的版本提高了近5%。

Fine-Grained Features.

        这种改进的YOLO在13x13的特征图上预测检测。虽然这对于大对象是足够的,但它可能受益于更细粒度的特征来定位较小的对象。Faster R-CNN和SSD都在网络中各种特征图上运行它们的候选网络,以获得一系列分辨率。我们采用了不同方法,简单的添加一个通过层,它以26x26的分辨率从较早的层引入了特性。

        通过层通过将相邻的特征到不同通道而是不是空间位置,将高分辨率特征与低分辨率特征串联起来。类似于ResNet中的身份映射。这将26x26x512特征映射到13x13x2048特征图,这可以拼接到原来的特征。我们检测头运行在扩展后的特征图上,所以可以获得更加细粒度的特征。这给了适度1%的性能提升。

Multi-Scale Training.

        多尺度训练,YOLOv1使用448x448的分辨率输入。在添加了锚框后我们将分辨率改到416x416.然而,因为我们的模型仅使用了卷积层和池化层,可以改变任意大小。我们希望YOLOv2 面对不同大小图片输入的时候更具鲁棒性。

        与固定图片大小相反,我们每隔几次迭代就改变网络。每10batch 我们网络随机选择新的图片大小。因为我们模型下采样尺度为32,我们从以下32的倍数选择{320,352,608}。因此最小的选项为320,最大选项为608.我们调整网络大小并继续训练。

        这个方法强制网络去学习在多种输入大小的图片上的良好预测。这意味着同一个网络可以在不同尺度的特征上预测。网络在小尺寸输入上运行速度快,是一个速度和精度的良好权衡。

        在低分辨率YOLOv2是操作成本低,相对准确的检测器。在288x288,它能达到大于90FPS,

mAP与Faster R-CNN一样好。这使得它对小GPU,高帧率视频或视频流友好。高分辨率,YOLOv2在VOC2007 能达到78.6 mAP,是当前最先进的检测算法同时还超过实时的速度。看表三YOLOv2与其它方法在VOC 2007的比较。

 

3. Faster

        我们希望检测准确同时快速,大多应用检测的像机器人或自动驾驶车辆,依赖低延迟的预测。为了最大化性能,我们将YOLOv2设计为从头开始快速运行。大多检测框架依赖于VGG-16作为基础的特征提取。VGG-16 是一个强大,准确的分类网络但是毫无疑问复杂。VGG - 16的卷积层在224 × 224分辨率下对单幅图像进行单次遍历需要306.9亿次浮点运算。YOLO框架使用基于Google-net 架构。这个网络快于VGG-16,前向只用85.2亿的操作。然而它的准确率略微低于VGG-16。

        Darknet-19.我们提出一种新的分类模型作为YOLOv2的backbone,我们模型建立在先前的网络设计和领域知识。与VGG 模型相同我们使用大多3x3卷积和池化步骤后的双倍通道数。遵循网络NiN的研究,我们使用全局平均池化来预测和在3x3卷积之间使用1x1卷积核来压缩特征表示。我们使用批量归一化来稳定训练,加快收敛和正则化模型。

        我们最后的模型为Darknet-19 ,有19个卷积层和5个池化层。表6为模型的完整描述。Darknet-19 仅需要55.8亿次的操作来处理图片并达到72.9%top-1准确率和91.2% top-5准确率在ImageNet.

 个人总结

YOLOv2所作的改进

1.backbone 方面主要使用3x3卷积和1x1 卷积(压缩通道),用全局平均池化层代替(来自NiN)了全连接层,以及引入了BN加快收敛和正则化模型。

2.使用了先验框,YOLOv1中没有使用先验框,直接预测检测框的位置和大小及置信度,出现定位错误并导致训练不稳定。YOLOv2 中使用k-mean算法在训练集中获得先验框,好的先验框能让模型训练更稳定且能达到更好的效果。

3.检测头方面,YOLOv1因为没有先验框直接预测边界框中心相对于网格的边界的位置,YOLOv2虽然使用了先验框但还是预测相对网格左上角的位置,其实是相似的,都是将检测框中心固定在网格内。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值