YOLO v8 环境搭建

1. Anaconda3安装:

  • 下载:anaconda download
    默认:

    安装到根目录下:

    默认:

    下面一路默认,直至安装完成。
  • 配置anaconda环境变量:


    我的安装路径是C盘,所以这么写,如果anaconda安装路径不是C盘,请按照实际更换。

2. 安装VScode并在vscode中配置anaconda

配置解释器
  • 安装,我有vscode所以不用重新安装了,去官网安装即可。
  • 配置anaconda
    • Vscode中使用Ctrl+P打开搜索
    • 搜索栏里输入:>select interpreter
    • 找到自己想要的anaconda路径下来的python.exe,如果找不到的话自己去anaconda的安装路径下把python.exe的路径复制过来 最好等确定了anaconda虚拟环境后再来做这个工作,不然基于虚拟环境的python在这里也用不了。
    • 终端最好使用anaconda自带的终端,因为可以在anaconda建立虚拟环境,使用的python环境也是基于虚拟环境的

3. 配置镜像源:

  • pip配置镜像源(这里是清华镜像源)
    1
    2
    3
    //复制到终端执行,或者复制到anaconda的终端运行
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U
    pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
  • 检查配置是否OK
    • 只要终端输出pip.ini就装好了
    • 去文件管理器路径下输入%APPDATE%,找到pip.ini的文件,记事本打开,看是否是我们使用的源。
  • conda配置镜像源:
    • 在终端输入conda config --set show_channel_urls yes,执行后会在用户里面生成一个后缀名为.condarc的文件

    • 使用记事本打开,复制以下镜像源并保存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
channels:
- defaults
show_channel_urls: true
default_channels:
- 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
1
2
//上述完成后,在终端清除索引缓存,保证用的是镜像索引
conda clean -i

4. 安装pytorch

  • 创建conda虚拟环境
    因为在创建虚拟环境的时候会顺带下载一个python,所以接下来在虚拟环境里面写的一切代码其实都是在虚拟环境的python中
    虚拟环境python请指定3.9!!!
    虚拟环境python请指定3.9!!!
    虚拟环境python请指定3.9!!!

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //查看安装的conda包
    conda list
    //查看已有的conda环境
    conda env list
    //查看conda版本
    conda --version
    //查看conda信息
    conda info
    //python创建虚拟环境
    conda create -n your_env_name python=x.x
    //删除虚拟环境
    conda remove -n your_env_name --all
    //激活环境
    conda activate your_env_name
  • 在线安装:(我的电脑没有显卡,所以选择CPU加速安装):
    (有坑,这里不要去带版本,对于网上教程要求的版本,可能你看到的时间已经不适用于你现在的python了。)
    (conda install pytorch== 1.8.1 torchvision== 0.9.1 torchaudio== 0.8.1 cpuonly -c pytorch)
    报错如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 这个报错是在告诉我们0.81的torchaudio是找不到适合python3.9的包的
    # 虽然在下表中找到了0.8.1可以用在py3.9里,可能是清华源的镜像太老了没有更新导致的
    The following packages are incompatible
    ├─ pin-1 is installable and it requires
    │ └─ python 3.9.* , which can be installed;
    └─ torchaudio 0.8.1 is not installable because there are no viable options
    ├─ torchaudio 0.8.1 would require
    │ └─ python >=3.6,<3.7.0a0 , which conflicts with any installable versions previously reported;
    ├─ torchaudio 0.8.1 would require
    │ └─ python >=3.7,<3.8.0a0 , which conflicts with any installable versions previously reported;
    ├─ torchaudio 0.8.1 would require
    │ └─ python >=3.8,<3.9.0a0 , which conflicts with any installable versions previously reported;
    └─ torchaudio 0.8.1 would require
    └─ python_abi 3.9.* *_cp39, which does not exist (perhaps a missing channel).
  • python/pytorch/torchvision/torchaudio版本关系一览:

(指定pyhon版本3.9,并用这个版本安装pytorach:conda install pytorch== 1.10.0 torchvision== 0.11.1 torchaudio== 0.10.0 cpuonly -c pytorch)

转到版本问题最终解决方案

1
2
3
4

//反复测试后,不是一定要带版本号才行
//确认装的python版本正确后,安装pytorch和 torchvision最好不要去带版本,让pip/conda自动帮你选最合适的版本
conda install pytorch torchvision torchaudio cpuonly -c pytorch

下载如图所示,选择Y就行:

因为是国内的源,下载速度还是很快的,完成会出现done

  • 若卡在solving environment或有其他问题( 问题可能是python版本导致的,如果确定不是因为版本问题引起的可以折腾下面的内容,没有这个问题的不用折腾下面的内容),可以选择从pytorch官网安装:
    • 下载:pytorch online downlaod
    • 选择版本,OS,package,等等信息,最后生成了一个command。
    • 将command复制到终端或者conda中下载(看你怎么选的package);如下图,包很大,但是因为上面配置了镜像源,所以下起来还挺快(包特别大,下了个开头我心疼流量直接取消了)。
  • 除了在线下载之后,还可以选择去镜像源离线下载,下载后用命令安装
    • 下载:pytorch offline downlaod
    • 查看自己处理器架构,在终端输入systeminfo
    • 下载pytorchtorchivisiontorchaudio
    • 下载好后,终端输入cd 包位置
    • 输入安装命令conda install --offline pytorch包名
    • 输入安装命令conda install --offline torchvision包名
    • 输入安装命令conda install --offline torchaudio包名
    • 安装好后,在终端输入import torchtorch.cuda.is_available(),不管返回true或者false,不报错就证明装好了。

5. CV2安装

先默认,pip会去找适合py3.9的最新版

1
pip install opencv-python

6. YOLO v8代码库下载安装:

默认

1
pip install ultralytics  --user

7. yolo数据集

默认

1
pip install labelImg
  • 终端敲labelImg使用
    • open:打开单张图片
    • open Dir:打开文件夹中的所有图片
    • Change Save Dir:更改标签存放路径
    • 格式选择yolo格式

8. yolo文件夹建立

yolo可以按如下层级和命名`建立文件夹`:
命名尽量规范,不然yolo可能识别不出而报错
  • dataset
    • images
      • test
      • train
      • val
    • labels
      • test
      • train
      • val

9. 标注/训练图片

  • 原始图集放dataset-images里面。

  • 启动LabelImg,找到图片路径

  • 点击Change Save Dir选择保存标签的路径,保存标签路径为dataset-labels

  • 设置自动保存图片和标签

  • 打标签

  • 有坑:python版本太高(本来装的3.11)会导致LabelLmg闪退,报错如下:
    最好把之前安装的环境统一降到兼容python3.9的环境
    报错如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    TypeError: arguments did not match any overloaded call:
    drawLine(self, l: QLineF): argument 1 has unexpected type 'float'
    drawLine(self, line: QLine): argument 1 has unexpected type 'float'
    drawLine(self, x1: int, y1: int, x2: int, y2: int): argument 1 has unexpected type 'float'
    drawLine(self, p1: QPoint, p2: QPoint): argument 1 has unexpected type 'float'
    drawLine(self, p1: Union[QPointF, QPoint], p2: Union[QPointF, QPoint]): argument 1 has unexpected type 'float'

    # 总体来说,就是python版本没有对应上导致闪退
    # 解决方案,如下代码:
    # 相当于是新建立了一个名字叫labelimg的conda虚拟空间,但是这个空间里面还是需要重新装符合3.9版本的pytorach那些
    conda create -n labelimag python=3.9
  • 标签
    打标签是个简单而繁琐的事情,我这里就打了5张标注,标准名为highspeedrail

10. 数据集

  • 自动生成的标签
    打完标签之后可以看一眼dataset-labels,里面已经为我们打的每一个标签都新建了一个txt文件(class装的是标签信息,其他装的是一些模型参数信息,不要去手动改)了。
    打完标注之后就可以直接关闭labelImg了。

  • 整理数据

    • imageslabels的文件夹下分别存放test,train,val三个子文件夹。
      转到文件夹建立

    • 把图片按比例放入images文件夹中,一般train训练集放60%(比如10张图片就放6张);剩下的test和val各占20%(2张/2张)

  • 标签与之一一对应图片的位置和它的标签对应好,不然可能会报错!
    class.txts文件放到dataset下一级去(和labels同级)

  • 为数据集创建一个data.yaml文件,文件位于dataset的根目录下,文件应该包括数据路径,类别数,类别信息等必要的内容。
    把dataset放进之前建立的yolo_v8(其实就是为vscode工作区建立的一个工作文件夹)的空文件夹中去

    data.yaml如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    train: ./images/train #自己的训练集地址
    val: ./images/val #自己的验证集地址
    test: ./images/test #自己的测试集地址

    # Classes
    nc: 1 # 自己定义的类别数 number of classes
    names: [ #类别的名字
    "highspeedrail"

    ]

11. 开始训练

  • python的解释器路径,终端敲where python

    1
    2
    3
    4
    (yolo_v8) C:\WINDOWS\system32>where python
    C:\Users\wuyucun\.conda\envs\yolo_v8\python.exe
    C:\anaconda3\python.exe
    C:\Users\wuyucun\AppData\Local\Programs\Python\Python311\python.exe

    volo_v8\环境下的就是我们在虚拟环境中使用的python解释器,去vscode中把解释器选中为它就好了。
    转到配置解释器

  • yolo V8训练
    代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    from ultralytics import YOLO

    # Load a model
    #model = YOLO('yolov8n.yaml') # build a new model from YAML
    #model = YOLO('yolov8n.pt') # load a pretrained model (recommended for training)
    model = YOLO('yolov8n.yaml').load('yolov8n.pt') #加载模型和预训练权重

    # Train the model
    model.train(data=r'C:\Users\wuyucun\Desktop\yolo_v8\dataset\data.yaml', epochs=100, imgsz=640,workers=2) #训练数据集路径,epochs,迭代次数;imgsz,图片大小;works,线程。
    训练时又产生了因版本问题引起的报错:

这里面又有个坑,虽然我们前面已经很认真的在选版本的,但是在训练的时候依旧报了个错误告诉我pytorch和torchvision版本不兼容(因为这个报错的存在,我weights里面的权重并没有生成)
报错如下

1
2
3
RuntimeError: Couldn't load custom C++ ops. This can happen if your PyTorch and torchvision versions are incompatible, or if you had errors while compiling torchvision from source. For further information on the compatible v
ersions, check https://github.com/pytorch/vision#installation for the compatibility matrix. Please check your PyTorch version with torch.__version__ and your torchvision version with torchvision.__version__ and verify if the
y are compatible, and if not please reinstall torchvision so that it matches your PyTorch install.

于是我又按照pytorch官网建议,全部不带版本去安装:

敲入终端后,终端回了我一些信息:

1
2
3
4
5
6
7
8
9
...

The following packages will be UPDATED:

pytorch 1.10.0-py3.9_cpu_0 --> 2.3.0-py3.9_cpu_0
torchaudio 0.10.0-py39_cu113 --> 2.3.0-py39_cpu
torchvision 0.11.1-py39_cu113 --> 0.18.0-py39_cpu

...

他把我原来的旧版本全部变成py3.9适用的最新版本了。首先保证你python环境是对的话。不指定版本安装也是可以的,我用这个成功了

如果环境没问题,最后跑出来的结果应该如下图所示:


YOLO v8 环境搭建
http://example.com/2024/07/21/YOLO v8 环境搭建/
作者
xiao cuncun
发布于
2024年7月21日
许可协议