3、LabelImg高级功能:自动保存、快捷键设置、标签管理、批量操作
说实话,很多人用LabelImg就是打开、画框、保存、下一张。这样用当然没问题,但效率嘛……我见过一个学员标注500张图用了整整两天,手都点酸了。其实LabelImg藏着不少好东西,用好了能省一半时间。今天我就把这些压箱底的功能翻出来,一个个说清楚。
3.1 自动保存:别再手动Ctrl+S了
我刚开始做标注的时候,有个坏习惯——画完一张图就猛按Ctrl+S。后来项目量大了,一天要标几百张,手指头都快抽筋了。后来我发现,LabelImg其实自带自动保存功能。
怎么开启?很简单,在菜单栏找到 View → Auto Save mode,勾上就行。或者直接按快捷键 Ctrl+Shift+A。
W 或 D 切换到下一张,标注文件自动就存好了。全程不用碰鼠标去点保存按钮。
你可能会问:「万一标错了怎么办?」嗯,这个问题问得好。自动保存确实会覆盖之前的标注,所以我建议你搭配版本管理工具(比如Git)来用。我自己的做法是每标完100张就手动备份一次,防止手滑。
3.2 快捷键设置:把常用操作绑在指尖
LabelImg默认的快捷键其实够用,但每个人的习惯不一样。比如我习惯用 W 画框,但有人觉得 R 更顺手。好在LabelImg支持自定义快捷键。
设置入口:菜单栏 File → Settings → Shortcuts。
这里我列一下我最常用的快捷键配置,供你参考:
| 功能 | 默认快捷键 | 我改成的键 | 说明 |
|---|---|---|---|
| 创建矩形框 | W | W | 这个不改,W最顺手 |
| 下一张图片 | D | Space(空格) | 空格键按起来更爽 |
| 上一张图片 | A | Shift+Space | 防止误触 |
| 删除选中框 | Delete | Ctrl+D | Delete键太远了 |
| 保存 | Ctrl+S | Ctrl+S | 保留默认,但开了自动保存后很少用 |
| 放大/缩小 | Ctrl++ / Ctrl+- | 滚轮 | 鼠标滚轮缩放更自然 |
Ctrl+C 改成了别的功能,结果复制粘贴全废了,折腾了半天才改回来。建议你先在脑子里过一遍常用操作,再动手改。
3.3 标签管理:别让标签列表变成垃圾堆
做YOLO项目最怕什么?标签混乱。我见过一个项目,光「car」就有 car、Car、CAR、cars 四种写法。训练的时候模型直接懵了——同一个东西,标签名不一样,它怎么学?
LabelImg的标签管理功能,就是用来治这个毛病的。
在菜单栏 Edit → Label List 里,你可以看到当前项目用到的所有标签。这里有几个实用操作:
- 添加标签:点
Add,输入标签名。建议统一用小写字母,比如person、car、dog。 - 删除标签:选中一个标签,点
Remove。注意,这个操作会删除所有使用该标签的标注框! - 重命名标签:选中标签,点
Rename。比如把Car改成car,所有标注框的标签名都会同步更新。
怎么导入标签列表?在 File → Open Dir 选择图片文件夹后,再点 Change Save Dir 选择标注文件保存位置。然后在 Edit → Label List 里,点 Load,选择你的 classes.txt 文件。这样所有标签就自动加载好了,画框时直接选,不用手打。
3.4 批量操作:一次搞定一堆图
批量操作是LabelImg里最容易被忽略的功能。我刚开始也不知道,后来项目催得紧,才硬着头皮研究出来的。
批量修改标签名:这个前面提到了,在标签列表里重命名,所有标注框一起改。比如你发现「bicycle」拼错了,改成「bike」,所有XML文件里的标签名都会变。
批量删除标签:在标签列表里删除某个标签,所有包含这个标签的标注框都会被删掉。慎用!我建议先备份再操作。
批量调整标注框:这个功能藏得比较深。在 View → Auto Labeling 里,你可以设置一些规则,比如「所有框的宽度不能小于10像素」。但说实话,这个功能我用得不多,因为自动调整有时候会误伤。
批量导出格式:LabelImg默认保存为Pascal VOC格式(XML文件)。但YOLO需要的是TXT文件。别慌,LabelImg支持批量转换。在 File → Export 里,选择 YOLO 格式,然后选择保存目录。它会自动把当前文件夹里所有XML文件转换成YOLO格式的TXT文件。
3.5 避坑指南:我踩过的那些坑
最后,分享几个我实际项目中遇到的坑,你遇到了可以少走弯路:
- 坑一:自动保存和手动保存混用,导致文件冲突。解决方案:要么全自动,要么全手动,别混着来。
- 坑二:快捷键改得太花哨,结果自己都记不住。建议只改3-5个最常用的,其他的保持默认。
- 坑三:标签名用了中文。YOLO对中文支持不太好,训练时容易报编码错误。老老实实用英文吧。
- 坑四:批量操作前没备份。我曾经一键删除了所有「car」的标注,结果发现删错了……从那以后,每次批量操作前,我都会把整个标注文件夹复制一份。
好了,LabelImg的高级功能就这些。说实话,这些功能看着不起眼,但用好了真的能省不少时间。你想想看,别人标1000张图要两天,你用这些技巧可能一天就搞定了。剩下的时间,喝杯咖啡,或者研究研究模型调参,不香吗?