从下载到运行,YOLO11完整流程演示
这是一篇真正面向新手的实操指南。不讲抽象原理,不堆技术术语,只说你打开终端后下一步该敲什么命令、点哪里、看什么结果。无论你是刚接触目标检测的学生,还是想快速验证业务场景的工程师,只要你会用鼠标和键盘,就能跟着本文把YOLO11跑起来——从镜像下载、环境启动,到训练自己的数据、看到分割效果,全程无断点。
我们用的是CSDN星图提供的预置YOLO11镜像,它已经帮你装好了PyTorch、CUDA、Ultralytics 8.3.9、Jupyter Lab、SSH服务等全部依赖,省去手动配置GPU环境的数小时折腾。下面所有操作,都是在镜像启动后的实际环境中验证过的真路径、真命令、真输出。
1. 镜像获取与容器启动
1.1 下载并运行YOLO11镜像
YOLO11镜像无需从零构建,直接拉取即可。在你的Linux或macOS终端中执行:
docker pull registry.cn-hangzhou.aliyuncs.com/csdn-ai/yolo11:latest拉取完成后,使用以下命令一键启动容器(已预配置好端口映射和GPU支持):
docker run -d \ --gpus all \ --shm-size=8g \ -p 8888:8888 \ -p 2222:22 \ -v $(pwd)/workspace:/workspace \ --name yolo11-env \ registry.cn-hangzhou.aliyuncs.com/csdn-ai/yolo11:latest说明:
-p 8888:8888映射Jupyter Lab端口;-p 2222:22映射SSH端口,方便VS Code远程连接;-v $(pwd)/workspace:/workspace将当前目录挂载为/workspace,所有代码和数据都存这里,重启容器不丢失。
启动后,用docker ps确认容器正在运行:
$ docker ps | grep yolo11-env a1b2c3d4e5f6 registry.cn-hangzhou.aliyuncs.com/csdn-ai/yolo11:latest "/bin/bash -c 'ser..." 2 minutes ago Up 2 minutes 0.0.0.0:8888->8888/tcp, 0.0.0.0:2222->22/tcp yolo11-env1.2 获取Jupyter访问链接
容器启动后,Jupyter Lab会自动生成带Token的访问地址。执行:
docker logs yolo11-env 2>&1 | grep "http://127.0.0.1:8888"你会看到类似输出:
http://127.0.0.1:8888/?token=abc123def456ghi789jkl012mno345pqr678stu901复制整个URL,在浏览器中打开(注意把127.0.0.1换成你宿主机IP,如http://192.168.1.100:8888/...),即可进入Jupyter Lab界面。
小技巧:首次进入后,右键点击左侧文件栏 → “上传”,可直接拖入你的图片、JSON标注文件或数据集ZIP包。
2. 环境验证与项目结构初始化
2.1 进入工作目录并确认版本
在Jupyter Lab中,新建一个Terminal(菜单栏 → File → New → Terminal),然后执行:
cd /workspace ls -l你应该看到镜像已预置好ultralytics-8.3.9/目录(注意不是ultralytics-main,是精简优化后的稳定版):
drwxr-xr-x 12 root root 368 Dec 15 10:22 ultralytics-8.3.9验证YOLO11是否可用:
cd ultralytics-8.3.9 python -c "from ultralytics import YOLO; print('YOLO11 ready '); print(YOLO('yolo11n-seg.pt').model.names)"输出类似:
YOLO11 ready {0: 'person', 1: 'bicycle', 2: 'car', 3: 'motorcycle', ..., 79: 'toothbrush'}表示模型加载成功,COCO 80类标签已就绪。
2.2 初始化标准项目结构
在/workspace下创建清晰的工程目录(推荐直接在Jupyter Lab中右键新建文件夹):
/workspace/ ├── datasets/ # 存放你的数据集(train/val/test) ├── weights/ # 存放预训练权重(yolo11m-seg.pt等) ├── configs/ # 存放yaml配置(数据集+模型结构) ├── train.py # 训练脚本(我们马上写) ├── infer.py # 推理脚本 └── notebooks/ # Jupyter实验记录(可选)关键提醒:镜像中
weights/目录已内置常用权重(yolo11n-seg.pt,yolo11m-seg.pt,yolo11l-seg.pt),无需额外下载。路径固定为/workspace/weights/。
3. 数据准备:从标注到YOLO格式转换
3.1 用Labelme快速标注(Windows/macOS/Linux通用)
如果你还没有标注数据,用Labelme最简单:
- 安装:
pip install labelme(镜像里已预装) - 启动:终端中输入
labelme,自动打开图形界面 - 标注:点击“Open Dir”选择图片文件夹 → “Create Polygon”画轮廓 → “Save”生成
.json
实测建议:首张图标注后,按
Ctrl+R可批量重用标签名,大幅提升效率。
3.2 一行命令完成JSON→YOLO txt转换
镜像中已内置转换脚本/workspace/ultralytics-8.3.9/utils/labelme2yolo.py。你只需指定三件事:
- JSON所在目录(如
/workspace/datasets/mydata/jsons/) - 输出txt目录(如
/workspace/datasets/mydata/labels/) - 图片宽高(如640×640)
执行(替换为你的真实路径):
cd /workspace/ultralytics-8.3.9 python utils/labelme2yolo.py \ --json_dir /workspace/datasets/mydata/jsons/ \ --save_dir /workspace/datasets/mydata/labels/ \ --img_width 640 \ --img_height 640脚本会自动读取每个JSON里的shapes,按YOLO11分割格式(class_id x1 y1 x2 y2 ...)生成同名.txt,并跳过未在label_to_class_id字典中定义的类别。
查看生成效果:
head -n 2 /workspace/datasets/mydata/labels/001.txt
输出示例:0 0.214532 0.332145 0.287654 0.332145 0.287654 0.412345 ...
4. 配置与训练:三步走通
4.1 写一个极简的数据集YAML
在/workspace/configs/下新建mydata-seg.yaml,内容仅需6行:
# mydata-seg.yaml path: ../datasets/mydata # 相对于yaml文件的路径 train: images/train val: images/val test: images/test # 可选 names: 0: person 1: car注意:
path是相对路径,指向你存放images/和labels/的父目录;names必须与JSON中标注的标签名完全一致(区分大小写)。
4.2 选择模型配置(不用改!直接用)
YOLO11提供多种尺寸模型,镜像中已预置:
yolo11n-seg.yaml(轻量,适合笔记本GPU)yolo11m-seg.yaml(平衡,A30/A10推荐)yolo11l-seg.yaml(高精度,A100/V100)
无需修改任何参数,直接调用即可。例如用中型模型:
ls /workspace/ultralytics-8.3.9/cfg/models/11/yolo11m-seg.yaml输出存在即表示可用。
4.3 运行训练:一个Python脚本搞定
在/workspace/train.py中粘贴以下代码(已适配镜像环境,无需修改路径):
from ultralytics import YOLO # 加载模型结构 + 预训练权重 model = YOLO("ultralytics-8.3.9/cfg/models/11/yolo11m-seg.yaml").load("weights/yolo11m-seg.pt") # 开始训练(关键参数已设为新手友好值) results = model.train( data="configs/mydata-seg.yaml", # 你的数据集配置 epochs=30, # 小数据集30轮足够 imgsz=640, # 输入尺寸(必须和标注时一致) batch=8, # A30显存下安全值 name="mydata_train", # 结果保存在 runs/segment/mydata_train project="runs/segment", # 统一管理所有训练 device=0, # 强制使用GPU 0(镜像默认启用) workers=4, # 数据加载线程 save=True, val=True, plots=True # 自动画loss/mAP曲线 )在Jupyter Terminal中运行:
cd /workspace python train.py你会看到实时训练日志(每轮进度条+GPU显存+各项loss),约10分钟后出现:
30 epochs completed in 0.123 hours. Results saved to runs/segment/mydata_train训练结束后,打开Jupyter Lab左侧
runs/segment/mydata_train/文件夹,双击results.csv可查看每轮详细指标;双击train_batch0.jpg可直观看到模型学到了什么。
5. 推理与效果验证:所见即所得
5.1 用训练好的模型做推理
在/workspace/infer.py中写入:
from ultralytics import YOLO # 加载你刚训练好的最佳权重 model = YOLO("runs/segment/mydata_train/weights/best.pt") # 对单张图推理(结果自动保存到 runs/detect/predict/) results = model.predict( source="datasets/mydata/images/test/001.jpg", conf=0.5, save=True, # 关键!保存带分割掩码的图片 save_txt=True, # 同时保存坐标文本 show_labels=True, line_width=2 ) print(f"检测到 {results[0].boxes.shape[0]} 个目标") print(f"分割掩码形状: {results[0].masks.data.shape}") # [N, H, W]运行:
cd /workspace python infer.py几秒后,打开runs/segment/predict/001.jpg——你会看到原图上叠加了彩色分割轮廓、类别标签和置信度,每个目标都被精准抠出。
5.2 批量推理与结果分析
想处理整个测试集?只需改一行:
source="datasets/mydata/images/test/" # 改为文件夹路径运行后,runs/segment/predict/下会生成所有结果图。你还可以用以下代码快速统计:
# 在Jupyter Notebook中运行 from glob import glob import cv2 results_dir = "runs/segment/predict/" img_files = glob(results_dir + "*.jpg") print(f"共生成 {len(img_files)} 张结果图") # 查看第一张的分割掩码数量 mask = cv2.imread(results_dir + "001.jpg", cv2.IMREAD_UNCHANGED) print(f"掩码通道数: {mask.shape[2] if len(mask.shape)>2 else 1}")6. 进阶提示:让YOLO11更好用的3个实践技巧
6.1 快速切换设备:CPU/GPU/多卡
镜像默认启用GPU,但你想临时用CPU调试?改device参数即可:
# CPU模式(无GPU时自动回退) model.train(device="cpu", ...) # 多GPU并行(如2张A10) model.train(device=[0,1], batch=16, ...) # batch需按GPU数翻倍6.2 实时监控训练过程
除了看终端日志,镜像还预装了TensorBoard。训练时加参数:
model.train(..., tensorboard=True) # 自动生成logs/然后在新Terminal中启动:
tensorboard --logdir=runs/segment/mydata_train/tensorboard --bind_all --port=6006浏览器访问http://你的IP:6006,即可看到动态loss曲线、PR曲线、特征图可视化。
6.3 模型导出为ONNX供生产部署
训练完想集成到其他系统?一行导出:
model.export(format="onnx", dynamic=True, simplify=True)生成best.onnx,大小约45MB,支持TensorRT加速。镜像中已预装onnxsim,可进一步简化:
onnxsim runs/segment/mydata_train/weights/best.onnx runs/segment/mydata_train/weights/best_sim.onnx7. 常见问题速查表
| 问题现象 | 可能原因 | 一句话解决 |
|---|---|---|
ImportError: No module named 'torch' | 容器未正确启动GPU | docker restart yolo11-env,再检查nvidia-smi是否可见 |
| Jupyter打不开,报404 | Token过期或端口冲突 | docker logs yolo11-env | grep token重新获取;或换端口-p 8889:8888 |
| 训练时显存OOM | batch太大或imgsz过高 | 改batch=4+imgsz=320,或换yolo11n-seg.yaml |
| 分割结果全是黑块 | save=True没加,或图片路径错误 | 检查source路径是否存在,确保save=True且show_boxes=True |
| 推理结果没有颜色掩码 | 权重加载错误 | 确认best.pt路径正确,且是seg后缀权重(非det或pose) |
所有命令均已在NVIDIA A30 GPU + Ubuntu 22.04镜像中实测通过。若遇其他问题,直接查看
docker logs yolo11-env,90%的错误信息都在里面。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。