T-Rex2完整指南:文本-视觉提示融合实现开放集目标检测,无需逐类训练
【免费下载链接】T-Rex[ECCV2024] API code for T-Rex2: Towards Generic Object Detection via Text-Visual Prompt Synergy项目地址: https://gitcode.com/GitHub_Trending/tre/T-Rex
T-Rex2 是一个开源的开放集目标检测项目(ECCV 2024):它把文本提示与视觉提示融合进同一个模型,让你不用训练新模型、不用标注数据集,就能检测和计数任意对象。无论是"数一下广场上有多少只鸽子",还是"找出这张血涂片里的红细胞",都可以零样本完成。本文按它能解决什么问题、原理、用法、实际效果和适用人群的顺序讲清楚。
传统目标检测为何卡在"封闭集"
传统检测器的前提是"类别清单要事先定死"。训练完成后,模型只认清单里的类别;想新增一类,就得重新准备数据、标注、再训练一轮。对仓库盘点、农业计数、医学影像统计这类场景,新类别频繁出现,反复训练的成本太高。
T-Rex2 的思路反过来:不告诉模型"要什么类别",而是让用户"指给它看"。你在图像上框一个目标、点一个位置,或者输入一句文字描述,模型就会找出图中所有同类物体。这就是开放集检测(open-set detection)的核心玩法,也是下面三种使用方式的来源。
文本-视觉提示融合:T-Rex2 如何"认出"任意物体
从架构图看,两条提示走不同通路:文本提示经 Text Encoder,框或点这类视觉提示经位置编码,图像本身经 Image Encoder。关键是图中右下的对比对齐(Contrastive Alignment):模型计算视觉提示与文本提示之间的相似度矩阵,把两者融合后一起送入 DETR 解码器输出检测框。
打个比方:视觉提示像指着某样东西说"就它",文本提示像描述"穿红衣服那个"。两条线索互相佐证,比单用一种方式更容易锁定目标。这种"协同"正是论文标题里 Text-Visual Prompt Synergy 的含义,也是它零样本泛化能力的来源。
🎯 三种提示用法任选
交互式视觉提示:指一个,全图同类都框出
在图像上框住一只鸽子,模型就把所有鸽子都框出来——空中的、地上的、远处的,甚至能顺便区分出行人。
这种方式适合"看到想数什么就框什么"的场景,也是最直观的上手入口。
通用视觉提示:参考图标一次,其他图直接检测
先在一张参考图上框住目标物体,再把另一张图交给模型,它会在新图里检测同类物体。不需要重新说明类别,就能做到"标一次,到处检"。
自定义嵌入:把"一类物体"存成可复用文件
用少量参考图像,模型可以为一类物体生成一个 safetensors 格式的视觉嵌入文件。文件保存下来后,对任何新图都能复用,适合"每天数这一类零件"这种目标固定、图像不断变化的批量任务。
🚀 三步安装并跑通演示
这个仓库是 T-Rex2 的官方 API 客户端,核心封装在 trex/model_wrapper.py。你需要先申请一个 API token(申请方式见 README 说明),然后三步走通:
git clone https://gitcode.com/GitHub_Trending/tre/T-Rex cd T-Rex pip install dds-cloudapi-sdk==0.1.1 pip install -v -e . python demo_examples/interactive_inference.py --token <your_token>运行完成后,检测结果图会写进demo_vis/目录。也可以在代码里直接调用,核心调用不长:
from trex import TRex2APIWrapper trex2 = TRex2APIWrapper("your_api_token") result, emb = trex2.visual_prompt_inference( target_image="target.jpg", prompt=[{"image": "ref.jpg", "interactions": [{"type": "rect", "category_id": 1, "rect": [120, 80, 300, 220]}]}], )返回的result含scores、labels、boxes三项,框的格式为 [xmin, ymin, xmax, ymax],可直接用于可视化和统计。如果想要可鼠标圈画的界面,运行python gradio_demo.py --trex2_api_token <your_token>,就能得到下文那种本地 Gradio 页面。
📊 实际效果:从数鸟到数细胞
在官方演示里,一张上千人的密集场景图一次检出了 492 个框,大部分准确,密集区域仍有少量重复或遗漏:
医学影像场景下,对血涂片打一个点提示,本地 Gradio 界面会框出每个细胞并给出计数 180 的结果:
也要说实话地提两个限制:一是这个仓库是 API 客户端代码,模型跑在官方云端,不能离线本地推理;二是极密集、高度重叠的场景仍会有漏检和重复框,可以在 Gradio 页面用 Visual Prompt Threshold 阈值调节来取舍精度。
T-Rex2 适合哪些人
- 研究者与学生:论文发表于 ECCV 2024,代码与示例齐全,适合阅读并复现开放集检测方案;
- 需要计数的行业用户:制造、农业、零售、物流里的"数同类物体"任务,直接用自定义嵌入方式即可;
- 数据标注人员:标一张参考图就能快速扩展到整批图像,能明显减少人工工作量。
快速上手建议:先跑 demo_examples/ 里的interactive_inference.py看效果,再决定用哪种提示方式;许可证见 LICENSE(IDEA License 1.0),商用前请先确认条款。
【免费下载链接】T-Rex[ECCV2024] API code for T-Rex2: Towards Generic Object Detection via Text-Visual Prompt Synergy项目地址: https://gitcode.com/GitHub_Trending/tre/T-Rex
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考