YOLO11项目目录结构说明,一看就懂的文件管理方式
在实际使用YOLO11镜像进行计算机视觉开发时,很多新手会卡在第一步:找不到该改哪个文件、该放数据到哪、模型权重存在哪、训练日志在哪查。这不是代码写错了,而是对整个项目目录结构缺乏系统认知。本文不讲算法原理,不堆参数配置,只用一张清晰的结构图+真实路径说明+高频操作指引,带你30分钟理清YOLO11项目的“家底”。
你不需要记住所有路径,只需要理解三层逻辑:环境层 → 配置层 → 数据与结果层。下面我们就按这个逻辑,一层一层拆解。
1. 整体目录结构概览:三横一纵,主次分明
进入YOLO11镜像后,默认工作区位于/workspace/。整个项目以ultralytics-8.3.9/为核心工程目录,其下采用模块化分层设计。我们先看一张精简后的树状结构(已过滤临时文件和Python缓存):
ultralytics-8.3.9/ ├── resources/ # 【配置层】所有自定义配置、数据、工具脚本集中地 │ ├── config/ # 模型定义、数据集描述、训练参数 │ │ ├── model/ # yolo11-seg.yaml 等模型架构文件 │ │ └── data/ # yolo11-seg.yaml 等数据集路径与类别定义 │ ├── images/ # 原始图像与标注输出目录 │ │ └── seg/ # 图像分割任务专用子目录 │ │ ├── json/ # Labelme生成的原始.json标注文件 │ │ └── datasets/ # 经转换、划分后的标准YOLO格式数据集(images + labels) │ └── tool/ # 自带的实用工具脚本(json转label、数据集划分等) ├── weights/ # 【结果层】预训练权重与训练产出存放处 │ ├── seg/ # 官方提供的yolo11n-seg.pt等分割模型权重 │ └── det/ # 目标检测类权重(如yolo11n.pt) ├── segment/ # 【结果层】训练过程与推理结果的默认输出根目录 │ ├── train/ # train.py运行后自动生成:logs、weights、results │ └── predict/ # predict_seg.py运行后自动生成:预测可视化图片 ├── train.py # 【入口层】默认训练脚本(目标检测) ├── train_seg.py # 【入口层】自定义分割训练脚本(参考博文提供) ├── predict_seg.py # 【入口层】自定义分割推理脚本(参考博文提供) └── tool_json2label_seg.py # 【工具层】Labelme JSON → YOLO分割标签格式转换器关键提示:YOLO11镜像不是把所有东西塞进一个大文件夹,而是用
resources/承载“你给的”,用weights/承载“它给的”,用segment/承载“它产出的”。这种分离让协作、复现、调试变得极其干净。
2. resources/ 目录详解:你的数据与规则说明书
这是你唯一需要主动修改和填充的目录,相当于整个项目的“输入中枢”。它不参与训练计算,但决定了模型学什么、怎么学、用什么学。
2.1 config/ 子目录:告诉模型“我是谁、学什么、怎么学”
config/model/yolo11-seg.yaml
这是分割任务的模型骨架文件。它定义了网络结构(backbone + head)、通道数、模块重复次数等。你不需要手写,但必须确认路径正确——train_seg.py中model = YOLO("resources/config/model/yolo11-seg.yaml")就是指向这里。config/data/yolo11-seg.yaml
这是分割任务的数据说明书。核心字段只有三个:path: ../ultralytics-yolo11/resources/images/seg/datasets/images # 注意:这里是相对路径!指向datasets/images train: train val: val names: 0: person 1: car正确做法:
path必须是相对于该yaml文件自身的相对路径;train和val是images/下的子文件夹名(不是完整路径);names顺序必须与你的Labelme标注类别严格一致。
2.2 images/seg/ 目录:从原始图到标准数据集的流水线
这是最易出错的一环。我们用一条清晰动线说明:
原始图 + Labelme标注 → /resources/images/seg/json/ (.json文件) ↓ tool_json2label_seg.py 转换 → /resources/images/seg/datasets/labels/ (.txt文件,每行:cls x1 y1 x2 y2 ...) ↓ tool_seg2datasets.py 划分 → /resources/images/seg/datasets/images/{train,val}/ (图片) → /resources/images/seg/datasets/labels/{train,val}/ (对应.txt)/json/:只放.json文件,且必须与原图同名(如car_001.jpg↔car_001.json)。Labelme启动命令为labelme resources/images/seg/json。/datasets/:是YOLO标准格式的最终形态。images/train/下放训练图,labels/train/下放同名.txt标签;验证集同理。YOLO11训练时只读取这个目录,完全不关心/json/。
2.3 tool/ 目录:两个脚本,解决90%数据准备问题
tool_json2label_seg.py
功能:将Labelme多边形标注(含多个点坐标)转为YOLO分割格式(归一化坐标序列)。
使用方式:直接运行,自动遍历/json/,输出到/datasets/labels/。无需改参数。tool_seg2datasets.py
功能:随机打乱所有图片-标签对,并按比例(默认7:3)划分为train/和val/。
使用方式:运行后,自动创建/datasets/images/{train,val}和/datasets/labels/{train,val}。
提示:若想固定划分结果,可打开脚本修改random.seed(42)中的数字。
3. weights/ 与 segment/ 目录:模型的“来处”与“去处”
这两个目录共同构成YOLO11的“生命周期闭环”:weights/是起点(加载),segment/是终点(保存)。
3.1 weights/:预训练模型的保险箱
weights/seg/yolo11n-seg.pt
这是官方发布的轻量级分割模型权重,约28MB。train_seg.py中model.load("weights/seg/yolo11n-seg.pt")即加载它作为迁移学习基础。
安全建议:不要删除或覆盖此文件。如需其他尺寸(s/m/l),请从Ultralytics官网下载后放入同级目录。weights/det/
存放目标检测类权重(如yolo11n.pt),供train.py或其他检测任务调用。与分割任务物理隔离,避免混淆。
3.2 segment/:训练与推理的“结果工厂”
这是你每次运行脚本后,自动生成且绝不手动修改的目录。它的存在证明你的训练正在发生。
segment/train/train_seg.py运行后立即创建。内部结构为:train/ ├── weights/ # best.pt(最优模型)、last.pt(最终模型) ├── results.csv # 每轮指标记录(mAP, box_loss等) ├── train_batch0.jpg # 训练初期的批次可视化(检查数据增强是否正常) └── events.out.tfevents.* # TensorBoard日志(可用jupyter中TensorBoard查看)关键观察点:
weights/best.pt文件大小是否稳定增长(说明权重在更新);results.csv最后几行metrics/mAP50-95(B)是否持续上升(说明学习有效)。segment/predict/predict_seg.py运行后创建。结构极简:predict/ └── exp/ ├── image0.jpg # 原图叠加分割掩码与轮廓 ├── image0_mask.png # 纯分割掩码(二值图,便于后续处理) └── image0_labels.txt # 每个实例的类别、置信度、归一化多边形坐标实用技巧:
predict_seg.py中project='segment/predict'和name='exp'共同决定输出路径。下次预测想另存为exp_v2,只需改name即可,避免覆盖。
4. 入口脚本与常用命令:5条命令覆盖95%日常操作
所有操作均在ultralytics-8.3.9/目录下执行。记住这5条,比背100个参数更管用。
4.1 进入环境 & 确认位置
cd ultralytics-8.3.9/ # 必须先执行!否则路径全错 pwd # 应输出 /workspace/ultralytics-8.3.94.2 启动Jupyter(图形化调试首选)
镜像已预装Jupyter Lab。启动方式:
- 在CSDN星图镜像控制台点击“打开Jupyter”按钮,或
- 终端执行
jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root
然后访问控制台提供的链接(形如https://xxx.csdn.net/?token=xxx)
优势:可直接上传图片、拖拽查看results.csv、用matplotlib画loss曲线、交互式调试predict_seg.py。
4.3 运行训练(分割任务)
python train_seg.py- 成功标志:终端出现
Epoch 0/1000: ...并持续滚动;segment/train/weights/下开始生成文件。 - ❌ 常见报错:
FileNotFoundError: No images found in ...→ 检查config/data/yolo11-seg.yaml中path路径是否拼写错误,或datasets/images/train/下是否有图片。
4.4 运行推理(用训练好的模型)
python predict_seg.py- 成功标志:
segment/predict/exp/下生成带掩码的图片;终端输出类似16 images processed in 2.3s。 - 注意:
predict_seg.py中source=参数支持多种输入: - 字符串路径:
'resources/images/seg/datasets/images/val'(整文件夹) - 单张图片:
'resources/images/seg/datasets/images/val/car_001.jpg' - 摄像头:
0(需镜像支持USB设备)
4.5 查看训练日志(快速定位瓶颈)
# 查看最新loss/mAP趋势(实时刷新) tail -f segment/train/results.csv # 查看最后10轮详细指标 tail -10 segment/train/results.csv | column -t -s,输出示例:
epoch train/box_loss train/seg_loss metrics/mAP50-95(B) ... 995 0.042 0.118 0.623 996 0.041 0.117 0.624 997 0.040 0.116 0.625判断是否收敛:
metrics/mAP50-95(B)连续10轮无提升,且train/seg_loss波动小于0.001,即可考虑停止。
5. SSH远程连接:当本地算力不够时的备用方案
镜像同时支持SSH登录,适合在服务器上长期跑大模型。使用方式如下:
- 在CSDN星图镜像控制台获取SSH连接信息(IP、端口、用户名、密码)
- 本地终端执行:
ssh -p [端口号] [用户名]@[IP地址] - 登录后,同样执行
cd ultralytics-8.3.9/ && python train_seg.py
优势:不依赖浏览器,可后台运行(nohup python train_seg.py > train.log 2>&1 &),断开SSH也不影响训练。
6. 总结:一套目录,三种思维,终身受用
YOLO11的目录结构,表面是文件摆放,内里是工程化思维的具象化。掌握它,你获得的不仅是操作能力,更是三种底层能力:
- 路径思维:所有配置都基于相对路径,逼你养成“当前在哪、要去哪”的空间感。这是调试任何Python项目的基石。
- 分层思维:
resources/(我给的)、weights/(它给的)、segment/(它产出的)——清晰分离关注点,让协作、版本管理、CI/CD成为可能。 - 契约思维:YOLO11不关心你用Labelme还是CVAT,只要最终提供标准的
images/+labels/目录结构。你只需遵守接口约定,就能复用全部训练流程。
下次再看到一个新模型镜像,别急着跑代码。先ls -R看目录,找resources/、weights/、train.py,三分钟内你就能判断:它是否真的 ready-to-use。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。