引言
2020年2月YOLO之父Joseph Redmon宣布退出计算机视觉研究领域,2020 年 4 月 23 日YOLOv4 发布,2020 年 6 月 10 日YOLOv5发布。
YOLOv5源代码:https://github.com/ultralytics/yolov5
如果接触过目标检测算法框架,相信大家对YOLOv5再熟悉不过了,并且根据不同的项目的背景下,制作自己的数据集,是我们必不可少的一步。废话不多说,下面手把手的教你制作自己的训练数据集。
数据预处理
1. 视频–>图像
一般我们拿到手的是视频,或者是图像;对于视频,我们根据项目的需求,把视频先转换成图像。新建一个images文件夹用于存放图像;新建一个Annotations文件夹用于存放标注数据后对应的Xml数据;新建一个labels文件夹用于存放已经标注过的图像源与对应的Xml文件文件名与路径,为其后模型训练做准备。
本文images和Xml文件夹的路径为 D:/inspectionData/VOCData/。
存放视频的路径为 D:/inspectionData/video/10.10.0.36_01_20210729205306871.mp4
【注:如果拿到手的源数据是图像,则省略此步骤】
代码
import cv2
import numpy as np
vc = cv2.VideoCapture(r'D:/inspectionData/video/10.10.0.36_01_20210729205306871.mp4') # 读入视频文件
c = 1
if vc.isOpened(): # 判断是否正常打开
rval, frame = vc.read()
else:
rval = False
timeF = 6 # 视频帧计数间隔频率
while rval: # 循环读取视频帧
rval, frame = vc.read()
if (c % timeF == 0): # 每隔timeF帧进行存储操作
# cv2.imshow('pic',frame)
cv2.imwrite(r'D:/inspectionData/VOCData/images/' + str('hat_') + str(c) + '.jpg', frame) # 存储为图像
c = c + 1
cv2.waitKey(1)
vc.release()
注: 在运行前需要修改对应的视频路径和存放数据集的路径。
运行
处理后的数据
2. 安装标注数据的工具
LabelImg是一个开源的图形图像注释工具,地址:https://github.com/chinakook/labelImg2
下载解压后,本文解压目录为 D:\labelImg2-master 。在解压的目录下安装对应的依赖库
Windows + Anaconda
# 安装pyqt依赖包
conda install pyqt=5
安装后在对应的解压目录下启动该工具
# 启动 labelImg
python labelImg.py
成功启动 labelImg 后界面如下:
3. 标注数据
下面讲解如何使用 labelImage工具标注图片信息用于训练自己的数据集。 在 labelImage工具 左上角的菜单栏打开我们的要标注图像的文件夹:
File ->Open Dir
在 labelImage工具 左上角的菜单栏打开我们的要保存标注后对应Xml的文件夹:
File ->Open Save Dir
在 labelImage工具中加载进来图像后如下图:
首先,设置自动保存:
View -> Auto Saving
通过快捷键w + 拖动鼠标选中我们要标注的对象,在 labelImg工具 的右上角Manage Label 中输入目标的标签hat ->add ->set as defult,点击OK,即可获得一个xml文件。
由于我们设置了自动保存,直接按 “d” 快捷键切换下一张图像以同样的操作进行标注。
到此,即可完成自己制作VOC格式的数据集。
labelImage工具快捷键
Ctrl + u | 从目录加载所有图像 |
---|---|
Ctrl + r | 更改默认注解目标目录 |
Ctrl + s | 保存 |
Ctrl + d | 复制当前标签和矩形框 |
Space | 将当前图像标记为已验证 |
w | 创建一个矩形框 |
d | 下一张图片 |
a | 上一张图片 |
del | 删除选中的矩形框 |
Enter | 选择一个矩形框 |
Ctrl + + | 放大 |
Ctrl - - | 缩小 |
↑→↓← | 键盘箭头移动选定的矩形框 |
4. 训练模型