本博客是个人通过对v5网络的学习和研究而总结的学习笔记,主要参考B站up主霹雳巴拉,如果感觉本博客看不太明白,推荐去B站看这样up主。同时本博客也是个人复习学习笔记。
YOLOV5是在v4出现不久就开始更新迭代的产品,其主要也是对v4做进一步改进工作。 下面是整个v5涉及到的变化的内容以及要注意的点: 下面开始重点笔记区别点: 1、网络架构修改。就像v1,v2,v3,v3spp,v4常规迭代一样,网络架构都会经过一定的调整。相对v4而言,v5中不使用cspdocknet53结构了,而是使用作者重新修改完的架构。 1)如上图所示,基础结构被更换了,一直到SPPF之前都是作者自己搞的基础骨干网络,也就是所谓的new cspdarknet53。
2) 然后在v3spp以及v4中spp结构,被修改成sppf。它是用一个55池化代替原有的55 池化。使用两个55池化串联的方式代替原有的99池化,使用三个55池化串联的方式代替原有的1313池化操作,然后在原有的原始数据路径上新增了一个卷积,然后将这四路分支concat起来,就形成了新的sppf。它可以在不改变效果的情况下,减少运行时间。 3) 在v4中,pan结构就是先低层下采样与高层融合,然后在高层上采用和底层融合得到输出即可,中间没有增加结构性的东西,像v4或者v3spp中基础架构中的模块,但是在v5中,增加了c模块。 2、数据增强 它使用了一些列的数据增强方案: 1)就是普遍使用的mosaic增强。图片四合一,然后通过仿射变换旋转缩放和平移。 2)Copy paste 将一幅图中目标扣下来,然后放到其它图片内,增加目标样本数。 3)随机放缩 Random affine 4)将一张图片亮度调暗然后和其它图片融合 5)常规的均衡化等操作 6) 调正图片中物体的对比度和细节部分 7)随机翻转 3、训练策略: 1)为了增加多尺度信息的训练,所以将图片放缩0.5到1.5倍不等大小。 2)如果该数据集中目标大小和anchor大小不匹配,那么我们就应该重新根据数据集聚类生成anchor 3)调整学习率 4)加入动量,使得输出更加平滑,这个动量在求loss,优化器中也能见到 5)混合精度训练 6)超参数评估设置 4、计算loss相关的,包括如何选择正样本,如何平衡不同尺度损失,如何消除grid敏感度问题等 1)损失计算,我们在回归参数上只计算正样本,在类别损失上只计算正样本,只有在置信度损失上计算正负样本 2)和v3v4一样,分三个预测特征层预测不同大小物体,但是这三个预测特征层比重不一样,所以设置不同权重计算不同损失。 3)消除grid敏感度,在v3spp中,我们先计算匹配模板,在计算属于哪一个方框的匹配模块为正样本,在v4中,因为我们想消除当正好在左上角点时不能取0的问题,所以修改了中心点计算公式的sigmoid函数,使其属于-0.5到1.5之间。在挑选正样本所属框格时把周围的框格也算上了。在v5中,把计算宽高的公式也给修改了将指数函数替换成(2*sigmoid)** 2 函数表达式。这样做就可以避免指数函数无限上升的缺点,从而给其一个具体的范围,对结果进行一定的约束。 4)选择正样本。所以预测前后宽高比例为1:4,即可能是预测后和预测前比,业可能是预测前和预测后比。因此我们可以缩放anchor模板框从0.25到4倍大小。只要真实框在这个倍率范围内的模板内,就说这个模板是正样本。然后还按照v4的第二步,选择属于哪一方格的模板框,顺便选择四周近距离的方格模板框也是正样本。
这些就是个人学习理解的过程,有理解不对的地方希望可以在评论区批评指针,共同学习进步!
|