四天时间,前前后后环境搭建重复了四次。摸索过来,摸索过去,其实并不复杂。但作为小白在整个过程中还是跌跌撞撞遇到很多问题,所幸都顺利得以解决。为了方便之后再次查阅,同时为其他小伙伴提供帮助,避免走冤枉路,特此来总结下四天来整个yolov5环境搭建的经验。话不多说,上干货!
本文搭建的yolov5环境为:GPU,pytorch=1.10.1,torchvision==0.11.2 ,torchaudio==0.10.1,cudatoolkit=10.2,cudnn=8.6.0。相信有很多小伙伴由于自己电脑显卡支持更高的cuda驱动版本,便想着安装更新的cudatoolkit。我想说,在我刚开始搭建环境时,也有这样的想法,但后来①训练结果P、R、maP50值为零,无法正常进行预测的问题让我这个小白不得不屈服(尝试过多种解决方案无果)……为什么选择10.2,从YOLOv5的Github中相关用户的提问以及搜索①的解决方案,可知10.2值得你信赖。
网上教程很多,不再啰嗦,附上参考网址:
https://blog.csdn.net/weixin_46569877/article/details/121508939
本文安装的cuDNN版本稍有不同,如下图所示:
强烈建议学习用CONDA进行不同Python版本运行环境的隔离,附上学习网址:
https://blog.csdn.net/coder_oldgeek/article/details/122239755
CONDA安装好后,win+R->输入‘cmd’->回车,进入终端。
#1.创建一个CONDA环境,定义这个环境的名字和Python版本
# conda create -n 环境名 Python=版本号
$conda create -n YOLO_v5 python=3.8$
#2.进入所创建环境
# conda activate 环境名
$conda activate YOLO_v5$
环境创建时,遇到[y/n],记得选y。
由于后期需要安装PyTorch相关库,考虑到下载速度的原因,提前对CUDA配置镜像源,附上参考文章:
https://blog.csdn.net/u013066730/article/details/108616185
在进入之前创建的YOLO_v5环境后,运行以下代码进行pytorch,torchvision,torchaudio安装。
#3.PyTorch相关库安装(建议找个网络相对好的外界环境)
# CUDA 10.2
$pip install torch==1.11.0+cu102 torchvision==0.12.0+cu102 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu102$
YOLOv5代码的下载主要分为两种方式:a.到Github上下载YOLOV5包,下载地址为https://github.com/ultralytics/yolov5,下载好后解压,记住路径path;b.首先,由终端进入你想放置YOLOv5文件的路径path,之后输入命令$git clone https://github.com/ultralytics/yolov5.git$。
使用git方式有可能会遇到问题:②'git' 不是内部或外部命令,也不是可运行的程序,解决方式参考如下:
https://blog.csdn.net/Andone_hsx/article/details/87937329
通过终端进入YOLO_v5环境,并进入YOLOv5文件放置位置path。
#4.进入文件夹yolov5
$cd yolov5$
#5.相关依赖安装
$pip install -r requirements.txt$
此处可能会遇到**③WARNING: Ignore distutils configs in setup.cfg due to encoding errors.**的问题,这是由于依赖项文件requirements.txt编码集的原因,通过以下方式解决:
https://blog.csdn.net/weixin_37989267/article/details/128326603
事实上,至此仍有一个小问题未解决,在之后程序执行的过程中会产生错误:**④UserWarning: Failed to load image Python extension: Could not find module ……Try using the full path with constructor syntax.warn(f"Failed to load image Python extension: {e}")**,但其并不影响检测和训练过程,故不再作纠结。
至此,所有的YOLOv5+PyTorch相关配置已经完成,下面尝试检测和训练,以验证环境是否配置成功。
通过终端进入YOLO_v5环境,并进入路径path/yolov5。
我们使用YOLOv5自带的图片和官方的预训练权重yolov5s.pt进行检测。执行如下命令。
#6.执行detect.py文件进行检测
$python detect.py$
在检测过程中,会自动下载yolov5s.pt权重文件。但有时网络不好程序会报错,就需要自己去Github上下载(Releases · ultralytics/yolov5),并放在path/yolov5下。
命令运行过程终端显示内容如下(自己当时产生错误时就想找这个东西进行对照):
命令成功运行后,会在path/yolov5/runs/detect目录下生成一个exp的文件夹,里面为图片的检测结果,如下图所示。
我们使用官方的coco128训练集进行训练。在终端中执行如下命令。
#7.基于coco128数据集进行训练
$python train.py --img 640 --batch-size 2 --epochs 5 --data data/coco128.yaml --cfg models/yolov5s.yaml --weights yolov5s.pt$
关于以上命令中,各个参数的具体含义,附上参考网址:
https://blog.csdn.net/weixin_42638415/article/details/120799608
训练过程中,有可能会遇到错误⑤OSError: [WinError 1455] 页面文件太小,无法完成操作,这是虚拟内存没有设置+batch-size参数过大的原因。虚拟内存设置可参考以下网址:
https://blog.csdn.net/Together_CZ/article/details/126545991
命令运行过程终端显示内容如下(自己当时产生错误时就想找这个东西进行对照):
训练结束后,会在path/yolov5/runs/train目录下产生exp的文件夹,里面是训练结果,包括权重weights、混淆矩阵confusion_matrix等等,如下图所示:
至此,完美收关。关于如何搭建自己的训练集进行训练,网上有很多参考资料,也很简单不再赘述。
总得来看,YOLOv5整个配置过程并不复杂,主要就是7行指令。但是,过程中的一系列小问题需要去一个个耐心去解决。本人所遇到最困惑的问题是问题①,最后产生的现象是:a.程序执行时,AMP: checks failed , disabling Automatic Mixed Precision.;b.结果总结summary中,P、R、mAP50均为0;c.训练结果exp中,_pred文件没有预测框。在上面至少耗费了两天多的时间,事实上具体问题原因仍未找到,猜测是较新版本CUDN/cuDNN与比较老版本的显卡的适配问题【本人为GeForce GTX 1650;我同学为GeForce RTX 3060,他成功安装了如下环境pytorch=1.12.0+cu116,cudatoolkit=11.6.55,cudnn=8.4.0】。最后只能退而求其次安装另外版本cudatoolkit=10.2。
关于整个安装过程,我也一直在考虑一个问题,遇到问题解决问题固然重要,为什么不能在遇到问题之前就规避问题呢?这样免去耗费更多的时间、精力。这也正是我写这篇文章的初衷,希望能帮助小伙伴们少走弯路、少耗时间,这也是为什么一开始我就建议cudatoolkit=10.2版本的原因。
感谢各位读者耐心看完本文章。初次作文,难免于疏漏,还请读者提出宝贵意见,学习交流,共同进步。