引言
最近项目情况稍微稳定了,时间比较宽裕,刚好朋友有一些机械学习方面的交流,让我萌生起来学习一波的想法。找了两圈gayhub,在2022年7月6日正式宣布的yolov7发布,其介绍为Implementation of paper - YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors,查看了一下各种对比效果,发现就是基本上完美吊打其他所有的框架,果断选定他来进行一波学习。而在这个整体基础环境部署中,各种踩坑,各种懵逼怀疑人生,总算摸透了其中关键点,特此编写此文,分享给各位,少走弯路。注意,此文主要是针对有显卡的用户进行指导,无显卡的相关小伙伴,可以安装pytorch则直接选择安装cpu版本,同时运行yolov7相关训练、测试命令改成cpu模式进行即可。
下载资源准备
- anaconda
- PyCharm-Community社区版即可,有钱可买正版专业版
- CUDA需要根据pytorch想安装的版本配套下载
- CUNN需注册英伟达账号,版本号需于CUDA配套
其中cuda、pytorch、cunn相关的地址,均建议科学上网来访问,否则可能会访问较慢或无法访问。
具体下载的时候,均可以通过迅雷进行下载,镜像加速效果很给力
版本选择指引
- 首先打开pytorch查看最新的CUDA版本,可看到最新版本为11.6,记住该版本号
- 英伟达官网下载对应CUDA驱动
- 英伟达官网下载对应的CUNN(需注册账号)
- 下载好四个内容后可以准备下一步操作
Anaconda3安装&配置
安装说明
打开安装包
同意协议
正常下一步
可自定义安装目录
选择默认添加上环境变量
等待安装完成后下一步
取消勾选打开相关内容,结束安装
在命令台查看是否安装成功
基础配置
- 设置镜像
输入命令conda config --set show_channel_urls yes
会自动在用户文件夹下创建一个.condarc
文件
覆盖替换为下面的内容,内容为参考清华源配置
同时增加https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch
以及 https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ 两个仓库声明
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
- 创建虚拟环境
命令输入conda create -n yolov7 python=3.9 --yes
创建一个虚拟用户为yolov7的python3.9的环境
安装完毕后命令输入conda activate yolov7
激活选择环境为yolov7
可以看到,我们已正常安装上虚拟环境并且激活选择环境成功
CUDA&CUNN安装
CUDA安装
选择CUDA安装临时缓存目录(可默认文件夹,安装完毕后会删除)
同意协议
选择自定义安装并全选所有可安装项
自定义选择安装的路径
确认安装
等待安装完毕后下一步
可查看到程序均已安装完毕
CUNN安装
- 按照CUDA安装目录,把相关对应的文件内容解压即可
配置环境变量
变量名 | 变量值 |
---|---|
CUDA_SDK_PATH | C:\software\cuda(上述部署选择自定义的cuda路径) |
CUDA_LIB_PATH | %CUDA_PATH%\lib\x64 |
CUDA_BIN_PATH | %CUDA_PATH%\bin |
CUDA_SDK_BIN_PATH | %CUDA_SDK_PATH%\bin\win64 |
CUDA_SDK_LIB_PATH | %CUDA_SDK_PATH%\common\lib\x64 |
PATH | %CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_BIN_PATH%;【追加的内容】 |
测试是否安装正常
命令行输入nvcc -V
可查看到正常安装完毕
安装pycharm-community
打开安装包并下一步
选择自定义的安装路径
选择添加环境变量并且关联.py文件
继续下一步开始安装
安装完毕后,重启系统
C:\software\PyCharm\bin\pycharm64.exe发送快捷方式到桌面进行方式使用操作即可
下载yolov7相关资源
- yolov7-gayhub源码【科学上网下载】, 可自行按需下载最新版本gayhub地址
- yolov7.pt【科学上网下载】
- coco2017labels-segments【科学上网下载】
- train2017【可迅雷加速下载】
- val2017【可迅雷加速下载】
- test2017 【可训练加速下载,暂时用不上】
安装相关资源
- 解压yolov7源码到工作目录
C:\workspace\ai\yolov7
- 复制yolov7.pt模型文件到解压的源码根目录
C:\workspace\ai\yolov7
- 解压train2017训练图片到
C:\workspace\ai\yolov7\coco\images\
- 解压val2017数值图片到
C:\workspace\ai\yolov7\coco\images\
做好相关的基本准备后,则可以开始正式开始做相关项目的依赖安装运行等处理
配置项目内容
打开PyCharm,打开项目,选择刚刚解压的yolov7源码目录
点击File-》Settings进行配置
选择Python Interpreter并添加设置
选择新增一个Python Interpreter
选择Conda环境变量并且选择上文新增的虚拟环境yolov7专用的python3.9
选择后点击确认
在控制台中输入python,可看到能正常执行命令
打开源码中requirements文件,注释掉opencv-python/torch/torchvision/thop四个依赖,后续通过torch的命令进行安装。
若直接通过pip install -r requirements.txt --extra-index-url https://pypi.douban.com/simple/
的方式安装,会安装到cpu的torch版本,则无法使用gpu进行识别、训练。笔者在这上面受到了极大的打击命令输入
conda install --yes --file .\requirements.txt
安装其他基本依赖命令输入
conda install pytorch torchvision torchaudio cudatoolkit=11.6
安装pytorch专用的依赖【这部分会走清华源镜像进行快速下载安装】
- 命令输入
python
进入python终端 - 命令输入
import torch
引入依赖包 - 命令输入
torch.cuda.is_available()
查看是否可用cuda
从结果中可以看到,我们的基础依赖已经安装完毕,可以开始进行训练测试等内容,通过ctrl+z
退出python命令台
运行探测类
- 命令输入
python detect.py --weights yolov7.pt --conf 0.25 --img-size 640 --source inference/images/horses.jpg
程序执行探测类
可以看到能够正确识别出来测试探测图的马匹内容,正常框柱已经标记近似度
运行测试类
- 命令输入
python test.py --data data/coco.yaml --img 640 --batch 32 --conf 0.001 --iou 0.65 --device 0 --weights yolov7.pt --name yolov7_640_val
程序会执行测试类
能够正常执行测试类并输出结果
总结
虽然有ancoda这种相对较为方便的环境&依赖管理工具,但是对于pytorch等这些安装来讲,依旧存在不少令人困惑的问题,很容易在pip等安装过程中,就只安装了cpu等版本,从而引发一系列的连锁反应,没法使用GPU来加成。至此,我们已经搭建好基本的训练探测环境了,所以,你有什么好idea要实现呢?一起动起来啊!!