071、GhostConv 替换 Backbone 中标准卷积(位置一):廉价线性变换生成冗余特征图

071、GhostConv 替换 Backbone 中标准卷积(位置一):廉价线性变换生成冗余特征图

071、GhostConv 替换 Backbone 中标准卷积(位置一):廉价线性变换生成冗余特征图

从一次显存爆炸的调试说起

去年年底帮一个做工业缺陷检测的团队调模型,他们用YOLOv8s跑一个1080p的PCB板检测任务,batch size设到8直接OOM。我上去一看,Backbone里第三层那个512通道的3×3卷积,参数量快赶上后面整个Neck了。当时我就在想,这玩意儿真的需要这么多冗余特征图吗?后来翻到华为诺亚方舟的GhostNet论文,突然意识到一个很朴素的事实——很多特征图之间其实高度相关,完全可以用一组“廉价”的线性变换从少量本征特征图里生成出来。

这个思路放到YOLOv11里,就是今天要聊的GhostConv替换Backbone标准卷积。位置一指的是Backbone中第一个下采样之后的卷积层,通常是P2层或者P3层的入口。这个位置的特征图分辨率还比较高,通道数开始膨胀,是显存和计算量的主要瓶颈之一。

GhostConv到底在干什么

标准卷积的直觉是:每个输出通道都由所有输入通道的加权和得到。GhostConv的想法更“偷懒”——先用少量卷积生成一部分“本征”特征图,然后对这些本征图做简单的线性变换(比如3×3 depthwise卷积)来“复制”出更多特征图。这些复制出来的图就是所谓的“幽灵”特征图,它们和本征图一起构成最终输出。

数学上,假设输出通道数为C_out,GhostConv先通过标准卷积生成C_out/2个本征特征图(这里s=2