保姆级教程:在Ubuntu 20.04上用YOLOv5 v6.2训练你自己的COCO数据集(附完整数据准备流程)
2026/5/11 14:37:10 网站建设 项目流程

在Ubuntu 20.04上从零构建YOLOv5 v6.2自定义训练环境的完整指南

当你想在本地工作站或云服务器上训练自己的目标检测模型时,YOLOv5无疑是最受欢迎的选择之一。但许多教程都假设你已经熟悉了Linux环境配置、数据集处理等前置知识,这让不少初学者在第一步就卡住了。本文将彻底解决这个问题——从Ubuntu系统的基础环境配置开始,到最终成功启动训练,每个步骤都会详细说明背后的原理和实际操作的细节。

1. 系统环境准备与依赖安装

在开始之前,确保你的Ubuntu 20.04系统已经更新到最新状态。打开终端并执行:

sudo apt update && sudo apt upgrade -y

1.1 显卡驱动与CUDA安装

YOLOv5训练需要NVIDIA显卡和CUDA支持。首先检查你的显卡型号和驱动版本:

nvidia-smi

如果未安装驱动,推荐使用官方PPA仓库安装:

sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt install nvidia-driver-510

安装完成后重启系统。接下来安装CUDA 11.3(与PyTorch稳定版兼容):

wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda_11.3.1_465.19.01_linux.run sudo sh cuda_11.3.1_465.19.01_linux.run

注意:安装过程中不要勾选驱动安装选项,因为我们已单独安装驱动

1.2 Conda环境配置

为避免依赖冲突,我们使用Miniconda创建独立环境:

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh

创建并激活Python 3.8环境:

conda create -n yolov5 python=3.8 conda activate yolov5

2. COCO数据集的自定义路径管理

大多数教程直接使用默认路径,但在实际项目中,我们往往需要将数据放在特定位置。下面展示如何完全自定义数据存储结构。

2.1 数据集下载与重组

首先创建项目目录结构:

~/yolov5_project/ ├── datasets/ │ └── coco/ │ ├── images/ │ │ ├── train2017/ │ │ └── val2017/ │ └── labels/ │ ├── train2017/ │ └── val2017/ ├── yolov5/ └── weights/

下载COCO数据集到指定位置:

mkdir -p ~/yolov5_project/datasets/coco cd ~/yolov5_project/datasets/coco wget http://images.cocodataset.org/zips/train2017.zip wget http://images.cocodataset.org/zips/val2017.zip unzip train2017.zip -d images/ unzip val2017.zip -d images/

2.2 标签文件处理

YOLOv5需要特定格式的标签文件。使用以下脚本转换官方标注:

from pycocotools.coco import COCO import os def convert_coco_to_yolo(coco_json, output_dir): coco = COCO(coco_json) os.makedirs(output_dir, exist_ok=True) for img_id in coco.imgs: ann_ids = coco.getAnnIds(imgIds=img_id) anns = coco.loadAnns(ann_ids) img_info = coco.loadImgs(img_id)[0] img_w, img_h = img_info['width'], img_info['height'] with open(f"{output_dir}/{img_id:012d}.txt", "w") as f: for ann in anns: x, y, w, h = ann['bbox'] x_center = (x + w/2) / img_w y_center = (y + h/2) / img_h w_norm = w / img_w h_norm = h / img_h f.write(f"{ann['category_id']} {x_center} {y_center} {w_norm} {h_norm}\n")

3. YOLOv5项目配置与自定义

克隆最新版YOLOv5仓库并安装依赖:

cd ~/yolov5_project git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt

3.1 自定义数据配置文件

修改data/coco.yaml适配我们的路径结构:

# COCO 2017 dataset http://cocodataset.org # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] path: ~/yolov5_project/datasets/coco train: images/train2017 val: images/val2017 test: # Classes names: 0: person 1: bicycle # ...完整类别列表

3.2 模型配置选择

YOLOv5提供多种预定义模型尺寸:

模型参数量(M)推理时间(ms)mAP@0.5
YOLOv5n1.96.328.0
YOLOv5s7.26.437.4
YOLOv5m21.28.245.4
YOLOv5l46.510.149.0
YOLOv5x86.712.150.7

对于初次训练,建议从YOLOv5s开始:

python train.py --data coco.yaml --cfg yolov5s.yaml --weights '' --batch-size 32 --epochs 100 --img 640

4. 训练优化与问题排查

4.1 多GPU训练配置

如果你有多个GPU,可以通过以下方式加速训练:

python train.py --data coco.yaml --cfg yolov5l.yaml --weights '' --batch-size 64 --device 0,1 --epochs 300 --img 640

提示:batch-size需要根据GPU内存调整。RTX 3090(24GB)通常可以支持batch-size=64

4.2 常见错误解决方案

  • CUDA内存不足:减小batch-size或使用更小的模型
  • 标签文件缺失:检查路径是否正确,确保每个图像都有对应的.txt标签文件
  • 训练指标不更新:检查学习率设置,尝试使用预训练权重

4.3 训练监控与可视化

YOLOv5会自动生成训练日志,可以通过TensorBoard查看:

tensorboard --logdir runs/train

关键监控指标包括:

  • 损失函数变化(box_loss, obj_loss, cls_loss)
  • 验证集mAP
  • 学习率变化曲线

5. 模型评估与导出

训练完成后,使用以下命令评估模型性能:

python val.py --data coco.yaml --weights runs/train/exp/weights/best.pt --img 640

导出为ONNX格式以便部署:

python export.py --weights runs/train/exp/weights/best.pt --include onnx

在实际项目中,我发现合理设置超参数可以显著提升模型性能。例如,调整学习率调度策略:

# yolov5s.yaml lr0: 0.01 # 初始学习率 lrf: 0.2 # 最终学习率 = lr0 * lrf momentum: 0.937 weight_decay: 0.0005 warmup_epochs: 3.0 warmup_momentum: 0.8 warmup_bias_lr: 0.1

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询