目标检测中的分类怎么分并不是类别越多越好,也不是类别越少越好,而是要根据任务目标、类别间视觉差异、数据量、类别平衡性、部署需求来设计。很多检测项目效果差,根本原因不是模型,而是类别设计不合理。
一、分类原则:先看任务,不是先看类别数量
Ultralytics YOLO 官方文档指出,分类任务本质上是:
一张图最终只能输出一个类别(Single Class)。
因此类别设计首先要满足:
原则1:类别之间必须互斥
正确:
bird
person
train
错误:
bird
animal
因为鸟本身也是动物。模型会不知道该学哪个标签。
原则2:视觉特征差异要明显
容易分类:
person
train
bird
tree
困难分类:
邯郸人
沧州人
或者:
河北人
北京人
因为视觉差异非常小。如果两个类别连人都难区分,模型也难学到稳定特征。从分类角度看,跟适合作为person然后在增加属性判断,而不是两个类别
原则3:同一类别内部变化尽量大
例如你做铁路异物。
bird 类别应该包含:
白天
夜晚
雨天
雪天
遮挡
远距离
近距离
而不是全是同一个摄像头拍的鸟。
Ultralytics 数据集指南指出:
Variance matters more than volume.(数据多样性比单纯数量更重要)
原则4:不要按尺寸分类
错误:
big_bird
small_bird
错误:
near_person
far_person
尺寸变化应该让模型自己学习。否则类别边界会非常混乱。
二、类别数量多少最好
没有固定数字。但经验上数据量 < 5000,推荐5~10类。数据量 5000~30000,推荐10~30类。数据量 > 10万,推荐30~100类。YOLO9000 训练时融合了大量分类数据,支持超过 9000 个类别。但那是百万级数据规模。1612.08242 YOLO9000: Better, Faster, Stronger
三、判断两个类别该不该分开的简单标准
不看标签,仅看图片,人能否稳定区分?如果95%以上的人都能区分,可以分。
如果经常犹豫,不要分。
四、为什么类别越多不一定越好。
很多人以为,5类 < 20类 < 50类效果越来越强。
实际上常常相反。研究和工业实践都发现,类别增多后会带来、类别不平衡、标签噪声增加、类间混淆增加、AP下降。
尤其在检测任务中,还会同时影响分类分支、定位分支
目标检测比图像分类更容易受到类别设计影响。