一、前期准备
(一)下载YOLOv5源码
(二)准备权重文件和数据集
(三)配置环境
一、测试,运行detect.py
(一)测试。
python detect.py --source E:\PycharmProjects\pythonProject2\datasets\test-dev\20190925_143900_1_5\RGB.mp4
(二)剖析传参部分:
- cfg,data,weights:前面看过了是一定要传的两个参;
- hyp:参数咱暂时用不上,是指定一些超参数用的(学习率啥的);
- epochs: 轮数,默认300,需要指定;
- batch-size:一次喂多少数据,我这内存就能给16,所以可以不传按默认16;
- img-size: 训练和测试数据集的图片尺寸(个人理解为分辨率),默认640,640nargs='+' 表示参数可设置一个或多个;
- rect: 只要加上’–rect’程序就会将rect设为true,作用未知(应该是训练时启用矩形训练);
- resume: 重新训练(个人理解epoch会从头计算);
- notest:only test final epoch(这样训练中间变化趋势应该就看不到了);
- evolve:进化超参数(hyp),可以试试;
- cache-images:cache images for faster training,可以试试;
- name:renames results.txt to results_name.txt if supplied;
- device:cuda device, i.e. 0 or 0,1,2,3 or cpu,我这默认已经用了gtx1060了,不用改;
- single-cls:train as single-class dataset,暂时没用;
用tensorboard查看数据:
tensorboard --logdir=runs
二、训练
python train.py --img 640 --batch-size 16 --epochs 10 --data data/coco128.yaml --cfg models/yolov5s.yaml
---------------------------慢慢等吧-----------------------------
训练完毕后会在runs→train中生成exp文件夹,包含训练好的权重文件和性能曲线
解释一下results.png中的各项数据:
- Classification:推测为分类loss均值,越小分类越准;
- Precision:准确率(找对的/找到的);
- Recall:召回率(找对的/该找对的);
- mAP@0.5 & mAP@0.5:0.95:这里说的挺好,总之就是AP是用Precision和Recall作为两轴作图后围成的面积,m表示平均,@后面的数表示判定iou为正负样本的阈值,@0.5:0.95表示阈值取0.5:0.05:0.95后取均值。
- GIoU:推测为GIoU损失函数均值,越小方框越准;
- Objectness:推测为目标检测loss均值,越小目标检测越准;
- (后两个这里没有)
三、遇到的问题
1、在使用tensorboard可视化结果时,报错:ValueError: Duplicate plugins for name projector
"Duplicate plugins for name %s" % plugin.plugin_name
ValueError: Duplicate plugins for name projector
解决办法:
在该环境的文件夹下E:\Anaconda3\envs\yolov5\Lib\site-packages,找到:tensorboard-2.8.0.dist-info文件 ,删除该文件,即可。
删除后再运行,无报错。