YOLOv3论文笔记

论文地址:YOLOv3: An Incremental Improvement

项目地址:darknet

0x00 Foreword

今天看到YOLOv3发布的信息,第一个反应就是,我×,我之前的模型还没有训练好,现在又出来一个(T_T)。

不过我对于YOLOv3的发布还是很激动的,因为我之前和大多数人一样,对于single-stage报以很小的期望了,但是今天的YOLOv3让我又重新对于single-stage有了新的看法。

0x01 Abstract

关于Bounding Box的预测。同样使用在YOLO 9000中的维度聚类,找到最好的boxes的高宽。与传统的K-means聚类方法不同,作者使用的不是欧氏距离,而是使用的下面这种

  • d(box,centroid)=1IOU(box,centroid) d ( b o x , c e n t r o i d ) = 1 − I O U ( b o x , c e n t r o i d )

这样做的目的是,使errorbox的大小没有关系。



至于坐标预测计算也都是和YOLOv2相同。

关于种类的预测,没有使用softmax,而是使用了sigmoid。这种做法,对于重叠标签的数据会有所帮助(例如一个女性的图像,会标注女和人两个标签)。

关于多尺度。作者参考了FPN的设计。作者在特征提取网络后增加了几个卷积层,最后预测一个包含三种信息的张量(bounding box,目标和目标种类)。对于不同尺度使用三个anchor box进行预测。对于刚才说的网络的倒数第二层做上采样。从网络的前面部分获取特征图,使其和上采样后的特征图融合。然后添加卷积层处理融合后的特征图。这种做法避免了SSD中的细粒度信息的损失。

作者尝试了,通过预测常规方法的anchor box进行预测目标的位置,但是这种做法降低了模型的稳定。尝试通过线性激活函数代替logistic激活函数,结果也不是很好。尝试使用Focal loss,但是同样失败。

0x02 网络结构

作者此次将网络的深度增加到了53层,称为Darknet-53



这个网络比之前的Draknet-19强大了许多,但是任然逊色于ResNet-101ResNet-152



YOLOv3虽然在精度上要比FPN FRCN低一些,但是速度上却快上很多,同时它无论是速度上还是精度上都超越了RetinaNet系列。



总的来说,YOLOv3并不像之前的YOLO系列那样给我一种惊艳的感觉,这次带给我们更多的是一些激励,速度快的网络它的精度也可以很不错。

0x03 cfg文件分析

卷积层

[convolutional]
batch_normalize=1
filters=32
size=3
stride=1
pad=1
activation=leaky

这个不必多说什么,如果各位看过我之前写的YOLOv2源码分析应该不会有太大问题。

跳转层

[shortcut]
from=-3
activation=linear

这个是YOLOv3中新添加的。它的第一个参数from=-3表示shortcut层的结果有它的前面一层和前面第三层的输出相加得到,这种设计就是参考了resnet

route

[route]
layers = -4

这同样是之前YOLOv2中的设计,它现在保留了下来。如果layers后面的参数只有一个的话,那么表示表示该层输出为之前第四层的特征图。(负号表示该层之前多少层,正号就表示对应的层数)

而如果layers后面的参数有两个的话,表示两个参数对应的层数(按深度叠加)后的输出。

上采样层

[upsample]
stride=2

双线性上采样前面一层特征图。

后续我会对网络进行一些测试^_^!!!

如有问题,希望大家指出,谢谢各位!!!

你可能感兴趣的:(Machine,learning)