乔人尹 - 目标检测
type: channel
link: https://underestimated.cn/tag/%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B/
items: 如何训练一个YOLO目标检测模型

如何训练一个YOLO目标检测模型
type: item
date: 2025-12-31T00:00:00+00:00
description: 现在这个网站已经有了成品，请参考以下链接并试用 深度检测前言：一个生物多样性的梦作为一个 AI 架构师，我接到了一个很有意义的项目：开发一套生物多样性识别系统。目标很明确：识别各种鸟类（麻雀、喜鹊、白鹭、翠鸟...）识别各种鱼类（金鱼、鲤鱼、热带鱼...）识别各种小动物（松鼠、刺猬、兔子、蜥蜴...）应用场景包括：野外红外相机的自动物种识别水族馆/动物园的智能监控自然保护区的生态监测公民科学项目的物种记录技术选型自然是 YOLO——目标检测领域的当红炸子鸡，速度快、精度高、部署方便。然而，理想很丰满，现实很骨感。第一章：MacBook 的绝望——为什么我放弃了本地训练1.1 最初的尝试作为一个 MacBook Pro 用户（M4 Pro，18GB 内存），我天真地以为："Apple Silicon 不是很强吗？MPS 加速不是很快吗？训练个小模型应该没问题吧？"于是我开始了尝试：from ultralytics import YOLO # 加载预训练模型 model = YOLO('yolov8n.pt') # 开始训练 model.train( data='biodiversity.yaml', epochs=100, imgsz=640, batch=16, device='mps' # Apple Silicon GPU )然后...RuntimeError: MPS backend out of memory好吧，把 batch 改成 8：# 能跑了，但是... Epoch 1/100: 100%|██████████| 500/500 [15:32<00:00, 1.86s/it]一个 epoch 要 15 分钟，100 个 epoch 就是 25 小时！而且这还只是最小的 YOLOv8n，如果换成 YOLOv8m 或 YOLOv8l...1.2 MacBook 训练的残酷现实配置YOLOv8nYOLOv8sYOLOv8mMacBook M4 Pro 18GB勉强能跑OOM别想了每 epoch 时间~15min--100 epochs 总时间~25h--风扇噪音起飞--能否日常使用不能--问题总结：内存/显存不足：18GB 统一内存要同时跑系统和训练，捉襟见肘MPS 后端不成熟：经常遇到兼容性问题，某些操作不支持速度太慢：和 NVIDIA GPU 比，差距是数量级的影响日常使用：训练时电脑基本不能干别的事1.3 痛定思痛经过一番挣扎，我接受了现实：深度学习训练，还得是 NVIDIA GPU。MacBook 适合做推理、做轻量级实验，但大规模训练？还是交给专业的来吧。于是，我把目光投向了云 GPU 服务。第二章：AutoDL 初体验——云上炼丹的正确姿势2.1 为什么选择 AutoDL对比了几个云 GPU 服务：服务商优点缺点AutoDL便宜、简单、国内访问快高峰期可能没卡AWS/GCP稳定、配置灵活贵、需要信用卡、配置复杂阿里云/腾讯云大厂背书相对较贵Colab免费限时、断连、速度不稳定最终选择 AutoDL，原因：价格实惠：RTX 4090 大约 2-3 元/小时操作简单：网页端直接操作，支持 JupyterLab 和 SSH预装环境：有现成的 PyTorch 镜像，开箱即用数据传输快：国内服务器，上传下载速度有保障2.2 创建实例注册 AutoDL 账号（https://www.autodl.com）充值（支持支付宝，先充个 50-100 块试试）创建实例：GPU：RTX 4090（24GB 显存，性价比之王）镜像：PyTorch 2.0 + Python 3.10 + CUDA 11.8硬盘：系统盘默认，数据盘按需（我选了 50GB）2.3 环境配置SSH 连接到服务器后，配置训练环境：# 1. 确认 GPU 状态 nvidia-smi # 输出应该看到 RTX 4090，显存 24GB # +-----------------------------------------------------------------------------+ # | NVIDIA-SMI 525.xx.xx Driver Version: 525.xx.xx CUDA Version: 12.0 | # |-------------------------------+----------------------+----------------------+ # | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | # | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute …