ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

yolov5训练自己的模型

2022-05-03 19:01:25  阅读:234  来源: 互联网

标签:yolov5 训练 -- 模型 cap cv2 train weights


1.视频图片切片

import cv2

cap = cv2.VideoCapture("tiaowu.mp4")
isOpened = cap.isOpened  # 判断是否打开‘
print(isOpened)
fps = cap.get(cv2.CAP_PROP_FPS)  # 帧率
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
print(fps, width, height)
i = 0
while (isOpened):
    if i == 5000:
        break
    else:
        i += 1
    (flag, frame) = cap.read()  # 读取每一张 flag frame
    fileName = 'xulie/image' + str(i) + '.jpg'
    print(fileName)
    if flag == True:
        cv2.imwrite(fileName, frame, [cv2.IMWRITE_JPEG_QUALITY, 100])

2.文件标注

https://www.makesense.ai/ 或者用labelimg

 

在yolov5文件夹下,新建个datasets文件夹,然后在datasets

生成新建文件夹:images(原始图片) train (训练文件夹 图片和txt,文件名称一致 90%)val(5%) test(5%)

 

3.修改训练文件

  3.1打开 data文件夹下有个 coco128.yaml文件

path: ../datasets 
train: train 
val: val 
test: test

nc : 1 (类别个数)
names 类别名称

 3.2修改model下的yolov5s.yaml

nc:1

 4.开始训练

 python train.py --cfg models/yolov5s.yaml --data data/coco128.yaml --weights yolov5s.pt --epoch 150 --batch-size 4

  

epoch是指训练轮数,可以从可视化图表看收敛情况,一般100以上吧,也有的简单的50轮就有效果了。我这里150其实多了。(为了方便演示,我下面的截图是用的epoch=10,实际模型我训练了150,那个要好久好久,其实没必要,这种简单的圆形,二三十次就收敛的很好了)

batch-size是一次放入训练的数量,4就是一次放4张图去训练。这个跟电脑性能有关,主要是显卡,我试了试,我这台笔记本最多跑到

 

5.训练完成

可以看到,它最终是保存了两个结果,last.pt 和 best.pt 顾名思义就是最后一次和最佳一次

结果保存在  runs\train\exp10\weights\   这个路径下,大小都是14M左右,和原始的5s大小相当

 runs\train\exp10\  文件夹下,还保存了一些可视化训练情况的图表,比如有个results.png

 

 

 6.使用训练后的模型

 python detect.py --weights runs/train/exp10/weights/best.pt --source data/images/image1919.jpg

  

 python detect.py --weights runs/train/exp10/weights/best.pt --source data/video/tiaowu.mp4

  

 

标签:yolov5,训练,--,模型,cap,cv2,train,weights
来源: https://www.cnblogs.com/hyh123/p/16219030.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有