一、从一次部署性能问题说起
上周在把RT-DETR模型部署到Jetson Orin边缘设备时遇到了尴尬情况:训练时mAP达到78.3的模型,在实际推理时帧率只有23FPS,离实时检测的30FPS目标差了一截。更头疼的是,尝试用TensorRT优化后,精度直接掉了2.1个点。
问题出在哪?用torch.profiler分析发现,模型中的多分支结构(特别是那些Inception式的模块)在部署时产生了大量内存访问开销。
每个分支都要单独计算,然后合并,这种设计在训练时有利于梯度流动,但在推理时成了性能瓶颈。
这时候我想起了RepVGG——那个在2021年惊艳众人的“结构重参数化”方案。它的核心思想很巧妙:训练时用多分支结构,推理时合并成单路VGG式直筒网络。
二、RepVGG的魔法:训练与推理两副面孔
2.1 核心原理拆解
RepVGG的聪明之处在于它玩了个“变身游戏”:
# 训练时的多分支结构(3x3卷积 + 1x1卷积 + 恒等连接)classRepVGGBlock_Train(