061、增量训练与灾难性遗忘:扩充类别时如何保留旧类别的检测能力 061、增量训练与灾难性遗忘:扩充类别时如何保留旧类别的检测能力上周三凌晨两点,我在服务器上跑完第47轮增量训练,mAP@0.5从0.78直接掉到0.41。新加的“安全帽”类别检测得不错,但原来能稳定识别的“行人”“车辆”几乎全崩了。这种“学新忘旧”的痛,做目标检测的兄弟应该都懂——这就是灾难性遗忘。灾难性遗忘的本质:不是模型笨,是梯度在打架先别急着调学习率。你得理解为什么旧类别会“失忆”。YOLO的检测头里,每个类别对应一组分类权重。当你加入新类别,分类层的维度从C扩展到C+K,新初始化的权重是随机的。反向传播时,新类别的梯度会“冲刷”掉旧类别在特征提取层积累的判别信息。我做过一个实验:在COCO子集上训练5类,冻结backbone只训练检测头,增量加入3类后,旧类AP下降12%。如果放开backbone一起训,旧类AP直接掉28%。这说明灾难性遗忘主要发生在特征提取层,而不是分类头。实战方案一:知识蒸馏——让旧模型当老师最直接的办法是让旧模型“监督”新模型。训练时加载旧模型权重作为teacher,新模型作为student。损失函数改成:# 这里踩过坑:蒸馏损失不能只加在分类头上# 特征层的蒸馏更重要def