YOLO(三)

YOLOv3

最新的YOLOv3解决了问题:如何检测两个距离很近的同类物体,淡然又或者是距离很近的不同类的物体
并且最新的YOLOv3在保证速度不降低的条件下,性能效果上已经能达到SSD的效果,这在之前的YOLOv1和YOLOv2版本里都是从未有过的。

YOLOv3与YOLOv2的不同

  1. loss不同:v3替换了v2的softmax loss变成了logistic loss
  2. anchor bbox prior不同:v2聚类anchor的宽高时得到5种大小的anchor,而v3得到了9个anchor
  3. detection的策略不同:v2只有一个detection,v3一下子变成了3个,分别是1个下采样的,feature map为13×13,还有2个上采样的eltwise sum,feature map 为26×26,52×52,也就是说v3的v3的416版本已经用到了52的feature map,而v2把多尺度考虑到训练的data采样上,最后也只是用到了13×13的feature map,这应该是对小目标影响最大的地方
  4. backbone不同:这和上一点是有关系的,v2的darknet-19变成了v3的darknet53,为啥呢?就是需要上采样,卷积的数量自然就多了,另外作者还用了一连串的3×3、1×1的卷积,3×3的卷积增加channel,而1×1的卷积在于压缩3×3卷积后的特征表示。

改进细节

1.多尺度预测

每种尺度预测3个box,anchor的涉及方法仍然使用聚类,得到9个聚类中心,按其大小均分给3种尺度

  • 尺度1:在基础网络之后添加一些卷积层再输出box信息

  • 尺度2:在尺度1中的倒数第二层的卷积层上采样(×2)再与16×16大小的特征图相加,再次通过多个卷积后输出box信息,相比尺度1变大2倍

  • 尺度3:与尺度2类似,使用了32×32大小的特征图

2.分类器-类别预测:

YOLOv3不使用softmax对每个框进行分类,主要考虑因素有2个:

  • Softmax使得每个框分配一个类别(score最大的一个),而对于Open Images这种数据集,目标可能有重叠的类别标签,因此softmax不适用于多标签分类;

  • Softmax可被独立的多个logistic分类器替代,且准确率不会下降。分类损失采用binary cross-entropy loss

基础网络 3.Darknet-53

这个网络主要是由一系列的1×1和3×3的卷积层组成(每个卷积层后都会跟一个BN层和一个LeakyReLU层),作者说因为网络中有53个convolutional layers,所以叫做Darknet-53(53包括了全连接层,但不包括Residual层).下图是Darknet-53的结构图。卷积的stride默认为(1,1),padding默认为same,当stride为(2,2)时padding为valid
pic1
上图是以256×256进行预训练的,常用的尺寸还有416×416.

网络结构

作者在论文中提到利用三个特征层进行边框的预测,如下图所示
pic2

上图中已经能够很清楚的看到三个预测层分别来自什么地方,以及Concatenate层与哪个层进行拼接。

YOLO的发展历程

这发展的历程应该是这样的:
yolo——SSD——yolov2——FPN、Focal loss、DSSD……——yolov3

参考文献

  1. https://blog.paperspace.com/tag/series-yolo/
  2. https://blog.csdn.net/gzq0723/article/details/79936613
  3. https://blog.csdn.net/qq_37541097/article/details/81214953
-------------本文结束感谢您的阅读-------------

本文标题:YOLO(三)

文章作者:Yif Du

发布时间:2019年02月21日 - 14:02

最后更新:2019年02月21日 - 17:02

原始链接:http://yifdu.github.io/2019/02/21/YOLO(三)/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。