YOLOv3——学习笔记

不得不提作者的这篇论文文风.....文风.....“朴实”。恩,读论文的时候领导看我笑以为在看段子。

YOLOv3对于v2的改进最实质的进步是,resnet引入加深网络结构和fpn的多尺度引入加强了对小目标的检测能力。

  1. 多级预测:终于为yolo增加了top down 的多级预测,解决了yolo颗粒度粗,对小目标无力的问题。v2只有一个detection,v3一下变成了3个,分别是一个下采样的,feature map为13*13,还有2个上采样的eltwise sum,feature map为26*26,52*52,也就是说v3的416版本已经用到了52的feature map,而v2把多尺度考虑到训练的data采样上,最后也只是用到了13的feature map,这应该是对小目标影响最大的地方。在论文中从单层预测五种boundingbox变成每层3种boundongbox;
  2. loss不同:作者v3替换了v2的softmax loss 变成logistic loss,由于每个点所对应的bounding box少并且差异大,每个bounding与ground truth的matching策略变成了1对1。当预测的目标类别很复杂的时候,采用logistic regression进行分类是更有效的,比如在Open Images Dataset数据集进行分类。在这个数据集中,会有很多重叠的标签,比如女人、人,如果使用softmax则意味着每个候选框只对应着一个类别,但是实际上并不总是这样。复合标签的方法能对数据进行更好的建模。
  3. 加深网络: 采用简化的residual block 取代了原来 1×1 和 3×3的block; (其实就是加了一个shortcut,也是网络加深必然所要采取的手段)。这和上一点是有关系的,v2的darknet-19变成了v3的darknet-53,为啥呢?就是需要上采样啊,卷积层的数量自然就多了,另外作者还是用了一连串的3*3、1*1卷积,3*3的卷积增加channel,而1*1的卷积在于压缩3*3卷积后的特征表示。
  4. router:由于top down 的多级预测,进而改变了router(或者说concatenate)时的方式,将原来诡异的reorg改成了upsample
设置先验框,采用全卷积做预测,采用残差网络,采用多尺度特征图做预测。

猜你喜欢

转载自blog.csdn.net/baobei0112/article/details/80134991