• yolov5训练自己的模型


    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
    

     

    7.继续训练

    python train.py --resume True --cfg models/yolov5s.yaml --data data/coco128.yaml --weights runs/train/exp10/weights/last.pt --epoch 150 --batch-size 4

      

  • 相关阅读:
    DNS 主从同步配置
    Linux LVM卷组管理
    python ssh 执行shell命令
    python 批量远程机器,执行Linux命令
    连接管理 与 Netty 心跳机制
    java 注解 知识整理
    SOFARPC —— SPI 解析
    SOFARPC —— Generic Service (泛化调用) 解析
    线程池
    关于ava容器、队列,知识点总结
  • 原文地址:https://www.cnblogs.com/hyh123/p/16219030.html
Copyright © 2020-2023  润新知