T-Rex:检测一切 | 基于视觉提示的开集检测器,检测并计数

news2025/1/25 9:14:57
图1. 我们引入了一个交互式对象计数模型T-Rex。给定参考图像上指定的框或点,T-Rex 可以检测目标图像上的所有与指定对象表现出相似模式的实例,然后将其相加得到计数结果。我们先通过T-Rex生成检测到框提示,再使用SAM得到mask,以获得更好的视觉效果

主页:https://trex-counting.github.io/

github: GitHub - IDEA-Research/T-Rex: Detect and count any objects by visual prompting

论文:https://arxiv.org/abs/2311.13596

1、动机

对象计数领域,常用的方法有:

  • 基于密度图的回归:回归一个2D密度图,作为计数结果;这种方法缺乏直观的视觉效果,很难让用户评估结果的准确性; 
  • 闭集目标检测:这是最常规的检测任务,需要闭集、类别已知,如YOLO系列等;这种方式如果要处理新类别,需要重新标注数据并训练模型,这是耗时且劳动密集的;
  • 开集目标检测:如Grouping DINO,通过文本提示检测任意对象,这种方式的缺点是很多对象没有简洁的文本描述,这样在使用时,要定位想要的对象就变得比较困难,也即,很难找到准确的提示词;
  • 多模态大语言模型问答:也即MLLM QA,用户通过问答来进行计数;这种方式的缺点是LLM的幻觉问题导致结果不可信,通常直接给出结果,却没有让用户可信的证据;

基于对上述方法缺点的观察,作者认为一个实用的计数系统应当具备以下四个特点:

  1. 直观的视觉反馈:应能提供像bbox、point、Mask之类的直观视觉反馈,从而佐证计数结果;
  2. 开集:应能计数任何对象,而非预定义的固定类别;
  3. 视觉提示:应允许用户通过指定一些示例作为提示,来计数特定类别的对象,而不需要像文本描述那样用文本来提示;
  4. 交互性:应能允许用户参与到整个计数过程,进行纠错等操作;
图 2. T-Rex 是一个对象计数模型,其特征是:基于检测、视觉提示、交互和开集

于是,作者设计出了T-Rex,同时具备以上四个特点,允许用户交互式地在开集上进行检测一切、计数一切。

2、方法

2.1 整体架构

T-Rex主要包括三个组件:图像编码器(ImageEncoder)、提示编码器(PromptEncoder)、框解码器(BoxDecoder)。一个典型的跨图操作如下所示:

 简单描述一下:

  1. 先试用ImageEncoder对目标图和参考图分别进行图像编码;
  2. 然后将提示和参考图编码结果送入PromptEncoder,得到编码后的提示;
  3. 再然后将编码后的提示和目标图像的编码结果一起送入BoxDecoder,从而得到在目标图像上的检测结果;
  4. 如果检测结果没问题了(可能会经过多轮提示交互),就可以通过阈值过滤器,得到过滤后的目标计数;

*** 需注意 ***:

  1. 有时候一次提示不一定得到好的结果,可能会需要多轮交互提示;这个时候,图像编码是只做一次的,只需要对修改后的提示进行编码并重新进行框解码即可,也即ImageEncoder只在第一轮做一次,后续只做PromptEncoder和BoxDecoder;
  2. 如果不需要跨图,则上述过程中的目标图和参考图就是同一张图像了,也就只需要对图像做一次编码即可。

系统流程如图3所示:

图 3. T-Rex 模型概述。T-Rex 是一个基于检测的模型,包括一个图像编码器来提取图像特征,一个提示编码器来编码用户提供的视觉提示(点或框),以及一个框解码器来输出检测到的框

 2.2 工作模式

  • Positive-only Prompt Mode:仅正例提示模式,只需用户提供正例prompt即可;
  • Positive with Negative Prompt Mode:正例+负例提示模式,需要用户提示正例和负例;一般是先提供正例看看结果如何,若有误检,再提供负例,以消除误检;
  • Cross-Image Prompt Mode:跨图提示模式,用户在参考图上进行提示,得到目标图上的检测结果;这种方式为自动化标注提供了可能,试想一下,我们对一批图像提前标注好,用这些标注作为prompt,在大量的新图像上进行处理,就可以得到预标注结果;

这几种模式的工作流程如图4所示:

图4. T-Rex提供了三个主要的交互工作流,适用于现实应用中的大多数场景

2.3 讨论

T-Rex本质上是一个基于视觉prompt的开集检测器,相比基于文本prompt的开集检测器,区别在于视觉prompt更为直观且不存在问题描述定义不清的问题(比如:一个你从未见过或者无法用语言准备描述的物体)。

在目标计数任务中,一个重要考量是需要高度可信的预测,哪怕多一个少一个都是计数错误。T-Rex通过多轮交互、正负例提示来获取准确的检测检测结果,从而保证了精确的计数。

此外,多轮交互过程中,图像编码只进行一次,后续只对提示进行编码然后再进行框解码,这保证了整个过程的轻量化。

3. 一个新的计数数据集——Count Anything Benchmark

为了对 T-Rex 模型进行全面性能评估,作者提供了一个新的目标计数基准集——CA-44,其包含了44个数据集,涵盖了8个不同领域,如图5所示:

图5. 提出的CA-44基准集概述:CA-44 由八个领域的 44 个数据集组成,主要包括具有较小且密集填充对象的图像

3. 实验结果

 

4. 缺点

目前的T-Rex还有很多缺点:

  1. 在单目标场景中,对目标做了提示后,可能会出现很多背景的误检,模型错误地将背景识别为密集目标;
  2. 密集多目标场景中,不同类别的密集目标可能会误检,需要提供更多负例;
  3. 跨图工作时,尤其是同时也是单目场景时,过拟合的风险很大,模型往往会忽略参考图上的提示,从而在目标图错误地检测出其他类别的目标;

T-Rex中的失败案例:(a)在单目标场景中,如果背景只引入单个提示,T-Rex仍然会检测到图中的密集对象。(b) 在密集的多目标场景中,T-Rex 可以产生错误检测,需要多个提示或否定提示进行校正。(c) 在跨图像工作流程中,T-Rex 在单目标密集场景中的风险过度拟合,导致错误的检测,例如为番茄打丝虫卵。

 

 5. 试玩

在文章开头的主页地址中,我们可以试玩一下作者提供的Demo。

先使用其示例图像:

 再用自己上传的图像(结果有三种选择:point、bbox、mask):

 失败案例(用经典人群计数数据集中的图片,来看看对人头的检测效果如何):

可见,这种密集场景下,人头可判别特征很少,其效果是很不理想的;而对于上面的西瓜、人这种特征明显的目标,则具有不错的效果。

依我之见,此方法和SAM一样,对于常规目标、特征明显的目标是可用且效果显著的,而对于一些特征不显著的非常规目标,如裂缝、密集场景中的人头等,效果不甚理想。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1268077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android端极致画质体验之HDR播放

高动态范围HDR视频通过扩大亮度分量的动态范围(从100cd/m2到1000cd/m2),以及采用更宽的色彩空间BT2020,提供极致画质体验。从Android10开始,支持HDR视频播放。 一、HDR技术 HDR技术标准包括:Dolby-Vision、HDR10、HLG、PQ。支持…

set与map

set与map 一、序列式容器与关联式容器二、pair1、键值对2、作用3、构造函数4、make_pair(1)构造函数(2)作用 5、代码6、运行结果 三、set1、概念2、代码3、运行结果4、说明 四、multiset1、与set的关系2、代码3、运行结果 五、map…

鸿蒙系统扫盲(三):鸿蒙开发用什么语言?

1.两种开发方向 我们常说鸿蒙开发,但是其实鸿蒙开发分为两个方向: 一个是系统级别的开发,比如驱动,内核和框架层的开发,这种开发以C/C为主 还有一个是应用级别的开发,在API7以及以下,还是支持…

linux socket套接字

文章目录 socket流socket(TCP)数据报socket(UDP) 讨论 socket 所谓套接字,就是对网络中不同主机上的应用程序之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,套接字提供了应用层进程利…

WS2812灯条基于WLED开源项目无门槛使用简介

WS2812灯条基于WLED开源项目无门槛使用简介 📌项目github地址:https://github.com/Aircoookie/WLED📍WLED详情地址:https://kno.wled.ge/🎈网页在线烧录固件地址:https://install.wled.me/ ✨ 仅作为使用的…

【同一局域网下】访问其他电脑的虚拟机

一、在被连接的电脑上对VMware进行设置 编辑 --> 虚拟网络编辑器 按顺序点击 如果22端口已被占用,可以自行定义 (端口号越大,被占用的可能性越小) 二、在被连接的电脑上对防火墙进行设置(这里以win11为例&#xff…

【Qt之QSqlRelationalDelegate】描述及使用

描述 QSqlRelationalDelegate类提供了一个委托,用于显示和编辑来自QSqlRelationalTableModel的数据。 与默认委托不同,QSqlRelationalDelegate为作为其他表的外键的字段提供了一个组合框。 要使用该类,只需在带有QSqlRelationalDelegate实例…

考虑极端天气线路脆弱性的配电网分布式电源配置优化模型_IEEE33节点(附带Matlab代码)

随着新能源技术及智能电网的发展,越来越多的分布式电源加入配电网中,不仅改变了配电网结构及供电方式,而且提升了配电网的供电质量。但是在全球气候变暖的背景下,极端天气发生的频率也越来越高,一旦发生必将对配电网系…

竞赛选题 题目:基于深度学习的中文汉字识别 - 深度学习 卷积神经网络 机器视觉 OCR

文章目录 0 简介1 数据集合2 网络构建3 模型训练4 模型性能评估5 文字预测6 最后 0 简介 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的中文汉字识别 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! &a…

python接口自动化测试之requests库的基础使用

简单介绍 requests库简单易用的HTTP库 Get请求 格式: requests.get(url) 注意:若需要传请求参数,可直接在 url 最后的 ? 后面,也可以调用 get() 时多加一个参数 params ,传入请求参数,注意需要是 dict…

如何利用轮廓系数(Silhouette Coefficient)来判断模糊c均值聚类FCM的聚类簇数量

文章目录 前言一、轮廓系数的计算方法二、具体流程 前言 轮廓系数(Silhouette Coefficient)是一种评价聚类效果的指标,它可以用于判断模糊C均值聚类的聚类簇数量。 一、轮廓系数的计算方法 对于每个数据点i,计算它属于每个聚类…

【GraphQL】什么是Prisma?

本页提供了Prisma及其工作原理的高级概述。 什么是Prisma? Prisma是一个开源的下一代ORM。它由以下部分组成: Prisma客户端:Node.js和TypeScript的自动生成和类型安全查询生成器Prisma迁移:迁移系统Prisma Studio:GUI&#xff0…

算法基础之字符串哈希

字符串哈希 核心思想&#xff1a;用p(131或者13331)进制数储存字符串每一位数的hash值 L—R的哈希值 h[R]-h[L-1]*PR-L1 哈希值很大—>modQ(264)变小 用unsigned long long 存 (出界) #include<iostream>using namespace std;typedef unsigned long long ULL;co…

Jenkins+Git+Appium 持续集成策略

持续集成 &#xff08;Continuous integration&#xff0c;简称 CI&#xff09; 持续集成是一种开发实践&#xff0c;它倡导团队成员需要频繁的集成他们的工作&#xff0c;每次集成都通过自动化构建&#xff08;包括编译、构建、自动化测试&#xff09;来验证&#xff0c;从而尽…

第12关 精通K8s下的Ingress-Nginx控制器:生产环境实战配置指南

------> 课程视频同步分享在今日头条和B站 大家好&#xff0c;我是博哥爱运维&#xff0c;这节课带来k8s的流量入口ingress&#xff0c;作为业务对外服务的公网入口&#xff0c;它的重要性不言而喻&#xff0c;大家一定要仔细阅读&#xff0c;跟着博哥的教程一步步实操去理…

科普 | 隧道代理IP,简化操作提升安全性

随着数字化时代的深入发展&#xff0c;企业对网络数据的依赖日益增强。在这样的背景下&#xff0c;隧道代理IP正在以其独特的优势改变传统的网络代理模式&#xff0c;为企业级数据采集领域带来革命性的变革。 隧道代理IP技术简介 隧道代理IP通过云端服务器实现自动化的HTTP代理…

java开发需要用到的软件,必备软件工具一览

java开发需要用到的软件&#xff0c;必备软件工具一览 如果你对Java编程感兴趣或已经是一名Java开发者&#xff0c;你需要一些必备的软件工具来提高你的生产力和简化开发过程。在本文中&#xff0c;我们将探讨Java开发所需的关键软件工具&#xff0c;并通过具体示例来解释它们的…

笔记63:注意力评分函数

本地笔记地址&#xff1a;D:\work_file\&#xff08;4&#xff09;DeepLearning_Learning\03_个人笔记\3.循环神经网络\第10章&#xff1a;动手学深度学习~注意力机制 a a a a a a a a a a a a a a a a a a a

可重复读为什么能避免一部分幻读,但是没能完全避免幻读

事物的隔离级别已经介绍过了&#xff0c;接下来我们谈谈细节部分。 MySQL innoDB引擎的默认隔离级别——可重复读 虽然可重复读不能完全避免幻读&#xff0c;但其实已经避免了很大一部分了。具体怎么做的呢&#xff0c;主要有以下两个操作&#xff1a; 针对快照读&#xff0c;…

网工内推 | 中高级网工,IE认证优先,带薪年假,五险一金

01 敏于行&#xff08;北京&#xff09;科技有限公司 招聘岗位&#xff1a;高级网络开发工程师 职责描述&#xff1a; 1、负责设计、参与数字身份安全中网络安全模块相关项目&#xff08;零信任SDP、VPN等&#xff09;&#xff1b; 2、深入研究和理解网络底层协议和通信机制&…