1 前言
前段时间研究了一下深度学习框架Pytorch的环境配置,这个过程遇到了各种奇奇怪怪的问题,也总算把环境配置这个坑迈过去了,踏进了深度学习的半边门槛,今天五月份yolov5横空出世,不管是模型大小还是处理精度都是惊艳众人,引得无数深度学习爱好者追捧,由于其轻量型的优势,使其对于移动端的部署和工业界的应用有极大的应用前景,工欲善其事必先利其器,我们只有把这个模型搞透彻了才能知道如何灵活的去运用它。首先先贴出代码:yolov5 Code,如果对于还不了解什么是Pytorch,Cuda及其相关的基础知识,请先参考我的另外一篇博文深度学习之Pytorch环境搭建,在这里收集了一些比较好的博文和文章,可以很好快速的了解Pytorch与Cuda相关的一些基础知识以及它们之间的联系。
1.1 环境配置
在配置环境前要首先先了解yolov5的环境要求,下载代码后里面有一个requirements.txt
文件,文件里有当前更新的代码中最新的环境配置要求,但是值得注意的是环境也要结合自己的硬件配置,不是版本越高越好,自己就踩过这样的坑,第一次配置环境时,按照requirements.txt
中的要求配置完环境后,工程跑起来没有问题,也不会报错,但是结果图不画框,最后才发现是自己的cuda版本不对,我之前安装的cuda版本是11.2
,然后将cuda的版本降为10.2
时问题就解决了。下面就给出我的硬件配置以及安装的几个关键的库版本,其他的库按提供的要求文件安装即可。
python = 3.8.5
cudatoolkit = 10.2.89
pytorch = 1.7.1
torchvision = 0.8.2
显卡 = GTX 1650
1.1.1 创建虚拟环境
创建虚拟环境前,首先需要安装anaconda,利用anaconda环境管理的优势再结合pycharm人性化的IDE,然后通过在pycharm中配置anaconda创建的环境即可灵活的使用pycharm进行开发。anaconda创建虚拟环境并配置的步骤如下:
step 1
创建一个环境变量为yoloenvs
并激活环境
conda create -n yoloenvs python=3.8
conda info -envs
activate yoloenvs
step 2
安装Pytorch
首先进入Pytorch官网点这里
然后复制上图中红色框内的命令至Anaconda Prompt
,如果有使用清华镜像源或者其他镜像源,一定要把-c pytorch 去掉
, 然后运行指令等待安装即可。下面是添加清华镜像源的指令
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/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro/
这是我安装Pytorch时的指令,做了一些调整和修改
conda install pytorch torchvision=0.8.2 torchaudio cudatoolkit=10.2
最后验证Pytorch是否安装成功
import torch
import torchvision
print(torch.cuda.is_available())
step 3
配置yolov5的其他库
经过上一步的安装,其实我们已经把Pytorch
和Cuda
及其相关的依赖库都安装好了,现在我们再进行下一步,安装yolov5所需的其他库,这些库版本的要求在yolov5源码中的requirements.txt
已给出,我们只需激活环境然后输入以下命令,即可自动安装
pip install -r requirements.txt
最后通过conda list
命令查看我们的库安装版本是否正确,如果版本不对再继续调整
1.1.2安装Pycharm 并配置创建的虚拟环境
step 1
安装Pycharmstep 2
配置创建的虚拟环境
1.2 运行yolov5源码
下载yolov5源码,运行源码有两种方式,一种是使用yolov5 github上给出的控制台运行指令,一种是使用Pycharm,这里就不赘述了,主要给出我在运行代码的过程中出现的一些报错及其解决方法。
报错 1
运行detect.py
结果图不画框
解决方法: 将Cuda = 11.2
版本降为Cuda = 10.2
版本,问题解决。
报错 2
运行train.py
报错提示如下:
RuntimeError: CUDA out of memory. Tried to allocate 2.27 GiB (GPU 0; 11.00 GiB total capacity; 513.10 MiB already allocated; 7.85 GiB free; 834.00 MiB reserved in total by PyTorch)
解决方法: 将train.py
中img-size
参数由默认的[640, 640]
改为[320, 320]
或者更小
报错 3
运行train.py
报错提示如下:
OSError: [WinError 1455] 页面文件太小,无法完成操作。 Error loading "C:\Users\Administrator\AppData\Local\conda\conda\envs\yoloenvs\lib\site-packages\torch\lib\caffe2_detectron_ops_gpu.dll" or one of its dependencies.
解决方法: 将train.py
中workers
参数由默认的8
改为0
,问题解决。
1.3 运行结果
detect.py
运行结果
train.py
运行结果
2 总结
在搭建环境的过程中,首先是要熟悉整个创建的过程,其次就是发现问题解决问题,大部分问题网上的博客都有答案,只是需要自己去寻找,比较考验耐心。但是熟悉了这个过程的原理其实很多问题也就游刃有余了,大部分的报错总结起来就是两点:第一,安装库的过程中报错很有可能跟网络有关,建议使用镜像源或者重复使用命令安装;第二,运行源码的过程中报错如果版本库安装没有问题很有可能是跟参数的设置有关,因为源码运行的硬件条件不一样,有时候需要根据硬件配置调整相应的参数进行适配。