YOLO11从安装到应用,新手友好型教程
你是不是也遇到过这些情况:
- 下载了YOLO系列代码,但卡在环境配置上,pip install报错一堆依赖冲突?
- 看完官方文档还是不知道从哪开始——该先跑demo还是先准备数据?
- 想训练自己的数据集,却在标注格式、目录结构、yaml配置里反复折腾两三天?
别担心。这篇教程专为零基础、没跑通过YOLO、不想查十篇博客拼凑流程的新手设计。我们不讲论文、不聊参数缩放原理,只聚焦一件事:用最短路径,把YOLO11跑起来,并完成一次属于你自己的目标检测训练和推理。
整个过程你只需要做三件事:打开镜像 → 执行几条命令 → 看结果。所有操作都在预装环境里完成,无需手动装CUDA、PyTorch或ultralytics。
1. 镜像启动与环境确认
1.1 一键进入YOLO11开发环境
本镜像已预置完整可运行环境(基于Ultralytics v8.3.9 + YOLO11模型架构),无需任何本地安装。启动后,你将直接获得:
- Jupyter Lab交互式开发界面(推荐新手首选)
- SSH终端访问能力(适合习惯命令行的用户)
- 预下载的
ultralytics-8.3.9/项目目录及示例权重 - 已配置好GPU驱动与CUDA 11.7 + cuDNN 8.6(A30实测可用)
启动镜像后,首先确认环境就绪:
# 进入项目主目录(镜像内已存在) cd ultralytics-8.3.9/ # 查看Python与PyTorch版本(应自动匹配) python -c "import torch; print(f'PyTorch {torch.__version__}, CUDA: {torch.cuda.is_available()}')" # 验证ultralytics是否可导入 python -c "from ultralytics import YOLO; print(' Ultralytics ready')"小贴士:如果看到
CUDA: True和Ultralytics ready,说明底层环境完全就绪——你已经跨过了90%新手卡点。
1.2 快速体验:5秒运行一个预训练模型
不用写代码,先感受YOLO11“动起来”的感觉:
# 使用内置示例图片和预训练权重快速推理 yolo predict model=yolo11n.pt source='assets/bus.jpg' conf=0.5 save=True执行后,你会在当前目录下看到新生成的runs/detect/predict/文件夹,里面是带检测框的bus.jpg结果图。打开它——这就是YOLO11识别出的公交车、人、交通标志等目标。
成功!你刚刚完成了YOLO11的第一次端到端推理。
2. 数据准备:从一张图到规范数据集
2.1 新手最友好的标注方式:Labelme + 自动转换
YOLO11不强制要求特定标注工具,但对输入格式有明确要求:每张图对应一个.txt文件,每行一个目标,格式为class_id center_x center_y width height(全部归一化到0~1)。
我们推荐分三步走,全程可视化、无命令行恐惧:
安装Labelme(仅需1分钟)
在Jupyter Lab中新建一个Terminal(顶部菜单:File → New → Terminal),运行:pip install labelme -i https://pypi.tuna.tsinghua.edu.cn/simple/ labelme # 启动图形界面标注一张图(3分钟上手)
- 点击
Open Dir→ 选择镜像自带的测试图目录(如/mnt/data/sample_images/) - 用鼠标拖出矩形框,双击输入类别名(如
car,person) - 点击
Save→ 自动生成同名.json文件
- 点击
一键转YOLO格式(核心脚本已预置)
镜像中已内置转换脚本utils/labelme_to_yolo.py。你只需修改两处路径:# 编辑 utils/labelme_to_yolo.py(Jupyter中双击打开) input_folder = "/mnt/data/json_labels" # 改为你保存.json的文件夹 output_folder = "/mnt/data/yolo_labels" # 改为你想存.txt的文件夹保存后,在Terminal中运行:
python utils/labelme_to_yolo.py几秒钟后,
yolo_labels/下就会出现与图片一一对应的.txt标注文件。
为什么这样设计?
新手最怕“格式错误”。Labelme生成的是人类可读的JSON,转换脚本帮你精准计算归一化坐标——你只管画框,剩下的交给代码。
2.2 目录结构:三句话记住标准布局
YOLO11(通过Ultralytics)要求数据集严格按以下结构组织(镜像中已为你建好模板):
datasets/ └── my_dataset/ # 你的数据集名称(自定义) ├── train/ │ ├── images/ # 存放训练图片(.jpg/.png) │ └── labels/ # 存放对应.txt标注(文件名必须一致!) ├── val/ │ ├── images/ │ └── labels/ └── test/ # 可选,推理时用 ├── images/ └── labels/关键检查点:
train/images/和train/labels/中的文件名必须完全相同(如001.jpg↔001.txt)val/目录必须存在(哪怕只有1张图,否则训练会报错)- 所有图片建议统一尺寸(如640×480),避免训练时动态缩放引入噪声
3. 训练你的第一个YOLO11模型
3.1 配置文件:两个yaml搞定全部设置
YOLO11训练只需两个配置文件,均位于ultralytics/cfg/下:
(1)数据集配置:datasets/my_dataset.yaml
在Jupyter中新建文件ultralytics/cfg/datasets/my_dataset.yaml,填入:
# 数据集根目录(相对路径,从ultralytics-8.3.9/开始算) path: ../datasets/my_dataset train: train/images val: val/images test: test/images # 可选 # 类别名称(顺序必须与.txt中的class_id严格对应!) names: 0: car 1: person 2: traffic_light注意:
path前面的../很关键——因为YOLO11默认从ultralytics/子目录启动,而datasets/在同级目录。
(2)模型配置:直接复用预置文件
YOLO11提供多种规模模型(n/s/m/l/x)。镜像中已预置:
ultralytics/cfg/models/11/yolo11n.yaml(轻量版,适合入门)ultralytics/cfg/models/11/yolo11m.yaml(平衡版,推荐首次训练)
你无需修改它们——结构、参数、头网络都已调优完毕。
3.2 训练代码:极简版train.py(复制即用)
在ultralytics-8.3.9/目录下新建train.py,内容如下(已精简掉90%非必要参数):
from ultralytics import YOLO # 1. 加载模型:指定配置文件 + 预训练权重 model = YOLO("cfg/models/11/yolo11m.yaml").load("weights/yolo11m.pt") # 2. 定义核心训练参数(只保留新手最需关注的5项) train_params = { "data": "cfg/datasets/my_dataset.yaml", # 指向你的yaml "epochs": 50, # 训练轮数(新手50轮足够) "imgsz": 640, # 输入图像尺寸 "batch": 8, # 批次大小(A30显存友好) "name": "my_first_yolo11", # 保存结果的文件夹名 } # 3. 开始训练! results = model.train(**train_params)为什么这个版本更安全?
- 不手动指定
device(自动识别GPU) - 不设
lr0(学习率自适应) - 不开
mosaic(避免小数据集过拟合) save=True和plots=True默认开启(结果自动保存+曲线图生成)
在Terminal中运行:
python train.py你会看到实时训练日志,类似:
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size 1/50 4.21G 2.812 1.945 2.673 42 640 ... 50/50 4.05G 0.821 0.4172 0.938 18 640训练完成后,结果保存在runs/detect/my_first_yolo11/—— 里面有:
weights/best.pt(最佳权重)weights/last.pt(最终权重)results.csv(每轮指标记录)train_batch0.jpg(训练时的数据增强效果预览)val_batch0_pred.jpg(验证集预测效果)
4. 模型推理:三种方式,总有一款适合你
训练完模型,下一步就是看它“认得准不准”。YOLO11提供三种零门槛推理方式:
4.1 方式一:命令行快速验证(推荐)
# 对单张图推理 yolo predict model=runs/detect/my_first_yolo11/weights/best.pt source="datasets/my_dataset/test/images/001.jpg" save=True # 对整个文件夹推理(自动保存到 runs/detect/predict/) yolo predict model=runs/detect/my_first_yolo11/weights/best.pt source="datasets/my_dataset/test/images/" save=True输出结果:runs/detect/predict/下的图片已叠加检测框,直接打开查看。
4.2 方式二:Python脚本批量处理(适合进阶)
新建infer.py:
from ultralytics import YOLO model = YOLO("runs/detect/my_first_yolo11/weights/best.pt") # 推理并保存结果(图片+txt标签) results = model.predict( source="datasets/my_dataset/test/images/", conf=0.3, # 降低置信度阈值,避免漏检 save=True, # 保存带框图片 save_txt=True, # 保存预测结果txt(YOLO格式) project="inference_results", # 自定义保存目录 name="my_test" ) print(f" 推理完成!结果保存在 inference_results/my_test/")运行python infer.py,几秒后即可查看结果。
4.3 方式三:Jupyter交互式调试(最适合新手理解)
在Jupyter Lab中新建Notebook,运行:
from ultralytics import YOLO import cv2 from IPython.display import display, Image model = YOLO("runs/detect/my_first_yolo11/weights/best.pt") # 加载一张测试图 img_path = "datasets/my_dataset/test/images/001.jpg" results = model(img_path) # 显示原始图和预测图对比 display(Image(img_path, width=400)) display(Image(results[0].plot(), width=400)) # plot()返回带框的BGR数组优势:实时看到每张图的检测效果,随时调整conf、iou等参数观察变化。
5. 常见问题与避坑指南
5.1 “训练不收敛”?先检查这三点
| 现象 | 最可能原因 | 解决方案 |
|---|---|---|
box_loss/cls_loss一直很高(>5.0)且不下降 | 标注文件路径错误或类别ID不匹配 | 检查my_dataset.yaml中names:的顺序是否与.txt中class_id一致;用head datasets/my_dataset/train/labels/001.txt查看首行 |
训练中途报CUDA out of memory | batch设置过大 | 将train.py中batch改为4或2,或添加device='cpu'强制CPU训练(慢但稳) |
val指标全为0(mAP50=0.0) | val/images/和val/labels/文件名不一致 | 运行diff <(ls datasets/my_dataset/val/images | sort) <(ls datasets/my_dataset/val/labels | sort)检查差异 |
5.2 “推理没结果”?三个必查项
权重路径是否正确?
yolo11m.pt是预训练权重,best.pt是你训练的权重——别混用。图片路径是否有中文或空格?
YOLO11对路径敏感。确保路径全英文、无空格,如/mnt/data/test/而非/mnt/data/我的测试/。置信度过高?
默认conf=0.25,若目标小或模糊,尝试conf=0.1或conf=0.05。
5.3 新手高频疑问直答
Q:YOLO11和YOLOv8有什么区别?
A:YOLO11是Ultralytics团队在v8基础上迭代的正式命名(非v9/v10跳变),主要优化了C3k2模块、SPPF结构和PSA注意力机制,同等参数量下精度提升约2.3%。Q:必须用GPU吗?
A:训练强烈建议GPU(A30/RTX3090等),但推理可在CPU运行(速度约1-2 FPS)。在train.py中加device='cpu'即可。Q:如何导出ONNX供其他平台使用?
A:一行命令搞定:yolo export model=runs/detect/my_first_yolo11/weights/best.pt format=onnx opset=17
6. 总结:你已掌握YOLO11全流程
回顾一下,你刚刚完成了:
- 环境启动:跳过CUDA/PyTorch安装,直接进入开箱即用环境
- 数据准备:用Labelme画框 + 脚本自动转YOLO格式,告别坐标计算
- 训练启动:改3个路径 + 设5个参数,50行代码以内完成模型训练
- 结果验证:命令行、脚本、Jupyter三种方式即时查看检测效果
- 问题定位:掌握loss异常、显存不足、无结果等高频问题的自查方法
这不是一个“理论完备但无法落地”的教程,而是为你量身定制的最小可行路径(MVP)。接下来,你可以:
→ 尝试换一个数据集(比如COCO128)验证泛化性
→ 调整imgsz=1280训练高清场景
→ 用yolo train ... --resume从中断处继续训练
→ 把best.pt集成到Flask Web服务中
真正的深度学习工程能力,永远诞生于“第一次成功运行”之后的每一次微小迭代。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。