创建文件夹
建立存放待处理和处理文件夹
在工程包的主目录下新建目录
新建的mydata实际上是用来存放我们后续模型训练前处理的图片的,分开videos和images
后面吧video抽帧后的图片保存到image去
运行代码
在主目录下新建.py文件
代码
import cv2
from PIL import Image
import numpy as np
cap = cv2.VideoCapture("D:/Users/14211/Desktop/yolov5-master/mydata/videos/test1.mp4") # 获取视频对象"
isOpened = cap.isOpened # 判断是否打开
# 视频信息获取
fps = cap.get(cv2.CAP_PROP_FPS)
imageNum = 0
sum=0
timef=15 #隔15帧保存一张图片
while (isOpened):
sum+=1
(frameState, frame) = cap.read() # 记录每帧及获取状态
if frameState == True and (sum % timef==0):
# 格式转变,BGRtoRGB
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# 转变成Image
frame = Image.fromarray(np.uint8(frame))
frame = np.array(frame)
# RGBtoBGR满足opencv显示格式
frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
imageNum = imageNum + 1
fileName = 'D:/Users/14211/Desktop/yolov5-master/mydata/images/image' + str(imageNum) + '.jpg' # 存储路径
cv2.imwrite(fileName, frame, [cv2.IMWRITE_JPEG_QUALITY, 100])
print(fileName + " successfully write in") # 输出存储状态
elif frameState == False:
break
print('finish!')
cap.release()
运行结果
可以看到按照每15帧把视频抽出来了。
打标签
labelimg
一定要把自动保存打勾,这个东东经常闪退的
- w 选框标注
- a 上一张
- d 下一张
- 记得要换成yolo格式
分别在lables和images中创建train(训练集)和val(测试集)文件,选取部分数据作为测试集,注意选取测试集的图片要和标签测试集的相对应
打完标签后的图片
我们现在选取一部分放入train(训练集),剩下的放入vla(测试集)中
注意class.txt放在最外层
数据划分的方法并没有明确的规定,不过可以参考3个原则:
对于小规模样本集(几万量级),常用的分配比例是 60% 训练集、20% 验证集、20% 测试集。
对于大规模样本集(百万级以上),只要验证集和测试集的数量足够即可,例如有 100w 条数据,那么留 1w 验证集,1w 测试集即可。1000w 的数据,同样留 1w 验证集和 1w 测试集。
超参数越少,或者超参数很容易调整,那么可以减少验证集的比例,更多的分配给训练集。
images和labels这两个文件夹名字千万别打错,不然后面会报错,
在/images和/labels目录下记得放对应的图片和处理好的图片。
修改coco128.yaml文件
在data里面
把这个文件复制一份改成自己的名字(my_fire_check.yaml)放在该目录下。
修改我们的文件:
- path: ./mydata # 根路径,相对于当前项目而言
- train: images/train # 训练集数据目录
- val: images/val # 验证集数据目录
修改成自己需要的东西
修改detect.py文件
改成
点击运行就好
等他跑完