云服务器搭建YOLOv5训练环境

介绍

本文使用AutoDL云服务搭建YOLOv5的运行环境。

获取云服务器

在这个链接上https://www.autodl.com/home订阅服务,这里选择的是按量计费。

镜像选择基础镜像Mniconda最新ubuntu环境。

交钱订阅完成后就可以获取到登录的信息了。

这里使用的是ssh工具根据获取到的登录名和密码进行登录,需要注意的是端口可能不是默认的22,按照实际的端口进行。

配置conda环境

由于autoDL的服务器可能并不能访问外网,这里先将conda的源更换为清华的源。

conda config --remove-key channels
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 --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

接下来创建和激活虚拟环境

conda create -n yolov5 python==3.8.5
# 创建虚拟环境名称为yolov5, python版本为3.8.5

conda activate yolov5
# 激活yolov5环境

conda init
# 如果提示没有初始化conda环境的话,执行conda init后退出控制台重新登录,再次激活。

conda env list
# 通过上面的命令可以查看当前创建的conda虚拟环境

拉取YOLOv5代码环境

通过官网链接获取YOLOv5的代码。

cd autodl-tmp/
#这里先切换到audodl-tmp目录,这个空间比较大,读写也比较快。

git clone https://github.com/ultralytics/yolov5
# 在github上拉取代码

如果要在本地使用vscode查看代码的话,可以参考:https://www.autodl.com/docs/vscode/

这里需要注意的是,audoDL可能没有访问GitHub,处理的办法就是参考这个方法在服务器上面做一个代理,https://github.com/VocabVictor/clash-for-AutoDL

按照yolov5的代码环境需要的包

pip install -r requirements.txt

安装完成后,进行推理测试,看看环境是否安装正常,执行detect.py 指定模型文件和输入图片进行测试。

python detect.py --weights yolov5s.pt --source data/images/bus.jpg

执行上面脚本是,会自动拉取预训练的模型yolov5s.pt,最终将推理结果存储到runs/detect/exp2目录下。

训练自定义数据集

这里从GitHub上抓了一个口罩的书籍集,https://github.com/iAmEthanMai/mask-detection-dataset.git,使用git clone拉取到本地。

git clone https://github.com/iAmEthanMai/mask-detection-dataset.git

查看mask的数据集配置,有3个分类。这里使用yolov5s进行微调,复制一份yolov5的模型配置文件,并修改分类为3,需要根据实际的数据集存放的位置调整一下路径。

cp models/yolov5s.yaml models/mask_yolov5s.yaml

配置完成后就可以进行训练了。

python train.py --data mask-detection-dataset/data/data.yaml --cfg models/mask_yolov5s.yaml --weights pretrained/yolov5s.pt --epoch 100 --batch-size 4

模型文件将输出到:runs/train/exp5/weights/

python detect.py --weights runs/train/exp5/weights/best.pt --source mask-detection-dataset/data/images/maksssksksss1.png

上面执行命令使用训练的模型文件测试看看效果。