视频抽帧+模型训练

创建文件夹

建立存放待处理和处理文件夹

在工程包的主目录下新建目录

新建的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文件

改成

点击运行就好

等他跑完

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
YOLOv5是一种目标检测算法,它可以用于从视频取帧并进行目标检测。下面是使用YOLOv5进行视频帧的步骤: 1. 安装YOLOv5:首先,你需要在你的开发环境中安装YOLOv5。你可以从YOLOv5的官方GitHub仓库中获取源代码并按照说明进行安装。 2. 准备视频:将你想要取帧的视频准备好,并确保它可以在你的开发环境中访问。 3. 编写代码:使用Python编写代码来实现视频帧。你可以使用OpenCV库来读取视频文件,并使用YOLOv5模型来进行目标检测。以下是一个简单的示例代码: ```python import cv2 import torch from models.experimental import attempt_load from utils.general import non_max_suppression # 加载YOLOv5模型 model = attempt_load('yolov5s.pt', map_location=torch.device('cpu')) # 打开视频文件 video = cv2.VideoCapture('video.mp4') while True: # 读取视频帧 ret, frame = video.read() if not ret: break # 将帧转换为模型所需的格式 img = torch.from_numpy(frame.transpose(2, 0, 1)).float() / 255.0 img = img.unsqueeze(0) # 使用YOLOv5进行目标检测 detections = model(img)[0] detections = non_max_suppression(detections, conf_thres=0.5, iou_thres=0.5) # 在图像上绘制检测结果 for detection in detections: x1, y1, x2, y2, conf, cls = detection cv2.rectangle(frame, (x1, y1), (x2, y2), (255, 0, 0), 2) cv2.putText(frame, f'{cls}', (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (255, 0, 0), 2) # 显示帧 cv2.imshow('Frame', frame) # 按下 'q' 键退出循环 if cv2.waitKey(1) & 0xFF == ord('q'): break # 释放视频对象和关闭窗口 video.release() cv2.destroyAllWindows() ``` 请注意,上述代码仅为示例,你可能需要根据你的具体需求进行修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值