YOLO26保姆级教程:从零开始搭建目标检测模型
你是不是也经历过——下载了最新YOLO代码,配环境配到怀疑人生;改了十遍data.yaml,训练还是报错路径找不到;好不容易跑通推理,想换张图试试,结果source参数填错又卡住?别急,这篇教程就是为你写的。
这不是一份“理论上能跑”的文档,而是一份真实在服务器上敲过每一行命令、截图过每一个终端输出、踩过所有典型坑的实操指南。我们用的是CSDN星图镜像广场上已验证可用的「最新YOLO26官方版训练与推理镜像」,开箱即用,不编译、不降级、不手动装CUDA——所有依赖早已就位,你只需要专注在“怎么让模型认出你的目标”。
全文没有晦涩术语堆砌,不讲backbone结构、不推导loss函数,只说:
该敲什么命令、
文件该放哪、
参数填什么才不报错、
结果在哪看、
模型训完怎么拿走用。
准备好终端,我们这就开始。
1. 镜像启动后第一件事:激活环境 & 复制代码到工作区
镜像启动后,你看到的不是空白桌面,而是一个预装好全部工具的深度学习工作站。但注意:它默认没进YOLO专用环境,代码也锁在系统盘里——直接改会失效,重启就丢。所以第一步,必须做两件事:切对环境 + 把代码挪到安全位置。
1.1 激活 conda 环境
镜像内置两个环境:torch25(默认)和yolo(YOLO26专用)。不切换,后续所有命令都会提示ModuleNotFoundError: No module named 'ultralytics'。
在终端中输入:
conda activate yolo你会看到命令行前缀变成(yolo),说明环境已成功激活。这一步不能跳,也不能靠“我以为进了”蒙混过关。
1.2 把官方代码复制到 workspace
镜像把YOLO26源码放在/root/ultralytics-8.4.2,但它位于系统盘(只读分区),你修改的任何文件,重启后都会消失。
正确做法是:复制整份代码到/root/workspace/下(这是镜像为你准备的持久化工作区):
cp -r /root/ultralytics-8.4.2 /root/workspace/执行后,用ls /root/workspace/确认目录已存在。然后进入它:
cd /root/workspace/ultralytics-8.4.2现在你拥有了一个可自由编辑、永久保存的YOLO26项目根目录。所有后续操作,都基于这个路径展开。
提示:别再用
cd /root/ultralytics-8.4.2——那是系统盘,改了白改。
2. 三分钟跑通推理:用一张图验证环境是否真正常
别急着训模型,先确保“预测”这条路完全打通。我们用镜像自带的示例图zidane.jpg和预训练权重yolo26n-pose.pt,完成一次端到端推理。
2.1 创建 detect.py 脚本
在当前目录(/root/workspace/ultralytics-8.4.2)下,新建一个 Python 文件:
nano detect.py粘贴以下内容(注意:路径必须严格匹配,大小写、斜杠都不能错):
from ultralytics import YOLO if __name__ == '__main__': model = YOLO(model=r'yolo26n-pose.pt') model.predict( source=r'./ultralytics/assets/zidane.jpg', save=True, show=False )保存并退出(Ctrl+O → Enter → Ctrl+X)。
2.2 执行推理并查看结果
运行命令:
python detect.py几秒后,终端会打印类似这样的信息:
Predicting... Ultralytics 8.4.2 Python-3.9.5 torch-1.10.0+cu121 CUDA:0 (Tesla T4) ... Results saved to runs/detect/predict关键来了:结果图在哪?
打开文件浏览器,导航至:
/root/workspace/ultralytics-8.4.2/runs/detect/predict/zidane.jpg双击打开——你将看到一张带人体关键点和边界框的图片,说明:
PyTorch + CUDA 调用正常,
Ultralytics 库加载成功,
权重文件可读,
OpenCV 图像保存无误。
如果卡在ImportError或FileNotFoundError,请立刻回头检查第1节——90%的问题都出在没激活yolo环境或路径写错。
3. 推理进阶:一张图、一段视频、一个摄像头,全搞定
上面只是“单图测试”,实际使用中,你肯定要处理更多类型的数据源。YOLO26 的predict()方法统一支持三种输入,只需改一个参数:
| 输入类型 | source 参数值 | 说明 |
|---|---|---|
| 单张图片 | './ultralytics/assets/bus.jpg' | 支持 JPG/PNG/BMP 等常见格式,路径必须存在 |
| 视频文件 | './ultralytics/assets/video.mp4' | 自动逐帧推理,结果保存为新视频 |
| 本地摄像头 | 0 | 笔记本自带摄像头或 USB 摄像头,数字代表设备索引 |
3.1 快速切换:改一行,换一种输入
比如你想用摄像头实时检测,只需把detect.py中这一行:
source=r'./ultralytics/assets/zidane.jpg',改成:
source=0,再运行python detect.py,就会弹出一个窗口,实时显示检测画面(注意:show=True才能看到窗口,否则只保存不显示)。
3.2 输出控制:存不存?显不显?怎么存?
predict()还有三个关键开关,务必理解它们的作用:
save=True:必须打开。不加这句,结果只在内存里闪一下,硬盘上啥也没有。show=True:按需开启。笔记本有屏幕时可开;远程服务器无图形界面时,必须设为False,否则报错。project和name:控制保存路径。默认是runs/detect/predict,如果你想每次结果分开存,可以加:
model.predict( source=0, save=True, show=False, project='runs/detect', name='my_camera_test' )这样结果会存到runs/detect/my_camera_test/,避免和上次覆盖。
小技巧:用
ls runs/detect/快速查看所有历史结果文件夹。
4. 训练自己的模型:从准备数据到跑出第一个 epoch
推理通了,下一步就是让YOLO26认识你自己的目标——比如产线上的螺丝、农田里的病虫害、仓库里的托盘。训练分三步:准备数据 → 配置文件 → 启动训练。我们跳过理论,直给可复用的操作流。
4.1 数据准备:YOLO格式,四步到位
YOLO26 只认一种格式:每张图配一个.txt标签文件,内容是归一化的class x_center y_center width height。别手写!用工具生成。
你只需做:
- 把所有图片放进一个文件夹,如
/root/workspace/my_dataset/images/train - 把所有标注
.txt放进同级labels/train文件夹 - 同理建
images/val和labels/val(验证集) - 在
/root/workspace/my_dataset/下新建data.yaml
data.yaml内容模板如下(请按你的真实路径修改):
train: ../my_dataset/images/train val: ../my_dataset/images/val nc: 3 # 类别数,比如:0=defect, 1=nut, 2=bolt names: ['defect', 'nut', 'bolt'] # 类别名,顺序必须和 nc 一致注意:train和val的路径是相对于 data.yaml 文件所在位置的相对路径。如果你把data.yaml放在/root/workspace/my_dataset/data.yaml,那../my_dataset/images/train就是对的;如果放错位置,训练时会报No images found。
4.2 修改 train.py:填对路径,避开最大坑
镜像里没给你现成的train.py,需要自己新建。在/root/workspace/ultralytics-8.4.2/下创建:
nano train.py填入以下精简版代码(已去除冗余警告、适配镜像环境):
from ultralytics import YOLO if __name__ == '__main__': # 加载模型配置(不是权重!是 .yaml 定义网络结构) model = YOLO('ultralytics/cfg/models/26/yolo26.yaml') # 开始训练(指定 data.yaml、调参、输出位置) model.train( data='/root/workspace/my_dataset/data.yaml', # 填你自己的 data.yaml 绝对路径 imgsz=640, epochs=100, batch=64, # 根据显存调整:T4建议 ≤64,A10建议 ≤128 workers=4, # 数据加载进程数,设为 CPU 核心数一半 device='0', # 使用第0块GPU(单卡必填) project='runs/train', name='my_first_yolo26', cache=False # 小数据集可开,大数据集关(省显存) )重点检查:
data=后面是绝对路径,且指向你真实的data.yamldevice='0'不要写成'cuda:0'或0(YOLO26要求字符串)batch别贪大,OOM(显存溢出)时会直接中断,看日志里有没有CUDA out of memory
4.3 启动训练 & 实时看进度
保存后,运行:
python train.py你会看到类似这样的输出:
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size 1/100 2.1G 1.2456 0.8765 1.0234 128 640 2/100 2.1G 1.1987 0.8213 0.9876 128 640 ...左上角GPU_mem显示显存占用(如2.1G),说明CUDA正在工作;box_loss等数值随 epoch 下降,说明模型在学习;
最后一行会提示Results saved to runs/train/my_first_yolo26。
训练完成后,去这个路径下找:
weights/best.pt:精度最高的模型weights/last.pt:最后一个 epoch 的模型results.csv:每个 epoch 的 mAP、loss 全记录(可用 Excel 打开)
5. 模型导出与部署:训完的模型,怎么拿去用?
训出来的best.pt是 PyTorch 格式,不能直接塞进手机App或嵌入式设备。YOLO26 支持一键导出多种工业级格式,我们选最通用的 ONNX(几乎所有推理引擎都支持)。
5.1 导出 ONNX 模型
在/root/workspace/ultralytics-8.4.2/下运行:
yolo export model=runs/train/my_first_yolo26/weights/best.pt format=onnx dynamic=True几秒后,你会看到:
ONNX export success saved as runs/train/my_first_yolo26/weights/best.onnx这个.onnx文件就是你的“成品模型”,体积小、跨平台、无需Python环境,可直接用 OpenCV、ONNX Runtime、TensorRT 加载。
5.2 本地下载模型文件
镜像在云服务器上,模型在runs/.../best.onnx,怎么拿到本地电脑?用 Xftp(或其他SFTP工具):
- 连接服务器(IP、用户名、密码同镜像登录信息)
- 左侧定位到你本地电脑的存放文件夹(如
D:\models\) - 右侧导航到
/root/workspace/ultralytics-8.4.2/runs/train/my_first_yolo26/weights/ - 鼠标双击
best.onnx→ 自动开始下载(不要拖拽!双击最稳)
下载完成后,你就有了一套完整的私有目标检测能力:
📸 采集图像 → 🧠 用best.onnx推理 → 输出坐标和类别。
6. 常见问题快查:90%的报错,这里都有解
训练/推理时遇到报错?先别百度,对照下面高频问题自查:
| 问题现象 | 最可能原因 | 一句话解决 |
|---|---|---|
ModuleNotFoundError: No module named 'ultralytics' | 没激活yolo环境 | 执行conda activate yolo |
FileNotFoundError: No images found in ... | data.yaml中train路径写错 | 用ls /your/path/to/images确认路径真实存在 |
CUDA out of memory | batch设太大 | 改小batch=32或batch=16,再试 |
KeyError: 'names' | data.yaml缺少names:行或格式错 | 检查names: ['a','b']是否顶格、有冒号、英文引号 |
OSError: [Errno 121] Remote I/O error | Xftp下载中断 | 关闭Xftp重连,双击文件下载(别拖拽) |
| 推理结果图是黑的/全是框没内容 | show=True但服务器无图形界面 | 改成show=False,确保save=True |
记住:YOLO26 是个成熟框架,绝大多数报错都不是模型问题,而是路径、权限、环境的小疏漏。逐行核对,比重装环境快十倍。
7. 总结:你已经掌握了YOLO26落地的核心闭环
回看一下,你刚刚完成了目标检测工程中最关键的五步:
- 环境就绪:用
conda activate yolo切到专用环境,把代码复制到workspace永久保存; - 推理验证:3分钟跑通
zidane.jpg,确认整个链路畅通; - 多源适配:一张图、一段视频、一个摄像头,改
source就切换; - 自主训练:准备YOLO格式数据 → 写
data.yaml→ 改train.py→python train.py; - 成果交付:
yolo export导出 ONNX → Xftp 下载 → 拿到本地直接集成。
这不再是“调通一个demo”,而是构建了一条可复用、可迭代、可交付的AI能力流水线。下次新数据来了,你只需要:
① 放进my_dataset/images/train,
② 标注生成labels/train/*.txt,
③python train.py,
④ 下载新的best.onnx。
整个过程不再依赖任何人,也不需要重新配环境——因为镜像已经替你封好了所有变量。
真正的生产力,从来不是“能不能做”,而是“要不要做”。而你现在,已经拥有了说“要”的底气。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。