Detecting Twenty-thousand Classes using Image-level Supervision

news2024/10/7 11:23:37

Detecting Twenty-thousand Classes using Image-level Supervision

  • 摘要
  • 背景方法
  • Preliminaries
  • Detic:具有图像类别的检测器
  • loss
  • 技术细节扩展
    • Grad-CAM
      • Grad-CAM原理
  • 总结

摘要

在这里插入图片描述

摘要 由于检测数据集的规模较小,目前的物体检测器在词汇量方面受到限制。而图像分类器的数据集更大,也更容易收集,因此它们的词汇量要大得多。我们提出的 Detic 只需在图像分类数据上训练检测器的分类器,从而将检测器的词汇量扩展到数以万计的概念。与之前的工作不同,Detic 不需要复杂的分配方案,就能根据模型预测将图像标签分配给方框,因此更容易实现,并与一系列检测架构和骨干兼容。我们的研究结果表明,即使对于没有方框注释的类别,Detic 也能生成出色的检测器。它在开放词汇和长尾检测基准上的表现都优于之前的工作。在开放词汇 LVIS 基准上,Detic 为所有类别带来了 2.4 mAP 的增益,为新类别带来了 8.3 mAP 的增益。在标准 LVIS 基准上,如果对所有类别或仅对稀有类别进行评估,Detic 可获得 41.7 mAP,从而缩小了样本较少的对象类别的性能差距。我们首次使用 ImageNet 数据集的全部 21000 个类别来训练检测器,并证明它无需微调即可泛化到新的数据集。代码见 https://github.com/facebookresearch/Detic 。

现阶段的目标检测器的性能已经到了一个瓶颈。

  1. 作者认为限制其性能进一步提升的主要原因是其可获得的训练数据量规模太小。
  2. 另一方面,图像分类的数据量就相对来说大得多同时更加容易收集,也因此图像分类可以在更大规模的词汇表上进行推理。

作者基于此,提出了自己命名为Detic的目标检测训练方法,其可以非常简单的使用图像分类的数据集来对目标检测器的分类头进行训练。简单,是Detic的最大卖点,之前的类似弱监督的工作都是基于预测然后进行box-class的分配,实现起来十分繁琐且兼容性很差,只能在特定的检测器结构上进行训练,Detic则可易于实现,在大部分的检测建构和backbone上都可以接入使用。

背景方法

在这里插入图片描述
物体检测包括两个子问题:寻找物体(定位)和命名物体(分类)。传统方法将这两个子问题紧密结合在一起,因此依赖于所有类别的盒式标签。尽管做了很多数据收集工作,但检测数据集 [18 , 28 , 34 , 49] 的总体规模和词汇量都远远小于分类数据集 [10]。例如,最近的 LVIS 检测数据集 [18] 有 1000 多个类别,12 万张图像;OpenImages [28] 有 500 个类别,180 万张图像。此外,并非所有类别都包含足够的注释来训练强大的检测器(见图 1 顶部)。在分类方面,即使是已有十年历史的 ImageNet [10] 也有 21K 个类别和 1400 万张图片(图 1 底部)。

现阶段目标检测的标注数据量相对于图像分类来说少得太多,LVIS 120K的图片,包含了1000+类,OpenImages 1.8M的图片,包含了500+类,而10年前的古董级图像分类数据集ImageNet就有21K个类别、14M的图片数目。在有限的类别上训练出来的目标检测器,总是会出现差错。而Detic使用了图像分类的数据,能够检测出得类别就更加多样、更加精确。如下图所示,一个普通的LVIS检测器将狮子检测成了熊,将狐狸检测成了水獭,而Detic则检测正确。

传统的目标检测将分类和定位耦合在一起,对训练的数据集有较高的要求,数据集需要包括物体的种类,以及bbox位置信息,这就导致了要检测多少类就需要多少类的数据标注。

而detic将分类与定位解耦成两个问题,在定位时不再那么依赖标注数据。

在这里插入图片描述
在本文中,我们提出了带图像类别的检测器(Detic),它除了检测监督外,还使用图像级监督。我们发现,定位和分类子问题可以解耦
在这里插入图片描述

因此,我们将重点放在分类子问题上,使用图像级标签来训练分类器并扩大检测器的词汇量。我们提出了一种简单的分类损失,将图像级监督应用于规模最大的提案,而不对其他有图像标签的数据输出进行监督。这种方法易于实现,并能大量扩展词汇量。

对于采用第二种数据如何定位,文中没有细说(文中的重点是分类),但是提到了用的是弱监督学习的思想,目前在弱监督学习的定位中采用最多的方法是 Gard-Cam(detic可能不是用的这个,但是感觉应该是一样的思想)。Gard-cam起初是用来可视化CNN任务的,稍作修改即可用来定位。

在这里插入图片描述
我们发现问题,并提出一个更简单的替代现有的弱监督检测技术在开放词汇设置。

我们提出的损失族显著提高了新类别的检测性能,与监督性能上限非常匹配。

我们的检测器无需微调即可转换到新的数据集和词汇

  1. 作者找到现阶段目标检测弱监督训练出现的问题,并使用了更简单易用的替换方案。
  2. 作者为了使用图像级别的监督信号,提出了一个新的损失函数,实验表明,这个损失函数可以非常有效地提升目标检测器的性能,尤其是在novel class的检测中。
  3. 作者训练出来的目标检测器可以无需微调,直接迁移到新的数据集和检测词汇表上。

Preliminaries

在这里插入图片描述
我们使用对象检测和图像分类数据集来训练对象检测器。我们提出了一种简单的方法来利用图像监督来学习对象检测器,包括没有盒子标签的类。我们首先描述目标检测问题,然后详细说明我们的方法

在这里插入图片描述
问题设置。给定一幅图像,目标检测解决两个子问题:( 1)定位:找到所有目标及其位置,表示为一个盒子 😭 2)分类:给第j个目标分配一个类别标签cj 。这里C test是用户在测试时提供的类词汇。
在训练期间,我们使用检测数据集,词汇C det既有类标签又有box标签。我们还使用图像分类数据集,词汇表C cls只有图像级类标签。词汇C test、C det、C cls可能重叠,也可能不重叠。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

传统的对象检测认为在这里插入图片描述,主要的目标检测器遵循两阶段框架。

第一阶段,称为区域建议网络(RPN),取图像I并生成一组对象建议:在这里插入图片描述
第二阶,段取对象特征,输出每个对象的分类评分和细化后的盒子位置。在这里插入图片描述
w,b分别是分类层和回归层的学习权重。

在这里插入图片描述

我们的工作重点是在第二阶段提高分类。在我们的实验中,RPN和边界框回归器并不是当前的性能瓶颈,因为现代探测器在测试中使用了过多的建议数量(每张图像< 20个对象使用1K个建议)。

在这里插入图片描述
在这里插入图片描述

方法概述。我们在检测数据和图像标记数据上混合训练。当使用检测数据时,我们的模型使用标准检测损失来训练检测器的分类器(W)和盒预测分支(B)。当使用图像标记的数据时,我们仅使用我们修改的分类损失来训练分类器。
我们的损失训练从最大尺寸的提议中提取的特征。

Detic的数据集分为两类,一种是传统目标检测数据集,一种是label-image数据(可以类比为图像分类的数据,没有bbox信息)。
对于第一种数据来说,训练时就按照传统目标检测的流程进行,得到分类权重
以及bbox预测分支
,对于第二种数据来说,我们只训练来自固定区域的特征进行分类。使用这两种数据可以训练种类更多的分类器(跟传统的目标检测相比降低了数据获取的成本)。

Detic:具有图像类别的检测器

在这里插入图片描述
如图3所示,我们的方法利用了来自检测数据集Ddet的盒子标签和来自分类数据集Dcls的图像级标签。在训练期间,我们使用来自两种类型的数据集的图像组成一个小批量。对于带有方框标签的图像,我们遵循标准的两阶段检测器训练[46]。对于图像级标记图像,我们只训练来自固定区域的特征进行分类。因此,我们只计算具有GT标签的图像的定位损失(RPN损失和边界盒回归损失)。下面,我们描述我们改进的图像级标签的分类损失

在这里插入图片描述

如上图所示,一个普通的LVIS检测器将狮子检测成了熊,将狐狸检测成了水獭,而Detic则检测正确。

loss

弱监督目标检测
在这里插入图片描述
左图:标准检测需要地面实况标签盒,无法利用图像级标签。
中间: 现有的基于预测的弱监督检测方法[3, 44, 45]通过将图像级标签分配给检测器的预测框(建议)来使用图像级标签。遗憾的是,这种分配容易出错,尤其是在大词汇量检测中。
右图 Detic 只需将图像标签分配给最大尺寸的提议。我们的研究表明,这种损失比之前的工作更简单,性能也更好。

在这里插入图片描述

在这里插入图片描述

其中 f 代表proposal对应的RoI feature,c是最大的proposal对应的类别,也就是是该图片对应的类别,W是分类器的权重。同时,再加上传统目标检测器里使用的loss,就组成了Detic的最终loss。

参考文献1
参考文献2

技术细节扩展

关于使用分类数据集训练网络模型,完成定位,文中没有细说(文中的重点是分类),但是提到了用的是弱监督学习的思想,目前在弱监督学习的定位中采用最多的方法是gard-cam(detic可能不是用的这个,但是感觉应该是一样的思想)…

Grad-CAM

论文名称:Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization
论文下载地址:https://arxiv.org/abs/1610.02391
推荐代码(Pytorch):https://github.com/jacobgil/pytorch-grad-cam

对于常用的深度学习网络(例如CNN),普遍认为是个黑盒可解释性并不强(至少现在是这么认为的),它为什么会这么预测,它关注的点在哪里,我们并不知道。很多科研人员想方设法地去探究其内在的联系,也有很多相关的论文。通过Grad-CAM我们能够绘制出如下的热力图(对应给定类别,网络到底关注哪些区域)。Grad-CAM(Gradient-weighted Class Activation Mapping)是CAM(Class Activation Mapping)的升级版(论文3.1节中给出了详细的证明),Grad-CAM相比与CAM更具一般性。CAM比较致命的问题是需要修改网络结构并且重新训练,而Grad-CAM完美避开了这些问题。本文不对CAM进行讲解,有兴趣的小伙伴自行了解。

在这里插入图片描述
我们通过网络关注的区域能够反过来分析网络是否学习到正确的特征或者信息。在论文6.3章节中举了个非常有意思的例子,作者训练了一个二分类网络,Nurse和Doctor。如下图所示,第一列是预测时输入的原图,第二列是Biased model(具有偏见的模型)通过Grad-CAM绘制的热力图。第三列是Unbiased model(不具偏见的模型)通过Grad-CAM绘制的热力图。通过对比发现,Biased model对于Nurse(护士)这个类别关注的是人的性别,可能模型认为Nurse都是女性,很明显这是带有偏见的。比如第二行第二列这个图,明明是个女Doctor(医生),但Biased model却认为她是Nurse(因为模型关注到这是个女性)。而Unbiased model关注的是Nurse和Doctor使用的工作器具以及服装,明显这更合理。
在这里插入图片描述

Grad-CAM原理

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考文献3

参考文献4

总结

Unfortunately, this assignment requires good initial detections which leads to a chicken-and-egg problem–we need a good detector for good label assignment, but we need many boxes to train a good detector. Our method completely side steps the label assignment process by supervising the classification sub-problem alone when using classification data.

不幸的是,这种分配需要良好的初始检测,这会导致先有鸡还是先有蛋的问题——我们需要一个好的检测器来实现良好的标签分配,但我们需要很多盒子来训练一个好的检测器。 我们的方法通过在使用分类数据时单独监督分类子问题来完全回避标签分配过程

这里说的是弱监督检测器:对于完全的弱监督学习来说,定位依赖于检测结果

Detic解决的问题:对于传统目标检测任务,数据标注比较麻烦;对于完全的弱监督学习来说,定位依赖于检测结果。
所以detic采取了一个中合的办法

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

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

相关文章

深入了解Linux运维的重要性与最佳实践

Linux作为开源操作系统的代表&#xff0c;在企业级环境中的应用越来越广泛。而在保障Linux系统的正常运行和管理方面&#xff0c;Linux运维显得尤为关键。本文将介绍Linux运维的重要性以及一些最佳实践&#xff0c;帮助读者更好地了解和掌握Linux系统的运维技巧。 首先&#xf…

【Linux初阶】system V消息队列 + system V信号量

文章目录 一、system V消息队列&#xff08;了解&#xff09;二、system V信号量&#xff08;了解&#xff09;1.信号量是什么2.临界资源和临界区3.互斥4.为什么要信号量 三、IPC资源的组织方式结语 一、system V消息队列&#xff08;了解&#xff09; 消息队列提供了一个从一…

玩转IndexedDB,比localStorage、cookie还要强大的网页端本地缓存

随着浏览器的功能不断增强&#xff0c;越来越多的网站开始考虑&#xff0c;将大量数据储存在客户端&#xff0c;这样可以减少从服务器获取数据&#xff0c;直接从本地获取数据。 现有的浏览器数据储存方案&#xff0c;都不适合储存大量数据&#xff1a;Cookie 的大小不超过 4K…

回归预测 | MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测

回归预测 | MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测 目录 回归预测 | MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测&#xff1b; 2.运行环…

找到链表的第一个入环节点

1.题目 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统…

会玩这 10 个 Linux 命令,一定是个有趣的 IT 男!

Linux当中有很多比较有趣的命令&#xff0c;可以动手看看&#xff0c;很简单的。 1.rev命令 一行接一行地颠倒所输入的字符串。 运行&#xff1a; $rev如输入&#xff1a;shiyanlou shiyanlou2.asciiview命令 1.先安装aview $sudo apt-get install aview2.再安装imagema…

zabbix案例--zabbix监控Tomcat

目录 一、 部署tomcat 二、配置zabbix-java-gateway 三、配置zabbix-server 四、配置zabbix-web界面 一、 部署tomcat tar xf apache-tomcat-8.5.16.tar.gz -C /usr/local/ ln -sv /usr/local/apache-tomcat-8.5.16/ /usr/local/tomcat cd /usr/local/tomcat/bin开启JMX…

如何解决docker中出现的“bash: vim: command not found”

目录 问题描述&#xff1a; 问题解决&#xff1a; 问题描述&#xff1a; 在docker中&#xff0c;想要执行vim编辑文件&#xff0c;弹出“docker bash: vim: command not found“&#xff08;如下图&#xff09;&#xff0c;请问该如何解决&#xff1f; 问题解决&#xff1a; …

使用维纳过滤器消除驾驶舱噪音(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

管理类联考——逻辑——论证逻辑——汇总篇——因果推理

因果推理的逻辑方法&#xff08;穆勒五法) 确定现象之间因果关系的方法有五种&#xff1a; 求同法、求异法、求同求异并用法、共变法、剩余法。这五种方法统称为穆勒五法。用穆勒五法确定的因果关系具有或然性。 PS&#xff1a;求同球童&#xff1b;求异球衣&#xff0c;求同…

设计模式——建造者(Builder)模式

建造者模式&#xff08;Builder Pattern&#xff09;&#xff0c;又叫生成器模式&#xff0c;是一种对象构建模式 它可以将复杂对象的建造过程抽象出来&#xff0c;使这个抽象过程的不同实现方法可以构造出不同表现的对象。建造者模式是一步一步创建一个复杂的对象&#xff0c;…

YARN框架和其工作原理流程介绍

目录 一、YARN简介 二、YARN的由来 三、YARN的基本设计思想 四、YARN 的基本架构 4.1 基本架构图 4.2 基本组件介绍 4.2.1 ResourceManager 4.2.1.1 任务调度器(Resource Scheduler) 4.2.1.2 应用程序管理器&#xff08;Applications Manager&#xff09; 4.2.1.3 其他…

官方已经宣布了,2023年下半年软考各科实行机考

软考办官方通知 我认为&#xff0c;第一次参加软考机考的考生会有好处&#xff0c;因为新政策在第一年执行时一般不会太难。我非常好奇如何在论文中画图。 下面&#xff0c;我将从一个曾参加软考高级水平考试的人的角度&#xff0c;讲述机考的优缺点&#xff0c;并分享我自己的…

xxljob搭建(内网穿透)

调度中心搭建 先从码云或者github上将项目拷贝到本地&#xff0c;选择最新的release分支拷贝下来的xxl-job-admin模块就是调度中心&#xff0c;我们需要做的有两点&#xff0c;第一点将doc/db/tables_xxl_job.sql执行&#xff0c;第二点修改xxl-job-admin的application.proper…

恒运资本:算力股爆发,地产股全线下挫,海外机构调研股出炉

60股近期获海外组织调研&#xff0c;医疗龙头最受组织重视。 今日早盘三大指数全线低开&#xff0c;延续调整走势&#xff0c;上证指数跌1.01%&#xff0c;深证成指跌1.35%&#xff0c;创业板指跌1.6%。AI概念股逆市走强&#xff0c;算力、数据要素等方向领涨&#xff0c;朗威股…

从小白到大神之路之学习运维第79天-------Kubernetes网络组件详解

第四阶段 时 间&#xff1a;2023年8月14日 参加人&#xff1a;全班人员 内 容&#xff1a; Kubernetes网络组件详解 目录 一、Kubernetes网络组件 &#xff08;一&#xff09;Flannel网络组件 &#xff08;二&#xff09;Calico 网络插件 &#xff08;1&#xff09;…

U盘数据如何保密?U盘数据加密软件合集

当我们将重要数据存放在U盘中时&#xff0c;必须要保障U盘的安全&#xff0c;以避免数据泄露。那么&#xff0c;U盘数据该如何保密呢&#xff1f;下面我们就来盘点一下那些好用的U盘数据保护方法。 U盘写保护 起初U盘写保护是专门为U盘防病毒而设计的&#xff0c;写保护后会将…

mysql滑动窗口案例

获取学科最高分 SELECT DISTINCT name,subject,MAX(score) OVER (PARTITION by subject) as 此学科最高分数 from scores;获取学科的报名人数 select DISTINCT subject,count(name) over (partition by subject) as 报名此学科的人数 from scores; 求学科总分 SELECT DISTI…

【C++】多态的概念和简单介绍、虚函数、虚函数重写、多态构成的条件、重载、重写、重定义

文章目录 多态1.多态的概念和介绍2.虚函数2.1final2.2override 3.虚函数的重写3.1协变3.2析构函数的重写 4.多态构成的条件5.重载、重写、重定义...... 多态 1.多态的概念和介绍 C中的多态是一种面向对象编程的特性&#xff0c;它允许不同的对象对同一个消息做出不同的响应。 …

1475.商品折扣后的最终价格

文章目录 题目描述解题思路&#xff1a;方法一&#xff1a;通俗解法方法二&#xff1a;单调栈 leetcode原题链接 1475. 商品折扣后的最终价格 题目描述 给你一个数组 prices &#xff0c;其中 prices[i] 是商店里第 i 件商品的价格。 商店里正在进行促销活动&#xff0c;如果你…