YOLO 安装与部署
二、安装与部署
环境要求
| 项目 | 要求 | 说明 |
|---|---|---|
| Python | 较新的 3.x 版本 | 建议用独立虚拟环境,避免与系统包冲突 |
| 深度学习框架 | 与 CUDA 版本匹配的构建版本 | 框架版本与显卡驱动、CUDA 版本三者必须对齐,具体对应关系以官方安装说明为准 |
| GPU | 训练建议有独立显卡 | 推理可以只用 CPU,但速度会慢很多 |
| 显存 | 随输入尺寸与批大小增长 | 训练时显存不足是最常见的报错,先减批大小 |
安装步骤
- 创建虚拟环境并激活。
- 安装深度学习框架的对应构建版本(以官方安装矩阵为准)。
- 安装 YOLO 的实现库,主流的做法是安装提供训练与导出全套工具链的库。
- 验证环境:加载一个预训练权重,对一张样例图做一次推理,确认能输出框。
python3 -m venv ~/venv-yolo
source ~/venv-yolo/bin/activate
pip install --upgrade pip
pip install torch torchvision # 具体索引与 CUDA 版本以官方说明为准
pip install ultralytics
yolo version
yolo predict model=yolov8n.pt source=test.jpg
模型权重文件名随版本变化(不同系列有不同的后缀),以官方模型库的说明为准。权重文件在首次使用时通常会自动下载。
数据集准备
datasets/defect/
images/
train/ img_0001.jpg ...
val/ img_0101.jpg ...
labels/
train/ img_0001.txt ...
val/ img_0101.txt ...
data.yaml
path: datasets/defect
train: images/train
val: images/val
names:
0: scratch
1: dent
2: stain
每张图对应一个同名的 txt,每行是一个目标,格式为「类别序号 中心x 中心y 宽 高」,坐标与尺寸都按图像宽高归一化到 0 到 1 之间。这个格式写错是训练失败最常见的原因:坐标没归一化、类别序号从 1 开始、行列顺序搞反,都会让损失从头到尾降不下去。
常见报错排查
| 报错 / 现象 | 原因 | 处理 |
|---|---|---|
| 显存不足 | 批大小或输入尺寸过大、图像分辨率过高 | 先降批大小,再降输入尺寸,或用梯度累积模拟大批量 |
| 损失不下降或出现 NaN | 学习率过大、标签格式错误、数据里有损坏图 | 降学习率,逐条检查标签,剔除损坏样本 |
| 类别索引越界报错 | 标签里的类别序号超过了类别数 | 确认序号从 0 开始且与类别表一一对应 |
| 训练正常但验证精度极低 | 训练集与验证集路径配错,或两边预处理不一致 | 检查数据配置文件里的路径与划分,确认没有同名文件互相覆盖 |
| 推理速度远低于预期 | 还在用原始权重而不是导出后的加速格式 | 导出成 ONNX 或 TensorRT,并使用半精度 |
| 导出后精度明显下降 | 量化或半精度带来的误差、预处理不一致 | 对比导出前后的输出,必要时保留部分层用高精度 |
| 可视化的框与原图对不上 | 推理时的缩放方式与训练不一致 | 统一使用同一种 letterbox 预处理 |
