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 本章知识结构图
下面这张图帮你理清整个环境搭建的流程:
嗯,到这步为止,你的环境就全部就绪了。接下来就可以开始真正的模型训练和调优了。