知识蒸馏落地实录:马路边停车收费智能系统轻量化,模型精度损失严控在0.3%以内
做了八年智能交通落地,我见过太多“实验室里准得离谱、现场一跑全废”的模型。尤其是路边停车收费这个场景,看似简单——不就是拍个车牌、算个时长、出个账单吗?但真到了城中村窄巷、老城区斜车位、晚上逆光 plus 雨雾天,传统笨重的检测 识别大模型在边缘盒子里直接冒烟:延迟高、功耗大、误识多,物业还嫌设备贵。
我们团队从去年开始,在华东三个地级市的路侧停车项目上,实打实趟了一条知识蒸馏(Knowledge Distillation)的工程化路子。今天不聊论文里的温度系数、不堆公式,就说说怎么把原本 320MB 的“ teacher 模型”压成 11MB 的“ student 模型”,还让最终端到端精度损失压到了 0.3% 以下。
先交代背景。原系统用的是两阶段检测 Attention 车牌识别,在带 GPU 的工控机上跑,单路视频占用 2.3W 功耗,识别准确率 99.1%(官方测试集)。但城管和停车运营方的要求很现实:设备要塞进杆挂小盒、不能风扇散热、电要取自路灯慢充、单台管 6~8 路枪机。原模型直接量化部署,准确率掉到 94.7%,逃单和错扣投诉翻了四倍。
我们没选从头训小模型,也没盲目上剪枝(剪狠了小目标车牌直接丢)。而是用了“分步蒸馏 任务解耦”的策略:
第一步,检测头蒸馏。Teacher 输出不仅仅给框,还输出了对每个 anchor 的“软置信度分布”。我们让 student 学这个分布,而不是只学硬标签。路边半遮挡车牌、三轮车临时牌,teacher 给的模糊概率,student 跟着模糊,反而比强行学 0/1 标签鲁棒。
第二步,识别分支用字符级蒸馏。中文车牌结构固定,但污损率高。我们把 teacher 的字符序列概率矩阵(带上下文关系的)作为监督,student 的轻量 CRT 模块去拟合。这一步把相似字(“0”和“D”、“京”和“冀”的局部混淆)错误率降了六成。
第三步,也是最容易被忽略的——蒸馏后的“现场回归”。我们在三个城市各挑了 200 小时真实视频,不做微调,只做输入分布对齐(光照、码率、抖动的批次归一化修正)。这避免了“蒸馏完纸面好看,一上杆就崩”。
最终 student 模型:11.4MB,INT8 量化后 4.9MB,Jetson Orin Nano 上 8 路并发延迟 38ms,功耗 1.1W。对比 teacher 原指标,车牌全流程识别准确率从 99.1% 变为 98.83%,精度损失 0.27%,严格低于 0.3% 红线。错扣率从蒸馏前量化版的 3.1% 降到 0.35%,和原大模型基本持平。
有人问:这么点精度损失值得折腾吗?算笔账就懂。原来一套带风扇的边缘节点 1800 元,三年故障换 1.2 次;现在无风扇盒子 640 元,半年扩容一次城市也不心疼。三市合计 1.7 万个车位,因为误识少,年申诉工单从 11 万降到 4000 以内,客服成本直接砍掉七成。
知识蒸馏不是玄学,在路侧停车这种“低成本、高并发、坏环境”的民生场景里,它是最好的工程杠杆。我们这套配置已开源了部署范式(不含数据),下一步在电瓶车违停识别上做跨模态蒸馏。如果你也在做边缘视觉落地,别迷信大模型,先想想你家 teacher 愿不愿意好好教学生。
微信号:18581869297