本文手把手教你安装开源图像标注神器Labelme,详解多边形/矩形标注技巧,并附JSON转数据集代码!适合计算机视觉/深度学习初学者,小白也能秒懂~
一、Labelme是什么?为什么选择它?
🔍 Labelme 是由麻省理工学院(MIT)计算机科学实验室开发的开源图像标注工具,支持多边形、矩形、关键点、语义分割等标注类型,生成JSON文件可直接用于训练YOLO、Mask R-CNN等模型。
优势对比:
✅ 免费开源:无版权风险,社区支持丰富
✅ 跨平台:Windows/macOS/Linux全兼容
✅ 灵活输出:支持JSON → COCO/VOC格式转换
🚫 替代LabelImg等工具:更擅长不规则物体标注(如医学图像、遥感影像)
💡 应用场景:目标检测、图像分割、自动驾驶数据集制作、医疗影像分析
二、安装教程(Win/macOS/Linux通用)
1. 环境准备
Python 3.6+
Anaconda(管理虚拟环境,避免依赖冲突)点击查看安装教程
2. 环境安装
①创建虚拟环境(命名为labelme_env),输入 conda create -n learning python=3.10,其中learning为你要创建的环境名。安装过程中会提示是否继续,输入y继续安装,结束后就安装完成啦。
②检查下安装的库是否创建,输入 conda env list ,可以看到我们创建的learning已经存在。
③激活环境 ,输入conda activate learning。这个过程中我遇到了问题一直无法激活环境,后来直接使用直接使用 activate.bat,运行cmd在里面输入 D:\anaconda3\Scripts\activate.bat D:\anaconda3\envs\learning。激活后前面会显示环境名称。④安装labelme,输入pip install labelme 回车,开始自动安装。
3. 环境使用
终端输入labelme
,弹出GUI界面即成功🎉
三、标注实战:
1.常用功能介绍
在labelme软件中,最主要的几个功能如下:
1️⃣打开:只打开一张图像进行标注。
2️⃣打开目录:点击后会弹出一个窗口,选择一个文件夹,文件夹中包含要进行标注的图像。
3️⃣上一幅:在打开目录的情况下,点击后可切换到上一张图片,也可以使用快捷键a。
4️⃣下一幅:在打开目录的情况下,点击后可切换到下一张图片,也可以使用快捷键d。
5️⃣保存:在标注完成后,会生成标签文件。保存选项即选择本地的一个文件夹保存标签文件。建议在选择完打开目录后,便选择一个文件夹路径保存将要生成的标签文件。
6️⃣创建多边形:这一个功能是最重要的,选择了一张图像后便可以进行标注,选择这个功能后即可这对界面中显示的图像进行分割标注,注意标注点要尽可能贴合目标,也可以使用快捷键w
2.图像批注
①打开图像文件夹
点击 【打开】或【打开目录】
→ 选择图片
② 创建标注
多边形标注(不规则物体):点击工具栏【创建多边形】→ 沿物体边缘描点 → 按Enter闭合,添加标签
矩形标注(常规目标):点击
鼠标右键可以选择【创建矩形批注】、【原型批注】等形状
→ 拖拽画框,添加标签
③ 保存结果
点击 Save
→ 生成与图片同名的.json
文件(含坐标+标签信息)
在json文件中,
shapes
用于内存放目标的相关信息;
imagePath
表示被标注图像的相对存储路径;
imageData
表示被存储的图像的编码数据;
imageHeight
表示该图像的高度;
imageWidth
表示该图像的宽度。
shapes
内中的label
是目标名称,points
内保存了标注过程中点的坐标,从左上角(0,0)开始算起。
4. 快捷键大全(效率翻倍!)
按键 |
功能 |
---|---|
|
打开文件夹 |
|
保存JSON |
|
复制当前标注 |
|
删除选中标注 |
|
切换上一张/下一张 |
四、JSON转数据集:训练模型必备
Labelme的JSON需转为图像+掩码格式才能训练模型,两种方法:
方法1:命令行一键转换
labelme_json_to_dataset E:\data\cat.json
生成文件夹包含:
img.png
→ 原图label.png
→ 分割掩码(像素值为类别ID)label_names.txt
→ 类别标签
方法2:Python脚本批量转换
import os
from labelme import utils
json_dir = "D:/json/"
for json_file in os.listdir(json_dir):
if json_file.endswith('.json'):
data = json.load(open(os.path.join(json_dir, json_file)))
img = utils.img_b64_to_arr(data['imageData']) # 解析图像
lbl = utils.shapes_to_label(img.shape, data['shapes']) # 生成标签图
utils.lblsave(f"D:/labels/{json_file.replace('.json','.png')}", lbl)
代码说明:
需提前安装
Pillow
、numpy
库输出标签图为PNG格式,背景=0,物体=1,2,3...(对应类别ID)
五、高级技巧:提升标注效率
批量预标注:
用预训练模型(如YOLOv8)生成初始框 → 在Labelme中微调
自定义颜色:
修改
labelme/config/default.yaml
中的label_colors
值
COCO格式导出:
点击菜单
File
→Export as COCO format
直接生成训练集
结语
Labelme是CV领域必备的标注利器,从安装到实战,本文已覆盖90%使用场景!