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

图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一样,对于常规目标、特征明显的目标是可用且效果显著的,而对于一些特征不显著的非常规目标,如裂缝、密集场景中的人头等,效果不甚理想。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【软件测试】银行核心业务系统性能测试总结,一篇通透...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 下面讨论的是字符…

C++基础 -17-继承中 基类与派生构造和析构调用顺序

首先声明 定义了派生类会同时调用基类和派生的构造函数 定义了派生类会同时调用基类和派生的析构函数 那么顺序如何如下图 构造由上往下顺序执行 析构则完全相反 #include "iostream"using namespace std;class base {public:base(){cout << "base-bui…

力扣283题 移动零 双指针解法

移动零 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入: nums [0] 输出…

Linux:虚拟机安装Ubuntu系统

一、下载Ubuntu 地址&#xff1a;https://cn.ubuntu.com/download/desktop 二、安装 以上配置完成后&#xff0c;点击完成按钮&#xff0c;接下来就是一段较长时间的等待安装过程。 安装完成后&#xff0c;还有一些系统性配置。 系统配置非常简单&#xff0c;全部next即可。…

Linux设置Nginx开机自启

文章目录 获取linux系统是多少位: getconf LONG_BIT获取CentOS版本: lsb_release -a获取nginx的版本: nginx -version第一步配置文件 vim /etc/rc.local最底部增加这一行&#xff1a; /usr/local/nginx/sbin/nginx 第二步注册systemctl服务 在/usr/lib/systemd/system目录…

世微 低功耗 PFM DC-DC 升压芯片 AP8105 干电池手持设备驱动IC

概述 AP8105 系列产品是一种高效率、低纹波、工作频率高的 PFM 升压 DC-DC 变换器。AP8105 系列产品仅需要四个外围元器件&#xff0c;就可完成将低输入的电池电压变换升压到所需的工作电压&#xff0c;非常适合于便携式 1&#xff5e;4 节普通电池应用的场合。电路采用了高性能…

直线上最多的点数

题目链接 直线上最多的点数 题目描述 注意点 points 中的所有点 互不相同points[i].length 2 解答思路 一条直线的函数为f(x)axb&#xff0c;两个点决定一条直线&#xff0c;也就是决定了f(x)中斜率a和截距b的值&#xff0c;所以考虑使用一个哈希表存储直线中的a和b并记录…

Linux自启服务提示:systemd[1]: *.service: main process exited, code=exited, status=1问题

这两天一直在沉迷于配脚本&#xff0c;由于服务器很多&#xff0c;所以我都是从一台服务器上配置好的脚本直接copy到另一台服务器&#xff0c;按说完全一样的脚本一样的操作&#xff0c;那么应该是一样的执行结果 but, Gul’dan&#xff0c;代…我重启服务器后服务并没有正常启…

珠宝模具3d仿真沉浸式交互展示更易分享传播

3D云展会经过近几年的蓬勃发展&#xff0c;迅速受到参展企业和客户的多方认可和支持&#xff0c;那么随着市场再度恢复&#xff0c;各种展会络绎不绝&#xff0c;想要快速打造一个逼真的线上3D云展会成为企业刚需。3D云展会线上搭建平台是web3d开发公司深圳华锐视点根据领先的三…

C++ 单词拆分

题目1&#xff1a;139 单词拆分 题目链接&#xff1a;单词拆分 对题目的理解 字符串列表wordDict作为字典&#xff0c;判断是否可以利用字典中出现的单词拼接出字符串s&#xff0c;字典中的单词可以重复使用&#xff0c;题目中字符串s的长度至少为1&#xff0c;不存在空字符…

【JavaEE】线程安全与线程状态

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文于《JavaEE》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…

Rational Arithmetic

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ☁️有理数运算 实现对两个有理数的…

机器人与3D视觉 Robotics Toolbox Python 一 安装 Robotics Toolbox Python

一 安装python 库 前置条件需要 Python > 3.6&#xff0c;使用pip 安装 pip install roboticstoolbox-python测试安装是否成功 import roboticstoolbox as rtb print(rtb.__version__)输出结果 二 Robotics Toolbox Python样例程序 加载机器人模型 加载由URDF文件定义…

Oracle SQL优化

1、书写顺序和执行顺序 在Oracle SQL中&#xff0c;查询的书写顺序和执行顺序是不同的。 1.1SQL书写顺序如下&#xff1a; SELECTFROMWHEREGROUP BYHAVINGORDER BY 1.2 SQL执行顺序 FROM&#xff1a;数据源被确定&#xff0c;表连接操作也在此步骤完成。 WHERE&#xff1a;对…

样品实验Epiclon萘系环氧树脂HP4032D说明书

样品实验Epiclon萘系环氧树脂HP4032D说明书 50克/袋

4.livox hap(大疆激光雷达)环境搭建

本文是在rk3588设备的ubuntu20.04的系统环境下搭建livox hap的。大概的步骤分为&#xff1a; 一、gcc、g、cmake 的安装 二、ros安装&#xff08;上一章已介绍&#xff09; 三、Livox SDK2的编译 四、livox_ros_driver2的编译 五、hap的点云视频录制、点播点云视频bag、ba…

Docker Swarm总结+CI/CD Devops、gitlab、sonarqube以及harbor的安装集成配置(3/5)

博主介绍&#xff1a;Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 &#x1f345;文末获取源码下载地址&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb;…

网站优化SEO文章采集组合方法

为了在激烈的网络竞争中脱颖而出&#xff0c;SEO专业人士不断寻求创新的方法和技术。其中&#xff0c;SEO文章采集后重组是一项备受关注的技术&#xff0c;通过巧妙地整合和重新组织已有的信息&#xff0c;以提升网站在搜索引擎中的排名和曝光度。 SEO文章采集是这一技术的第一…

【MySQL】事务(事务四大特性+四种隔离级别+MVCC)

事务 前言正式开始事务的四大特性为什么会出现事务事务的版本支持事务提交方式事务常见操作方式启动事务回滚演示提交事务事务的异常autocommit 事务的隔离性隔离级别查看隔离级别修改隔离级别验证四种隔离级别读未提交(read uncommitted) —— 缩写为RU读提交(read committed)…

Jmeter接口自动化测试(提取CSV文件遍历数据)

CSV文件是我们参数化时一种最常用的存储数据文件格式&#xff0c;Jmeter也为我们提供了提取CSV文件数据的工具 首先在创建CSV文件之前&#xff0c;我们要保证我们的CSV文件编码格式为ANSI或者UTF-8,我们可以用记事本另存为&#xff0c;将编码改成ANSI或者UTF-8 接着打开Jmeter…