034、Transformer 混入 YOLO:引入 ViT、Swin 模块改造 Backbone 的工程方案 034、Transformer 混入 YOLO:引入 ViT、Swin 模块改造 Backbone 的工程方案从一次“模型不收敛”的深夜调试说起凌晨两点,我盯着 tensorboard 上那条死活不下降的 loss 曲线,心里骂了句脏话。YOLOv8 的 backbone 换成了 Swin-Tiny,训练了 20 个 epoch,mAP 卡在 0.12 纹丝不动。同事说“你试试把学习率降到 1e-5”,我试了,loss 直接变成 NaN。后来发现是 LayerNorm 的初始化参数没对齐——YOLO 的 BN 和 Transformer 的 LN 混在一起,梯度直接炸了。这个坑,我替你们踩过了。今天这篇笔记,就聊聊怎么把 ViT、Swin 这些 Transformer 模块塞进 YOLO 的 backbone 里,同时保证训练不崩、推理不慢、精度能涨。为什么要在 YOLO 里塞 Transformer?别听那些“Transformer 全面取代 CNN”的鬼话。YOLO 的 backbone 本质是 FPN 结构,需要多尺度特征。纯 ViT 做 backbone 有两个硬伤:一是计算量 O(n²) 对高分辨率输入不友好,二是缺乏局部归纳偏置,小目标检测直接拉胯。但 Transformer 的全局注意力确实香——能捕获长距离依赖,对遮挡、重叠目标的特征表达比 CNN 强。所以工程上的正确姿势是: