4、图像打标实战:矩形框标注、多边形标注、关键点标注、语义分割、实例分割
图像打标,说白了就是教计算机「看」懂图片里的东西。我做了这么多年数据标注项目,发现很多人一上来就纠结工具怎么用,反而忽略了每种标注方式背后的逻辑。今天咱们就把五种最常见的图像标注方式,一个一个掰开揉碎了讲清楚。
核心观点:选择哪种标注方式,取决于你最终要训练什么模型。检测任务用矩形框,精细轮廓用多边形,姿态估计用关键点,像素级理解用分割。选错了,后面模型精度会大打折扣。
4.1 矩形框标注(Bounding Box)
这是最基础、最常用的标注方式。用两个对角点画一个框,把目标物体框住就行。我最早接触标注项目时,一天能画上千个框,练就了一手「盲画」的本事。
标注规范:
- 框要刚好贴合目标边缘,不能留太多背景
- 遮挡部分也要框出完整物体范围
- 同一张图里,不同类别用不同颜色区分
我的经验:矩形框标注看似简单,但最容易出问题的是「框的紧密度」。我曾经遇到一个项目,标注员习惯把框画大一圈,结果模型训练出来,检测框总是偏大,召回率上去了但精确度掉得厉害。后来我们统一规范:框的边距不超过目标边缘的5个像素。
适用场景:目标检测(YOLO、Faster R-CNN)、行人检测、车辆检测。
4.2 多边形标注(Polygon)
当目标形状不规则时,矩形框就不好使了。比如一棵树、一辆自行车、一个人举着手——这些都需要多边形标注。用多个点围出目标的精确轮廓。
我记得第一次做遥感图像标注,要标注屋顶、道路、树木。矩形框根本框不住屋顶的斜边,只能用多边形。一个复杂的屋顶,有时候要标30多个点。
标注要点:
- 点与点之间距离均匀,不要忽密忽疏
- 拐角处必须有点,不能靠直线硬拉
- 凹进去的部分也要标出来,不能简化
避坑指南:我曾经见过一个标注员,为了省事,把一辆自行车的轮子用4个点标成菱形。结果模型学出来,把圆形物体都识别成多边形。多边形标注,点不是越少越好,而是越准越好。
4.3 关键点标注(Keypoint)
关键点标注不是画轮廓,而是标出目标上的「关键位置」。最典型的就是人体关键点——肩膀、手肘、手腕、膝盖、脚踝这些关节位置。
你想想看,如果想让模型学会判断一个人是在「举手」还是「叉腰」,光靠矩形框肯定不行。你需要告诉模型:肩膀在这里,手肘在这里,手腕在这里。模型才能理解姿态。
常见关键点数量:
| 应用场景 | 关键点数量 | 典型标注内容 |
|---|---|---|
| 人体姿态估计 | 17点 / 25点 | 头、肩、肘、腕、髋、膝、踝 |
| 人脸关键点 | 68点 / 106点 | 眼睛、眉毛、鼻子、嘴巴轮廓 |
| 手势识别 | 21点 | 手指关节、掌心 |
我的习惯:关键点标注最怕「遮挡」。比如一个人侧身站着,被挡住的肩膀要不要标?我的建议是:可见的关键点必须标,被遮挡的用「不可见」标记,不要凭空猜测位置。否则模型会学到错误的空间关系。
4.4 语义分割(Semantic Segmentation)
语义分割是把图像里的每个像素都分类。比如一张街景图,把天空、道路、建筑、行人、车辆分别涂上不同颜色。每个像素只属于一个类别。
说白了,语义分割就是「像素级分类」。它不区分个体——如果图里有三辆车,它们都会被涂成同一个颜色,因为都属于「车辆」这个类别。
标注方式:
- 用画笔工具逐像素涂抹
- 或者用多边形勾勒后填充
- 边缘区域要精细处理,不能模糊
关键区别:语义分割不区分实例。同一类别的多个物体,在标注结果中颜色相同。如果你需要区分「车A」和「车B」,那就得用实例分割。
4.5 实例分割(Instance Segmentation)
实例分割比语义分割更进一步。它不仅要做像素级分类,还要区分同一个类别里的不同个体。图里有三辆车,实例分割会把它们标成三个不同的对象,每个都有自己的ID。
我做过一个自动驾驶项目,要求标注路上的行人。语义分割只能告诉模型「这里有行人」,但实例分割能告诉模型「这里有3个行人,分别站在不同位置」。后者显然对自动驾驶更有用——你得知道前面有几个人,而不是一团「行人像素」。
语义分割 vs 实例分割:
| 对比维度 | 语义分割 | 实例分割 |
|---|---|---|
| 区分个体 | 不区分 | 区分 |
| 标注复杂度 | 中等 | 高 |
| 输出形式 | 类别掩码 | 实例掩码 + 类别 |
| 典型模型 | DeepLab, U-Net | Mask R-CNN, YOLACT |
| 标注时间 | 约30秒/图 | 约2-5分钟/图 |
注意:实例分割的标注成本很高。一个复杂的场景图,标注时间可能是语义分割的5-10倍。我建议在项目初期先用语义分割验证可行性,确认模型能学到东西后,再升级到实例分割。别一上来就搞最贵的方案。
4.6 五种标注方式对比
为了方便你快速决策,我把这五种方式放在一起对比:
| 标注方式 | 输出形式 | 信息粒度 | 标注成本 | 典型应用 |
|---|---|---|---|---|
| 矩形框 | 坐标 (x1,y1,x2,y2) | 物体级 | 低 | 目标检测 |
| 多边形 | 点序列 | 轮廓级 | 中 | 精细检测 |
| 关键点 | 点坐标 + 可见性 | 部件级 | 中 | 姿态估计 |
| 语义分割 | 像素掩码 | 像素级(类别) | 高 | 场景理解 |
| 实例分割 | 实例掩码 | 像素级(个体) | 很高 | 自动驾驶 |
4.7 知识结构图
下面这张图帮你理清五种标注方式的关系和选择路径:
我的建议:如果你是刚入门,先从矩形框和语义分割开始练手。这两种方式工具最成熟、社区资源最多。等熟悉了标注流程和工具操作,再挑战多边形和实例分割。关键点标注比较特殊,建议配合具体项目需求来学,单独练效果不好。
嗯,这五种标注方式,每一种都有它的脾气。选对了,事半功倍;选错了,后面模型训练全是坑。希望今天的实战内容能帮你少走弯路。