一、服务器选择
本来实验室是有华为云的资源支持,但我觉得这一类的服务器封装性过高,没有那么自由,所以选择了mistgpu,使用体验和技术支持都不错,预装软件框架与要求较为贴合,图形化界面及jupyter支持完善。
如果有想使用的同仁可以用下我的邀请链接:mistgpu.com/i/783956
二、环境配置(使用conda)
这类教程CSDN上很多,按其步骤即可,这里只对一些关键点进行说明。
参考连接:yolov5 环境配置
1.准备工作
以mistgpu提供的服务器为例,由于已经安装好CUDA 11.2和anaconda故在此先创建虚拟环境
conda create -n yolov5 python=3.8
//其他操作示例
conda activate yolov5 //打开虚拟环境
conda deacivate//关闭虚拟环境
而后换清华源,在虚拟环境下
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --append channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/fastai/
conda config --append channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --append channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes
2.具体安装
以yolov5 4.0版本为例,源码下载好之后,可见文件夹下的requirements.txt,后续将使用pip来安装requirements.txt中提到的各类包,但有些是安装不下来的(torch与torchvision),因此先在requirements.txt中注释相应内容,由我们自己手动安装。
手动安装前,先给出我的一些关键配置以供参考(yolov5 4.0版本的)
yolov5 verison:4.0
python 3.8
CUDA 11.0.207
cudnn 8.1.0?
torch 1.7.1
torchvision.__version__ 0.8.2
接下来首先安装cudatoolkit,建议在这顺便了解一下cuda和cudatoolkit的关系
conda activate yolov5
conda install cudatoolkit=11.0
//然后是torch和torchvision
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 -f https://download.pytorch.org/whl/torch_stable.html
关于torch/torchvision/cudatoolkit的对应关系,可以参照以下网址
torch/torchvision/cudatoolkit对应关系
然后是cudnn的安装,严格来说也不能叫安装,就是把cudnn的压缩包下载并解压后,将其中一些.h和.so文件复制进安装目录。
安装cudnn8.1
官网下载压缩包
把里面的include下一堆.h文件拷贝到你的anaconda安装目录下的\Library\include中;
把bin下的一堆.dll文件拷贝到你的anaconda安装目录下的\Library\bin中;
把lib\x64下一堆.lib文件拷贝到你的anaconda安装目录下的\Library\lib\x64中;
以上安装后用pip安装剩余的包
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U -r requirements.txt
三、数据集准备
使用labelImg标注数据集,可直接选择yolo格式(txt而非xml),标好后着重说明一下yolo数据集的规范格式
假定数据集文件夹名称为garbage,该文件夹下有以下三个子文件夹
images放图片,labels放对应的txt,两者名称要对应好,ImageSets存放训练集与测试集的路径说明。
这些txt中存放了相应训练集、验证集等图片的绝对路径(就是images里放的那些),做好后注意garbage文件夹和要和yolov5源码文件夹同级,否则读不到数据集。相应的上步的绝对路径要正确填好。
至此数据集准备完毕。
四、训练前yolov5相关设置调整
- yolov5/data/文件夹下添加相应数据集的配置文件
内容如下:
//训练集与验证集描述文件
train: /home/mist/garbage/ImageSets/Main/train.txt
val: /home/mist/garbage/ImageSets/Main/val.txt
//类别数
#number of class
nc: 5
//类别名
#class names
names: ['paper', 'cups', 'bottle', 'orange', 'battery']
- 以选用yolov5_s模型为例,在models/yolov5s.yaml配置文件中更改类别数nc(此处我的数据集类别数为5)
3.准备预训练权重,此处我下载的是4.0版本的yolov5s.pt,放在/weights下(版本、模型要匹配)
4.yolov5/train.py更改,主要是输入图片尺寸的更改和一些配置文件、权重的地址
五、训练
python train.py #训练, 训练后会告诉你权重在哪
#测试
python3 detect.py --source file.jpg # image --weights ./runs/exp4/weights/best.pt
#file.mp4 video
#./dir directory
#rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa rtsp stream
#http://112.50.243.8/PLTV/88888888/224/3221225900/1.m3u8 http stream
以我自己的结果为例,基本符合要求~