Detecting Twenty-thousand Classes using Image-level Supervision

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.mzph.cn/news/37435.shtml

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

相关文章

LeetCode_03Java_1572. 矩阵对角线元素的和

给你一个正方形矩阵 mat&#xff0c;请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 输入&#xff1a;mat [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;25 解释&#xff1a;对角线的和为&#xff1a;1 5 9 3 7 2…

Scratch 之 3D 介绍及教程

第一章 为什么 3D 很难&#xff1f; 1.1 3D 难在何处&#xff1f; 3D 之所以会使我们觉得困难&#xff0c;是因为 Scratch 软件只有两个坐标轴&#xff0c;既&#xff1a;X轴、Y轴。 2维坐标系 而 3D 却拥有三个坐标轴&#xff1a; 3维坐标系 怎么办&#xff1f;很简单&…

Jquery 复选框点击生成标签 源代码

html <!DOCTYPE html> <html><head><meta charset"utf-8"><title>服务资源管理</title><link rel"stylesheet" type"text/css" href"../lib/layui/css/layui.css" /><link rel"st…

【BASH】回顾与知识点梳理(二十一)

【BASH】回顾与知识点梳理 二十一 二十一. Linux 的文件权限与目录配置21.1 使用者与群组属主(文件拥有者)属组(群组概念)其他人的概念root(万能的天神)Linux 用户身份与群组记录的文件 21.2 Linux 文件权限概念Linux 文件属性Linux 文件权限的重要性 21.3 如何改变文件属性与权…

组合模式(C++)

定义 将对象组合成树形结构以表示部分-整体’的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性(稳定)。 应用场景 在软件在某些情况下&#xff0c;客户代码过多地依赖于对象容器复杂的内部实现结构&#xff0c;对象容器内部实现结构(而非抽象接口)的变化…

Redis数据结构——链表list

链表是一种常用的数据结构&#xff0c;提供了顺序访问的方式&#xff0c;而且高效地增删操作。 Redis中广泛使用了链表&#xff0c;例如&#xff1a;列表的底层实现之一就是链表。 在Redis中&#xff0c;链表分为两部分&#xff1a;链表信息 链表节点。 链表节点用来表示链表…

PyTorch深度学习实践---笔记

PyTorch深度学习实践---笔记 2.线性模型&#xff08;Linear Model&#xff09;2.exercise 3. 梯度下降算法&#xff08;Gradient Descent&#xff09;3.1梯度下降&#xff08;Gradient Descent&#xff09;3.2 随机梯度下降&#xff08;Stochastic Gradient Descent&#xff09…

亚马逊测评工作室怎么做?

亚马逊是全球最大的电商平台之一&#xff0c;任何一个卖家想要提升自己店铺的知名度和销量&#xff0c;都需要关注自己Listing的Review数量和星级评价&#xff0c;而测评对于卖家账号的评定和产品曝光量有着重要影响&#xff0c;可以用于店铺提升销量&#xff0c;留评等 在进行…

c51单片机串口通信(中断方式接收数据)(单片机--单片机通信)示例代码 附proteus图

单片机一般采用中断方式接受数据&#xff0c;这样便于及时处理 #include "reg51.h" #include "myheader.h" #define uchar unsigned char int szc[10]{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int bufferc[6]{0}; int sza[6]{0x01,0x02,0x0…

TEXTure环境配置,跑通inference的demo

TEXTure 环境配置安装kaolin这个包,这里可能会遇到各种问题配置huggingface的访问令牌 运行Text Conditioned Texture Generation指令报错1报错2成功运行 查看结果查看贴图后的三维网格模型 环境配置 # 创建一个名为texture的环境 conda create -n texture python3.9 -y# 激活…

人工智能任务1-【NLP系列】句子嵌入的应用与多模型实现方式

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能任务1-【NLP系列】句子嵌入的应用与多模型实现方式。句子嵌入是将句子映射到一个固定维度的向量表示形式&#xff0c;它在自然语言处理&#xff08;NLP&#xff09;中有着广泛的应用。通过将句子转化为向量…

ASP.NET Core - 缓存之分布式缓存

分布式缓存是由多个应用服务器共享的缓存&#xff0c;通常作为访问它的应用服务器的外部服务进行维护。 分布式缓存可以提高 ASP.NET Core 应用的性能和可伸缩性&#xff0c;尤其是当应用由云服务或服务器场托管时。 与其他将缓存数据存储在单个应用服务器上的缓存方案相比&am…

沁恒ch32V208处理器开发(三)GPIO控制

目录 GPIO功能概述 CH32V2x 微控制器的GPIO 口可以配置成多种输入或输出模式&#xff0c;内置可关闭的上拉或下拉电阻&#xff0c;可以配置成推挽或开漏功能。GPIO 口还可以复用成其他功能。端口的每个引脚都可以配置成以下的多种模式之一&#xff1a; 1 浮空输入 2 上拉输入…

AMEYA360:DNB1101大唐恩智浦工规级电池管理芯片

大唐恩智浦作为全球领先的半导体供应商&#xff0c;一直致力于为全球客户提供高质量的解决方案。在电池管理芯片领域&#xff0c;大唐恩智浦推出的DNB1101可谓是一款工规级的电池管理芯片&#xff0c;其卓越的性能和可靠性成为市场上备受全球领先的半导体供应商&#xff0c;一直…

Java接口压力测试—如何应对并优化Java接口的压力测试

导言 在如今的互联网时代&#xff0c;Java接口压力测试是评估系统性能和可靠性的关键一环。一旦接口不能承受高并发量&#xff0c;用户体验将受到严重影响&#xff0c;甚至可能导致系统崩溃。因此&#xff0c;了解如何进行有效的Java接口压力测试以及如何优化接口性能至关重要…

SpringBoot复习:(48)RedisAutoConfiguration自动配置类

RedisAutoConfiguration类代码如下&#xff1a; 可以看到在这个类中配置了2个bean: redisTemplate和stringRedisTemplate. 而它通过EnableConfigurationProperties(RedisProperties.class)注解&#xff0c;把配置文件中配置的Redis相关的信息引入进来了&#xff0c;RedisPrope…

安装Linux操作系统CentOS 6详细图文步骤

为满足业务对Linux操作系统部署的要求&#xff0c;本文档主要提供CentOS 6操作系统的最小化安装和基本配置, 安装本系统建议最少1GB内存和2GB磁盘空间。 1、 使用光盘或者挂载ISO镜像&#xff0c;在出现如下图形界面时选择【Install or upgrade an existing system】并按Ent…

P8642 [蓝桥杯 2016 国 AC] 路径之谜

[蓝桥杯 2016 国 AC] 路径之谜 题目描述 小明冒充 X X X 星球的骑士&#xff0c;进入了一个奇怪的城堡。 城堡里边什么都没有&#xff0c;只有方形石头铺成的地面。 假设城堡地面是 n n n\times n nn 个方格。如图所示。 按习俗&#xff0c;骑士要从西北角走到东南角。 …

音视频 vs2017配置FFmpeg

vs2017 ffmpeg4.2.1 一、首先我把FFmpeg整理了一下&#xff0c;放在C盘 二、新建空项目 三、添加main.cpp&#xff0c;将bin文件夹下dll文件拷贝到cpp目录下 #include<stdio.h> #include<iostream>extern "C" { #include "libavcodec/avcodec.h&…

【数据结构与算法——TypeScript】图结构(Graph)

【数据结构与算法——TypeScript】 图结构(Graph) 认识图结构以及特性 什么是图? 在计算机程序设计中&#xff0c;图结构 也是一种非常常见的数据结构。 但是&#xff0c;图论其实是一个非常大的话题 认识一下关于图的一些内容 图的抽象数据类型一些算法实现。 什么是图?…