写在前面:本篇博客记录了yolov5视频抽帧构建数据集的全过程。
目录
一、 视频材料准备
二、数据集构建
三、运行数据集
一、 视频材料准备
1. 在yolov5-master下创建mydata目录,然后创建video目录和images目录、labels目录
2. 下载一个一两分钟的视频,放在video下。
3. 在yolov5-master下创建frameExtraction2Image.py,用来抽帧视频构建数据集。
4. 执行代码:
import cv2
import matplotlib.pyplot as plt
# video_path = "path_to_video_file.mp4"
video = cv2.VideoCaptu("./mydata/video/BNV.mp4")
# ret, frame = video.read()
#
# plt.imshow(frame)
# plt.imshow(cv2.cvtColor(frame,cv2.COLOR_BGR2RGB))
num = 0
save_step = 30
while True:
ret, frame = video.read()
if not ret:
break
num += 1
if num % save_step == 0:
cv2.imwrite("./mydata/images/" + str(num) + ".jpg", frame)
可能会遇到的问题:使用cv2时编译器不提示函数,但执行不报错。
执行一下命令查看opnecv的版本,我的是4.7.0,有上述问题!!
解决办法:版本降级,还是切换到base下执行吧。不影响conda,也会提示的。
- pip uninstall opencv-python
- pip install opencv-python==4.5.5.64 -i https://repo.huaweicloud.com/repository/pypi/simple
结果如下,编译器提示了:
5. 查看结果集
二、数据集构建
工具:labelimg
安装:pip install labelimg
启动:labelimg
1. 启动成功后,界面如下:
可能会遇到的问题:标注时无限闪退
我刚开始遇到过,下载Anoconda时我下载的是2023最新版的,使用的是python3.11,点击标注无限闪退。所以我卸载了最新的Anoconda和其他的python环境,选择下载的是清华源里面2022年10月份的windows版本,目前使用良好,没有其他问题。
2. 切换yolov5格式
3. 操作
- w 选框标注
- a 上一张
- d 下一张
tip:把这个勾选上,就会自动保存了!
4. 完成图片的标注后,分别在lables和images中创建train(训练集)和val(测试集)文件,选取部分数据作为测试集,注意选取测试集的图片要和标签测试集的相对应。
剩余数据,全部放在train中,注意标签中的classes.txt放在最外层,到时候作为myvideo.yaml中的name使用。
5. 最终目录结构如下:
三、运行数据集
1. 将data目录下的coco128.yaml复制一份到data目录下,重命名为myvideo.yaml。更改内容如下:
注意:这个name中的内容就是你的classes.txt中的内容。
- path: ./mydata # 根路径,相对于当前项目而言
- train: images/train # 训练集数据目录
- val: images/val # 验证集数据目录
2. 更改train.py中的配置:
测试基本改个data就差不多了。
3. 运行展示
emmmp,运行没问题,公司电脑配置太垃圾,如果你出现了内存溢出的问题,那就把:epochs和batch-size数值改低一些吧。
至此yolov5视频抽帧数据集训练就结束了,后面有时间在yolo专栏中出一个应用的教程。或者写一写安装过程中遇到的坑吧。打工人摸鱼的时光不多,希望这篇博客能对道友有帮助!