目录
labelImg 使用教程
LabelImg简介
LabelImg用法
步骤 (PascalVOC)
步骤 (YOLO)
创建预定义的类
注释可视化
热键
验证图片
设置困难识别对象
如何重置设置
实际操作
相关和附加工具
labelImg安装
在gitbash的安装
从源代码构建
使用 Docker
拓展
roLabelImg简介
labelImg 使用教程
LabelImg简介
LabelImg是一个图形图像注释工具。
它是用Python编写的,并使用Qt作为其图形界面。
注释以PASCAL VOC格式保存为XML文件,这是ImageNet使用的格式。此外,它还支持YOLO格式和 CreateML 格式
LabelImg用法
步骤 (PascalVOC)
- 使用上述说明构建和启动。
- 单击菜单/文件中的“更改默认保存的注释文件夹”
- 点击“打开目录”
- 单击“创建矩形框”
- 单击并释放鼠标左键选择一个区域来注释矩形框
- 您可以使用鼠标右键拖动矩形框来复制或移动它
注释将保存到您指定的文件夹中。
您可以参考以下热键来加快您的工作流程。
步骤 (YOLO)
- 在
data/predefined_classes.txt
定义将用于您的培训的课程列表。 - 使用上述说明构建和启动。
- 在工具栏中“保存”按钮的正下方,单击“PascalVOC”按钮切换到 YOLO 格式。
- 您可以使用 Open/OpenDIR 处理单个或多个图像。完成单个图像后,单击保存。
YOLO 格式的 txt 文件将与您的图像同名保存在同一文件夹中。一个名为“classes.txt”的文件也保存到该文件夹中。“classes.txt”定义了你的 YOLO 标签所引用的类名列表。
笔记:
- 您的标签列表在处理图像列表的过程中不应更改。保存图像时,classes.txt 也会更新,而之前的注释不会更新。
- 保存为 YOLO 格式时不应该使用“默认类”功能,它不会被引用。
- 当保存为 YOLO 格式时,“困难”标志被丢弃。
创建预定义的类
您可以编辑data/predefined_classes.txt以加载预定义的类
注释可视化
- 将现有的标签文件复制到与图像相同的文件夹中。标签文件名必须与图像文件名相同。
- 单击文件并选择“打开目录”,然后打开图像文件夹。
- 在文件列表中选择图像,它将显示该图像中所有对象的边界框和标签。
(在视图中选择显示标签模式以显示/隐藏标签)
热键
验证图片
当按下空格键时,用户可以将图像标记为已验证,然后将显示绿色背景。在自动创建数据集时使用此功能,然后用户可以浏览所有图片并标记它们,而不用对其进行注释
设置困难识别对象
困难字段设置为1表示该对象已被注释为“困难”,例如,清晰可见但在不大量使用上下文的情况下很难识别的对象。根据您的深度神经网络实现,您可以在训练期间包括或排除困难对象。
如何重置设置
如果加载类时出现问题,您可以:
- 从 labelimg 的顶部菜单中单击 Menu/File/Reset All
从您的主目录中删除 .labelImgSettings.pkl。在 Linux 和 Mac 中,您可以执行以下操作:
rm ~/.labelImgSettings.pkl
实际操作
1. 先准备好两个文件夹,一个存放已经采集好的图片,另一个存放准备标定后的xml文件,并修改data
文件夹下的predefined_classes.txt
类文件(我这里只设置一个类 )并保存:
2.在LabelImg文件夹右键控制台运行python labelImg.py
启动程序:
3.点击open dir
,选择我们存放图片的文件夹,然后再选择我们准备存放xml文件的文件夹:
(注意:打开已有标注的文件夹时,务必保证里面有class.txt文件,否则程序将崩溃)
4.然后点击Create/nRectBox
或按快捷键W
开始画框:
5.选择目标类别并点击ok
6. 标完后点击Next Image或按快捷键D切换到下一张图片
7. 当一张图片标记完成后,会在一开始我们设置存储xml文件的文件夹下生成一个xml文件:
8. 打开可观察里面的内容:
相关和附加工具
- ImageNet Utils用于下载图像、为机器学习创建标签文本等
- 使用 Docker 运行 labelImg
- 生成 PASCAL VOC TFRecord 文件
- 基于 Nick Roach (GPL) 的 Icon 的 App Icon
- 在 vscode 中设置 python 开发
- 本项目在iHub平台的链接
- 将注释文件转换为 CSV 格式或 Google Cloud AutoML 格式
labelImg安装
在gitbash的安装
用gitbash打开,运行git clone https://github.com/tzutalin/labelImg
然后pip install pyqt5 ,报错,先安装SIP:pip install SIP,再次执行pip install pyqt5,仍然报错,
(直接下载源码安装),链接:PyQt5,下这个:
下好后,直接在.whl文件当前文件夹右键运行cmd,执行pip install PyQt5-5.13.0-5.13.0-cp35.cp36.cp37.cp38-none-win_amd64.whl
然后安装lxml:pip install lxml
接下来:
Open cmd and go to the labelImg directory
pyrcc4 -o line/resources.py resources.qrc
For pyqt5, pyrcc5 -o libs/resources.py resources.qrc
python labelImg.py
python labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
执行pyrcc4 -o line/resources.py resources.qrc
时报错:
原来我们安装的是PyQt5,不用执行上面那句,直接执行:pyrcc5 -o libs/resources.py resources.qrc
,然后运行py
thon labelImg.py
就好了。
从源代码构建
Linux/Ubuntu/Mac 至少需要Python 2.6并且已经使用PyQt 4.8进行了测试。但是,强烈建议使用Python 3 或更高版本和PyQt5 。
Ubuntu Linux
Python 3 + Qt5
sudo apt-get install pyqt5-dev-tools
sudo pip3 install -r requirements/requirements-linux-python3.txt
make qt5py3
python3 labelImg.py
python3 labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
IOS系统
Python 3 + Qt5
brew install qt# Install qt-5.x.x by Homebrewbrew install libxml2or using pippip3 install pyqt5 lxml # Install qt and lxml by pipmake qt5py3python3 labelImg.pypython3 labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
Python 3 Virtualenv(推荐)
Virtualenv 可以避免很多 QT/Python 版本的问题
brew install python3
pip3 install pipenv
pipenv run pip install pyqt5==5.15.2 lxml
pipenv run make qt5py3
pipenv run python3 labelImg.py
[Optional] rm -rf build dist; python setup.py py2app -A;mv “dist/labelImg.app” /Applications
注意:Last 命令为您提供了一个漂亮的 .app 文件,其中包含 /Applications 文件夹中的新 SVG 图标。可以考虑使用脚本:build-tools/build-for-macos.sh
Windows
安装Python、PyQt5并安装 lxml。
打开cmd进入labelImg目录
pyrcc4 -o libs/resources.py resources.qrcFor pyqt5, pyrcc5 -o libs/resources.py resources.qrcpython labelImg.pypython labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
如果要打包成单独的EXE文件
Install pyinstaller and execute:pip install pyinstallerpyinstaller --hidden-import=pyqt5 --hidden-import=lxml -F -n "labelImg" -c labelImg.py -p ./libs -p ./
Windows + anaconda
下载并安装Anaconda(Python 3+)
打开Anaconda Prompt,进入labelImg目录
conda install pyqt=5
conda install -c anaconda lxml
pyrcc5 -o libs/resources.py resources.qrc
python labelImg.py
python labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
使用 Docker
docker run -it \--user $(id -u) \-e DISPLAY=unix$DISPLAY \--workdir=$(pwd) \--volume="/home/$USER:/home/$USER" \--volume="/etc/group:/etc/group:ro" \--volume="/etc/passwd:/etc/passwd:ro" \--volume="/etc/shadow:/etc/shadow:ro" \--volume="/etc/sudoers.d:/etc/sudoers.d:ro" \-v /tmp/.X11-unix:/tmp/.X11-unix \tzutalin/py2qt4make qt4py2;./labelImg.py
拓展
roLabelImg简介
roLabelImg是基于labelImg改进的,也是用来标注为VOC格式的数据,但是在labelImg的基础上增加了能够使标注的框进行旋转的功能。
下载地址,https://github.com/cgvict/roLabelImg
最后
文章到这里就先结束了,后面还会持续更新,希望能帮助到各位大佬。如果文章有需要改进的地方还请大佬斧正。
制作不易,希望能得到各位小伙伴儿的支持。
再次感谢大家了。
相信小伙伴们使用labelimgdui 数据打标签以及有一定的了解, 更多干货请看这里:更多知识点总结
参考:VOC数据集图片标注工具labelImg简介、安装、使用方法详细攻略(windows) PyQt4、PyQt5GitHub – tzutalin/labelImg: ️ LabelImg is a graphical image annotation tool and label object bounding boxes in images