1.视频图片切片
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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文件
1 2 3 4 5 6 7 | path: ../datasets train: train val: val test: test nc : 1 (类别个数) names 类别名称 |
3.2修改model下的yolov5s.yaml
1 | nc:1 |
4.开始训练
1 | 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.使用训练后的模型
1 | python detect.py --weights runs/train/exp10/weights/best.pt --source data/images/image1919.jpg |
1 | python detect.py --weights runs/train/exp10/weights/best.pt --source data/video/tiaowu.mp4 |
7.继续训练
1 | 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 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步