关于yolov3在ubuntu18下的配置,我的上一篇文章有介绍,本篇文章介绍如何构建用于yolov3训练的数据集。
数据集获取
数据集的获取可以依靠下载公开数据集或标注自己的数据集。一般来说,公开数据集很难满足我们实际的生产需求,因此大多数情况下需要我们自己标注数据集。一般使用labelImg用于目标检测的标注,标注完成后会生成与所标注图片同名的xml文件。
labelImg在win上的配置
1、下载源码https://github.com/tzutalin/labelImg
2、安装python3.5(据说用py3.6会报错,经测试在py3.7下可成功配置)
3、安装PyQt5:
pip install PyQt5
(如果下载很慢可以换pip源)
4、安装PyQt5_tools:
pip install pyqt5-tools
5、安装lxml:
pip install lxml
6、进入labelImg解压后的文件,执行命令
pyrcc5 -o resources.py resources.qrc
(用于将Qt文件格式转换为python格式)
7、运行labelImg.py
如果出现 No module named ‘libs.resources’ 的报错
No module named ‘libs.resources’将resources.py拖进libs文件夹即可
labelImg的使用
1、打开需要标注的图片所在目录
2、data文件夹下的predefined_classes.txt文件存储了标签,将这个文件内的标签修改为自己需要的。例如:
3、根据需要更改或不更改标注文件的存储位置
4、需要注意的是,尽管用于yolo训练的标注文件最终需要的是txt格式,但在制作数据集阶段我们仍需制作成VOC格式(标注文件为xml文件),因此在标注前需检查保存的格式是否为VOC格式。
5、按快捷键w对图片进行标注,选择标签,所有目标标注完成后保存,即可得到对应的xml文件。
6、xml文件的示例如下图
xml文件示例<annotation>
<folder></folder> //文件夹
<filename></filename> //文件名
<path></path> //文件路径
<source> //图像来源(不重要)
<database>Unknown </database>
</source>
<size> //图像尺寸(长宽、通道数)
<width>1920</width>
<height>810</height>
<depth>3</depth>
</size>
<segmented>0</segmented> //是否用于分割(在目标识别中01无所谓)
<object> //检测到的物体
<name>car</name> //物体类别
<pose>Unspecified</pose> //拍摄角度
<truncated>0</truncated> //是否被截断(0表示完整)
<difficult>0</difficult> //目标是否难以识别(0表示容易识别)
<bndbox> //bounding-box(包含左下角和右上角xy坐标)
<xmin>465</xmin>
<ymin>410</ymin>
<xmax>784</xmax>
<ymax>651</ymax>
</bndbox>
</object>
<object> //包含多个目标
⋯⋯
</object>
</annotation>
可能会用到的快捷键
Ctrl+u 加载目录中所有图像
Ctrl+s 保存
Ctrl+r 更改标注文件保存地址
Ctrl+d 复制当前标签和矩形框
space 将当前图片标记为已验证
w 创建一个矩形框
d 下一张图片
a 上一张图片
del 删除选定的矩形框
数据准备
需要将我们在上一步中准备的数据集整理成VOC格式,也就是将图片全部存放在JPEGImages下,将标注文件全部存放在Annotations下,ImageSets/Main文件夹先空着。
VOC格式
--VOCdevkit
--VOC2007 #2007可以为任意年份(也可以没有,事实上文件夹也可以不叫这些名字)
--Annotations #存储xml文件
--ImageSets
--Main #存储训练集/验证集/测试集的txt
--JPEGImages #存储图片
VOC格式数据集文件夹结构至此就完成了数据集的准备,part2会介绍训练的流程、参数设置等。
网友评论