• yolo系列结构


    原文链接:https://blog.csdn.net/nan355655600/article/details/106246625

    YOLO v3

    Yolov3是2018年发明提出的,这成为了目标检测one-stage中非常经典的算法,包含Darknet-53网络结构、anchor锚框、FPN等非常优秀的结构。

    上图三个蓝色方框内表示Yolov3的三个基本组件:
    (1)CBL:Yolov3网络结构中的最小组件,由Conv+Bn+Leaky_relu激活函数三者组成。
    (2)Res unit:借鉴Resnet网络中的残差结构,让网络可以构建的更深。
    (3)ResX:由一个CBL和X个残差组件构成,是Yolov3中的大组件。每个Res模块前面的CBL都起到下采样的作用,因此经过5次Res模块后,得到的特征图是608->304->152->76->38->19大小。

    其他基础操作:
    (1)Concat:张量拼接,会扩充两个张量的维度,例如26×26×256和26×26×512两个张量拼接,结果是26×26×768。Concat和cfg文件中的route功能一样。
    (2)Add:张量相加,张量直接相加,不会扩充维度,例如104×104×128和104×104×128相加,结果还是104×104×128。add和cfg文件中的shortcut功能一样。

    Backbone中卷积层的数量:
    每个ResX中包含1+2×X个卷积层,因此整个主干网络Backbone中一共包含1+(1+2×1)+(1+2×2)+(1+2×8)+(1+2×8)+(1+2×4)=52,再加上一个FC全连接层,即可以组成一个Darknet53分类网络。不过在目标检测Yolov3中,去掉FC层,不过为了方便称呼,仍然把Yolov3的主干网络叫做Darknet53结构

    YOLO v4

    先整理下Yolov4的五个基本组件:
    1. CBM:Yolov4网络结构中的最小组件,由Conv+Bn+Mish激活函数三者组成。
    2. CBL:由Conv+Bn+Leaky_relu激活函数三者组成。
    3. Res unit:借鉴Resnet网络中的残差结构,让网络可以构建的更深。
    4. CSPX:借鉴CSPNet网络结构,由卷积层和X个Res unint模块Concat组成。
    5. SPP:采用1×1,5×5,9×9,13×13的最大池化的方式,进行多尺度融合。

    其他基础操作:
    1. Concat:张量拼接,维度会扩充,和Yolov3中的解释一样,对应于cfg文件中的route操作。
    2. Add:张量相加,不会扩充维度,对应于cfg文件中的shortcut操作。

    Backbone中卷积层的数量:
    和Yolov3一样,再来数一下Backbone里面的卷积层数量。
    每个CSPX中包含5+2×X个卷积层,因此整个主干网络Backbone中一共包含1+(5+2×1)+(5+2×2)+(5+2×8)+(5+2×8)+(5+2×4)=72。
    这里大白有些疑惑,按照Yolov3设计的传统,72个卷积层,加上最后的一个全连接层,主干网络的名字不应该叫CSPDarknet73吗????

    大白主要从以上4个部分对YoloV4的创新之处进行讲解,让大家一目了然。

    (1)输入端:这里指的创新主要是训练时对输入端的改进,主要包括Mosaic数据增强、cmBN、SAT自对抗训练。 

             Mosaic数据增强主要有几个优点:
                    a. 丰富数据集:随机使用4张图片,随机缩放,再随机分布进行拼接,大大丰富了检测数据集,特别是随机缩放增加了很多小目标,让网络的鲁棒性更好。
                    b. 减少GPU:可能会有人说,随机缩放,普通的数据增强也可以做,但作者考虑到很多人可能只有一个GPU。
                    因此Mosaic增强训练时,可以直接计算4张图片的数据,使得Mini-batch大小并不需要很大,一个GPU就可以达到比较好的效果。

    (2)BackBone主干网络:将各种新的方式结合起来,包括:CSPDarknet53、Mish激活函数、Dropblock

            
    (3)Neck:目标检测网络在BackBone和最后的输出层之间往往会插入一些层,比如Yolov4中的SPP模块、FPN+PAN结构
    (4)Prediction:输出层的锚框机制和Yolov3相同,主要改进的是训练时的损失函数CIOU_Loss,使得预测框回归的速度和精度更高一些,以及预测框筛选的nms变为DIOU_nms。


       性能对比:

  • 相关阅读:
    四、django rest_framework源码之频率控制剖析
    Ubuntu14.04配置记录
    尝试开始写博客
    用IDEA把SpringBoot项目打成jar发布项目
    IDEA创建springboot项目部署到远程Docker
    springboot 快速部署
    最详细的 Spring Boot 多模块开发与排坑指南
    SpringMVC的工作原理
    Dubbo最详解
    Zookeeper入门看这篇就够了
  • 原文地址:https://www.cnblogs.com/sima-3/p/14964247.html
Copyright © 2020-2023  润新知