2. 标注工具入门:Labelme安装与配置、界面介绍、基本操作流程
做图像分割,第一步就是搞定标注工具。我见过太多人一上来就研究算法,结果数据标注环节卡了半个月。说白了,标注是地基,地基不稳,后面全是白费功夫。
今天咱们就聊聊 Labelme 这个工具。它是我个人最常用的标注工具之一,轻量、开源、跨平台,特别适合做语义分割和实例分割的标注。嗯,咱们直接上手。
2.1 Labelme 是什么?
Labelme 是一个基于 Python 的图像标注工具。它用起来很简单——打开图片,沿着物体边缘画点,保存成 JSON 文件。就这么三步。
你可能会问:为什么不用 LabelImg?那个不是更流行吗?
没错,LabelImg 确实很火,但它主要做目标检测的矩形框标注。而 Labelme 支持多边形标注,能精确勾勒出物体的轮廓。做分割任务,多边形是刚需。
核心概念:Labelme 生成的 JSON 文件里,存储的是每个标注对象的 多边形顶点坐标 和 类别标签。后续训练时,我们会把这些坐标转成 mask 掩码图。
2.2 安装与配置
安装 Labelme 非常简单。我建议直接用 pip 安装,省心。
# 推荐使用 Python 3.6 以上版本
pip install labelme
如果你用的是 Anaconda 环境,也可以创建一个虚拟环境来装:
conda create -n labelme python=3.8
conda activate labelme
pip install labelme
安装完成后,在终端输入 labelme 就能启动。我第一次用的时候,敲完命令等了两秒没反应,还以为装错了。其实它启动需要一点时间,别急。
小技巧:如果你在 macOS 上遇到权限问题,试试 pip install --user labelme。我在公司配新电脑时就踩过这个坑。
2.3 界面介绍
Labelme 的界面非常简洁。打开后你会看到:
- 左侧工具栏:包含打开文件、保存、撤销、删除等按钮
- 中央画布:显示当前图片,标注操作都在这里完成
- 右侧文件列表:显示当前文件夹下的所有图片
- 底部状态栏:显示当前鼠标坐标、缩放比例等信息
说实话,我第一次打开时觉得这界面也太简陋了。但用久了你会发现,这种极简设计反而高效——没有花里胡哨的功能干扰你,专注做标注。
2.4 基本操作流程
咱们走一遍完整流程。我以标注一张包含「猫」和「狗」的图片为例。
第一步:打开图片
点击左侧工具栏的 Open Dir 按钮,选择存放图片的文件夹。右侧文件列表会显示所有图片。双击任意一张,它就会出现在中央画布上。
注意:Labelme 默认只显示常见图片格式(jpg、png、bmp 等)。如果你的图片是 tiff 格式,需要先转换一下。我曾经因为这个问题折腾了半小时,后来才发现是格式不兼容。
第二步:创建多边形标注
点击左侧的 Create Polygons 按钮(或者按快捷键 Ctrl+N),鼠标会变成十字形。然后沿着物体边缘依次点击,每个点都会形成一个顶点。
举个例子,标注一只猫:
- 从猫的耳朵开始,点击第一个点
- 沿着猫的轮廓,每隔一段距离点击一次
- 绕完一圈后,双击鼠标左键,自动闭合多边形
- 弹出对话框,输入标签名称,比如 "cat"
嗯,这里要注意:点不要点得太密,否则文件会很大;也不要太稀疏,否则轮廓不准确。我个人习惯是每隔 10-15 像素点一个点,边缘弯曲的地方加密一些。
第三步:保存 JSON 文件
标注完一张图后,点击 Save 按钮(或按 Ctrl+S)。Labelme 会自动生成一个同名的 JSON 文件,保存在图片所在的文件夹里。
比如图片叫 cat_dog.jpg,保存后就会生成 cat_dog.json。
{
"version": "4.5.6",
"flags": {},
"shapes": [
{
"label": "cat",
"points": [
[120, 45],
[135, 40],
[150, 50],
...
],
"group_id": null,
"shape_type": "polygon",
"flags": {}
},
{
"label": "dog",
"points": [
[300, 200],
[320, 195],
...
],
"group_id": null,
"shape_type": "polygon",
"flags": {}
}
],
"imagePath": "cat_dog.jpg",
"imageData": null
}
你看,JSON 的结构很清晰。每个 shapes 对象代表一个标注,包含标签名和顶点坐标。这就是我们后续要解析的数据。
避坑指南:我曾经犯过一个低级错误——标注完忘记保存,直接关了软件。结果半小时的标注全没了。所以我的建议是:每标完一张图,立刻保存。养成习惯。
2.5 核心流程示意图
下面这张图展示了 Labelme 标注的核心流程,从打开图片到生成 JSON,一目了然。
2.6 常用快捷键
用熟了之后,快捷键能大幅提升效率。我整理了一份常用快捷键表:
| 快捷键 | 功能 | 说明 |
|---|---|---|
Ctrl+N |
创建多边形 | 开始标注新物体 |
Ctrl+Z |
撤销上一个点 | 画错时回退,非常实用 |
Ctrl+S |
保存当前标注 | 每标完一张图立刻按 |
Ctrl+Del |
删除选中标注 | 标错了直接删掉重来 |
滚轮 |
缩放图片 | 细节标注时放大看 |
按住右键拖动 |
平移画布 | 放大后移动视野 |
重要提醒:Labelme 的撤销功能只能撤销当前多边形的上一个点,不能撤销整个标注。如果你标到一半想放弃当前物体,按 Esc 键取消即可。
2.7 我的一点经验
最后分享几个小经验:
- 标注顺序:我习惯先标大物体,再标小物体。比如先标背景中的房子,再标前景的人。这样不容易漏标。
- 标签命名:尽量用英文小写,不要用中文。因为后续代码处理时,中文可能引起编码问题。我吃过这个亏。
- 多人协作:如果团队多人标注,建议统一标签名称。比如有人写 "cat",有人写 "Cat",后面合并数据时会很麻烦。
好了,Labelme 的基础操作就这些。说白了,它就是「打开图片 → 画多边形 → 保存 JSON」这三板斧。但别小看这三步,做得规范了,后面的训练流程会顺畅很多。
公众号:蓝海资料掘金营,微信deep3321