python基础环境的配置
1、推荐先使用Anaconda中为conda中配置一个专用的环境
在Anaconda控制台中输入:conda create --name newName python=3.11
需要注意:cuda要求python版本必须大于3.10
2、安装cuda
直接在Nvidia官网下载安装包即可,速度还不错
CUDA Toolkit 12.4 Update 1 Downloads | NVIDIA Developer
3、配置YOLOv5文件
错误排查
问题一:字符编码报错
GitHub提供的YOLOv5文件中存在表情及一些特殊符号,python的字符编码可能无法覆盖
解决:只需要删除 ./yolov5-6.0\train.py 文件中带🚀和表示文件关系的注释内容即可
问题二:N卡驱动版本与CUDA版本不匹配
Nvida自动更新后,安装的旧版本CUDA不再支持,使用cuda:0训练出现错误,cpu训练正常
解决:找到对应版本进行安装英伟达(NVIDIA)显卡、驱动版本与cuda版本对应关系_cuda和驱动的对应-CSDN博客
装好之后就可以使用gpu训练了
问题三:未配置环境变量
使用cuda前需要检查cuda的四个环境变量,才能使用相对路径命令。
解决:如果缺失在path下添加
问题四:attributeerror: 'FreeTypeFont' object has no attribute 'getsize'
YOLOv5中使用的Pillow中的getsize,安装了新版本的 Pillow (10)删除了此功能
解决:在命令行中使用 pip install Pillow==9.5 降级到 Pillow 9.5 解决了该问题
运行及查看结果集
运行train.py文件
显卡正常识别
上图为使用gpu训练时的资源占用,如果cpu利用率>90% && gpu利用率<20%,说明没有使用gpu训练,检查环境配置及变量是否选择正确。
查看训练结果
在控制台能看到随着训练的进行结果的变化
训练结束后在 .\yolov5-6.0\runs\train 路径下查看运行结果
结果解析
obj_loss反应模型检测目标存在与否的能力,cls_loss反应模型检测准确性
当val部分的loss曲线明显还有下降的趋势,表示模型欠拟合,模型训练失败。
解决:可以增加epochs的大小(增加模型的训练时间),或者在hyp文件处提高学习率(学习率过高可能导致训练过程不稳定,过拟合,甚至无法收敛)
当val部分的loss曲线明显先下降后上升,表示模型过拟合,模型训练失败。
解决:可以减少epochs的大小、降低学习率或者降低最终学习率。如果上述方法都没有解决过拟合问题,很可能是因为数据集出现问题,需要检查数据集。(是否有空的.txt文件,.txt的类别index是不是错了,标注的时候是不是标了重叠的框框)
我们重点关注val/*_loss部分
基本符合下降趋势没有反转,末端平稳的要求