自己电脑算力简直太差劲了,在AUTOdl上租个0.88/h的服务器跑yolov5代码,找了好多教程,鼓弄了两天时间我的代码才算能跑起来,感觉市面上的博客写的都不够详细,包括我遇到的一些问题,我整理了一下发出来也供自己参考
目录
4.5 设置pycharm远程连接时遇到SFTP连接不上的问题
1.AutoDL租用服务器
AutoDL-品质GPU租用平台-租GPU就上AutoDL打开官网后选择 计费方式 GPU型号数量(我猜服务器越好的越贵)
租完之后再传输文件时可以选择无卡模式开机(省钱)
等真正训练train.py时再正常开机
但是很可能这个服务器就被别人给占用了
注:镜像最好不要选择社区镜像
有的小伙伴想训练yolov5,刚好社区镜像里有,心思方便了不用配环境了,大错特错!我刚踩完这个坑,后续运行超级费劲(可能是我不会搞)而且看了这么多教程都没有搞社区镜像的,大家按部就班来吧还是
我选的是PyTorch1.11.0+Python3.8(ubuntu20.04)+Cuda11.3
2.下载&Pycharm远程开发
2.1 下载专业版pycharm
2.2 正确打开pycharm
2.3 pycharm远程开发
放一个AutoDL的帮助文档
AutoDL帮助文档https://www.autodl.com/docs/pycharm/ps:最后一步打开远程终端的下拉箭头pycharm2020版本没有,可以选择JupyterLab打开终端
3.正文:训练train.py
3.1 上传文档
具体请参考这篇
Xftp使用教程——远程传输YOLOv5到autodl上_邸笠佘司的博客-CSDN博客如何通过xftp上传文件至autodl端https://blog.csdn.net/m0_68738477/article/details/130885377?spm=1001.2014.3001.5501将yolo文件夹整成zip压缩包,打开xftp软件进行文件传输
或者将文件拖拽到JupyterLab的左侧文件夹位置(我觉得速度有点慢)
3.2 打开终端
使用unzip命令将压缩包解压到服务器端
unzip yolov5 revised.zip
进入文件夹,输入
cd yolov5 revisedconda init #输入后退出终端在进入终端 进行环境激活
cd yolov5-revised #进入到文件夹pip install -r requirements.txt #安装剩余的包
更改train中的model.yaml的路径以及parameter中的path、train、val的路径
输入如下进行训练
python train.py
共花了1.994h,训练结束如下
更改detect文件中的这几个路径
输入如下进行测试集训练,测试结束如下,训练结果保存在服务器的文件夹里
python detect.py
3.3 如何将服务器端的runs中训练结果导出到本地
输入如下,将数据打包到runs.tar.gz中
tar -cvf runs.tar.gz runs/中间runs.tar.gz的runs可以改成自己想要打包成gz文件的文件名字runs/为yolov5文件夹下的runs文件夹,意思是将runs文件夹下的所有内容都打包,有些费时间可以将最后的一个exp文件打包下载,如下所示tar -cvf exp35.tar.gz runs/detect/exp35/
将文件转移到自己本地目录下的yolov5/runs的文件下就好了
4.整个过程中我遇到的问题以及解
4.1 train.py过程中
报错:pandas._config.config.OptionError:"No such keys(s): 'mode.use_inf_as_null'"解答:pip install --upgrade panadspip install pandas==0.25.3
4.2 英文译文大概意思:图片无法打开
报错:global /io/opencv/modules/imgcodecs/src/loadsave.cpp (239) findDecoder imread_(...) can't open/read file: check file path/integrity或assertionerror: image not found .............解答:删除datasets/labels中的train.ache和test.cache
4.3训练中断后想继续训练
将default=False改成True(别忘记重新训练的时候需要改回False)
4.4训练完轮数后发现还想多训练几轮
在改变输入参数中的epochs后没有效果,同时修改runs结果文件中的opt.yaml文件。将其中的epochs修改为想要参数才成功。
4.5 设置pycharm远程连接时遇到SFTP连接不上的问题
重新创建一个新的连接服务器的界面就好了
5 配置好环境了想训练只需要更改一下几行代码
第一次配置好环境后并不需要每一次都重新配置环境(当然你更改租用的服务器得重新配置),那么我们需要修改哪些代码可以跳过配置直接运行呢?
5.1 train.py中
parser.add_argument('--cfg', type=str, default='datasets/helmet model.yaml', help='model.yaml path') parser.add_argument('--data', type=str, default='datasets/helmet parameter.yaml', help='dataset.yaml path')
parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
5.2 parameter.yaml文件中
# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]path: ./datasetstrain: ./datasets/images/train # 128 imagesval: ./datasets/images/test # 128 images
5.3 detect.py中
parser.add_argument('--weights', nargs='+', type=str, default='runs/train/exp2/weights/last.pt', help='model path(s)') parser.add_argument('--source', type=str, default='datasets/images/test/hard_hat_workers243.png', help='source') # file/folder, 0 for webcam parser.add_argument('--data', type=str,default='datasets/helmet parameter.yaml',help='dataset.yaml path')
parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
来源地址:https://blog.csdn.net/m0_68738477/article/details/130106135