
欢迎大家关注笔者,你的关注是我持续更博的最大动力
原创文章,转载告知,盗版必究
目标检测使用LabelImg标注VOC数据格式和YOLO数据格式——LabelImg使用详细教程
文章目录:
- 1 LabelImg介绍与安装
- 1.1 Label介绍
- 2.1 LabelImg安装
- 2.1.1 使用pip工具进行安装LabelImg (推荐)
- 2.1.2 在Ubuntu Linux上安装LabelImg
- 2.1.3 在macOS上安装LabelImg
- 2.1.4 在Virtualenv虚拟环境中安装labelimg
- 2.1.5 其他安装方法
- 2 LabelImg的使用
- 2.1 打开Labelimg
- 2.2 标注前先进行一些设置
- 2.3 标注常用的快捷键
- 3 VOC数据标签和格式和YOLO数据标签格式说明
- 3.1 VOC数据格式
- 3.2 YOLO数据格式
1 LabelImg介绍与安装
1.1 Label介绍
github是目标检测数据标注工具,可以标注标注两种格式:
- VOC标签格式,标注的标签存储在xml文件
- YOLO标签格式,标注的标签存储在txt文件中
LabelImg的github主页地址:
点我,带你去>https://github.com/tzutalin/labelImg
2.1 LabelImg安装
2.1.1 使用pip工具进行安装LabelImg (推荐)
使用
pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple
2.1.2 在Ubuntu Linux上安装LabelImg
1、Python 2 + Qt4
1 2 3 4 5 | sudo apt-get install pyqt4-dev-tools sudo pip install lxml make qt4py2 python labelImg.py python labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE] |
2、Python 3 + Qt5 (Recommended)
1 2 3 4 5 | 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] |
2.1.3 在macOS上安装LabelImg
1、Python 2 + Qt4
1 2 3 4 5 | brew install qt qt4 brew install libxml2 make qt4py2 python labelImg.py python labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE] |
2、Python 3 + Qt5 (Recommended)
1 2 3 4 5 6 7 8 9 10 | brew install qt # Install qt-5.x.x by Homebrew brew install libxml2 or using pip pip3 install pyqt5 lxml # Install qt and lxml by pip make qt5py3 python3 labelImg.py python3 labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE] |
2.1.4 在Virtualenv虚拟环境中安装labelimg
使用
1 2 3 4 5 6 | brew install python3 pip3 install pipenv pipenv run pip install pyqt5==5.13.2 lxml pipenv run make qt5py3 python3 labelImg.py [Optional] rm -rf build dist; python setup.py py2app -A;mv "dist/labelImg.app" /Applications |
2.1.5 其他安装方法
作者还给出了很多的其他安装方法,如docker安装方法等,大家可以去作者的github主页进行参考,这里我就不一一列举了!
2 LabelImg的使用
安装好之后,就是在命令行中打开LabeImg,在命令行中输入(因为安装完之后会自动添加到):
LabelImg 或labelimg
2.1 打开Labelimg
我们在要标定数据的时候,一般是已经制定好了要标注物体的类别,这样在打开LabelImg之后,我们只要框定目标之后,选择要对应的标签即可。
labelimg JPEGImage predefined_classes.txt
说明:
JPEGImage 目录 :存储的是图片的名字Annotation 目录 :用于存放标注图片的标签文件predefined_classes.txt 文件 :定义自己要标注的所有类别
例如:我的
1 2 3 4 5 6 7 | circle_red circle_gray rectangle_red rectangle_gray fingeprint_red fingeprint_gray other |
执行命令,然后选择JPEGImage待标注图片数据文件夹,然后点选择文件夹,如下图:
选择好标注数据文件夹之后,即进入到了LabelImg的界面,如下图:
- 最上方显示的是当前标注图片的路径
Open Dir :待标注图片数据的路径文件夹,即选择JPEGImage文件夹 Change Save Dir :保存类别标签的路径文件夹,即选择Annotation文件夹 PascalVOC :标注的标签保存成VOC格式,在鼠标点一下就变成YOLO,即此时就会把标注的标签变成YOLO格式
2.2 标注前先进行一些设置
点击
Auto Save mode :当你切换到下一张图片时,就会自动把上一张标注的图片标签自动保存下来,这样就不用每标注一样图片都按Ctrl+S 保存一下了Display Labels :标注好图片之后,会把框和标签都显示出来Advanced Mode :这样标注的十字架 就会一直悬浮在窗口,不用每次标完一个目标,再按一次W 快捷键,调出标注的十字架。
2.3 标注常用的快捷键
- ‘W’:调出标注的十字架,开始标注
A :切换到上一张图片D :切换到下一张图片Ctrl+S :保存标注好的标签del :删除标注的矩形框Ctrl+鼠标滚轮 :按住Ctrl,然后滚动鼠标滚轮,可以调整标注图片的显示大小Ctrl+u :选择要标注图片的文件夹Ctrl+r :选择标注好的label标签存放的文件夹↑→↓← :移动标注的矩形框的位置
使用标注的十字架,框住要标注的目标即可,如下图,是我对公章数据进行标注:
- 标注的时候,会把
predefined_classes.txt 预定义的标加载出来,然后我们只要选择对应的标签即可 - 右上角会显示已经标注目标的标签
3 VOC数据标签和格式和YOLO数据标签格式说明
3.1 VOC数据格式
VOC数据格式,会直接把每张图片标注的标签信息保存到一个
例如:我们上面标注的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | <annotation> <folder>JPEGImage</folder> <filename>000000.jpg</filename> <path>D:\ZF\2_ZF_data\3_stamp_data\标注公章数据\JPEGImage\000000.jpg</path> <source> <database>Unknown</database> </source> <size> <width>500</width> <height>402</height> <depth>3</depth> </size> <segmented>0</segmented> <object> <name>circle_red</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>0</difficult> <bndbox> <xmin>168</xmin> <ymin>2</ymin> <xmax>355</xmax> <ymax>186</ymax> </bndbox> </object> <object> <name>circle_red</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>0</difficult> <bndbox> <xmin>2</xmin> <ymin>154</ymin> <xmax>208</xmax> <ymax>367</ymax> </bndbox> </object> <object> <name>circle_red</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>0</difficult> <bndbox> <xmin>305</xmin> <ymin>174</ymin> <xmax>493</xmax> <ymax>364</ymax> </bndbox> </object> </annotation> |
xml中的关键信息说明:
- 图片的名字
- 每个目标的标定框坐标:即左上角的坐标和右下角的坐标
- xmin
- ymin
- xmax
- ymax
3.2 YOLO数据格式
YOLO数据格式,会直接把每张图片标注的标签信息保存到一个
例如:我们上面标注的
1 2 3 | 0 0.521000 0.235075 0.362000 0.450249 0 0.213000 0.645522 0.418000 0.519900 0 0.794000 0.665423 0.376000 0.470149 |
txt中信息说明:
- 每一行代表标注的一个目标
- 第一个数代表标注目标的标签,第一目标circle_red,对应数字就是0
- 后面的四个数代表标注框的中心坐标和标注框的相对宽和高(进行了归一化,如何归一化可以参考我的这篇博客中的介绍)
同时会生成一个
1 2 3 4 5 6 7 | circle_red circle_gray rectangle_red rectangle_gray fingeprint_red fingeprint_gray other |
? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ? ⊕ ?