1.YOLOv8训练环境配置
训练环境配置的话就仍然以YOLOv8为例,来说明如何配置深度学习训练环境。这部分内容比较简单,主要是安装miniAnaconda以及安装torch和torchvision.
首先是miniAnaconda的安装(参考官网的教程Miniconda — Anaconda ),执行以下指令即可:
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
然后初始化一下,重新打开后就直接是anaconda环境了.
~/miniconda3/bin/conda init bash
最后利用anaconda创建YOLOv8训练环境,这里使用的环境是python-3.8,torch-1.13,torchvision-0.14,cuda版本也和WSL的cuda版本保持一致,选择11.6。下载链接:download.pytorch.org/whl/torch_stable.html,(注意:原本我这里安装版本是torch-1.12,torchvision-0.13,但是在验证的时候会报错,torch版本提升至1.13后又没有报错了,所以这里我就选择torch-1.13和torchvison-0.14)
将下载好的torch和torchvision的whl文件拷贝到/home/download路径下(这里的图片版本是torch-1.12,torchvision-0.13,我没有更换,大家替换成自己对应版本就行).
然后执行以下指令来完成v8环境配置。
conda create -n v8_env python=3.8 -y
conda activate v8_env
pip install /home/download/torch-1.13.0+cu116-cp38-cp38-linux_x86_64.whl
pip install /home/download/torchvision-0.14.0+cu116-cp38-cp38-linux_x86_64.whl
pip install ultralytics
2.YOLOv8训练环境验证
先来看一下torch是否安装好,以及是否可以正常使用gpu,如果返回true和能调用gpu,说明torch安装好了,如下所示。
接下来使用v8提供的预训练权重来预测下结果,看看v8的环境是否安装好。 先在链接(GitHub - ultralytics/ultralytics: NEW - YOLOv8 )中把YOLOv8源代码和目标检测的预训练权重下载下来,放到项目代码中,然后再使用下面指令就可以查看预测结果,同时判断自己的YOLOv8环境是否已经安装成功,其中path/to/best.pt替换成自己的路径。
把ultralytics-main.zip这个压缩包放在/home路径下(放在哪里都行),解压缩ultralytics包.
执行以下命令,其中bus.jpg,则可以打开链接bus.jpg自行下载,然后放在项目文件中,执行结果保存在runs/detect/predict中,同样可以直接在windows的wsl路径(\wsl.localhost\Ubuntu-2004\home\ultralytics-main\runs\detect\predict)下打开这个文件查看运行结果。
yolo detect predict model=/home/ultralytics-main/yolov8n.pt source=/home/ultralytics-main/bus.jpg
3.YOLOv8训练自己的数据集
这一部分主要是使用vs-code远程连接WSL-ubuntu20.04,其他都可以直接参考在Windows环境下标注、训练、验证、预测及导出的步骤,可以直接参考这两篇公开的博客。
LabelImg下载及目标检测数据标注
YOLOv8的训练、验证、预测及导出[目标检测实践篇]
此外,我在训练-验证的时候还遇到以下错误,nvrtc: error: invalid value for --gpu-architecture (-arch),参考了iassc gym nvrtc: error: invalid value for --gpu-architecture-CSDN博客,并没有解决问题,然后我更新torch版本为1.13,torchvison版本为0.14后,就可以正常训练了,理论上来说应该不会这样的,知道的朋友可以告诉一下。