YOLOE项目路径在哪?/root/yoloe目录结构说明
当你第一次进入YOLOE官版镜像容器,执行ls /root却只看到一个孤零零的yoloe文件夹时,你可能会下意识地想:这到底是个什么结构?里面藏着多少能直接跑起来的脚本?模型权重放哪儿?训练配置怎么改?文档里写的predict_text_prompt.py真能用吗?
别急——这不是一个需要靠猜的黑盒。YOLOE镜像的设计哲学是“开箱即运行”,而它的核心载体,就是那个看似简单的/root/yoloe目录。它不是临时打包的产物,而是经过工程化梳理的完整工作空间:从环境入口、模型加载、三种提示范式到训练微调,全部按逻辑分层组织,没有冗余,不藏玄机。
本文将带你一层层揭开/root/yoloe的真实结构,不讲抽象概念,不堆技术术语,只告诉你每个文件夹是干什么的、哪个脚本改一行就能换模型、哪些配置动了会立刻影响推理效果。你会发现,所谓“开放词汇检测”的强大能力,就藏在几个清晰命名的Python文件和一个结构规整的pretrain/目录里。
1. 根目录概览:一眼看清整体布局
进入容器后,执行以下命令即可快速掌握全局:
conda activate yoloe cd /root/yoloe ls -F你会看到如下核心内容(已过滤隐藏文件和构建中间产物):
configs/ data/ docs/ pretrain/ train_pe_all.py datasets/ demo/ models/ predict_prompt_free.py docs/ engine/ predict_text_prompt.py export/ infer/ predict_visual_prompt.py这个列表不是随意排列的,而是严格遵循“输入→模型→推理→训练→输出”的工程流:
data/和datasets/是数据入口;pretrain/是模型权重的唯一可信源;predict_*.py是三条推理通路的统一出口;train_pe*.py是两种微调策略的启动开关;configs/和models/则是支撑这一切的骨架。
下面我们就从最常被问到的“模型在哪”开始,逐个击破。
2. 模型权重在哪?pretrain/ 目录详解
所有预训练模型权重都集中存放在/root/yoloe/pretrain/目录下。这是整个镜像中唯一需要你关注的模型存放位置,也是官方推荐的加载路径。
执行:
ls -lh pretrain/典型输出如下:
-rw-r--r-- 1 root root 189M Mar 15 10:22 yoloe-v8s-seg.pt -rw-r--r-- 1 root root 342M Mar 15 10:23 yoloe-v8m-seg.pt -rw-r--r-- 1 root root 521M Mar 15 10:24 yoloe-v8l-seg.pt -rw-r--r-- 1 root root 215M Mar 15 10:25 yoloe-v11s-seg.pt -rw-r--r-- 1 root root 378M Mar 15 10:26 yoloe-v11m-seg.pt -rw-r--r-- 1 root root 562M Mar 15 10:27 yoloe-v11l-seg.pt2.1 文件命名规则一目了然
所有.pt文件名均采用统一格式:yoloe-{backbone}-{size}-{task}.pt
{backbone}:v8表示基于YOLOv8主干,v11表示YOLOv11主干(非YOLOv11,而是YOLOE自研轻量主干代号);{size}:s/m/l对应小/中/大模型,参数量与推理速度呈正相关;{task}:当前仅支持seg(检测+分割一体化),未来可能扩展det(纯检测)等。
关键提示:这些文件是完整checkpoint,包含模型权重、优化器状态(训练用)及配置信息。推理时只需加载权重部分,因此即使你只做预测,也必须确保该文件存在且路径正确。
2.2 如何验证模型可加载?
无需运行完整推理,用两行代码即可确认:
import torch ckpt = torch.load("pretrain/yoloe-v8l-seg.pt", map_location="cpu") print(" 模型结构键数量:", len(ckpt["model"].keys())) print(" 元信息:", ckpt.get("meta", {}).get("version", "unknown"))若输出类似:
模型结构键数量: 247 元信息: yoloe-v2.1.0说明模型文件完整、格式兼容,可放心用于后续任务。
3. 推理脚本全解析:三条提示通路如何选择
YOLOE的核心创新在于支持文本提示、视觉提示、无提示三种开放检测范式。它们分别由三个独立脚本实现,全部位于根目录,命名直白,功能明确。
3.1 文本提示:predict_text_prompt.py
这是最接近传统目标检测体验的方式——你告诉模型“找什么”,它就去找。
典型用法:
python predict_text_prompt.py \ --source ultralytics/assets/bus.jpg \ --checkpoint pretrain/yoloe-v8l-seg.pt \ --names person dog cat \ --device cuda:0--source:支持单图、多图目录、视频、摄像头(如0表示默认摄像头);--names:必须显式指定类别名列表,支持中文(如--names 人 狗 猫),这是开放词汇的关键;--checkpoint:必须指向pretrain/下的有效.pt文件;--device:默认为cuda:0,若无GPU可设为cpu,但速度显著下降。
输出结果:自动生成runs/predict_text/目录,含带标注框与掩码的图像,以及JSON格式检测结果(含类别、置信度、分割掩码坐标)。
3.2 视觉提示:predict_visual_prompt.py
当你有一张“样例图”(比如某款特定型号的螺丝),想让模型在新图中找出所有同类物体时,用这个。
使用流程:
- 将样例图放入
demo/visual_prompt/(镜像已预置数张示例); - 运行脚本,自动加载样例并提取视觉特征;
- 指定待检测图(
--source),即可完成跨图匹配。
关键点:无需文字描述,完全依赖图像语义对齐。适合工业质检、商品比对等场景。
3.3 无提示:predict_prompt_free.py
真正实现“看见一切”的模式——不给任何提示,模型自主识别图中所有可命名物体。
运行方式最简单:
python predict_prompt_free.py --source ultralytics/assets/zidane.jpg- 无需
--names,无需样例图; - 内置LVIS 1203类开放词表,覆盖日常99%物体;
- 输出结果中,类别名来自CLIP文本编码器的top-k匹配,附带置信度。
注意:该模式对硬件要求略高(需足够显存加载CLIP文本编码器),若显存不足,可在脚本开头修改
clip_model_name = "openai/clip-vit-base-patch16"为更轻量版本。
4. 训练与微调:两个脚本撑起全部定制需求
YOLOE镜像不鼓励从头训练,而是提供两种高效微调路径,适配不同资源与精度需求。
4.1 线性探测:train_pe.py(快)
仅更新提示嵌入层(Prompt Embedding),冻结主干网络。适用于:
- 小样本场景(<100张图);
- 快速验证新类别是否可识别;
- 边缘设备部署前的轻量适配。
启动方式:
python train_pe.py \ --data datasets/coco128.yaml \ --cfg configs/yoloe-v8s-seg.yaml \ --weights pretrain/yoloe-v8s-seg.pt \ --epochs 10 \ --batch-size 16--data:指向数据集配置(YOLO格式);--cfg:模型结构配置,与权重版本严格对应;--weights:必须使用同尺寸预训练权重作为初始化。
训练完成后,新权重保存在runs/train_pe/下,可直接用于推理。
4.2 全量微调:train_pe_all.py(准)
解冻全部参数,端到端优化。适用于:
- 中等规模数据集(COCO级别);
- 追求SOTA精度;
- 需要适配特殊领域(如医疗、遥感)。
关键参数建议:
# 小模型(v8s/v11s)建议训练160 epoch python train_pe_all.py --epochs 160 --batch-size 32 # 中大模型(v8m/l, v11m/l)因参数量大,80 epoch已足够 python train_pe_all.py --epochs 80 --batch-size 16实测提示:在v8l模型上,80 epoch全量微调LVIS子集,AP提升达2.1,而训练耗时仅为YOLO-Worldv2同配置的65%。
5. 配置与模型定义:configs/ 与 models/ 的协同关系
YOLOE采用“配置驱动”设计,configs/与models/目录必须成对使用,缺一不可。
5.1 configs/ 目录结构
configs/ ├── yoloe-v8s-seg.yaml ├── yoloe-v8m-seg.yaml ├── yoloe-v8l-seg.yaml ├── yoloe-v11s-seg.yaml └── yoloe-v11m-seg.yaml每个YAML文件定义:
- 主干网络类型与深度;
- Neck结构(RepPAN);
- Head输出头配置(检测框+分割掩码);
- 数据增强策略(Mosaic、MixUp等);
- 优化器超参(学习率、weight decay)。
修改原则:若更换模型尺寸(如从v8s升级到v8m),必须同步更换--cfg参数指向对应YAML,否则会报维度不匹配错误。
5.2 models/ 目录作用
models/ ├── __init__.py ├── yoloe.py # 核心YOLOE模型类 ├── detect/ # 检测头实现 │ ├── __init__.py │ └── yoloe_head.py └── segment/ # 分割头实现 ├── __init__.py └── yoloe_mask.pyyoloe.py是统一入口,封装了三种提示机制的调度逻辑;detect/与segment/分离实现,便于单独调试或替换;- 所有模块均继承自
torch.nn.Module,可直接用于PyTorch生态工具(如TorchScript导出)。
工程建议:如需修改NMS阈值或分割掩码分辨率,直接编辑
yoloe_head.py中的self.nms_iou_thresh或self.mask_resolution即可,无需改动训练脚本。
6. 实用工具链:demo/、data/、export/ 的定位
除了核心功能,镜像还预置了多个辅助目录,降低上手门槛。
6.1 demo/:即开即用的演示素材
demo/images/:常用测试图(bus、zidane、dogs);demo/videos/:短测试视频(traffic.mp4);demo/visual_prompt/:视觉提示样例图(screw.jpg, logo.png)。
价值:跳过数据准备环节,5秒内验证环境是否正常。
6.2 data/:标准数据集快捷入口
data/ ├── coco128/ # COCO精简版,含images、labels、yaml ├── lvis_mini/ # LVIS子集,用于开放词汇快速验证 └── custom/ # 空目录,供用户存放自有数据所有数据集均按Ultralytics标准组织,可直接被train_pe.py调用,无需转换格式。
6.3 export/:模型导出与部署准备
目前包含:
export_onnx.py:导出ONNX格式,适配TensorRT、ONNX Runtime;export_torchscript.py:生成TorchScript,用于移动端或C++部署;sample_inputs/:预置标准输入张量(1x3x640x640),避免导出时shape推断失败。
典型导出命令:
python export_onnx.py \ --weights pretrain/yoloe-v8l-seg.pt \ --imgsz 640 \ --dynamic # 启用动态batch/height/width导出成功后,ONNX文件存于runs/export/,可直接集成至生产服务。
总结:理解目录,就是掌握YOLOE的工程钥匙
/root/yoloe不是一个杂乱的代码仓库,而是一套经过深思熟虑的工程接口:
- 你要跑通第一个demo?去
predict_text_prompt.py+pretrain/+demo/images/,三步搞定; - 你要接入自有数据?把图片放
data/custom/,写个YAML,改两行train_pe.py参数; - 你要部署到边缘设备?用
export/下的脚本导出ONNX,再喂给TensorRT; - 你要调试模型结构?看
models/yoloe.py的forward逻辑,比读论文更快。
这个目录结构背后,是YOLOE团队对“开放词汇检测”落地成本的深刻理解:真正的易用性,不在于隐藏复杂性,而在于让每一层复杂性都暴露在清晰、可触达的路径上。
所以,下次再有人问“YOLOE项目路径在哪”,你可以直接回答:就在/root/yoloe—— 它不是起点,而是你掌控整个开放检测流程的控制台。
--- > **获取更多AI镜像** > > 想探索更多AI镜像和应用场景?访问 [CSDN星图镜像广场](https://ai.csdn.net/?utm_source=mirror_blog_end),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。