快速上手YOLO11:只需三步完成模型训练
1. 前言:为什么选择YOLO11?
你是不是也遇到过这样的问题:想用AI做图像识别,但配置环境就花了一整天?好不容易跑起来,训练又报错一堆?现在,有了YOLO11镜像,这些问题统统不存在。
这个镜像已经预装了YOLO11完整运行环境,省去了繁琐的依赖安装和版本冲突调试。更重要的是,它支持Jupyter和SSH两种使用方式,无论你是新手还是老手,都能快速上手。
本文将带你用最简单的方式,在3个步骤内完成一个实例分割模型的训练——不需要懂太多原理,只要跟着做,就能看到效果。整个过程就像搭积木一样简单。
如果你之前用过YOLO系列,会发现YOLO11在结构上做了不少优化,比如引入了C3k2、C2PSA等新模块,检测和分割能力更强。而对我们用户来说,最直观的感受就是:更好用、更高效、效果更准。
接下来,我们就从零开始,一步步把你的数据变成一个能“看懂”图片的AI模型。
2. 第一步:准备你的数据
2.1 数据标注:用Labelme画出目标区域
要让模型学会识别物体,首先得告诉它“什么东西长什么样”。这就需要我们对图片进行标注。
推荐使用Labelme工具,它是免费开源的,操作也很简单:
- 安装命令:
pip install labelme - 启动后点击“打开目录”,加载你的图片
- 点击“创建多边形”,沿着物体边缘一圈圈点下去
- 标完一个物体后,输入类别名称(比如“car”、“person”)
- 点击“保存”,生成一个同名的
.json文件
每张图都会对应一个.json文件,里面记录了你标的所有信息。别担心格式问题,后面我们会把它转成YOLO能读的格式。
小贴士:建议先拿5~10张图试标一下,熟悉流程。标的时候尽量贴着物体边缘点,不要留太大空隙。
2.2 转换标签格式:从JSON到TXT
YOLO11用的不是JSON格式,而是简洁的TXT文本。我们需要把Labelme生成的JSON文件转换成如下格式:
<class-id> <x1> <y1> <x2> <y2> ... <xn> <yn>其中:
class-id是类别编号(0代表人,1代表车……)- 后面是一串归一化后的坐标点,表示物体轮廓
下面这段代码可以批量完成转换:
import json import os # 修改这里:定义你的类别和对应ID label_to_class_id = { "person": 0, "car": 1, "bicycle": 2 } def convert_labelme_json_to_yolo(json_file, output_dir, img_width=640, img_height=640): with open(json_file, 'r') as f: data = json.load(f) file_name = os.path.splitext(os.path.basename(json_file))[0] txt_path = os.path.join(output_dir, f"{file_name}.txt") with open(txt_path, 'w') as txt_file: for shape in data['shapes']: label = shape['label'] points = shape['points'] class_id = label_to_class_id.get(label) if class_id is None: print(f"跳过未定义类别: {label}") continue normalized = [(x / img_width, y / img_height) for x, y in points] txt_file.write(f"{class_id}") for x_norm, y_norm in normalized: txt_file.write(f" {x_norm:.6f} {y_norm:.6f}") txt_file.write("\n") # 批量处理所有JSON文件 if __name__ == "__main__": json_dir = "datasets/your_dataset/jsons" # 改成你的JSON路径 output_dir = "datasets/your_dataset/labels" # 输出TXT的文件夹 os.makedirs(output_dir, exist_ok=True) for file in os.listdir(json_dir): if file.endswith(".json"): convert_labelme_json_to_yolo(os.path.join(json_dir, file), output_dir)运行完之后,你会在labels文件夹里看到一堆.txt文件,每个都对应一张图的标注信息。
2.3 组织数据结构
为了让YOLO11顺利读取数据,建议按以下结构整理文件:
datasets/ └── mydata/ ├── images/ │ ├── train/ │ └── val/ └── labels/ ├── train/ └── val/把80%的图片和对应的TXT放进去train,剩下的放val。注意:图片和标签文件名必须一致(除了后缀)。
3. 第二步:配置训练参数
3.1 创建数据集配置文件
在ultralytics/cfg/datasets/目录下新建一个.yaml文件,比如叫mydata-seg.yaml:
path: ./datasets/mydata train: images/train val: images/val names: 0: person 1: car 2: bicycle这个文件告诉模型:
- 数据放在哪(
path) - 训练集和验证集路径
- 每个数字代表什么类别
3.2 选择合适的模型结构
YOLO11提供了多个尺寸的模型,你可以根据设备性能选择:
| 模型 | 参数量 | 适合场景 |
|---|---|---|
| yolo11n-seg | ~3M | 笔记本、低配GPU |
| yolo11s-seg | ~10M | 主流显卡 |
| yolo11m-seg | ~22M | 高性能训练 |
| yolo11l/x-seg | >27M | 服务器级硬件 |
一般建议从yolo11m-seg开始尝试,平衡速度与精度。
3.3 编写训练脚本
在项目根目录创建train.py,内容如下:
from ultralytics import YOLO # 加载模型结构并加载预训练权重 model = YOLO("yolo11m-seg.yaml").load("yolo11m-seg.pt") # 开始训练 results = model.train( data="mydata-seg.yaml", # 数据配置文件 epochs=30, # 训练轮数 imgsz=640, # 输入图像大小 batch=8, # 每批处理8张图 device=0, # 使用第0块GPU(CPU用None) workers=4, # 数据加载线程数 name="my_segmentation_run" # 结果保存的文件夹名 )是不是比想象中简单?其实核心就三行代码:
- 加载模型
- 设置参数
- 开始训练
其他像学习率、优化器这些高级参数,YOLO11都已经帮你设好了默认值,不用调也能出好效果。
4. 第三步:启动训练,坐等结果
4.1 进入项目目录
打开终端或Jupyter终端,执行:
cd ultralytics-8.3.9/确保你现在位于YOLO11项目的主目录下。
4.2 运行训练命令
直接运行:
python train.py不出意外的话,你会看到类似这样的输出:
Ultralytics 8.3.7 🚀 Python-3.9.16 torch-1.13.1 CUDA:0 (NVIDIA A30, 24062MiB) Epoch GPU_mem box_loss seg_loss cls_loss Instances Size 1/30 5.26G 1.621 3.875 4.195 8 640: 100%|██████████| 38/38 [00:06<00:00, 6.12it/s] Class Images Instances Box(P) R mAP50 Mask(P) R mAP50 all 300 440 0.999 0.886 0.934 0.974 0.864 0.896 ... Epoch GPU_mem box_loss seg_loss cls_loss Instances Size 30/30 5.23G 0.6153 0.7265 0.3487 6 640: 100%|██████████| 38/38 [00:05<00:00, 7.38it/s] Class Images Instances P R mAP50 P R mAP50 all 300 440 1 0.999 0.995 1 0.999 0.995 Results saved to runs/segment/my_segmentation_run看到最后一行“Results saved to”说明训练成功了!
4.3 查看训练成果
进入runs/segment/my_segmentation_run文件夹,你会找到:
weights/best.pt:表现最好的模型权重weights/last.pt:最后一轮的模型results.png:训练曲线图(损失、mAP等)confusion_matrix.png:分类混淆矩阵
重点关注results.png里的mAP50指标,如果超过0.8,说明模型已经学得不错了。
5. 模型推理:看看AI学会了什么
训练完当然要试试效果。创建infer.py:
from ultralytics import YOLO # 加载最佳模型 model = YOLO("runs/segment/my_segmentation_run/weights/best.pt") # 对整个文件夹的图片进行预测 results = model.predict( source="datasets/mydata/images/val/", imgsz=640, conf=0.4, save=True, # 保存带标注的图片 show_labels=True, # 显示类别标签 show_conf=True # 显示置信度 )运行后,打开runs/predict文件夹,就能看到AI标注的结果图。你会发现:
- 物体边界被精准勾勒出来(这是分割能力)
- 不同个体即使挨得很近也能区分开
- 置信度高的预测基本都正确
这说明你的模型已经具备实用价值了。
6. 总结:三步走通全流程
回顾一下,我们只用了三个清晰的步骤就完成了整个训练流程:
- 准备数据:用Labelme标注 → 转成TXT → 分好训练/验证集
- 配置参数:写YAML文件 → 选模型 → 写几行训练代码
- 开始训练:一键运行 → 看日志 → 拿结果
整个过程不需要手动安装任何依赖,也不用折腾CUDA、PyTorch版本兼容问题——因为镜像已经帮你搞定了。
你现在完全可以拿着自己的数据,照着这个流程再走一遍。哪怕只有几十张图,也能训练出一个可用的模型。
下一步你可以尝试:
- 增加更多类别
- 调整
imgsz提高分辨率 - 用
augment=True开启更强的数据增强 - 把模型导出为ONNX格式用于部署
AI视觉应用的大门,现在已经为你打开了。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。