LabelImg标注工具使用及数据格式解析
介绍
LabelImg是目标检测数据标注工具,支持两种标注格式:
- VOC标签格式,标注的标签存储在xml文件
- YOLO标签格式,标注的标签存储在txt文件中
环境准备
确保电脑上安装python3+,其中windows和macOS推荐使用Anaconda等工具快速安装python。这里不再展开介绍。
安装
自动安装(推荐)
使用pip
安装LabelImg安装是最简单的方式,安装完之后会自动把LabelImg添加到环境变量中。
打开终端输入如下命令安装:
1 | pip install labelimg |
国内速度慢的可指定镜像源再安装:
1 | pip install labelimg -i https://mirrors.aliyun.com/pypi/simple/ |
注:在部分老电脑上直接安装labelimg最新版有的不能成功,经测试安装1.8.0版本以下老版本可以,出错的可指定版本,安装这之下版本:
1 | pip install labelimg==1.8.0 |
手动安装
需从官方下载源码:https://github.com/tzutalin/labelImg
从源码开始安装LabelImg,一般比较麻烦,不推荐
Ubuntu
① Python 2 + Qt4
使用如下命令安装:
1 | sudo apt-get install pyqt4-dev-tools |
② Python 3 + Qt5 (Recommended)
使用如下命令安装:
1 | sudo apt-get install pyqt5-dev-tools |
macOS
① Python 2 + Qt4
使用如下命令安装:
1 | brew install qt qt4 |
② Python 3 + Qt5 (Recommended)
使用如下命令安装:
1 | brew install qt |
Virtualenv
使用virtualenv
创建虚拟环境可以避免python版本和QT版本带来的一些问题,当然你也可以用conda
创建虚拟环境。
1 | brew install python3 |
更多安装方式
可参见官方,如docker安装方法,这里不再详细介绍。
使用
打开软件
① 如果是pip
安装的,由于会自动加入环境变量,因此只要在终端输入LabelImg
或 labelimg
即可打开。
② 如果是手动编译的,需要到软件安装目录打开终端,运行python labelImg.py
。
按钮介绍
Open Dir
:待标注图片数据的路径文件夹Change Save Dir
:保存类别标签的路径文件夹PascalVOC
:标注的标签保存成VOC格式,在鼠标点一下就变成YOLO,即此时就会把标注的标签变成YOLO格式Create RectBox
:点击后鼠标会变成十字架,可以开始画框
快捷键介绍
W
:调出标注的十字架,开始标注A
:切换到上一张图片D
:切换到下一张图片Ctrl+S
:保存标注好的标签del
:删除标注的矩形框Ctrl+鼠标滚轮
:按住Ctrl,然后滚动鼠标滚轮,可以调整标注图片的显示大小Ctrl+u
:选择要标注图片的文件夹Ctrl+r
:选择标注好的label标签存放的文件夹↑→↓←
:移动标注的矩形框的位置
设置
点击View
显示,推荐选上以下几个选项:
Auto Save mode
:当你切换到下一张图片时,就会自动把上一张标注的图片标签自动保存下来,这样就不用每标注一样图片都按Ctrl+S
保存一下了Display Labels
:标注好图片之后,会把框和标签都显示出来Advanced Mode
:这样标注的十字架就会一直悬浮在窗口,不用每次标完一个目标,再按一次W
快捷键或点击Create RectBox
,调出标注的十字架。
读取标注
如果已存在标注文件,可点击File
->Open Annotation
打开。
具体标注过程展示
① 首先,打开图片所在文件夹,这边为方便演示,demo
文件夹中只有一张图片,标注保存路径也设置成demo
文件夹。
② 按一次W
快捷键或点击Create RectBox
,调出标注的十字架,开始画框。画好框后会弹出窗口提示输入类别。
③ 输入类别,完成标注。
可看到标注完成后,类别(这里的类别是person
)会展示在右边的窗口中,与框对应的颜色显示。
保存后,会看到在设置的标注保存路径中会生成与图片同名的标注文件:
如果标注需要修正,先确保进入编辑模式(点击Edit RectBox
):
比如框画得不好,可以选中框按Delete
删除后,重画。
比如类别需要修改,从右边窗口选择需要修改的类别,右键Edit Label
进行修改。
其他技巧
如果类别种类确定,可在txt中事先规定好要用到的类别,比如定义了一个predefined_classes.txt
,内容如下:
1 | circle_red |
在软件打开时,带上参数,指定图片路径和预定义类别txt的路径:
1 | labelimg /path/to/image_file /path/to/predefined_classes.txt |
那么标注的时候,会把predefined_classes.txt
预定义的标签加载出来,然后只要选择对应的标签即可,不需要手动输入了。
数据标签格式解析
VOC数据格式
如:标注的000001.jpg
图片,标注的标签信息会保存到000001.xml
文件中,000001.xml
中的信息如下:
1 | <annotation> |
YOLO数据格式
如:标注的000001.jpg
图片,标注的标签信息会保存到000001.txt
文件中(同时会生成一个classes.txt
文件),000001.txt
中的信息如下:
1 | 0 0.521000 0.235075 0.362000 0.450249 |
- 每一行代表标注的一个目标
- 第一个数代表标注目标的标签,如第一个目标是circle_red,对应的数字就是0
- 后面的四个数代表标注框的中心坐标和标注框的相对宽和高
classes.txt
中的信息如下,会按顺序存储标签:
1 | circle_red |