yolov5训练时遇到的问题

torch会自动被requirement.txt替换

在对yolov5_5.0进行pip install requirement.txt后,yolo5_5.0会将虚拟环境中中的torch替换为2.0.1版本的,但要注意查看该torch是否为gpu版本,查看方式如下:打开Anaconda Prompt,激活相应环境,输入python,输入import torch 及 torch.cuda.is_available(),就可查看cuda是否可用。事实证明,被更换后的torch版本是cpu版本。

安装gpu版本的torch并卸载cpu版本的torch

安装gpu版本的torch见这篇博文,注意使用清华镜像下载:-i https://pypi.tuna.tsinghua.edu.cn/simple卸载原有的torch注意在conda的命令窗口中无法执行,需要使用pip才能顺利卸载。

显卡驱动太高

安装torch2.0.1gpu版本之后,在运行train时报错ddl,原因是显卡驱动版本太高了,torch不兼容,例如我的显卡驱动为12.4(当下最新的驱动,事实证明,最新的技术要承担不兼容的风险),所以在控制面板的程序中删除对应的显卡,安装12.0以下版本的显卡驱动,安装10.2版本的驱动,如果安装11.7版本的显卡驱动,会出现问题:训练时box obj total都为nan。

先用小样本调试

一开始不要用很大的样本训练,先用一个小样本的数据集训练,比如coco128,方便排查各种问题。

colab训练

colab模型的传输

直接将项目的zip文件拖到content目录之下 解压命令:

!unzip file.zip -d /path/to/destination

//file.zip:要解压的ZIP文件的名称。
///path/to/destination:要将文件解压到的目标目录路径。

colab数据集的传输

先将数据集的zip文件上传到谷歌硬盘上面,如下:

进入ipynb,点击装载云盘:

装在云盘完成之后,进入路径 /content/drive/MyDrive/Colab Notebooks,就能看到自己上传的压缩文件。

解压上传的数据集

# 解压缩文件
import zipfile
file_dir = /content/drive/MyDrive/Colab Notebooks/datasets.zip  # 压缩包路径
zipFile = zipfile.ZipFile(file_dir)
for file in zipFile.namelist():
    zipFile.extract(file, /content)  # 解压路径
zipFile.close()

box obj total都为nan

用的显卡版本为cuda11.7,将其改为10.2就好了,具体方法为,在这个网站找对应的torch版本并下载,然后在conda prompt中安装(安装命令为 conda install 下载文件路径),在官网()中找到对应版本的torchvision,torchaudio,cudatoolkit并下载。

 清华源的使用

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名 
//conda prompt中也能运行

“OSError: [WinError 1455]页面文件太小,无法完成操作。”解决方案

KeyError:momentum

这是因为用adam训练出来的权重,不能用于训练sdg的模型。

训练出来的权值在评估数据集上的精度非常低

1、检查数据集的标签是否有问题

具体操作为,使用一张图片为例,对转yolo格式的程序进行debug,检查过程中是否出错。

2、检查模型是否有问题

对已有的数据集coco128,进行训练及测试,发现模型正常工作。

3、检查预训练权重是否合适

从ultralytics上下载的yolov5s.pt预训练权重,是从coco数据集上训练得到的,coco数据集的识别的80类别里面,并没有直接包含车牌的类别,所以我认为这是训练后测试的精度非常低的主要原因。针对以上的分析,我对模型进行从头开始训练,问题得到有效解决。结论就是,当识别的目标完全不同时,直接套用预训练权重可能会出现精度很低的问题。

经验分享 程序员 微信小程序 职场和发展