187、YOLOv8改进实战:交通标志与行人检测——基于RepVGG骨干与ASFF多尺度融合的轻量方案

发布时间:2026/8/7 22:05:50
187、YOLOv8改进实战:交通标志与行人检测——基于RepVGG骨干与ASFF多尺度融合的轻量方案 187、YOLOv8改进实战:交通标志与行人检测——基于RepVGG骨干与ASFF多尺度融合的轻量方案一个让我头疼了三天的调试问题上个月接了个车载边缘端的项目,要求在Jetson Nano上跑交通标志和行人检测,模型还得控制在5MB以内。我一开始直接拿YOLOv8n怼上去,结果在白天场景还行,一到傍晚或者小雨天,小交通标志直接漏检,行人也经常被背景吃掉。最离谱的是,模型在Nano上推理居然要45ms,离30ms的实时要求差一截。后来我翻了一周的日志,发现瓶颈出在两个地方:一是YOLOv8的C2f模块在轻量化场景下特征提取不够高效,二是Neck部分的FPN+PAN结构对多尺度小目标融合不够充分。于是我开始动手改骨干和Neck,最终方案是RepVGG+ASFF的组合,模型压缩到4.2MB,Nano上跑到28ms,mAP还涨了3.2个点。为什么选RepVGG当骨干YOLOv8默认的C2f模块在训练时是常规卷积堆叠,推理时通过重参数化合并成单路结构。但C2f的设计初衷是通用检测,对极端轻量化的场景,它的参数利用率不够高。RepVGG的思路更直接——训练时用多分支结构(3x3卷积、1x1卷积、BN直连)来增强梯度流动,推理时通过结构重参数化合并成单路3x3卷积。这样既享受了多分支训练的好处,又保留了单路推理的速度优势。我替换的是YOLOv8n的backbone部分,具体做法是把前三个stage的C2f换成RepVGGBlock。这里有个坑:RepVGGBlock的stride参数必须和原C2f的输出尺度对齐,否则后面Nec