视频教程:PyTorch安装(附yolov5环境搭建)
访问PyTorch官网获取安装命令
点击install previous versions of(安装以前的版本)
在yoloV5的项目说明中可以看到环境要求
在PyTorch历史版本里搜索torch==1.7的版本,使用pip安装,命令如下:
pip install torch==1.7.1+cu101 torchvision==0.8.2+cu101 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
使用conda创建环境
conda create -n yolo python=3.7
激活环境
conda activate yolo
安装torch
pip install torch==1.7.1+cu101 torchvision==0.8.2+cu101 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
打开代码中的requirements.txt文件,注释掉 numpy、pillow 、torch、torchvision 这几个库(在单独安装torch时已经安装好)
运行以下命令,安装环境依赖。
pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
速度慢的话,换下面的国内源试试看。
http://pypi.douban.com/simple/ #豆瓣
http://pypi.hustunique.com/simple/ #华中理工大学
http://pypi.sdutlinux.org/simple/ #山东理工大学
http://pypi.mirrors.ustc.edu.cn/simple/ #中国科学技术大学
https://pypi.tuna.tsinghua.edu.cn/simple/ #清华
如果在安装依赖跳出警告
WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
建议:✅忽略这个警告,对环境部署没有影响,如果按照下面的方法更改编码样式后可能会出现终端样式被更改,有些中文软件显示乱码。
解决方法:1.打开设置;2.点击语言;3.找到语言里的相关设置,点击管理语言设置;4.在弹出的区域里点击更改系统区域设置;5.在弹出的区域设置里勾选Beta版;6.点击确定,重启电脑后会生效。
运行命令python detect.py,会提示
Downloading https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s.pt to yolov5s.pt…
如果可以下载成功,会在根目录多出一个叫“yolov5s.pt”的文件;
如果下载失败会报下面的错误:
报错:FileNotFoundError: [Errno 2] No such file or directory: ‘yolov5s.pt’
说明:没有找到权重文件yolov5s.pt
解决方法:手动下载,从项目官网搜索yolov5s,点击下载yolov5s.pt。
在detect.py的219行,默认权重路径为根目录,所以复制一份下载的权重文件yolov5s.pt到代码根目录。如果不想放在根目录,修改默认路径为自己权重文件的路径并确保该路径中包含权重文件。
给个例子吧,例如,我将权重文件放在根目录下的weights文件夹里,并将219行的默认路径修改为’weights/yolov5s.pt’,如下图所示
再次运行python detect.py,可以返回检测结果,Results saved to runs\detect\exp2。
说明环境搭建成功。
要训练自己的数据集的话,还需要做以下几个步骤。
我在项目的根目录下新建一个my_datas文件夹,按下图所示,包含test,train,valid用的数据集和配置文件。
打开数据集的配置文件(data.yaml),添加为自己数据集的路径(如果使用我的目录结构,和我一样就可以),根据自己的实际情况添加检测的类型数和名称(我这里只检测“korgi-dog”这种狗)
train: ../my_datas/train/images # 训练数据集的路径
val: ../my_datas/valid/images # 验证数据集的路径
test: ../my_datas/test/images # 测试数据集的路径
nc: 1 # 需要检测的类别数
names: ['korgi-dog'] # 类别的名称,用英文
从models文件夹中复制一份yolov5s.yaml文件到my_datas文件夹,重命名为my_yolov5s.yaml。
根据自己需要检测的类别数,修改my_yolov5s.yaml里的nc的值。
在train.py中找到以下参数,根据下面每行代码后面的注释,结合自己的实际需求,修改下面的参数(目录结构和我一样的话,可以直接用我设置的参数,注意根据自己的实际情况改一下batch-size)。
parser.add_argument('--weights', type=str, default=ROOT / 'weights/yolov5s.pt', help='initial weights path') # --weights:初始化的权重文件的路径地址
parser.add_argument('--cfg', type=str, default='my_datas/my_yolov5s.yaml', help='model.yaml path') # --cfg:要训练的模型的配置文件的路径地址
parser.add_argument('--data', type=str, default=ROOT / 'my_datas/data.yaml', help='dataset.yaml path') # --data:数据集的配置文件的路径地址
parser.add_argument('--hyp', type=str, default=ROOT / 'data/hyps/hyp.scratch-low.yaml', help='hyperparameters path')
parser.add_argument('--epochs', type=int, default=100, help='total training epochs') # --epochs:训练轮次,太小会欠拟合
parser.add_argument('--batch-size', type=int, default=4, help='total batch size for all GPUs, -1 for autobatch') # --batch-size: 每个批次的样本数量,应该小于等于电脑独显的专享内存
parser.add_argument('--workers', type=int, default=8, help='max dataloader workers (per RANK in DDP mode)') # --workers:每个进程(RANK)中数据加载器的最大工作线程数
parser.add_argument('--project', default=ROOT / 'weights', help='save to project/name') # --project: 训练的结果(权重)的保存位置
报错:ImportError: Failed to initialize: Bad git executable.
说明:git环境变量出错
解决方法:在train.pyt里加入下面这行代码
os.environ["GIT_PYTHON_REFRESH"] = "quiet"
报错:OSError: [WinError 1455] 页面文件太小,无法完成操作。
说明:虚拟内存不足
先解释两个名词:
DataLoader 可以自动将数据划分为批次进行加载,从而加速训练过程。您可以通过设置 batch_size 参数来指定每个批次的样本数量。
num_workers 用于指定加载数据时的子进程数量。当 num_workers 大于 0 时,DataLoader 会在主进程中生成多个子进程,每个子进程负责加载部分数据。这样可以并行加载数据,从而加速数据加载过程。如果设置为 0,则数据将在主进程中加载。
解决方法1:将utils/dataloaders.py代码中的num_workers设置为0,有两处要修改,分别在147行和1216行,使用快捷键Ctrl+F可以很快找到。
解决方法2:打开高级系统设置(最快的方法是用win10桌面的搜索图标搜索)。在高级系统设置里点击性能的设置,在弹出的性能选项中点击虚拟内存的更改,如下图所示。在弹出的虚拟内存界面(如下图),取消勾选自动管理,选择需要更改的驱动器,选择自定义大小(不要超过可用空间的大小),点击确定,重启电脑后会生效。
这是我在搭深度学习环境踩的两个坑,记录在这里。
疑问1:系统需要单独安装CUDA+CuDNN吗?
先说明以下几个点:
CUDA:用于在NVIDIA GPU上执行计算和并行处理。在系统安装CUDA时,会安装NVIDIA的GPU驱动和CUDA工具包,使我们在电脑上可以利用GPU资源进行计算。
CuDNN:是NVIDIA开发的针对深度神经网络的加速库
cudatoolkit:安装深度学习框架——PyTorch等时,会自带一个与特定框架版本兼容的CUDA工具包,被称为"cudatoolkit"。确保您的框架能够正确地与GPU通信和执行计算。
我的回答:大多数的项目应该都不需要。比如Yolo就不需要单独在系统安装CUDA,因为在conda创建的环境中安装PyTorch时会自动安装PyTorch所需的依赖项,包括cudatoolkit,可以使用GPU跑深度学习。
但是,有些项目可能需要,我碰到过一个项目需要安装一个叫“CuPy”的库。
CuPy 是一个用于在GPU上执行数值计算的开源库,它与NumPy非常类似,但能够在CUDA加速的GPU上运行,从而加速计算过程。CuPy 依赖于 CUDA 并利用 CUDA 的并行性进行高性能计算。“cudatoolkit” 并不是直接与 CuPy 相关的内容,而是与一些深度学习框架(如 PyTorch 和 TensorFlow)以及一些 GPU 加速库(如 Numba)相关。所以安装CuPy需要在系统安装CUDA。
我的建议:当项目中没有明确说明时,先不要在系统安装CUDA,待确定需要安装后再安装,这东西第一次是最好装的,安装次数越多,就越难装(我之前因为初次接触不懂,装卸了五次,第六次安装一直报Nsight NVTX安装失败,重装了一次系统)
疑问2:需要在系统单独安装某个稳定版本的Python吗?
我的回答:不需要的。只要安装一个软件——Anaconda。因为在安装Anaconda时会在Anaconda安装文件夹下安装适合版本的python的依赖项。用conda创建环境时,也会安装指定版本的python和所需的依赖项到创建的环境中。
Anaconda是一个包管理器,包含了许多常用的Python库和工具。下了个最新的安装程序试了试,只要勾选(Register Anaconda3 as the system Python 3.11)使用Anaconda3中的解释器作为VSCode,PyCharm等IDE的Python即可。
能看到这里,说明你对yolo很感兴趣,可以看出来本地部署yolo比较繁琐的,我零零散散写了几个小时,如果可以的话,先点个赞吧!
用colab运行的好处:1.无需任何配置,不会因为电脑配置不同报各种各样的bug;2.免费使用GPU(16GB)。
打开roboflow,搜索数据集,找到自己想要的数据集,点进去,在右上角会出现Download this Dataset字样,点击下载。(以YoloV8为例)
在弹出的Export窗口中,点击下拉框可以选择不同代码的数据集格式,选好后,默认使用代码下载(show download code),点击继续(Continue)。
在弹出的窗口中选择笔记本(Jupyter)格式,点击复制代码。
打开roboflow/notebooks,找到YOLOv8 Object Detection所在行,点击Open in Colab。
当鼠标移到代码段时,在左边会出现一个运行标识(红圈圈里的那个),从上往下依次运行各段代码,运行成功后左侧会出现一个勾(如红框中所示)。如果是第一次使用需要登陆Google账号。
在第五步导出数据集(Exporting dataset),下图红框中的代码需要改成自己的数据集代码。
在训练习惯(Custom Training)代码段,可以根据自己的需要调整训练参数,例如轮次(epoch)的大小。
训练结束后,提示结果保存到runs/detect/train文件夹,点击左边的文件图标,找到train文件夹下的weights文件夹,下载best.pt(最好的权重)。
好了,你学废了吗?
欢迎大家在评论区交流讨论。