2、标注工具入门:LabelImg安装与配置、界面介绍、基本标注流程
做YOLO项目,第一步就是搞数据。
数据怎么来?要么自己拍,要么网上扒。但不管哪种方式,最后都得经过一道工序——标注。说白了,就是告诉模型:「你看,这张图里这个框框里面是一只猫,那个框框里面是一条狗。」
我刚开始做目标检测的时候,觉得标注嘛,不就是画个框?结果真上手才发现,工具选不对,效率低到哭。今天我就带你搞定最经典的标注工具——LabelImg。
2.1 LabelImg 是什么?为什么选它?
LabelImg 是一款开源的图像标注工具。它用 Python 写的,界面基于 Qt。
你可能会问:「现在不是有很多在线标注平台吗?为什么还要学这个?」
嗯,原因很简单:离线、免费、轻量。我在项目初期,数据量不大,几百张图,用 LabelImg 完全够用。而且它直接生成 YOLO 需要的 txt 格式文件,省去了格式转换的麻烦。
核心优势:
- 完全免费,开源无广告
- 支持 Windows / Linux / macOS
- 直接输出 YOLO 格式(txt)和 Pascal VOC 格式(xml)
- 操作简单,上手快
2.2 安装与配置
安装这块,我踩过不少坑。尤其是 Windows 用户,环境配置搞不好,能折腾一上午。我直接给你最稳的方案。
方案一:直接下载打包好的 exe(推荐新手)
这是最省事的办法。去 GitHub 的 Releases 页面,下载 labelImg.exe 文件。双击就能用。
注意:下载的时候看清楚版本。我建议选最新的稳定版,别追 beta 版,容易出幺蛾子。
方案二:通过 pip 安装(推荐开发者)
如果你已经装了 Python 环境,用 pip 安装更灵活。
# 安装 PyQt5 和 lxml
pip install PyQt5 lxml
# 安装 labelImg
pip install labelImg
# 启动
labelImg
我个人习惯用 pip 安装。为什么?因为后续可以方便地改源码。比如我曾在项目中需要自定义快捷键,直接改 Python 文件就行,exe 版本就没这么灵活了。
避坑指南:
我曾经在 Windows 上遇到一个坑:安装完 PyQt5 后,启动 labelImg 报错「DLL load failed」。后来发现是 Python 版本问题。建议用 Python 3.8 或 3.9,别用最新的 3.12,有些依赖还没跟上。
方案三:从源码运行(进阶)
如果你喜欢折腾,或者需要二次开发,可以 clone 源码。
git clone https://github.com/tzutalin/labelImg.git
cd labelImg
pip install -r requirements/requirements-linux-python3.txt
make qt5py3
python labelImg.py
Linux 用户注意:记得先装好 PyQt5 的系统依赖。Ubuntu 上就是 sudo apt-get install pyqt5-dev-tools。
2.3 界面介绍
启动 LabelImg 后,你会看到一个简洁的界面。别被它「简陋」的外表骗了,该有的功能一个不少。
我把界面分成几个区域,你跟着我走一遍:
| 区域 | 功能 | 我的使用习惯 |
|---|---|---|
| 左侧工具栏 | 打开文件、打开目录、保存、更改保存目录 | 我一般直接「打开目录」,批量处理 |
| 中间画布区 | 显示图片,绘制标注框 | 用鼠标拖拽画框,配合快捷键 |
| 右侧标签列表 | 显示当前图片的所有标注框和标签名 | 双击可以修改标签名,很方便 |
| 底部状态栏 | 显示当前图片路径、标注数量 | 偶尔看一眼,确认保存状态 |
有几个快捷键你必须记住:
- W:创建标注框(画框模式)
- A / D:上一张 / 下一张图片
- Ctrl + S:保存标注
- Del:删除当前选中的标注框
- Ctrl + 鼠标滚轮:缩放图片
为什么强调快捷键?你想想看,标注几百张图,每张图画几个框,如果每次都要去点按钮,手都酸了。用快捷键,效率至少提升一倍。
2.4 基本标注流程
好了,工具装好了,界面也认识了。咱们直接上手标一张图。
我以标注「猫」和「狗」为例,走一遍完整流程:
- 打开图片目录
点击左侧「打开目录」,选择存放图片的文件夹。LabelImg 会自动加载所有图片。 - 设置保存格式
点击「View」菜单,勾选「Auto Save mode」。再点击「Change Save Dir」,选择标注文件的输出目录。我习惯在图片文件夹下建一个labels文件夹。 - 选择标注格式
点击「View」菜单,确保「YOLO」被选中。这样保存的就是 YOLO 格式的 txt 文件。 - 开始标注
按 W 键进入画框模式。在图片上按住鼠标左键,从目标左上角拖到右下角,松开。 - 输入标签名
松开鼠标后,会弹出一个对话框,让你输入标签名。输入「cat」或「dog」。注意:标签名要统一,别这次写「cat」,下次写「Cat」,大小写不一致会出问题。 - 保存
按 Ctrl + S 保存。如果你开启了自动保存模式,切换图片时会自动保存。 - 切换到下一张
按 D 键切换到下一张图片,重复步骤 4-6。
我的小技巧:
标注的时候,我习惯先标完所有图片中的「猫」,再标「狗」。这样不用频繁切换标签名。你想想看,如果一张图里既有猫又有狗,每次都要重新输入标签名,多麻烦。用这个「批量标注同类目标」的方法,效率能提升不少。
2.5 标注文件长什么样?
标注完成后,你会得到一个同名的 txt 文件。比如图片叫 001.jpg,标注文件就是 001.txt。
打开看看,内容是这样的:
0 0.5 0.5 0.3 0.4
1 0.8 0.3 0.2 0.25
每一行代表一个标注框。格式是:
类别ID 中心点x 中心点y 宽度 高度
注意:这里的坐标都是归一化的,取值范围 0~1。怎么算的?
举个例子:图片宽 1000 像素,高 800 像素。你画了一个框,左上角 (200, 150),右下角 (500, 450)。
- 框的宽度 = 500 - 200 = 300
- 框的高度 = 450 - 150 = 300
- 中心点 x = (200 + 500) / 2 = 350
- 中心点 y = (150 + 450) / 2 = 300
归一化后:
- 中心点 x = 350 / 1000 = 0.35
- 中心点 y = 300 / 800 = 0.375
- 宽度 = 300 / 1000 = 0.3
- 高度 = 300 / 800 = 0.375
所以这一行就是:0 0.35 0.375 0.3 0.375
注意:
类别 ID 是从 0 开始计数的。比如你的类别列表是 ['cat', 'dog'],那么 cat 的 ID 是 0,dog 的 ID 是 1。这个顺序要和训练时的配置文件保持一致。我曾经因为搞混了类别顺序,模型训练出来把猫认成了狗,排查了半天才发现是标注文件的问题。
2.6 常见问题与避坑
最后,我总结几个新手容易遇到的问题:
- 标注框画歪了怎么办?
按 Del 删除,重新画。别想着微调,LabelImg 不支持框的微调,删了重画最快。 - 图片太多,标注到一半想休息?
随时可以关掉。下次打开,LabelImg 会记住你上次标注的位置。前提是你别乱动图片文件夹的结构。 - 标注文件丢失了?
检查一下保存目录设置对了没有。我刚开始用的时候,没设置保存目录,结果标了 100 张图,一个标注文件都没生成。那种感觉,真的想砸电脑。 - 图片太大,加载慢?
LabelImg 对超大图片支持不太好。我建议先把图片缩放到 1920x1080 以内再标注。太大不仅加载慢,画框也不方便。
好了,LabelImg 的基本用法就这些。工具本身不复杂,关键是养成好的标注习惯。下一章,我会带你看看怎么用代码批量处理标注数据,以及如何做数据增强。
记住:标注质量直接决定模型上限。别偷懒,认真标好每一张图。