0、起源
来自两个blog的大神
最初基础(有请大神1号):
https://blog.csdn.net/weixin_45033788/article/details/115148152
这里本来是基于yolov3的,但在我的机器上怎么都调不通,但基于此弄清楚了yaml和cfg的区别,其实yaml比cfg要简单很多,许多参数直接在一个地方调整就可以了
对应源码修改的地方,按下述方案一步一步来即可(有请大神2号):
https://blog.csdn.net/weixin_41868104/article/details/107339535
1、pip install –r requirements很重要
看到红色ERROR不要慌,一步一步调整,差什么就装什么
目前来看tensorboard出现问题几率最大。
安装tensorboard,jupyter, ipywidgets,注意jupter,ipywidgets由于我用的是anaconda,出现ERROR时不要用conda install进行安装,要用pip install
2、按照自定义数据集格式复制粘贴annatations,images文件夹内容
3、生成makeTx.py和voc.label.py并运行
注意修改voc_label.py中的class
4、生成自己的rbc.yaml
由于只检查一类,注意修改nc:1
names:[RBC]
5、修改yolov5m.yaml
其中nc:1
6、预训练权重下载
借用2号大神百度云链接如下;链接: https://pan.baidu.com/s/1x7yxl26Wr_K5sKEL6lJMPQ 密码: 24ba
下载完成后,放入应该放置的位置
7、修改train.py代码,
修改了–cfg ;–data ;–epochs ;–batch-size ; --img-size,蓝色显示
parser.add_argument('--weights', type=str, default='weights/yolov5s.pt', help='initial weights path') #debug by WeiDing,已经放在weights那里了
parser.add_argument('--cfg', type=str, default='models/yolov5m.yaml', help='model.yaml path')
parser.add_argument('--data', type=str, default='data/rbc.yaml', help='data.yaml path')
parser.add_argument('--batch-size', type=int, default=2, help='total batch size for all GPUs')
parser.add_argument('--device', default='1', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
parser.add_argument('--workers', type=int, default=0, help='maximum number of dataloader workers')
8. 执行train.py
由于用到了default,后续参数可不输入
8. 结果如下
注:1、去除out of memory要调整train.py 中device default=’1’,之前一直报错,是因为默认为0
2、各种神奇的报错,百度之,往往可以找到结果
--------------------------------4月14日添加-----------------------
增加几个调试的TIP
1、spyder3老出现 You have missing dependencies! # ipython >=0.4 : None
在AnacondaUI中卸载spyder,发现5.0不能工作,装回3.2.3,重新工作了
2、from google.protobuf.internal import enum_type_wrapper,ImportError: cannot import name 'enum_type_wrapper'
pip uninstall protobuf
cond install protobuf
3、CUDA unavailable, invalid device 0 requested
修改train.py中parser.add_argument('--device', default='cpu', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
3.1 临时解决方案:把default='CPU'换成CPU解决了,但是问题没有完全解决,
3.2 让GPU跑起来吧,根据官网的issues,还是torch和torchvision版本不一致的问题,我当时无意中将torch删除后重装,但是安装的不是和cu101相关连的版本,所以导致这个问题产生
https://github.com/ultralytics/yolov5/issues/474
pip install torch==1.7.0+cu101 torchvision==0.8.1+cu101 -f https://download.pytorch.org/whl/torch_stable.html
如果出现访问拒绝,在install后面加上--user
进到https://download.pytorch.org/whl/torch_stable.html中查看有什么稳定版本,依据提示,对应调整。
装好后'--device', default='0',GPU跑起来了,10分钟一个epoch立刻变成1分钟一个了,爽
4、hyp = yaml.load(f, Loader=yaml.SafeLoader) # load hyps AttributeError: module 'yaml' has no attribute 'load'
https://blog.csdn.net/laovife/article/details/106715049
解决办法,将pyyaml版本更新至5.4,问题解决。
同时安装click0.7, 降低six到1.10
记得重启anaconda