YOLO v2哪些部分进行了升级
![](https://i-blog.csdnimg.cn/blog_migrate/4e2a13b517986091c00cfffe39e485e9.png)
如表中所示
BN层的添加
理论: 批归一化导致收敛的显著改善,同时消除了对其他形式正则化[7]的需求。
实践:通过在YOLO中的所有卷积层上添加批归一化,我们在mAP中得到了2%以上的提高。 批规范化也有助于模型的规范化。 通过批处理归一化,我们可以从模型中删除dropout,且不会过拟合。
High Resolution Classififier
理论:所有最先进的检测方法都使用在Image Net[16]上预先训练的分类器。 从AlexNet开始,大多数分类器对小于256×256[8]的输入图像进行操作。提升分辨率使网络有时间调整其
filters ,以更好地工作在更高分辨率的输入。
实践: 对于YOLOv2,我们首先在
ImageNet上以448×448分辨率对分类网络进行了10个
epochs的
fine tune 。 然后,我们对检测结果的网络进行微调。 这个高分辨率的分类网络给了我们 增加了几乎4%的mAP。
Convolutional With Anchor Boxes
理论:
YOLO v1 直接使用卷积特征提取器+全连接层来预测
bounding boxes 的坐标。 仅使用 faster R-CNN 的 RPN 结构预测偏移和
anchor boxes 的置信度。预测偏移量而不是坐标 简化了问题,使网络更容易学习
实践:我们从YOLO v1 中移除全连接层,并使用 anchor boxes 来预测 bounding boxes。 首先,我们消除了一个池层,使网络卷积层的输出分辨率更高。 我们还缩小了网络,以操作416个输入图像,而不是448×448。 我们这样做是因为我们想在我们的特征映射中有一个奇数的位置,所以有一个中心单元格。 物体,特别是大的物体,往往占据图像的中心,所以在中心有一个位置来预测这些物体是很好的, YOLO的卷积层将图像降采样为32倍,因此,通过使用416的输入图像,我们得到了13×13的输出特征映射。
当我们移动到
anchor boxes 时,我们还将类预测机制与空间位置解耦,而不是预测每个
anchor boxes 的类和
objectness。 在YOLO之后,
objectness 预测仍然预测
ground truth 的IOU,和条件概率
使用
anchor boxes ,我们得到了一个小的精度下降。 YOLO只预测每幅图像98个boxs,但是有了
anchor boxes ,我们的模型预测了一千多个。 没有
anchor boxes ,我们的中间模式我得到69.5mAP,召回率为81%。 使用
anchor boxes ,我们的模型获得69.2mAP,召回率为88%。 即使mAP降低,召回的增加意味着我们的模型有更多的改进空间
Dimension Clusters
理论:当使用
anchor boxes 与YOLO时,我们遇到两个问题。 首先是boxs尺寸是手工挑选的。 网络可以学会适当地调整box 但是,如果我们为网络选择更好的先验,我们可以使网络更容易地学会预测良好的检测。
实践: 我们不通过手工选择先验,而是在训练集
bounding boxes上运行k均值聚类 找到好的先验。如果我们使用标准的k-均值与欧氏距离较大的框比较小的框产生更多的误差。 然而,我们真正想要的是先验,导致良好的
IOU,这是独立的box 的大小。 因此,对于我们的距离度量,我们使用:
结果,5个box和9个box,聚类和手动的结果
Direct location prediction.
现象: 当使用带有YOLO的anchor boxes时,我们遇到了第二个问题:模型不稳定,特别是在早期迭代期间。 大多数不稳定来自于预测box的(x,y)位置。
模型:
由
变成
意思如图
![](https://i-blog.csdnimg.cn/blog_migrate/d6b99eec016dc8b3c74d03e6ce94dd7a.png)
结果,由于我们约束位置预测,参数化更容易学习,使网络更稳定。 使用聚类和直接预测bounding box中心区域 提高了YOLO几乎5%。
Fine-Grained Features
理论:13×13的特征图对大对象足够但是不适应小对象
模型:在13X13前面的26X26层制作类似resnet的结构与13X13链接,取得1%的提高
Multi-Scale Training
理论:不同尺度图像训练可以提高模型鲁棒性
实践:VOC2007的检测框架。 比以往的检测方法更快、更准确。 它还可以以不同的分辨率运行,以便于在速度和精度之间进行权衡。 YOLOv2条目实际上是相同的训练模型,具有相同的权重,只是以不同的大小进行评估。 Geforce GTX TitanX
![](https://i-blog.csdnimg.cn/blog_migrate/dfc89433c9a048d4ec009dd05ae2c28f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/414c96cc09b56d1bda5362f10c183de4.png)
Darknet-19 分类任务
模型:darknet-19(如图) + 批量归一化 + 正则
![](https://i-blog.csdnimg.cn/blog_migrate/c0b23d7d5d4a9ef109149476cf86f29a.png)
结果:在Image Net上达到72.9%的top-1精度和91.2%的top-5精度。
详细过程: 我们在标准Image Net1000类分类数据集上对网络进行了160个epochs的训练,使用随机梯度下降,起始学习率为0.1,polynomial rate = 4 ,重量衰减为0.0005,动量衰减为0.9。 在训练中,我们使用标准的数据增强技巧,包括随机作物、旋转和色调 饱和和曝光位移。 正如上面所讨论的,在我们对224×224的图像进行初步训练之后,我们在更大的尺寸,448处对我们的网络进行了微调。对于这种微调,我们用上述参数进行训练,但只有10个epochs,并以10−3的学习率开始。 在这种更高的分辨率下,我们的网络达到了76.5%的top-1精度, top-5精度为93.3%
Darknet-19 检测任务
模型:如图
![](https://i-blog.csdnimg.cn/blog_migrate/71605fc83330c2920d6e61234322ab54.png)
实践: 我们训练网络
160个epochs,起始
学习率为10−3,在
60和90个epochs将其除以10,我们使用的重量衰减
为0.0005,动量为0.9。
数据增强。
一些骚操作
目标检测和分类数据集混合训练
做法: 当我们的网络看到标记为检测的图像时,我们可以根据完整的YOLOv2丢失函数反向传播。
当它看到分类图像时,我们只会从体系结构的特定分类部分反向传播损失。
Hierarchical classification分级分类
做法:如图,分级分类方式把标签转化为树形结构
![](https://i-blog.csdnimg.cn/blog_migrate/04ee6d7aa85795a16010f95281ec3a1a.png)
以狗为例
![](https://i-blog.csdnimg.cn/blog_migrate/072462a0d22f9ff3b5ffebf8f7d22677.png)
Pr(狗A|狗)
Pr(狗B|狗)
Pr(狗C|狗)
某个目标是A的概率可以由以下计算得来
P(狗A) = Pr(狗A | 狗)*Pr(狗 | 哺乳动物)*Pr(哺乳动物 | ... ... ) * ... ...*Pr(动物 | 物)
实践:为了验证这种方法,我们在使用1000类Image Net构建的Word树上训练Darknet-19模型。 为了构建Word Tree1k,我们添加了所有扩展标签空间的中间节点 1000到1369。 在训练过程中,这样如果一个图像被
标记为“狗A”,它也会被
标记为“狗”和“哺乳动物”等。也就是多分类问题。 去计算 条件概率,我们的模型预测了一个1369个值的向量 。 最后一层网络如图所示
![](https://i-blog.csdnimg.cn/blog_migrate/836d06dd5db29b7d6a90b42cd946ffc4.png)
使用与以前相同的训练参数,我们的分层Darknet-19达到71.9%的top-1精度和90.4%的top-5精度。 尽管增加了369个额外的输出,我们的精度只略有下降。 以这种方式进行分类也有一些好处。 性能在新的或未知的对象类别上优雅地下降。 例如, 如果网络看到一只狗的图片,但不确定它是哪种类型的狗,它仍然会以很高的信心预测“狗”,但在下义词之间传播的信心较低
-----------------------end