| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【目标检测】yolo系列—yolo_v4学习记录 -> 正文阅读 |
|
[人工智能]【目标检测】yolo系列—yolo_v4学习记录 |
目录
前言目标检测模型调优的两种手段??????? 目标检测的调优技巧主要分类下面两种:“Bag of freebies(免费礼包)”和“Bag of specials(特价包)”
????????是指在离线训练阶段为了提升精度而广泛使用的调优手段,而这种技巧并不在推理时使用,不会增加推理时间。 1)数据类:
2)特征图类:
3)Bounding Box目标函数类:
????????是指在推断过程中增加的些许成本但能换来较大精度提升的技巧。 1)增大感受野类: ????????SPP/ASPP/RFB 2)注意力类: ????????Squeeze-and-Excitation (SE)/Spa-tial Attention Module (SAM) 3)特征集成类: ????????SFAM/ASFF/BiFPN 4)激活函数类: ????????ReLu/LReLU/PReLU/ReLU6/Scaled ExponentialLinear Unit (SELU)/Swish/hard-Swish/Mish 5)后处理类: ????????soft NMS/DIoU NMS 一、YOLO-v4的主要工作????????通俗的讲,YOLO-v4算法是在原有YOLO目标检测架构的基础上,采用了近些年CNN领域中最优秀的优化策略,从数据处理、主干网络、网络训练、激活函数、损失函数等各个方面都有着不同程度的优化,虽没有理论上的创新,但是会受到许许多多的工程师的欢迎,各种优化算法的尝试。文章如同于目标检测的trick综述,效果达到了实现FPS与Precision平衡的目标检测 new baseline。 yolov4网络结构?????????Yolov4的结构图和Yolov3相比,因为多了CSP结构,PAN结构。 先整理下Yolov4的五个基本组件:
其他基础操作:
Backbone中卷积层的数量: yolov4中Backbone里面的卷积层数量,每个CSPX中包含5+2*X个卷积层,因此整个主干网络Backbone中一共包含1+(5+2*1)+(5+2*2)+(5+2*8)+(5+2*8)+(5+2*4)=72。 二、yolo_v4改进创新之处:从网络4个部分对YoloV4的创新之处进行讲解:
2.1 输入端创新1)Mosaic数据增强????????Yolov4中使用的Mosaic是参考2019年底提出的CutMix数据增强的方式,但CutMix只使用了两张图片进行拼接,而Mosaic数据增强则采用了4张图片,随机缩放、随机裁剪、随机排布的方式进行拼接。 Mosaic增强的主要优点:
2.2 BackBone创新1)CSPDarknet53????????如上图所示,yolo_v4的backbone使用了5个CSP模块。每个CSP模块都有一个stride=2的卷积实现下采样操作,输入图像是608*608,所以特征图变化的规律是:608->304->152->76->38->19; ???????CSP全称Cross Stage Paritial,主要从网络结构设计的角度解决推理中从计算量很大的问题。CSPNet的作者认为推理计算过高的问题是由于网络优化中的梯度信息重复导致的。因此采用CSP模块先将基础层的特征映射划分为两部分,然后通过跨阶段层次结构将它们合并,在减少了计算量的同时可以保证准确率。 ??????? 个人理解:传统的ResNet或DenseNet的跨卷积连接操作,会使得大量的梯度信息被重复用来更新权重,CSP这里的操作是将当前featuremap层的特征维度拆成两半,一半走conv操作,另一半直接跨越连接过来,这样两条路线就没有使用相同的特征,不会导致梯度信息重复。 ????????CSP好处:降低内存成本。 2)Mish激活函数Yolov4的Backbone中都使用了Mish激活函数,而后面的网络则还是使用leaky_relu函数,猜测是Mish计算起来太麻烦了。 ?3)Dropblock????????Dropblock的研究者认为,卷积层对于这种随机丢弃并不敏感,因为卷积层通常是三层连用:卷积+激活+池化层,池化层本身就是对相邻单元起作用。而且即使随机丢弃,卷积层仍然可以从相邻的激活单元学习到相同的信息。因此,在全连接层上效果很好的Dropout在卷积层上效果并不好。所以,Dropblock的研究者直接对整个局部区域进行删减丢弃。 优点:Dropblock有点类似于cutout数据增强,cutout是将输入图像的部分区域清零,而Dropblock则是将Cutout应用到每一个特征图,Yolov4中直接采用了更优的Dropblock,对网络的正则化过程进行了全面的升级改进。 2.3 Neck结构中的创新Yolov4的Neck结构主要采用了SPP模块、FPN+PAN(PAN其实就是从深层特征融合到浅层后,又下采样到深层...)方式。? 1)SPP模块SPP用处:融合不同尺度大小的感受野。 ????????在SPP模块中,使用k={1*1, 5*5, 9*9, 13*13}的最大池化的方式,再将不同尺度的特征图进行Concat操作。注意:这里最大池化采用padding操作,移动的步长为1,比如13×13的输入特征图,使用5×5大小的池化核池化,padding=2,因此池化后的特征图仍然是13×13大小,也就是说这里的maxpool没有减小特征图的尺寸- -。 2)FPN + PAN??????? 在FPN层的后面还添加了一个自底向上的特征金字塔。给我的感觉是特征图就下采采,上采采,融合融合,AP就涨点了... 2.4 Prediction部分的创新1)CIOU_loss????????Bounding Box Regeression的Loss近些年的发展过程是:Smooth L1 Loss-> IoU Loss(2016)-> GIoU Loss(2019)-> DIoU Loss(2020)->CIoU Loss(2020) ??????? CIOU_Loss就将目标框回归函数应该考虑三个重要几何因素:重叠面积、中心点距离,长宽比全都考虑进去了。 各个Loss函数的不同点:
2)DIOU_nms????????将NMS过程中计算IOU的部分替换成上面DIOU的方式(考虑中心点的距离)。 ????????在上图右边重叠的摩托车检测中,中间的摩托车因为考虑边界框中心点的位置信息,也可以回归出来。因此在重叠目标的检测中,DIOU_nms的效果优于传统的nms。 注意:有读者会有疑问,这里为什么不用CIOU_nms,而用DIOU_nms? 答:因为前面讲到的CIOU_loss,是在DIOU_loss的基础上,添加的影响因子,包含groundtruth标注框的信息,在训练时用于回归。但在测试过程中,并没有groundtruth的信息,不用考虑影响因子,因此直接用DIOU_nms即可。 Yolov4 主要带来了 3 点新贡献:(1)提出了一种高效而强大的目标检测模型,使用 1080Ti 或 2080Ti 就能训练出超快、准确的目标检测器。 (2)在检测器训练过程中,验证了最先进的一些研究成果对目标检测器的影响。 (3)改进了 SOTA 方法,使其更有效、更适合单 GPU 训练。 三、网络精度指标
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 18:46:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |