logo
0
0
WeChat Login

YOLOv8 + Linux + NVIDIA L40 工程级训练实战记录

实际上说是YOLO项目更合适,因为安装步骤都是一样的,只是训练时候调用的模型不同,但是本文档训练模型用了YOLOv8所以取名为YOLOv8

docker启动yolo

使用自动安装脚本进行安装(推荐方式、默认方式)

bash install_yolo_env.sh

pt模型转ONNX

简化写法:

yolo export model=/workspace/yolo_project/runs/detect/train/weights/best.pt format=onnx

需要转换成ncnn直接更改format=ncnn即可

部分参数写法:

yolo export model=/workspace/yolo_project/runs/detect/train/weights/best.pt \ format=onnx \ imgsz=640 \ half=True \ simplify=True \ opset=12 \ project=/workspace/yolo_project/exports

常用参数说明:
imgsz: 输入尺寸,默认 640
half: 使用 FP16 精度,可减小模型大小
simplify: 简化模型,移除冗余操作
opset: ONNX 算子集版本,建议 12-17
dynamic: 启用动态维度
batch: 指定批次大小
workspace: GPU 内存限制(GB)
project:ONNX存放目录

1. 安装基础依赖

apt update apt install -y \ build-essential \ python3 \ python3-venv \ python3-pip \ libgl1 \ libglib2.0-0

2. 创建虚拟环境

python3 -m venv yolo source yolo/bin/activate

3. 安装 PyTorch

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

验证 PyTorch 与 CUDA:

python3 - << 'EOF' import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0)) EOF

期望输出示例:

True NVIDIA L40

4. 安装 YOLOv8

pip install -U pip pip install ultralytics

验证安装:

yolo version

数据标注与格式

0. 推荐的标注工具(工程实践)

  • labelImg(官方项目)

  • Roboflow(Web):适合快速转换与增强

  • CVAT / Label Studio:适合团队与大规模数据

工程建议

  • 服务器不跑 GUI 标注工具
  • 标注统一在本地或 Web 平台完成
  • 只把“干净的数据集”同步到服务器

数据集目录结构(非常关键)

dataset/ ├── images/ │ ├── train/ │ └── val/ ├── labels/ │ ├── train/ │ └── val/ └── data.yaml

data.yaml 示例

path: /workspace/yolo_project/dataset train: images/train val: images/val names: 0: girl

开始训练(YOLOv8n)

yolo detect train \ data=/workspace/yolo_project/dataset/data.yaml \ project=/workspace/yolo_project/runs/detect \ name=train \ model=yolov8n.pt \ epochs=100 \ imgsz=640 \ batch=64 \ device=0 \ workers=8

训练完成后输出:

100 epochs completed Results saved to /.../runs/detect/trainX

训练结果验证

成功标志

  • 能生成:
    • /.../runs/detecXt/train/weights/best.pt
    • results.png
  • GPU 被正确识别:
CUDA:0 (NVIDIA L40)

使用训练好的模型进行图片预测(最常用)

yolo detect predict \ model=/workspace/yolo_project/runs/detect/train/weights/best.pt \ source=/workspace/yolo_project/dataset/images/val \ conf=0.25 \ save=True

输出结果:

/.../runs/detect/predictX/

其中包含:

  • 预测后的图片(已画框)
  • 置信度与类别名称

对单张图片进行预测

yolo detect predict \ model=/workspace/yolo_project/runs/detect/train/weights/best.pt \ source=demo.jpg

对文件夹 / 批量图片预测

yolo detect predict \ model=/workspace/yolo_project/runs/detect/train/weights/best.pt \ source=/data/test_images

视频 / 摄像头推理(可选)

# 视频文件 yolo detect predict \ model=/workspace/yolo_project/runs/detect/train/weights/best.pt \ source=video.mp4 # 摄像头(本地环境) yolo detect predict \ model=/workspace/yolo_project/runs/detect/train/weights/best.pt \ source=0

注意:服务器环境通常 无摄像头 / 无 GUI,不建议直接使用 source=0


推荐目录结构(最终形态)

yolo_project/ ├── dataset/ │ ├── images/ │ │ ├── train/ │ │ └── val/ │ ├── labels/ │ │ ├── train/ │ │ └── val/ │ └── data.yaml ├── runs/ ├── tools/ # 数据检查 / 转换脚本 ├── README.md # ← 本文档 └── train.sh

常用推理参数说明(工程必读)

参数作用建议
conf置信度阈值0.25~0.5
imgsz推理尺寸与训练一致
device推理设备0cpu
save是否保存结果生产环境可关闭

判断模型是否“真的可用”

  • 新图片(非 train / val)
  • 不同背景 / 尺寸 / 角度
  • 不只看 mAP
  • 不只看 val

**最终标准只有一个:**预测结果是否符合业务直觉


推理失败常见问题

问题原因解决
检测不到目标conf 太高调低 conf
框很乱过拟合增加数据
类别错误标注不一致统一 label

About

No description, topics, or website provided.
Language
Shell81.4%
Others18.6%