2. 环境搭建

说实话,很多同学模型调优调得不错,但一上来就被环境折腾半天。我见过太多人卡在「装包两小时,跑通五分钟」的尴尬里。这一章,咱们就把地基打牢。

环境搭建这事,说白了就是三件事:Python环境、PyTorch版本、CUDA对齐。这三样但凡有一个对不上,后面全是坑。

2.1 PyTorch环境配置

我个人习惯用 conda 管理环境。为什么?因为项目多了你就知道,每个框架依赖的包版本经常打架。conda 能帮你隔离得干干净净。

核心原则:PyTorch 版本必须与 CUDA 驱动版本匹配。不匹配的话,GPU 根本用不上,白费力气。

2.1.1 创建虚拟环境

# 创建 Python 3.8 环境(YOLOv6 官方推荐)
conda create -n yolov6 python=3.8 -y

# 激活环境
conda activate yolov6

这里我多说一句:Python 3.8 是目前兼容性最好的版本。3.9 以上有些老包装不上,3.7 以下又太旧。嗯,就选 3.8,稳。

2.1.2 安装 PyTorch

先确认你的显卡驱动支持哪个 CUDA 版本。在终端跑一下:

nvidia-smi

看右上角的 CUDA Version。比如显示 11.8,那就装对应版本的 PyTorch。

CUDA 版本 PyTorch 安装命令 适用场景
11.8 pip install torch==2.0.1 torchvision==0.15.2 --index-url https://download.pytorch.org/whl/cu118 主流显卡(RTX 30/40系列)
12.1 pip install torch==2.1.0 torchvision==0.16.0 --index-url https://download.pytorch.org/whl/cu121 新卡或最新驱动
CPU only pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu 无 GPU 或调试用

我曾经踩过的坑:有一次装完 PyTorch 发现 GPU 用不了,查了半天,结果是 conda 自动装了 CPU 版本。所以装完后一定要验证:

python -c "import torch; print(torch.cuda.is_available())"

输出 True 才算成功。

2.2 YOLOv6 源码下载

YOLOv6 的官方仓库在 GitHub 上。我个人建议直接 clone 最新稳定版,别用 dev 分支,除非你想当小白鼠。

# 克隆官方仓库
git clone https://github.com/meituan/YOLOv6.git

# 进入目录
cd YOLOv6

你想想看,为什么用 git clone 而不是下载 zip?因为后续你要切换分支、拉取更新,git 管理起来方便得多。我在项目里经常需要回退到某个 commit 做对比实验,zip 包根本做不到。

2.3 依赖安装

YOLOv6 的依赖写在 requirements.txt 里。直接装就行:

pip install -r requirements.txt

但这里有个细节——建议用 pip 而不是 conda。因为 conda 源里的包版本往往滞后,而 YOLOv6 对某些包的版本有硬性要求。

2.3.1 核心依赖清单

包名 版本要求 作用
torch ≥1.7.0 深度学习框架
torchvision ≥0.8.0 图像处理与数据增强
numpy ≥1.19.0 数值计算
opencv-python ≥4.5.0 图像读写与预处理
pyyaml ≥5.4.0 配置文件解析
tqdm ≥4.64.0 进度条显示
matplotlib ≥3.3.0 可视化

小技巧:如果装包时遇到网络超时,可以加国内镜像源:

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

清华源的速度,谁用谁知道。

2.4 数据集准备流程

YOLOv6 支持 COCO 格式和自定义数据集。咱们先讲 COCO,再讲自定义。

2.4.1 COCO 数据集下载

COCO 2017 是 YOLOv6 官方训练用的数据集。下载命令如下:

# 创建数据目录
mkdir -p datasets/coco
cd datasets/coco

# 下载训练集和验证集
wget http://images.cocodataset.org/zips/train2017.zip
wget http://images.cocodataset.org/zips/val2017.zip

# 下载标注文件
wget http://images.cocodataset.org/annotations/annotations_trainval2017.zip

# 解压
unzip train2017.zip
unzip val2017.zip
unzip annotations_trainval2017.zip

这个过程比较耗时,train2017 有 18GB。我建议你晚上睡觉前跑下载,第二天起来就搞定了。

2.4.2 自定义数据集准备

如果你要用自己的数据,YOLOv6 要求标注格式为 YOLO 格式:

  • 每张图片对应一个同名的 .txt 文件
  • 每行格式:class_id x_center y_center width height
  • 坐标值归一化到 [0, 1]

举个例子,一张图片里有一个猫和一个狗:

0 0.5 0.5 0.3 0.4
1 0.8 0.6 0.2 0.3

其中 0 代表猫,1 代表狗。

注意:YOLO 格式的坐标是 归一化后的中心点坐标,不是左上角坐标。很多新手在这里翻车。我建议你用 LabelImg 标注,它可以直接导出 YOLO 格式。

2.4.3 数据集目录结构

YOLOv6 期望的数据集目录结构如下:

datasets/
└── custom/
    ├── images/
    │   ├── train/
    │   │   ├── img1.jpg
    │   │   └── img2.jpg
    │   └── val/
    │       ├── img3.jpg
    │       └── img4.jpg
    └── labels/
        ├── train/
        │   ├── img1.txt
        │   └── img2.txt
        └── val/
            ├── img3.txt
            └── img4.txt

说白了,就是图片和标注文件分开放,但文件名必须一一对应。

2.5 环境验证

装完所有东西后,跑一个简单的测试脚本,确保一切正常:

import torch
import torchvision
import cv2
import numpy as np

print(f"PyTorch version: {torch.__version__}")
print(f"CUDA available: {torch.cuda.is_available()}")
print(f"OpenCV version: {cv2.__version__}")
print(f"NumPy version: {np.__version__}")

# 测试 GPU 是否正常工作
if torch.cuda.is_available():
    x = torch.randn(3, 640, 640).cuda()
    print(f"GPU test passed: {x.shape}")
else:
    print("Warning: GPU not available, using CPU")

如果输出没有报错,恭喜你,环境搭建完成。

2.6 本章知识结构图

下面这张图帮你理清整个环境搭建的流程:

YOLOv6 环境搭建流程 YOLOv6 环境搭建流程 Python 3.8 + Conda PyTorch + CUDA 匹配 Git Clone YOLOv6 pip install -r requirements.txt 数据集准备(COCO/自定义) 关键检查点 1. CUDA 版本匹配 2. GPU 可用性验证 3. 数据集目录结构 4. 标注格式正确

嗯,到这步为止,你的环境就全部就绪了。接下来就可以开始真正的模型训练和调优了。