062、长尾分布下的 YOLO 训练:重加权采样、Decoupled Training 与 EQL Loss一、从一次翻车调试说起上个月我在一个工业质检项目里翻车了。数据集里“正常品”占了85%,“划痕”占了12%,“裂纹”只有2%,“气泡”更是只有1%。YOLOv8训练了200个epoch,mAP@0.5看着还行——0.78。但一细看,裂纹的AP只有0.12,气泡直接0.03。模型几乎把所有裂纹都当成了划痕,气泡更是完全没学到。这就是典型的长尾分布问题。目标检测里的长尾比分类更恶心——不仅类别数量不平衡,每个类别里的目标数量、尺度、位置也都不平衡。你辛辛苦苦调了学习率、数据增强,结果头部的几个类把loss吃掉了,尾部类根本抢不到梯度。二、重加权采样:别只盯着类别数量很多人一上来就搞类别重采样,把尾部类复制几倍。但这里有个坑——YOLO的anchor匹配机制会放大不平衡。你复制了尾部类的图片,但那些图片里的背景、负样本也被复制了,模型反而更容易过拟合到背景。我踩过的坑是直接对整张图片做重采样。正确做法是基于目标实例数量做采样权重。比如一张图里有3个裂纹目标,另一张图只有1个,前者的采样权重应该更高。代码里这样写:# 计算每个类别的实例数量i