labelme AI辅助标注完整指南:三步从文本提示到自动多边形
【免费下载链接】labelmeImage annotation with Python. Supports polygon, rectangle, circle, line, point, and AI-assisted annotation.项目地址: https://gitcode.com/gh_mirrors/la/labelme
手工画多边形是图像标注里最熬时间的活。labelme 这款 Python 图像标注工具,除了多边形、矩形、圆、线条这些基础标注能力外,现在内置了两套 AI辅助标注 功能:输入文字自动找目标,点一下自动生成轮廓。
如果你的数据集构建被标注速度卡住了,可以试试下面的流程。本地还没有项目的话:
git clone https://gitcode.com/gh_mirrors/la/labelme该用哪个入口:文本提示还是点选提示
labelme 把 AI 能力放在两个独立工具栏里,先搞清楚分工再动手:
- AI Text Prompt:输入类别名称(如
car,pedestrian,traffic_light),自动给出全图所有目标的候选区域。适合目标多、数量未知的场景。 - AI Assist:在画布上点击或框选单个目标,模型实时预测它的轮廓。适合"一堆相似目标里只想要某一个"的场景。
文本检测默认走 YOLO-World(快)或 SAM3(准);点选侧则提供 EfficientSam、Sam、Sam2、Sam3 多个模型,每个还有 speed / balanced / accuracy 三档,按需挑选。
三步跑通 AI 文本检测
- 打开界面上方的 AI Text Prompt 输入框,用逗号分隔输入类别名,比如
dog,cat,bird。 - 两个参数按需微调:Score是置信度阈值(默认 0.1),IoU是候选框去重灵敏度(默认 0.5)。第一次使用保持默认即可。
- 点击Run,模型对当前图输出候选区域,逐个核对、手动调整后保存。
这两个参数的控件实现很简单,就是一个步长 0.05 的 QDoubleSpinBox,源码在 labelme/_widgets/_ai_text_to_annotation_widget.py。
从点击到闭合轮廓:AI Assist 的工作方式
切到 AI 标注模式后,AI-Points 模式是每点一下就在目标上增加一个提示点,模型根据提示实时给出预测轮廓,点得越准轮廓越干净;AI-Box 模式则是直接框出目标区域。
输出格式比文本检测丰富得多:Polygon、Mask、Rectangle、Oriented Rectangle、Circle 五种可选。模型下拉框旁边有一个 Polygon detail 滑块(0~100,默认 60):往左偏 "Smoother",顶点更少、更好编辑;往右偏 "More detail",轮廓更贴合但顶点更多。
模型每吐出一个检测结果,labelme 都会做一轮贪心去重(IoU 0.5),并与画布上已有的 shape 比对,重叠的自动跳过——同一目标反复提示不会产生重复标注。这段逻辑在 labelme/_automation/_ai_assist.py。
掩码如何变成可编辑的多边形
AI 模型给的其实是像素级掩码,怎么变成能拖顶点编辑的多边形?labelme 内部按四步处理:
- 从二值掩码提取边界轮廓;
- 丢弃面积过小的"孤岛",避免轮廓上出现小坑洼;
- 先对轮廓做轻度平滑,再用 Douglas-Peucker 算法简化——detail 滑块的取值直接映射为简化容差;
- 坐标裁剪回图像边界内,并移除重复顶点。
简单说,detail 参数就是"贴合度"和"顶点数量"的权衡:想省事就调低,追求精确就调高。完整实现在 labelme/_automation/ 目录里,想改轮廓质量可以从这里入手。
真实工作流:视频帧 × AI × 手工精修
街景视频标注是典型受益场景。先把视频导出成图像序列(examples/video_annotation/ 目录里就有完整示例),然后:
- 用 AI Text Prompt 输入
car,track,为每帧生成初始多边形; - 对照前一帧标注,微调当前帧的顶点——顶点编辑工具直接拖拽即可;
- 一批标注完成后,转成 VOC 格式:
python labelme2voc.py data_annotated data_dataset_voc --labels labels.txt转换脚本在 examples/instance_segmentation/labelme2voc.py,支持把 JSON 标注批量转为掩码图像。
调优建议与常见坑
💡 遇到这些情况,先调参数再怀疑模型:
- 候选框太多、噪声大 → 把 Score 从 0.1 提到 0.3
- 框互相重叠太严重 → 把 IoU 从 0.5 提到 0.7
- 多边形顶点多到手酸 → 把 Polygon detail 从 60 降到 30
- 高分辨率图像第一次推理很慢 → 先选 speed 档模型,或把图缩到 1024 宽以内再标注
- 模型首次使用会自动下载(部分模型接近 2 GB),可提前从 File > AI Models… 窗口管理,支持后台下载和取消队列
进一步:接入你自己的模型
labelme 把模型清单和调用逻辑收敛得很集中:可用模型列表定义在labelme/_ai_models.py,推理与形状转换封装在 labelme/_automation/ 目录。如果你想换成自训练的检测模型,照着AiAssistSession的propose_shapes接口实现同样的"输入图像、输出形状"契约即可,界面部分基本不用动。
从文本提示到自动多边形,这条链路把"找目标"和"描轮廓"两个最耗时的环节交给了模型,人只负责核对和精修。配合上面这些阈值与 detail 调法,多数场景下标注速度能提升数倍。
【免费下载链接】labelmeImage annotation with Python. Supports polygon, rectangle, circle, line, point, and AI-assisted annotation.项目地址: https://gitcode.com/gh_mirrors/la/labelme
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考