基本上已经把YOLO V7算法的重要知识点全部讲完了,我们做个简单的总结吧~
图片转载于:https://blog.csdn.net/zqwwwm/article/details/125901507
在YOLO V7算法中主要引入了三种模块:E-ELAN模块、SPPSPC模块、REP模块。
上述第一张图是E-ELAN模块的流程图,对应着yolov7.yaml
中的红色框。在大多数关于设计高效网络的论文中,主要考虑的因素是参数量、计算量和计算密度。但从内存访存的角度出发出发,还可以分析输入/输出信道比、架构的分支数和元素级操作对网络推理速度的影响(shufflenet论文提出)。在执行模型缩放时还需考虑激活函数,即更多地考虑卷积层输出张量中的元素数量。因此,在本文中,作者提出了基于ELAN的扩展版本E-ELAN。
在yolov7.yaml
中,只使用了一次SPPSPC模块,在backbone与head对接的地方。
上述是SPPSPC模块流程图。可以看到,总的输入会被分成两段进入不同的分支,最中间的分支其实就是金字塔池化操作,上侧则为一个point conv,最后将所有分支输出的信息流进行concat。
REP在训练和部署的时候结构不同,在训练的时候由3x3的卷积添加1x1的卷积分支,同时如果输入和输出的channel以及h,w的size一致时,再添加一个BN的分支,三个分支相加输出,在部署时,为了方便部署,会将分支的参数重参数化到主分支上,取3*3的主分支卷积输出。