小白快速上手 labelme:新手图像标注详解教程
前言
本教程主要面向初次使用 labelme
的新手,详细介绍了如何在 Windows 上通过 Anaconda
创建和配置环境,并使用 labelme
进行图像标注。
1. 准备工作
2. 创建 Conda 环境
使用 Conda 管理 Python 环境可以避免不同项目之间的依赖冲突。下面是配置步骤:
# 创建 Python 3.9 的新环境(名称为 labelme)
conda create -n labelme python=3.9 -y
# 激活环境
conda activate labelme
注意:可以根据需要选择不同的 Python 版本,但建议使用 3.8
或 3.9
,以确保 labelme
的兼容性,版本过高会导致不稳定直接退出程序。
3. 安装 labelme
安装 labelme
有两种主要方法:使用 Conda 或 Pip,各有优缺点。
方法一:使用 pip 安装 labelme
(简洁快速但不稳定)
激活环境后,直接运行以下命令使用 pip
安装:
pip install labelme
优点:pip
安装方法简洁、快速,适合 Conda 默认不包含 labelme
的情况。
缺点:有时依赖项可能因 Python 版本或系统环境导致兼容性问题。
方法二:使用 Conda 安装 labelme
(推荐)
激活环境后,直接运行以下命令使用 conda
安装:
conda install -c conda-forge labelme
优点:Conda 会自动解决依赖冲突问题,通常更稳定,且 Conda Forge 提供的包适配性较好。
缺点:Conda Forge 中的包可能不是最新版本,适合追求环境稳定的用户。
4. 启动 labelme
使用以下命令启动 labelme
:
labelme
日志内容结构
2024-11-16 13:26:07,488 [INFO ] __init__:get_config:67- Loading config file from: C:\Users\Natsu\.labelmerc
在 2024年11月16日 13:26:07
,程序正常运行并尝试从路径 C:\Users\Natsu\.labelmerc
加载配置文件。此消息表明程序的配置加载过程已开始,是运行过程中的一个正常操作。
5. LabelMe 的基本操作指南
5.1 图像加载
5.2 创建标注框

5.3 常用快捷键说明
为提高标注效率,labelme 提供以下常用快捷键:
6.结果
.json
文件,即表示已正确保存。7.Labelme 生成的 JSON 格式文件详解
Labelme 的标注结果以 JSON 文件格式保存,包含了标注图像的相关元数据以及每个标注区域的详细信息。以下是 JSON 文件的主要结构及其说明:
7.1 顶层结构
{
"version": "5.0.1",
"flags": {},
"shapes": [],
"imagePath": "example.jpg",
"imageData": null,
"imageHeight": 800,
"imageWidth": 600
}
version
:记录生成文件的 LabelMe 版本号,便于兼容性分析。flags
:用户定义的标志信息(默认为空,若无特别设置)。shapes
:一个列表,包含了所有标注的几何形状及其属性(详见下文)。imagePath
:图像文件的相对路径或名称,用于追溯标注图像。imageData
:图像的 Base64 编码数据,默认为 null
,标识未嵌入图像。imageHeight
和 imageWidth
:标注图像的分辨率(高度和宽度)。7.2 shapes
列表(标注内容)
shapes
是 JSON 文件的核心部分,每个标注对象都会以单独的条目存储在此列表中。结构如下:
"shapes": [
{
"label": "apple",
"points": [[100, 150], [200, 150], [200, 250], [100, 250]],
"group_id": null,
"shape_type": "polygon",
"flags": {}
}
]
label
:该标注区域的标签名称(例如“apple”)。points
:二维数组,存储标注形状的关键点坐标。每个点以 [x, y]
的形式表示。例如,以上数据定义了一个矩形的四个顶点。group_id
:标注分组的 ID,便于组织管理(默认为 null
,表示无分组)。shape_type
:标注形状的类型,可为:
"polygon"
:多边形(常用)"rectangle"
:矩形"circle"
:圆形"point"
:单点"line"
:直线flags
:标注区域的附加属性(默认为空对象 {}
)。7.3 示例完整文件
以下是标注一张图片的 JSON 文件示例:
{
"version": "5.0.1",
"flags": {},
"shapes": [
{
"label": "apple",
"points": [[100, 150], [200, 150], [200, 250], [100, 250]],
"group_id": null,
"shape_type": "polygon",
"flags": {}
},
{
"label": "banana",
"points": [[300, 100], [350, 150], [300, 200], [250, 150]],
"group_id": null,
"shape_type": "polygon",
"flags": {}
}
],
"imagePath": "example.jpg",
"imageData": null,
"imageHeight": 800,
"imageWidth": 600
}
7.4 注意事项
imagePath
字段中的图像路径应与图像文件实际位置保持一致,否则加载标注可能失败。points
坐标顺序决定了形状的轮廓,绘制时需注意顺时针或逆时针方向。8. 注意事项
Python 版本 3.9
+ 通过 Pip 安装 labelme
。labelme
环境中仅安装 labelme
包,避免安装其他不必要的包。作者:Natsuagin