目标检测到底在做什么:分类、检测、分割的区别(三)

张开发
2026/6/24 2:22:05 15 分钟阅读
目标检测到底在做什么:分类、检测、分割的区别(三)
当我们说 YOLO 是“目标检测模型”时它到底在解决什么任务这一篇的重点不是模型结构也不是代码而是先把任务边界讲清楚。一、同样是处理图片不同任务问的问题完全不同假设现在有一张街景图里面有行人自行车汽车路边建筑那么不同任务会这样提问1. 图像分类它更像是在问这张图主要是什么比如模型最后可能给出一个结果streettrafficoutdoor它给的是整张图的一个整体标签。2. 目标检测它问的不再是“整张图主要是什么”而是图里有哪些目标它们分别在哪里比如它可能输出person在左边这个框里bicycle在中间这个框里car在右边这个框里也就是说检测的输出不只是类别还包括位置。3. 图像分割它比检测还进一步问的是哪些像素属于哪个目标检测只是用矩形框大致圈出来。分割则希望更精细地分出目标区域比如把“人”的轮廓、“车”的车身、“树”的树冠精确分开。所以你可以先记住一句很重要的话分类看整张图检测看多个目标分割看目标区域。二、图像分类在做什么给整张图一个总答案分类是最容易理解的视觉任务之一。它的基本形式就是输入一张图输出一个类别或者若干类别的概率比如输入一张猫的照片输出cat输入一张苹果图片输出apple输入一张路面场景图输出street可以把分类理解成给整张图打一个总标签。1. 分类的优点它的任务定义简单标签制作也相对容易。一张图通常只需要一个类别标签。2. 分类的局限它不擅长回答下面这些问题图里有几只猫每只猫分别在哪里图里同时出现了猫和狗怎么办因为分类的输出通常只是整张图的整体判断。它默认不关心每个具体目标的位置。所以如果任务是“识别这张图是不是猫”分类很好用。但如果任务是“把图里的所有猫都找出来并标位置”分类就不够了。三、目标检测在做什么不仅要知道是什么还要知道在哪里目标检测比分类多了一层要求模型不仅要识别目标类别还要给出目标的位置。所以检测任务的输出通常至少包含三类信息1. 位置box目标在图中的范围一般用一个矩形框来表示。2. 类别class这个框里是什么比如persondogcarbicycle3. 置信度score / confidence模型对自己这次判断有多有把握。比如一条检测结果可以理解成类别person位置左边这个框分数0.96这表示模型认为左边这个框里是一个人而且把握比较高。四、为什么 YOLO 的结果图上会有很多框因为检测任务本来就允许一张图里有多个答案。如果一张图里有3 个人1 辆车1 只狗那么正确输出本来就不应该是一个单独标签。它应该是多条检测结果。也就是说每个目标对应一条结果每条结果包含位置、类别、置信度所以你看到很多框不是异常现象而是检测任务本身决定的。这一点和分类任务非常不同分类更像单选题给整张图一个答案检测更像综合题把图里所有目标都找出来并标出位置五、为什么目标检测比分类更难1. 目标个数不固定分类通常只给整张图一个答案。检测必须面对一个更复杂的问题这张图里到底有几个目标而且这个数量不是固定的有的图里只有 1 个目标有的图里可能有十几个有的图里目标还会互相遮挡这就比分类复杂得多。2. 位置也要预测分类只回答“是什么”。检测还要回答“在哪里”。一旦加上位置标签就不再只是一个类别名。它还要包含框坐标。这意味着模型不只是在做识别它还在做一种“位置回归”。3. 目标大小差异大现实场景里目标大小往往差很多近处的车很大远处的车很小一个人可能占画面很大一块也可能只占几十个像素所以检测模型必须同时兼顾大目标小目标密集目标遮挡目标六、分割又比检测多做了什么如果说检测是在回答“目标是什么大概在哪。”那么分割是在回答“目标是什么而且它精确覆盖了哪些像素。”1. 检测的框是矩形矩形框的优点是表达简单标注方便训练和推理效率高但它也有局限框只能粗略圈住目标它不等于目标真实轮廓比如一棵树、一只趴着的猫、一个弯曲物体用矩形框只能大致圈住不能精确贴合轮廓。2. 分割更细分割希望模型输出一个 mask掩膜告诉你哪些像素属于目标哪些像素不属于目标所以同样是“车”检测告诉你车在这个框里分割告诉你车身具体覆盖了哪些区域因此分割比检测更细但一般也更复杂。七、YOLO 的经典定位高效做目标检测把分类、检测、分割的边界理顺之后就能更准确地理解 YOLO 的定位。YOLO 最经典、最核心的能力就是高效完成目标检测。也就是说它最典型的输出形式是多个目标框每个框对应一个类别每个框对应一个分数所以后面看到 YOLOv8 结果图时最先要读懂的不是“结构有多复杂”而是这些框代表什么这些标签代表什么这些分数代表什么因为这正是检测任务的输出本体。八、目标检测的数据标注为什么比分类更麻烦这一点也是很多人真正开始做项目时才会体会到的。1. 分类的标签比较简单一张图对应一个类别通常就够了。例如catdogcar2. 检测的标签更复杂因为一张图里可能有多个目标所以它的标签不再是一个单独类别而更像是一组列表。每个目标通常都要记录类别位置位置一般用下面两种方式之一表示写法 1左上角 右下角x1, y1, x2, y2写法 2中心点 宽高cx, cy, w, h不管写法怎么变本质都一样都在描述这个矩形框在哪里、有多大。3. 为什么这会更难因为你不只是告诉模型“图里有猫”你还要告诉它哪一块区域是猫哪一块区域是狗它们分别在哪里所以目标检测的数据准备比分类费力得多。九、把三种任务放在一起对比分类输入一张图输出一个类别或若干类别概率关键问题这张图主要是什么检测输入一张图输出多个目标框 类别 分数关键问题图里有什么、在哪里分割输入一张图输出目标区域掩膜 类别关键问题哪些像素属于哪个目标十、容易混淆的点1. 分类、检测、分割都在处理图像但不是一回事它们不是按“图像输入”来区分的而是按“输出目标”来区分的。2. 检测标签不只是类别检测任务里位置本身就是标签的一部分。所以框不是装饰而是监督信息。3. 分割不是“高级版框”它不是把框画得更仔细而是从矩形框升级到像素级区域表达。十一、本篇小结分类给整张图一个总标签检测给多个目标的类别和位置分割给目标的精细区域因此YOLOv8 之所以重要不是因为它只是“会看图”而是因为它属于目标检测这条路线解决的是图里有哪些目标它们分别在哪里

更多文章