📌 Labelme安装指南
首先,我们完成Labelme的安装。强烈建议使用Anaconda创建一个独立的Python环境,这样可以避免与电脑上其他项目的软件包发生冲突。
-
安装Anaconda :如果你还没有安装,请前往Anaconda官网下载并安装适合你操作系统的版本。
-
创建虚拟环境 :打开
Anaconda Prompt(Windows)或终端(macOS/Linux),执行以下命令创建一个名为labelme的新环境(推荐使用Python 3.6至3.8版本,兼容性较好):bashconda create --name=labelme python=3.6输入
y确认安装。 -
激活环境 :环境创建好后,使用以下命令激活它:
bashconda activate labelme命令提示符前的
(labelme)字样表示你已进入该环境。 -
安装Labelme :在激活的
labelme环境中,使用pip安装Labelge及界面依赖:bash# 安装界面依赖的PyQt5 pip install pyqt5 # 安装labelme pip install labelme为了加快下载速度,你可以使用国内的镜像源,例如清华源:
-i https://pypi.tuna.tsinghua.edu.cn/simple。
验证安装 :在labelme环境中输入labelme并回车,如果能成功弹出图形界面,说明安装一切就绪。
🖱️ 使用Labelme标注图像
安装成功后,我们来学习如何使用Labelme进行标注。整个流程可以概括为:准备图片 -> 启动工具与标注 -> 保存结果 -> 格式转换。下图展示了这一核心流程:
是 否 准备图像数据集 启动Labelme并载入图像 使用多边形工具进行标注 为每个区域输入标签 继续标注? 保存JSON文件 转换JSON为数据集 得到可视化标注图
下面我们来分解图中的关键步骤:
- 准备与载入 :首先,将你需要标注的所有图片放在同一个文件夹里。在终端输入
labelme启动工具,点击界面上的Open Dir按钮,选择这个图片文件夹。 - 开始标注 :点击
Create Polygons按钮,你就可以开始描点勾勒目标的轮廓了。- 描点:用鼠标在目标的边缘依次点击,形成一个闭合的多边形。
- 标注中 :如果某个点标错了,可以按
Ctrl+Z撤销上一个点。 - 完成一个目标 :闭合多边形后,会弹出一个对话框,让你输入该目标的标签名称。请确保同类别的标签名称完全一致。
- 保存结果 :一张图片上的所有目标都标注完成后,点击
Save按钮。Labelme会生成一个与图片同名的.json文件,这个文件记录了所有的标注信息。 - 格式转换(用于模型训练) :保存得到的JSON文件不能直接用于训练模型,需要转换成模型能识别的格式(通常是像素级的标签图)。
-
单文件转换 :对于单个JSON文件,可以使用Labelme自带的命令将其转换为带标签的PNG图像:
bashlabelme_json_to_dataset your_annotation.json这会在当前目录生成一个包含标签图像的新文件夹。
-
批量转换 :如果你有大量的JSON文件需要转换,推荐使用Labelme项目中提供的脚本(如
labelme2voc.py)进行批量处理。你需要先下载Labelme的源码:bashgit clone https://github.com/wkentaro/labelme然后根据你的任务(语义分割或实例分割)运行相应的脚本,并指定JSON文件所在目录、输出目录和一个定义好所有类别名的
labels.txt文件。
-
💡 实用技巧与注意事项
掌握基础操作后,下面这些技巧能让你的标注工作更高效、准确:
-
规划标签列表 :在开始大型标注项目前,先预先定义好所有可能的类别名称 (如
cat,dog,road,building),并确保所有标注人员统一使用,避免出现大小写或单复数的混乱。 -
高效编辑 :如果标注的点位有偏差,可以点击
Edit Polygons按钮,然后拖动点来进行微调。 -
处理带洞目标 :如果一个物体内部包含空洞(例如甜甜圈),你需要标注两个多边形:先标注外部轮廓,再标注内部空洞的轮廓,并将内部空洞的标签设置为
_background_,这样转换后空洞区域就会被正确识别为背景。 -
解决中文乱码(Windows用户) :部分Windows用户可能在查看转换后的可视化图片时遇到标签中文乱码的问题。这是因为Labelme的某个源码文件在读取文件时未指定编码。解决方法是找到
label_file.py文件,在大约第36行,修改代码为:pythonwith open(filename, 'rb' if PY2 else 'r', encoding='utf-8') as f:即添加
encoding='utf-8'。
🗂️ 从标注到数据集
完成所有标注和转换后,你应该得到一个结构清晰的数据集文件夹,通常包含以下内容:
JPEGImages/:存放所有的原始图片。SegmentationClass/:存放转换后的像素级标签PNG图像。这是语义分割训练最关键的真值文件。class_names.txt:列出数据集中所有的类别名称。
现在,你的自定义数据集已经准备就绪,可以用于训练你自己的图像分割模型了!