训练分割模型,第一步是给图片画标注,开源工具里 labelme 用得最多。它是 Python 写的桌面程序,画多边形、打标签、导出掩膜一条龙,语义分割和实例分割的数据都拿它标。

安装到出第一张标注

装好 Python 环境后命令行执行 pip install labelme,装完直接敲 labelme 回车,窗口就起来了。打开图片目录,右侧标签列表先编辑好类别名,比如 person、car,再选左侧多边形工具沿目标边缘点一圈,双击闭合,弹窗里填标签。它更新比较勤,界面和脚本名偶尔会变,命令对不上时先看仓库里对应版本的说明。

保存出来的东西怎么用

每标完一张图,同目录会生成一个同名 json 文件,记录原图路径、尺寸和每个多边形的顶点坐标加标签,用 Python 标准库就能读,重点看 shapes 字段,每个元素带 label 和顶点坐标。json 里默认还内嵌了原图的 base64 数据,文件比图片还大,新版本可以在设置里关掉,体积会小很多。训练前要把 json 转成掩膜图:老版本自带 labelme_json_to_dataset 命令,一次转一张;批量转 VOC 或 COCO 格式,用仓库 examples 目录下的转换脚本跑一遍整个目录。

标注效率的小习惯

  • 开自动保存,画崩了也不怕丢
  • 类别名单独存一份文件,多人标注时统一加载,避免你叫 car 我叫汽车
  • 放大到 200% 以上再描边,掩膜边缘毛糙多半是描得糙,不是模型的问题
  • 被遮挡、只露一半的目标单独定标签或加后缀,训练时好筛难样本
  • 标注量大了定期备份 json,原图丢了还能重新画,json 丢了等于全部重标

它和 labelImg 的分工很清楚:labelImg 画矩形框做目标检测,labelme 画多边形做分割,按任务选工具。个人科研和公司内部标注用它都没问题,标注量上来之后,可以再上交互式分割辅助,人只负责修边缘。