很多小伙伴在初次学习YOLO系列项目存在困难,本文对于小白常犯的错误会有较为明确的描述和解决方法,如果目前你还在跑通YOLO系列代码存在疑问的话,参考本文的步骤一步一步走是能够解决的。
相信很多同学目前跑YOLO用的不是实验室主机,而是自己的游戏本/轻薄本/台式主机,本文将分为两部分分别介绍在自己的电脑环境下快速搭建CPU/GPU环境。
系统及版本 | Windows10 |
示例电脑 | 联想小新2021酷睿版(轻薄本) 联想拯救者R7000电脑(游戏本) i7-10700+RTX4000(台式机) |
适用人群 | ALL |
一、前置环境安装
1.官网安装python——Welcome to Python.org选择适合自己的版本即可。
2.官网下载安装社区版Pycharm——Download PyCharm: The Python IDE for data science and web development by JetBrains(对于绝大多数同学,免费社区版的即可)
3.Github拉取YOLO源码
YOLOv5——yolov5源码
YOLOv7——yolov7源码
如果出现登不上的情况是正常的,我们正常登录Github总会这样,解决方法是等一会就可以,或在GitCode打开。
YOLOv5——yolov5源码
YOLOv7——yolov7源码
至此,前置环境安装准备完毕。接下来,我们开始安装CPU/GPU环境。
二、CPU环境的安装及运行
CPU跑YOLO代码其实异常简单,但这里请跟着步骤走避免出错。
1.打开pycharm,将打开自己拉取的YOLO项目路径。比如我的路径是D:\learn\yolov7-main,大家不需要一样,对应即可。
2.打开后会呈现这样一个界面,同时会弹出一个消息框,提示是否安装依赖项安装依赖,点击确定。
3.安装依赖后,有可能会有部分依赖安装失败,点击下方的终端,输入pip install xxx(xxx是你在pycharm自动安装失败但运行环境所需的包)
以上步骤完成后,我们即可开始训练。
三、GPU环境的安装及运行
1.首先要知道自己电脑GPU的版本,一般可以Windows+R键启用后,输入cmd打开命令提示符,输入nvidia-smi,可以知道自己电脑支持的CUDA版本,比如本文支持CUDA11.6。
2.下载自己电脑对应的CUDA版本,如本文是CUDA11.6。
CUDA11.6下载地址:CUDA11.6官方下载地址
CUDA最新版官方下载地址:CUDA最新版官方地址
3.下载Anaconda3。
https://www.anaconda.com/Anaconda3官方地址:https://www.anaconda.com/
4.下载安装完成Anaconda3后,打开anaconda prompt创建虚拟环境(记住你虚拟环境的python版本,本文采用python3.9版本)。
创建新环境代码
conda create --name pytorchtest python=3.9
输入y,等待安装完成
如遇无法安装的请等待或再次尝试,这个下载过程中确实有可能卡住,我的解决方法是有耐心多等一会。如果中途安装的进度条卡主不动了,那可能是因为网络不太稳定,可以按键Ctrl+C退出安装,然后再次输入上述命令重新安装,最差的情况也会在上述所说运行完。
在安装环境完成后,输入命令
activate pytorchtest
激活环境,然后先放在一旁。
5.登陆官网pytorch,寻找和自己(此处极为重要!!!)CUDA、python版本对应的torch版本,本文安装命令为
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.6 -c pytorch -c conda-forge
请注意要按本文步骤顺序完成,这一步的前提是创建好环境,并进入环境。
pytorch官网:https://pytorch.org/
pytorch官网的往期版本安装页面:Previous PyTorch Versions | PyTorch
将对应命令输入anaconda prompt,开始安装。
如遇无法安装的请等待或再次尝试,这个下载过程中确实有可能卡住,我的解决方法是有耐心多等一会。如果中途安装的进度条卡主不动了,那可能是因为网络不太稳定,可以按键Ctrl+C退出安装,然后再次输入上述命令重新安装,最差的情况也会在上述所说运行完。
6.完成上述步骤后,打开pycharm,点击右下角解释器——添加新的解释器——添加本地解释器——Conda环境——使用现有环境——pytorchtest——确定即可。
再在原安装基础上,进行其余包的补充。请注意,此处是你安装过程中最容易,最广泛且小白最难发现的问题:切记不要选择pycharm的“不满足依赖条件”的自动安装,由于缺失包下载的都是最新版,对于pytorch的最新版,会直接下成CPU版本,一定要让各个包的版本一一对应。
我们只需要在pycharm下方的终端,点击后输入activate pytorchtest,先进入虚拟环境,再一步步按上方提示缺少的文件输入命令“pip install xxx”或“conda install xxx”即可。
GPU训练相对繁琐,本质上只要知道——版本是一一对应的,按照这个理念去安装就不会出错。
一般来说,按照以上步骤安装好的在yolov7中仍会告知:缺少opencv-python模块、thop模块和numpy模块版本不符合要求。而在实际进行安装时,opencv-python最好用pip安装,且采用清华源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python==4.5.1.48
thop模块可直接pip安装,numpy的版本问题若换版本重装后依旧无法解决可先忽略,直接跑代码,若出现如下错误:
Traceback (most recent call last):
File "D:\system file\yolo\yolov7-main\train.py", line 616, in
train(hyp, opt, device, tb_writer)
File "D:\system file\yolo\yolov7-main\train.py", line 268, in train
tb_writer.add_histogram('classes', c, 0)
File "C:\ProgramData\Anaconda3\envs\pytorch\lib\site-packages\torch\utils\tensorboard\writer.py", line 484, in add_histogram
histogram(tag, values, bins, max_bins=max_bins), global_step, walltime
File "C:\ProgramData\Anaconda3\envs\pytorch\lib\site-packages\torch\utils\tensorboard\summary.py", line 352, in histogram
hist = make_histogram(values.astype(float), bins, max_bins)
File "C:\ProgramData\Anaconda3\envs\pytorch\lib\site-packages\torch\utils\tensorboard\summary.py", line 380, in make_histogram
cum_counts = np.cumsum(np.greater(counts, 0, dtype=np.int32))
TypeError: No loop matching the specified signature and casting was found for ufunc greater
则将该行
cum_counts = np.cumsum(np.greater(counts, 0, dtype=np.int32))
改为
cum_counts = np.cumsum(np.greater(counts, 0))
以上步骤完成后,我们即可开始训练。
四、训练
1.首先我们需要选取需要的数据集,记住它的路径。比如我放在D:/Data/dataset3/
但请注意YOLOv5/v7所需的数据集需要是YOLO格式的,目标检测常见的格式还有COCO格式、VOC格式等。
YOLO格式数据集一般包括一个images和一个labels文件夹,这两个文件夹中都存在一个train文件夹和一个val文件夹,分别用于训练和测试。有时,还存在test文件夹,用于验证。本文介绍只有train和val的较为直观。
images存放需要的图像文件,labels存放图像对应的文本文档文件。
2.放置好数据集后,我们需要修改YOLO项目内的train.py文件,对以下部分代码做修改。
weights存放预训练权重,如没有需要可以不填。
cfg存放训练的配置文件,必须填。
data存放数据集的配置文件,必须填。
epochs代表跑几轮,根据自己的需求填写,但对于不加载预训练权重的情况下,建议次数多一些。
batchsize代表训练批次,设置的越大,训练花费的显存/内存也越大,在一定程度上速度也越快。一般对于显存4G、内存16G的主流配置电脑,建议跑YOLOv5s/YOLOv5n.yaml或YOLOv7-tiny.yaml设置1-8,其余则1-4酌情选择即可。
images-size设置为和自己数据集合适的尺寸大小,一般设置的越大耗费资源越多,速度越慢。
device代表训练设备,可选的是cpu或cuda:0。分别代表CPU和GPU训练。
workers代表线程数,可以在一定程度上加速训练速度,但会耗费更多资源,且启用后数据相对未启用会更随机,CPU设备启用无效,设置为0即可。
3.其中,data修改为data/coco.yaml,其次,打开data/coco.yaml,改为如下代码。
# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: D:/Data/dataset3/images/train
val: D:/Data/dataset3/images/val
# number of classes
nc: 1
# class names
names: [ "pothole"]
同时对应的cfg参数下的nc也要改为1,而你的类别是多少就改为多少。
这里train路径则设置为自己数据集的图片路径即可。
nc代表类别数。
names代表类别数对应的名字。
如我的示例数据集只有一类别,名字为pothole。
上述配置完成后,即可运行。
需要注意的是,CPU训练YOLOv5/v7的速度是极慢的,如果大家要训练和改进,建议YOLOv5训练yolov5s和yolov5n,YOLOv7训练YOLOv7-tiny。
我的更多文章:
【零基础保姆级教程】零基础如何快速进入YOLOv5/v7的科研状态?-CSDN博客
【保姆级零基础教程】哪些创新点可以快速改进提升YOLO?-CSDN博客
【YOLOv5/v7改进系列】替换骨干网络为MobileNetv3-CSDN博客
更多文章产出中,主打简洁和准确,欢迎关注我,共同探讨!