综合介绍
YOLOE 是清华大学软件学院多媒体智能组(THU-MIG)开发的一个开源项目,全称“You Only Look Once Eye”。它基于 PyTorch 框架,属于 YOLO 系列的扩展,能实时检测和分割任何物体。项目托管在 GitHub 上,核心特点是支持三种模式:文本提示、视觉提示和无提示检测。用户可以用文字或图片指定目标,也能让模型自动识别超过 1200 种物体。官方数据显示,YOLOE 在 LVIS 数据集上的速度比 YOLO-Worldv2 快 1.4 倍,训练成本低 3 倍,同时保持高精度。模型还能无缝转换为 YOLOv8 或 YOLO11,无额外开销,适合多种设备部署。
功能列表
- 支持实时物体检测,快速识别图像或视频中的目标。
- 提供实例分割功能,精确勾勒物体轮廓。
- 支持文本提示检测,用户输入文字指定检测目标。
- 提供视觉提示检测,通过参考图片识别相似物体。
- 内置无提示模式,自动检测超过 1200 种常见物体。
- 模型可重新参数化,与 YOLOv8/YOLO11 无推理开销。
- 提供多种预训练模型(S/M/L 规模),支持不同性能需求。
- 开源代码和文档,方便开发者修改和扩展。
使用帮助
YOLOE 的使用分为安装和操作两部分。以下是详细步骤,确保用户能轻松上手。
安装流程
- 准备环境
需要 Python 3.10 和 PyTorch。推荐使用 Conda 创建虚拟环境:
conda create -n yoloe python=3.10 -y
conda activate yoloe
- 克隆代码
从 GitHub 下载 YOLOE 项目:
git clone https://github.com/THU-MIG/yoloe.git
cd yoloe
- 安装依赖
安装必要的库,包括 CLIP 和 MobileCLIP:
pip install -r requirements.txt
pip install git+https://github.com/THU-MIG/yoloe.git#subdirectory=third_party/CLIP
pip install git+https://github.com/THU-MIG/yoloe.git#subdirectory=third_party/ml-mobileclip
pip install git+https://github.com/THU-MIG/yoloe.git#subdirectory=third_party/lvis-api
wget https://docs-assets.developer.apple.com/ml-research/datasets/mobileclip/mobileclip_blt.pt
- 下载预训练模型
YOLOE 提供多种模型,比如yoloe-v8l-seg.pt
。用以下命令下载:
pip install huggingface-hub==0.26.3
huggingface-cli download jameslahm/yoloe yoloe-v8l-seg.pt --local-dir pretrain
或者用 Python 自动加载:
from ultralytics import YOLOE
model = YOLOE.from_pretrained("jameslahm/yoloe-v8l-seg.pt")
- 验证安装
运行测试命令,检查环境是否正常:python predict_text_prompt.py --source ultralytics/assets/bus.jpg --checkpoint pretrain/yoloe-v8l-seg.pt --names person dog cat --device cuda:0
主要功能操作
1. 文本提示检测
- 功能说明:输入文字,检测对应物体。
- 操作步骤:
- 准备图片,比如
bus.jpg
。 - 运行命令,指定目标(比如“人、狗、猫”):
python predict_text_prompt.py --source ultralytics/assets/bus.jpg --checkpoint pretrain/yoloe-v8l-seg.pt --names person dog cat --device cuda:0
- 查看结果,图片会标注检测到的物体。
- 准备图片,比如
- 调整方法:如果漏检,可降低置信度阈值:
--conf 0.001
2. 视觉提示检测
- 功能说明:用参考图片检测相似物体。
- 操作步骤:
- 准备参考图片和目标图片。
- 训练视觉提示模块:
python tools/convert_segm2det.py python train_vp.py python tools/get_vp_segm.py
- 运行检测:
python predict_visual_prompt.py --source test.jpg --ref reference.jpg --checkpoint pretrain/yoloe-v8l-seg.pt
- 检查输出,确认结果。
- 注意事项:参考图片需清晰,特征明显。
3. 无提示检测
- 功能说明:自动识别图片中的物体,无需输入提示。
- 操作步骤:
- 确保模型加载了预训练词汇表(支持 1200+ 类别)。
- 运行命令:
python predict_prompt_free.py --source test.jpg --checkpoint pretrain/yoloe-v8l-seg.pt --device cuda:0
- 查看结果,所有物体会被标注。
- 调整方法:若检测不全,可增加最大检测数:
--max_det 1000
4. 模型转换与部署
- 功能说明:将 YOLOE 转换为 YOLOv8/YOLO11 格式,部署到不同设备。
- 操作步骤:
- 安装导出工具:
pip install onnx coremltools onnxslim
- 运行导出命令:
python export.py --checkpoint pretrain/yoloe-v8l-seg.pt
- 输出格式支持 TensorRT(GPU)或 CoreML(iPhone)。
- 安装导出工具:
- 性能数据:在 T4 GPU 上,
yoloe-v8l-seg.pt
的 FPS 为 102.5;在 iPhone 12 上为 27.2。
5. 训练自定义模型
- 功能说明:用自己的数据集训练 YOLOE。
- 操作步骤:
- 准备数据集,比如 Objects365v1 或 GQA。
- 生成分割标注:
python tools/generate_sam_masks.py --img-path ../datasets/Objects365v1/images/train --json-path ../datasets/Objects365v1/annotations/objects365_train.json
- 生成训练缓存:
python tools/generate_grounding_cache.py --img-path ../datasets/Objects365v1/images/train --json-path ../datasets/Objects365v1/annotations/objects365_train_segm.json
- 运行训练:
python train_seg.py
- 验证效果:
python val.py
其他工具
- 网页演示:用 Gradio 启动界面:
pip install gradio==4.42.0 python app.py
访问
http://127.0.0.1:7860
。
应用场景
- 安防监控
在视频中实时检测人或物体,标注轮廓,用于安全管理。 - 智能交通
识别道路上的车辆和行人,支持流量分析或自动驾驶。 - 工业质检
用视觉提示检测零件缺陷,提高生产效率。 - 科学研究
处理实验图像,自动标注物体,加速数据处理。
QA
- YOLOE 和 YOLOv8 有什么不同?
YOLOE 支持开放场景检测(文本、视觉、无提示),而 YOLOv8 限于固定类别。YOLOE 还能转换为 YOLOv8,无额外开销。 - 需要 GPU 吗?
不需要。CPU 可运行,但 GPU(如 CUDA)会更快。 - 检测不准怎么办?
降低置信度阈值(--conf 0.001
)或增加检测数(--max_det 1000
)。 - 支持哪些设备?
支持 PC(TensorRT)、iPhone(CoreML)等多种设备。