2026/5/21 15:32:15
网站建设
项目流程
建设网站需要数据库备份,石排镇网站建设,怎么更改公司网站域名,如何在建设部网站补录项目新手必看#xff1a;YOLOv9训练与推理保姆级教程
你是不是也经历过这样的时刻#xff1a;看到目标检测效果惊艳的视频#xff0c;想自己跑通YOLOv9却卡在环境配置上#xff1f;下载完代码发现缺这少那#xff0c;conda环境激活失败、CUDA版本不匹配、数据路径改来改去就是…新手必看YOLOv9训练与推理保姆级教程你是不是也经历过这样的时刻看到目标检测效果惊艳的视频想自己跑通YOLOv9却卡在环境配置上下载完代码发现缺这少那conda环境激活失败、CUDA版本不匹配、数据路径改来改去就是报错……别急这篇教程专为“第一次接触YOLOv9”的你而写。我们不讲论文公式不堆技术参数只聚焦一件事让你在30分钟内从零跑通训练和推理全流程看到真实检测框跳出来。本教程基于CSDN星图提供的「YOLOv9 官方版训练与推理镜像」——它不是半成品而是真正开箱即用的完整环境PyTorch 1.10 CUDA 12.1 预装全部依赖 官方代码 预下载权重所有坑都已提前填平。你只需要按步骤敲命令剩下的交给镜像。下面的内容我会用“你正在操作”的视角带你走一遍从启动镜像开始到成功检测一张马群照片从准备自己的数据集到完成一轮轻量训练。每一步都标注了为什么这么做、常见卡点在哪、怎么一眼看出是否成功。没有“理论上应该”只有“你此刻该敲什么”。1. 镜像启动与环境准备三步进入工作状态很多新手第一步就停住了镜像拉下来打开终端面对黑底白字的命令行不知道从哪下手。其实核心就三件事启动、激活、确认。我们一步步来。1.1 启动镜像并进入终端如果你使用的是CSDN星图平台找到「YOLOv9 官方版训练与推理镜像」点击“一键启动”。镜像启动后会自动打开一个Web终端类似浏览器里的Linux窗口。此时你看到的默认是base环境——这是conda的初始环境但YOLOv9需要专用环境。别担心切换只要一条命令。1.2 激活YOLOv9专属环境在终端中输入conda activate yolov9按回车执行。如果看到终端提示符前多了(yolov9)字样比如(yolov9) rootxxx:~#恭喜环境激活成功如果提示Command conda not found或Could not find conda environment: yolov9说明镜像未完全加载请稍等10秒后重试若仍失败可刷新页面重启镜像。1.3 确认代码与权重位置YOLOv9官方代码已预装在固定路径无需git clone直接进入即可cd /root/yolov9然后检查关键文件是否存在ls -l yolov9-s.pt models/detect/ data.yaml你应该看到yolov9-s.pt预下载的轻量级模型权重s代表small适合新手快速验证models/detect/yolov9-s.yaml对应模型的结构定义文件data.yaml数据集配置模板后面训练时会修改它这三样齐了说明镜像环境完整无损可以放心往下走。2. 第一次推理5分钟看到检测框跳出来推理是验证环境是否正常的最快方式。我们不用自己找图镜像里已自带测试图片也不用调参用默认设置就能出效果。目标很明确让YOLOv9在一张马群照片上画出边界框并保存结果图。2.1 执行单张图片检测命令在已进入/root/yolov9目录且激活yolov9环境的前提下运行以下命令python detect_dual.py --source ./data/images/horses.jpg --img 640 --device 0 --weights ./yolov9-s.pt --name yolov9_s_640_detect逐个解释参数含义你不需要死记但要知道它们在做什么--source指定要检测的图片路径这里用镜像自带的horses.jpg--img 640把图片缩放到640×640像素再送入模型YOLOv9输入必须是正方形--device 0使用第0号GPU单卡机器默认就是0--weights加载预训练权重yolov9-s.pt--name给这次检测结果起个名字方便后续查找2.2 查看并验证检测结果命令执行完成后通常3–8秒终端会输出类似这样的日志Results saved to runs/detect/yolov9_s_640_detect这意味着结果已生成。现在我们去查看它ls runs/detect/yolov9_s_640_detect/你应该看到一个horses.jpg文件——这就是原图叠加检测框后的结果图。如何查看CSDN星图Web终端支持文件预览在左侧文件树中依次展开runs→detect→yolov9_s_640_detect点击horses.jpg右侧将直接显示图片。你将看到几匹马身上被画上了带标签horse和置信度如0.87的彩色矩形框。小贴士如果没看到框或框特别小/模糊大概率是--img尺寸太小试试--img 1280如果报错CUDA out of memory说明显存不足加--device cpu强制用CPU速度慢但能跑通。2.3 快速体验多图/视频检测想试试别的YOLOv9支持多种输入源检测整个文件夹把你的图片放进/root/yolov9/data/images/然后把--source改成该文件夹路径检测视频把视频放在同目录下--source ./data/videos/test.mp4实时摄像头--source 0需镜像支持USB摄像头云环境通常不可用记住核心逻辑--source后面跟的永远是你想“看”的东西的路径。3. 准备自己的数据集YOLO格式不是玄学训练自己的模型第一步不是写代码而是整理数据。YOLO系列对数据格式有严格要求但其实非常简单只有两个要素图片 对应的txt标签文件。我们用最直白的方式说清楚。3.1 YOLO格式的本质一张图一个txt一行一个物体假设你要训练识别“苹果”和“香蕉”那么你的数据集目录结构应该是my_dataset/ ├── images/ │ ├── apple_001.jpg │ ├── apple_002.jpg │ └── banana_001.jpg └── labels/ ├── apple_001.txt ├── apple_002.txt └── banana_001.txt每个.txt文件内容长这样以apple_001.txt为例0 0.45 0.32 0.21 0.18 0 0.78 0.65 0.15 0.22这五行数字代表什么第一个数字0类别ID0苹果1香蕉ID从0开始连续编号后四个数字归一化后的坐标中心x, 中心y, 宽度, 高度全部是0–1之间的小数❌ 不是像素值不是左上角坐标这是新手最容易错的地方。3.2 如何快速生成YOLO格式标签手动算坐标太慢。推荐两个零门槛工具LabelImg桌面软件开源免费画框后自动导出YOLO格式txtCVAT在线平台浏览器打开即用支持多人协作标注无论用哪个导出时选择“YOLO Darknet”格式即可。生成后把images/和labels/文件夹一起上传到镜像的/root/yolov9/my_dataset/目录下。3.3 编写data.yaml告诉模型“你在教它认什么”在/root/yolov9/目录下复制一份data.yaml作为你的数据集配置cp data.yaml my_dataset.yaml用编辑器打开my_dataset.yaml星图终端支持nano my_dataset.yaml修改以下三处train: ../my_dataset/images # 训练图片路径相对yolov9目录 val: ../my_dataset/images # 验证图片路径可先和train一样 nc: 2 # 类别总数苹果香蕉2 names: [apple, banana] # 类别名称列表顺序必须和txt中ID一致改完保存。这个文件就是模型的“课程表”它明确了数据在哪、有多少类、叫什么名。4. 开始你的第一次训练从命令到模型文件训练不是“点一下就完事”而是让模型通过大量图片学习“苹果长什么样”。YOLOv9训练命令看起来长但每个参数都有明确目的。我们拆解一个最简可行的单卡训练命令。4.1 执行轻量训练命令确保你在/root/yolov9目录且环境已激活运行python train_dual.py \ --workers 4 \ --device 0 \ --batch 16 \ --data my_dataset.yaml \ --img 640 \ --cfg models/detect/yolov9-s.yaml \ --weights \ --name my_apple_banana_train \ --epochs 10关键参数说明去掉所有冗余只留必要项--workers 4用4个子进程读取数据数值CPU核心数的一半避免卡顿--batch 16每次送16张图进GPU显存小就调成8或4--data指向你刚写的my_dataset.yaml--weights 空字符串表示从头训练不加载预训练权重--epochs 10只训练10轮新手验证流程够用后续可加4.2 实时监控训练过程命令运行后终端会持续滚动输出日志重点关注三行Epoch gpu_mem box obj cls total targets img_size 0/9 2.1G 0.0423 0.0211 0.0156 0.0790 128 640 ...box/obj/cls三项损失值训练中应缓慢下降初期波动正常targets本轮实际检测到的目标数非0说明数据加载成功最后一列img_size确认输入尺寸是640如果看到损失值在下降且没有FileNotFoundError或CUDA error说明训练已在健康进行。4.3 找到并验证训练好的模型训练结束后模型文件会自动保存在/root/yolov9/runs/train/my_apple_banana_train/weights/best.pt验证它是否可用只需换一个--weights路径再次运行检测python detect_dual.py \ --source ./data/images/horses.jpg \ --img 640 \ --device 0 \ --weights ./runs/train/my_apple_banana_train/weights/best.pt \ --name my_test_inference注意这次检测的图片仍是horses.jpg无关类别目的是验证模型文件能否被正确加载。如果成功生成结果图哪怕全是背景说明模型已保存且可调用。5. 推理进阶技巧让结果更准、更快、更实用当你能跑通基础流程后下一步是让YOLOv9真正为你所用。这里分享3个高频实用技巧不涉及复杂调参全是“改一个参数就见效”的干货。5.1 提升检测精度换更大输入尺寸YOLOv9-s默认用640×640输入对小目标如远处的苹果容易漏检。试试1280python detect_dual.py --source ./my_dataset/images/apple_001.jpg --img 1280 --weights ./best.pt --name high_res效果小目标框更准但速度略降GPU显存占用翻倍。建议开发调试用1280部署上线用640平衡精度与速度。5.2 加快推理速度启用FP16半精度现代GPU支持半精度计算能提速30%以上且几乎不掉点python detect_dual.py --source ./data/images/ --img 640 --weights ./best.pt --name fp16 --half效果终端日志中会出现Using FP16 half-precision inference速度提升明显。注意--half仅对GPU有效CPU模式下会自动忽略。5.3 批量处理与结果解析不只是画框检测结果图很直观但业务中常需结构化数据如这张图里有几个苹果坐标在哪。YOLOv9默认会生成results.txt# 运行检测时添加 --save-txt python detect_dual.py --source ./my_dataset/images/ --weights ./best.pt --save-txt结果保存在runs/detect/xxx/labels/下每个txt文件内容示例0 0.452 0.321 0.210 0.180 0.92 0 0.785 0.652 0.150 0.220 0.87最后一列是置信度0.9292%把握是苹果。你可以用Python轻松读取import numpy as np with open(runs/detect/xxx/labels/apple_001.txt) as f: for line in f: cls, x, y, w, h, conf map(float, line.strip().split()) print(f检测到{[apple,banana][int(cls)]}置信度{conf:.2f})6. 常见问题速查这些报错90%的新手都遇到过训练和推理过程中总会遇到几个“经典报错”。与其百度半天不如直接对照这里30秒定位原因。6.1 “ModuleNotFoundError: No module named torch”❌ 错误原因没激活yolov9环境还在base下运行解决方案立即执行conda activate yolov9再重试命令6.2 “AssertionError: Image Not Found”❌ 错误原因--source路径写错或图片不在指定位置解决方案用ls命令确认路径存在例如ls ./my_dataset/images/确保文件名大小写完全一致Linux区分大小写6.3 “CUDA out of memory”❌ 错误原因GPU显存不足尤其用大图或大batch时解决方案按优先级减小--batch如从64→16减小--img如从1280→640加--device cpu强制CPU运行慢但稳6.4 “KeyError: nc in data.yaml”❌ 错误原因my_dataset.yaml里漏写了nc:或names:解决方案用cat my_dataset.yaml检查确保包含且格式正确nc: 2 names: [apple, banana]6.5 训练loss不下降始终在高位震荡❌ 错误原因数据集太小100张图或标注质量差框不准、漏标解决方案先用YOLOv9-s预训练权重微调把--weights 换成--weights ./yolov9-s.pt检查几张labels/下的txt确认坐标是0–1之间的小数不是像素值7. 总结你已经掌握了YOLOv9落地的核心能力回顾这趟旅程你完成了在5分钟内用预置镜像跑通首次推理亲眼看到检测框理解了YOLO数据格式的本质知道如何准备自己的图片和标签编写了一个可工作的data.yaml让模型认识你的新类别成功执行了一次端到端训练生成了属于你的best.pt掌握了3个即插即用的进阶技巧调尺寸、开半精度、取结构化结果遇到5类高频报错能快速判断原因并解决。这已经远超“入门”——你拥有了将YOLOv9应用到真实场景的完整能力链。下一步你可以把手机拍的水果照片标注后训练做一个简易识别APP用--save-txt导出结果接入Excel做统计分析尝试更大的yolov9-m.pt权重挑战更高精度。技术从来不是目的解决问题才是。你现在手里握着的不是一个模型而是一个能帮你看见、识别、理解图像的工具。它不神秘也不遥远就在你刚刚敲下的每一行命令里。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。