
078、RepConv 重参数化卷积块在 Backbone 中的训练-推理分离部署代码从一次诡异的mAP掉点说起去年秋天帮某自动驾驶公司做模型压缩,客户反馈YOLOv8n在Jetson Orin上部署后mAP掉了3.2个点。我远程上去一看,推理代码里用的是训练时的RepConv结构——多分支还在,BN层没融合,卷积核没合并。这问题我太熟了,当年自己第一次写RepVGG时也踩过这个坑:训练时好好的,导出ONNX后精度莫名其妙下降,其实就是重参数化没做干净。YOLOv11官方代码里RepConv的实现其实藏着不少细节,很多人直接复制粘贴老版本的代码,结果训练-推理分离逻辑没写对,导致部署时要么速度没提升,要么精度有损失。今天咱们就把这块彻底掰开揉碎。RepConv的核心逻辑:训练时多分支,推理时单路RepConv的设计哲学很简单:训练阶段用多分支结构(3x3卷积+1x1卷积+BN直连)来增强梯度流动和特征多样性,推理阶段通过数学等价变换合并成单个3x3卷积。这个操作在YOLOv11的Backbone中主要用在Neck部分,但有些改进版本也会塞进Backbone的深层。关键点在于:训练和推理必须走两套完全不同的forward逻辑。很多人图省事,在forward里写if判断,结果导出时torch.jit.trace把分支都trace进去了,部署时还是多分支。