小白也能懂的YOLO11教程:从环境搭建到模型推理
1. 环境准备与镜像使用
1.1 使用YOLO11镜像快速启动开发环境
为了简化YOLO11的部署流程,推荐使用预配置的深度学习镜像。该镜像基于ultralytics/ultralytics构建,集成了PyTorch、CUDA、OpenCV等必要依赖,开箱即用。
通过CSDN星图平台可一键拉取并运行YOLO11完整环境:
# 示例:本地Docker方式启动(如支持) docker run -d --gpus all \ -p 8888:8888 \ -v ./datasets:/mnt/data \ yolo11-env:latest容器启动后可通过Jupyter或SSH两种方式接入开发环境。
1.2 Jupyter Notebook 使用指南
访问http://<服务器IP>:8888即可进入Jupyter界面。首次登录需输入Token(可在日志中查看),建议绑定个人账户以提升安全性。
在Jupyter中可以:
- 实时调试训练脚本
- 可视化数据增强效果
- 查看损失曲线和mAP变化趋势
- 快速验证推理结果
1.3 SSH远程连接开发环境
对于习惯命令行操作的用户,可通过SSH直接连接容器进行开发:
ssh user@<服务器IP> -p 2222登录后即可执行常规Linux命令,如文件管理、进程监控、日志查看等。适合批量处理数据、长时间训练任务等场景。
2. 项目结构初始化
2.1 进入项目目录
首先切换至YOLO11主工程目录:
cd ultralytics-8.3.9/此目录包含核心代码库ultralytics/以及后续自定义脚本存放位置。
2.2 建立标准项目结构
为保证工程规范性,建议创建如下目录结构:
ultralytics-8.3.9/ ├── datasets/ # 存放训练/验证数据 │ └── det_auto_parts_20241020/ │ ├── train/images/ │ ├── train/labels/ │ ├── val/images/ │ └── val/labels/ ├── weights/ # 预训练权重存储 │ ├── yolo11n.pt │ └── yolo11m.pt ├── runs/ # 训练输出自动保存路径 ├── train.py # 自定义训练脚本 ├── infer.py # 推理脚本 └── ...该结构与Ultralytics官方设计兼容,便于迁移和复现。
3. 数据集准备与标注转换
3.1 使用Labelme进行图像标注
推荐使用开源工具Labelme进行手动标注:
- 安装:
pip install labelme - 启动:
labelme - 操作流程:
- 点击“打开目录”加载图片
- 选择“创建矩形”框选目标
- 输入类别标签(如car、bus)
- 保存生成同名
.json文件
每个JSON文件记录了图像尺寸、对象坐标及语义信息。
3.2 Labelme JSON转YOLO TXT格式
YOLO系列模型要求标签为归一化的TXT格式,每行表示一个物体:
<object-class> <x_center> <y_center> <width> <height>编写自动化转换脚本如下:
import json import os # 类别映射表(根据实际任务修改) label_map = { "car": 0, "bus": 1, "truck": 2 } def convert_labelme_to_yolo(json_path, output_dir): with open(json_path, 'r') as f: data = json.load(f) img_w = data['imageWidth'] img_h = data['imageHeight'] annotations = [] for shape in data['shapes']: label_name = shape['label'] if label_name not in label_map: continue class_id = label_map[label_name] points = shape['points'] # 处理矩形或多边形 x_coords = [p[0] for p in points] y_coords = [p[1] for p in points] x1, x2 = min(x_coords), max(x_coords) y1, y2 = min(y_coords), max(y_coords) # 归一化计算 xc = (x1 + x2) / 2 / img_w yc = (y1 + y2) / 2 / img_h w = (x2 - x1) / img_w h = (y2 - y1) / img_h annotations.append(f"{class_id} {xc:.6f} {yc:.6f} {w:.6f} {h:.6f}") # 写入txt文件 base_name = os.path.splitext(os.path.basename(json_path))[0] output_file = os.path.join(output_dir, base_name + '.txt') os.makedirs(output_dir, exist_ok=True) with open(output_file, 'w') as f: f.write('\n'.join(annotations)) def process_folder(input_folder, output_folder): for file in os.listdir(input_folder): if file.endswith('.json'): json_path = os.path.join(input_folder, file) convert_labelme_to_yolo(json_path, output_folder) # 执行转换 input_folder = "/mnt/data/json_labels" output_folder = "/mnt/data/yolo11_txt_labels" process_folder(input_folder, output_folder)4. YOLO11模型配置与训练
4.1 数据集YAML配置文件
在ultralytics/cfg/datasets/下新建auto-parts-det.yaml:
path: ./datasets/det_auto_parts_20241020 train: train/images val: val/images names: 0: car 1: bus 2: truck关键字段说明:
path: 数据集根目录train/val: 相对路径下的图像文件夹names: 类别索引映射
4.2 模型结构配置文件解析
YOLO11主干网络定义于ultralytics/cfg/models/11/yolo11.yaml,其核心组件包括:
- Backbone: 多尺度特征提取(P3-P5)
- Neck: FPN+PAN结构融合高低层特征
- Head: Detect头输出三路检测结果
支持不同规模模型通过scales参数控制:
n: nano,最小轻量版s/m/l/x: 从小到大逐步增加深度和宽度
4.3 编写训练脚本
创建train.py,实现全流程训练逻辑:
from ultralytics import YOLO # 加载模型配置并加载预训练权重 model = YOLO("yolo11m.yaml").load("weights/yolo11m.pt") # 训练参数配置 train_params = { 'data': 'auto-parts-det.yaml', 'epochs': 100, 'imgsz': 640, 'batch': 8, 'device': 0, # 使用GPU 0 'workers': 8, 'optimizer': 'AdamW', 'lr0': 0.001, 'weight_decay': 0.0005, 'warmup_epochs': 3, 'project': 'runs/train', 'name': 'exp_auto_parts', 'save_period': 10, 'val': True, 'plots': True } # 开始训练 results = model.train(**train_params)提示:若未指定模型大小,默认加载
yolo11n;建议明确使用yolo11m.yaml等形式避免混淆。
5. 模型推理与结果分析
5.1 执行模型训练
运行以下命令开始训练:
python train.py典型输出日志:
Starting training for 100 epochs... Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size 1/100 4.68G 2.238 1.691 2.426 80 640 Class Images Instances Box(P R mAP50) all 128 929 0.77 0.728 0.798 ... 100/100 4.49G 1.171 0.7135 1.319 41 640 all 128 929 0.847 0.845 0.891训练完成后,最佳权重保存在runs/train/exp_auto_parts/weights/best.pt。
5.2 模型推理实现
创建infer.py进行预测:
from ultralytics import YOLO # 加载训练好的模型 model = YOLO("runs/train/exp_auto_parts/weights/best.pt") # 批量推理图像文件夹 results = model.predict( source="datasets/det_auto_parts_20241020/val/images/", conf=0.45, iou=0.6, imgsz=640, device=0, save=True, save_txt=True, show_labels=True, show_conf=True )参数说明:
source: 支持图片路径、文件夹、视频、摄像头IDconf: 置信度阈值过滤低质量预测save: 自动保存带框图和标签文本device: 指定GPU设备加速推理
5.3 推理结果可视化
系统将自动生成:
- 带检测框的图像(保存在
runs/detect/predict/) - 对应的TXT标签文件(用于后续评估)
- 可选:分割掩码、关键点、OBB旋转框等高级输出
适用于简单场景与密集遮挡场景的目标检测任务。
6. 总结
本文系统介绍了YOLO11从环境搭建到模型推理的完整流程,涵盖以下关键步骤:
- 环境部署:利用预置镜像快速构建开发环境,支持Jupyter交互式开发与SSH远程操作。
- 数据准备:通过Labelme标注并转换为YOLO标准格式,确保数据正确性。
- 模型配置:合理设置YAML文件,匹配实际任务需求。
- 模型训练:调用Ultralytics API完成端到端训练,灵活调整超参数。
- 模型推理:加载最优权重进行预测,输出可视化结果与结构化数据。
YOLO11继承了Ultralytics系列高效易用的特点,同时在精度与速度间取得良好平衡,非常适合工业检测、自动驾驶、安防监控等应用场景。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。