第一次接触YOLOv8时,我也被各种环境配置搞得头大。经过多次实践,总结出这套在Windows下最稳定的配置方案。建议跟着步骤一步步来,能避开90%的坑。
Anaconda是Python环境管理的利器,特别适合需要切换不同项目环境的场景。我习惯在D盘新建一个AI_Projects文件夹专门存放所有项目,这样重装系统也不怕数据丢失。安装Anaconda时注意两点:勾选"Add to PATH"选项,以及使用默认安装路径(不要有中文和空格)。
安装完成后,用管理员身份打开Anaconda Prompt(重要!),执行以下命令创建专属环境:
bash复制conda create -n yolov8 python=3.8 -y
这里选择Python 3.8是因为它和PyTorch各版本兼容性最好。创建完成后别急着退出,立即激活环境:
bash复制conda activate yolov8
常见问题排查:如果遇到"无法将conda识别为命令",说明PATH没配置好。可以手动将Anaconda3\Scripts和Anaconda3\Library\bin添加到系统环境变量。
GPU加速是目标检测的核心,首先确认你的显卡支持CUDA。在cmd运行:
bash复制nvidia-smi
重点看右上角的CUDA Version,这个不是你安装的版本,而是驱动支持的最高版本。以我的RTX 3060为例,显示11.4,那么我可以安装≤11.4的任何CUDA版本。
到NVIDIA官网下载CUDA Toolkit时,建议选择比驱动版本低一版的CUDA。比如驱动显示11.4,就装CUDA 11.3。安装时选择"自定义",只勾选:
cuDNN需要单独下载,解压后将bin、include、lib文件夹直接复制到CUDA安装目录(如C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3)
验证安装成功:
bash复制nvcc -V
PyTorch版本不对是80%训练失败的根源。到PyTorch官网用历史版本查询功能找到与CUDA对应的版本。比如CUDA 11.3对应:
bash复制pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113
验证GPU是否可用:
python复制import torch
print(torch.cuda.is_available()) # 应该返回True
print(torch.rand(2,3).cuda()) # 应该显示tensor在GPU上
官方推荐用pip直接安装:
bash复制pip install ultralytics
但国内用户更推荐用镜像源:
bash复制pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
安装完成后测试:
bash复制yolo checks
这个命令会检查所有依赖是否齐全。常见缺失包有opencv-python、pycocotools等,按提示补装即可。
YOLOv8支持多种标注格式,推荐使用YOLO原生格式。每个图像对应一个.txt文件,内容格式为:
code复制<class_id> <x_center> <y_center> <width> <height>
坐标都是相对图像宽高的比例值(0-1之间)。我用labelImg工具标注时,记得在设置里选择YOLO格式。
数据集目录建议这样组织:
code复制dataset/
├── images/
│ ├── train/
│ ├── val/
│ └── test/
└── labels/
├── train/
├── val/
└── test/
创建data.yaml文件时最容易出错的是路径设置。推荐使用绝对路径,例如:
yaml复制path: D:/AI_Projects/yolov8_training/dataset
train: images/train
val: images/val
test: images/test
nc: 3 # 类别数
names: ['person', 'car', 'dog'] # 类别名称
验证数据集配置是否正确:
bash复制yolo detect val data=data.yaml
从预训练权重开始能大幅提升收敛速度。常用命令示例:
bash复制yolo detect train data=data.yaml model=yolov8n.pt epochs=100 imgsz=640 batch=16 device=0
关键参数解析:
batch:根据GPU显存调整(RTX 3060建议8-16)imgsz:必须是32的倍数,越大精度越高但速度越慢device:0表示第一个GPU,cpu表示使用CPU训练过程中会实时显示指标,重点关注mAP@0.5和mAP@0.5:0.95两个指标。
在项目根目录会自动生成runs/detect/train文件夹,其中:
weights/包含best.pt和last.ptargs.yaml保存所有训练参数results.png展示指标变化曲线想复现训练结果时,可以直接修改args.yaml再运行:
bash复制yolo detect train args=runs/detect/train/args.yaml
中断后继续训练(比如epochs从100改为200):
bash复制yolo detect train resume model=runs/detect/train/weights/last.pt
用训练好的模型检测图像:
bash复制yolo detect predict model=runs/detect/train/weights/best.pt source=test.jpg
实时摄像头检测:
bash复制yolo detect predict model=best.pt source=0 show=True
输出结果会保存在runs/detect/predict目录。
将PyTorch模型转为ONNX格式:
bash复制yolo export model=best.pt format=onnx
转为TensorRT需要先安装onnxruntime-gpu:
bash复制pip install onnxruntime-gpu
yolo export model=best.pt format=engine device=0
在Python中调用导出的模型:
python复制from ultralytics import YOLO
model = YOLO('best.onnx')
results = model('test.jpg')
报错CUDA out of memory时,可以:
workers=0参数amp=True启用混合精度训练检查以下几点:
如果mAP始终为0:
lr0=0.001--cache ram参数缓存数据集(需要大内存)--persist参数保持数据加载器存活--workers=4利用多核CPU--half参数启用FP16推理--dynamic=False我在实际项目中发现,YOLOv8n在RTX 3060上使用TensorRT引擎,推理速度能达到450FPS以上,完全满足实时检测需求。关键是要根据硬件特性选择合适的导出参数和推理配置。