保姆级教程:在Ubuntu 20.04上用YOLOv5 v6.2训练你自己的COCO数据集(附完整数据准备流程)
在Ubuntu 20.04上从零构建YOLOv5 v6.2自定义训练环境的完整指南当你想在本地工作站或云服务器上训练自己的目标检测模型时YOLOv5无疑是最受欢迎的选择之一。但许多教程都假设你已经熟悉了Linux环境配置、数据集处理等前置知识这让不少初学者在第一步就卡住了。本文将彻底解决这个问题——从Ubuntu系统的基础环境配置开始到最终成功启动训练每个步骤都会详细说明背后的原理和实际操作的细节。1. 系统环境准备与依赖安装在开始之前确保你的Ubuntu 20.04系统已经更新到最新状态。打开终端并执行sudo apt update sudo apt upgrade -y1.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 python3.8 conda activate yolov52. 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_okTrue) for img_id in coco.imgs: ann_ids coco.getAnnIds(imgIdsimg_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.txt3.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)mAP0.5YOLOv5n1.96.328.0YOLOv5s7.26.437.4YOLOv5m21.28.245.4YOLOv5l46.510.149.0YOLOv5x86.712.150.7对于初次训练建议从YOLOv5s开始python train.py --data coco.yaml --cfg yolov5s.yaml --weights --batch-size 32 --epochs 100 --img 6404. 训练优化与问题排查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-size644.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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2603684.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!