当前位置:   article > 正文

yolov10代码阅读

yolov10代码阅读

一 数据处理

  1. 在v8之后,v9和v10都是参考v8的数据增强处理,主要有以下,具体其中一些增强并未用到,可以参考具体配置
    在这里插入图片描述

二 模型结构

  1. 以yolov10x为例子,整个模型结构如下
    在这里插入图片描述

    a. 对于SCDown,是 Spatial-channel decoupled downsampling,主要是针对原始的下采样Conv2d(C,2C,kernel=3,stride=2)的下采集,进行修改成 Conv2d(C,2C,kernel=1,stride=1)加上一个组卷积 Conv2d(2C,2C,kernel=3,stride=2,group=2C);对于原始的下采样计算量是 H ∗ W ∗ 3 ∗ 3 ∗ C ∗ 2 C / ( 2 ∗ 2 ) H*W*3*3*C*2C/(2*2) HW33C2C/(22),对应参数是 3 ∗ 3 ∗ C ∗ 2 C 3*3*C*2C 33C2C,修改后的计算量是 H ∗ W ∗ C ∗ 2 C + H ∗ W ∗ 3 ∗ 3 ∗ 2 C / ( 2 ∗ 2 ) H*W*C*2C+H*W*3*3*2C/(2*2) HWC2C+HW332C/(22),对应参数是 C ∗ 2 C + 3 ∗ 3 ∗ 2 C C*2C+3*3*2C C2C+332C
    b. CIB是放在C2f模块中,主要是针对 3 ∗ 3 3*3 33的卷积都替换成了组卷积(depthwise convolution),对于小模型会采用 7 ∗ 7 7*7 77的组卷积
    c. SPPF,是将maxpool(k=5,9,13)和原始输入叠加到一起,在走一个卷积,得到最终输出,其中采用简化算法,就是走多次maxpool(k=5),替换maxpool(k=9,13)
    在这里插入图片描述
    d. PSA,是加了个自注意力机制模块,主要做的修改是,将输入根据channel拆分成2份,其中一份做self-attention,然后和另一份做融合
    在这里插入图片描述
    e. V10Detect,在head部分,经过实验发现,分类头比框回归头参数多,但是重要性不如框回归头,所以对分类头,进行depthwise卷积,降参数;主要3个损失,分类采用的BCELoss(没有采用varifocal_loss),回归box是CIou Loss和DFL loss
    f. V10Detect,采用one2one和one2many,两种匹配策略,one2many是和以前yolo一样,一个gt框会对应选择10个预测框去做loss,one2one就是一个gt框只选择一个预测框去做loss,同时在inference的时候只走one2one阶段,去掉nms后处理的耗时;对于one2one采用的head是deepcopy了一份,同时计算出来的梯度只更新V10Detect head,不回传到backbone和PAN阶段
    g. 对于最后inference,作者提出特别对于小模型,one2many+nms的ap要比one2one的要好,二者之间还是有差距

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/681307
推荐阅读
相关标签
  

闽ICP备14008679号