论文提出伪监督目标定位方法(PSOL)来解决目前弱监督目标定位方法的问题,该方法将定位与分类分开成两个独立的网络,然后在训练集上使用Deep descriptor transformation(DDT)生成伪GT进行训练,整体效果达到SOTA,论文化繁为简,值得学习



来源:晓飞的算法工程笔记 公众号

论文: Rethinking the Route Towards Weakly Supervised Object Localization

Introduction


  由于训练数据难以大量标注,一些研究如何使用弱监督的方法来学习,弱监督的训练数据一般只包含image-level标签,无具体目标的定位标签/语义标签。在弱监督算法中,弱监督目标定位(WSOL)是最实际的任务,只需要定位给定标签的对象位置即可

  经过实验,论文认为WSOL中的定位部分应该为类不可知的,与分类无关。基于这个观察,将WSOL分为类不可知目标定位以及目标分类两部分,如图1所示,命名为伪监督目标定位(Pseudo Supervised Object Localization, PSOL)。算法首先生成通过Deep descriptor transformation(DDT)生成伪监督GT bbox,然后对这些bbox进行回归,去掉了WSOL中仅能有一层全连接的限制(当作卷积的channel-wise权重)以及定位与分类耦合导致的取舍问题

  论文贡献主要如下:

  • 弱监督目标定位应该分为类不可知目标定位和目标分类两个独立的部分,提出PSOL算法
  • 尽管生成的bbox有偏差,论文仍然认为应该直接优化他们而不需要类标签,最终达到SOTA
  • 在不同的数据集上,PSOL算法不需要fine-tuning也能有很好的定位迁移能力

Related Works


  这里需要说明一下,弱监督目标定位(WSOL)与弱监督目标检测(WSOD)是不一样的,WSOL假设图片中只有一个目标,而WSOD则没有这种假设,所以WSOD一般需要额外的方法去生成region proposal

Methodology


A paradigm shift from WSOL to PSOL

  当前WSOL能够生成生成带类别标签的bbox,但主要有以下几个问题:

  • 学习目标不明确,导致定位任务性能下降。独立的CNN不能同时进行定位和分类任务,因为定位需要目标的全局特征,而分类只需要目标的局部特征
  • CAM(Class Activation Mapping)存储一个三维特征图用于计算类别的heatmap,再用阈值过滤,但是一般阈值十分难确定

  受selective search和Faster-RCNN的类不可知过程的启发,将WSOL分成两个子任务,类不可知的目标定位任务和目标分类任务,提出PSOL,直接通过伪GT bbox进行模型更新,不需要直接生成bbox,能够显著解决前面提到的问题

The PSOL Method

  • Bounding Box Generation

  PSOL与WSOL的区别在于给无标签的训练图片产生伪bbox,Detection是最好的选择,能够直接提供bbox和类别。但是最大的检测训练集才80类,不能提供通用的目标检测,而且目前的detector大都需要大量的计算资源和输入尺寸,导致不能在大规模数据集上使用。除了detection模型,可以尝试定位方法来直接产生训练图上的bbox

  1. WSOL methods

  首先通过预训练网络$F$得到输入图片$I$的最后卷积的特征图$G \in \mathbb{R}^{h\times w\times d}=F(I)$,然后通过全局池化和最终的全连接层得到最后的标签$L_{pred}$。根据$L_{pred}$或$L_{gt}$,得到特定类别在最终全连接中的权重$W\in \mathbb{R}^d$,对$G$中的空间位置进行channel-wise的加权并求和得到特定类别的heatmap $H, H_{i,j}={\sum}{k=1}^d G{i,j,k}W_k$,将$H$上采样到原来的大小,使用阈值过滤在产生最终的bbox

  1. DDT recap

  协同监督方法在定位任务中有较好的表现,DDT是其中表现好且计算量最少的。对于$n$张相同标签图的集合$S$,使用预训练模型$F$得到最终的特征图$G\in \mathbb{R}^{h\times w\times d}=\mathbb{R}^{hw\times d}=F(I)$,将这些特征图集合到一起得到大特征集$G_{all}\in \mathbb{R}^{n\times hw\times d}$。在深度上使用主成分分析(PCA),得到特征值最大的特征向量$P$,然后对$G$进行channel-wise的加权并求和得到最终的heatmap $H, H_{i,j}={\sum}{k=1}^d G{i,j,k}P_k$,将$H$上采样到原来的大小,然后进行零过滤以及最大连通区域分析得到bbox

  • Localization Methods

  在生成bbox后,使用bbox回归进行精调,这里使用单类别回归(single-class regression, SCR)。假设bbox为$(x,y,w,h)$,$(x,y)$为左上角坐标,$(w,h)$为宽高,首先将值进行转换$x^=\frac{x}{w_i}$, $y^=\frac{y}{h_i}$, $w^=\frac{w}{w_i}$, $h^=\frac{h}{h_i}$,其中$w_i$和$h_i$为输入图片的宽和高。使用两个全连接层以及对应ReLU的子网来回归,最终的输出进行sigmoid激活,训练使用最小平方差

Experiments


Experimental Setups

  • Datasets,使用ImageNet-1k和CUB-200,测试数据的bbox是准确标注的,而训练集上的bbox则通过前面提到的方法进行生成
  • Metrics,验证3个指标:知道GT类别的定位准确率(GT-known Loc),当预测与GT的$IOU > 50%$时正确;Top-1定位准确率(Top-1 Loc),Top-1的分类正确且GT-known Loc正确;Top-5定位准确率(Top-5 Loc),Top-5结果中存在分类正确且GT-known Loc正确
  • Base Models,有VGG16/Inception V3/ResNet50/DenseNet161,没有增大图片输入,一些WSOL方法要用到类别信息的权重(单层全连接)来生成heatmap,而PSOL不用。为了公平起见,增加VGG-GAP,将所有全连接层换成单层全连接,而对于回归模型,仍然使用双层全连接层加对应的ReLU
  • Joint and Separate Optimization,对于联合优化模型(-Joint),在原来的基础上加入bbox回归分枝,然后同时训练模型的分类和定位。对于独立优化模型(-Sep),单独训练两个模型

Results and Analyses


Ablation Studies on How to Generate Pseudo Bounding Boxes

  在验证集上对比了不同算法生成伪GT框的准确率,DDT-VGG16性能最优

Comparison with State-of-the-art Methods

  与SOTA对比并可视化结果后发现:

  • DDT本身就已经比WSOL方法要好,说明类不可知是有用的,WSOL应该分为两个独立的模型
  • 所有PSOL方法分开训练都比联合训练要好,说明定位和分类学习到的内容不一样
  • POSL在CUB-200上都具有较大的优势,由于类别相似度较大,类别标签不一定能帮助定位,反而协同定位的DDT更占优
  • CNN有能力去处理有噪声的数据并且得到更高的准确率,PSOL模型的GT-Known Loc基本都比DDT-VGG16高
  • WSOL里的一些约束没有带到PSOL中,例如只允许单层全连接层以及更大的输出特征图,去掉常见的三层全连接层会影响准确率,VGG-Full比VGG-GAP要好。还有WSOL方法在复杂的网络上效果不好,如DenseNet,主要由于DenseNet使用多层进行分类,不仅仅是最后一层,最后一层的语义不如VGG等明确,而PSOL-DenseNet则避免了这个问题,达到最高准确率

Transfer Ability on Localization

  PSOL不需要任何监督信息就很好的从ImageNet迁移到CUB-200,甚至比fine-tune的WSOL方法都好,证明目标定位与类别关联是没必要的

Combining with State-of-the-art Classification

  将分类部分的网络改为SOTA分类网络结合进行实验,PSOL性能依然比WSOL要好

Comparison with fully supervised methods

  对比监督方法,这里论文的描述不是很清楚,表中有监督的分类网络应该都是使用WSOL方法+定位LOSS。从结果来看,从ILSVRC直接迁移过来的Faster-RCNN-ensemble精度最高,region proposal网络不需要fine-tuning就具有更好的处理不同类别的通用能力,说明定位与分类是分开的

CONCLUSION


  论文提出伪监督目标定位方法(PSOL)来解决目前弱监督目标定位方法存在的问题,该方法将定位与分类分开成两个独立的网络,然后在训练集上使用Deep descriptor transformation(DDT)生成伪GT进行训练,整体效果达到SOTA,论文化繁为简,值得学习





如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

化繁为简,弱监督目标定位领域的新SOTA - 伪监督目标定位方法(PSOL) | CVPR 2020的更多相关文章

  1. 商汤提出解偶检测中分类和定位分支的新方法TSD,COCO 51.2mAP | CVPR 2020

    目前很多研究表明目标检测中的分类分支和定位分支存在较大的偏差,论文从sibling head改造入手,跳出常规的优化方向,提出TSD方法解决混合任务带来的内在冲突,从主干的proposal中学习不同的 ...

  2. (java)selenium webdriver学习--打开新窗口,并判断新窗口是否与目标窗口一致

    描述:selenium webdriver学习--打开新窗口,并判断新窗口是否与目标窗口一致,若一致则切换到该窗口并获取标题 跳出if判断,获取父级标题,并关闭 HTML标签不太明显时,可以用路径表示 ...

  3. CVPR 2020目标跟踪多篇开源论文(上)

    CVPR 2020目标跟踪多篇开源论文(上) 1. SiamBAN:面向目标跟踪的Siamese Box自适应网络 作者团队:华侨大学&中科院&哈工大&鹏城实验室&厦门 ...

  4. MAML-Tracker: 目标跟踪分析:CVPR 2020(Oral)

    MAML-Tracker: 目标跟踪分析:CVPR 2020(Oral) Tracking by Instance Detection: A Meta-Learning Approach 论文链接:h ...

  5. 腾讯推出超强少样本目标检测算法,公开千类少样本检测训练集FSOD | CVPR 2020

    论文提出了新的少样本目标检测算法,创新点包括Attention-RPN.多关系检测器以及对比训练策略,另外还构建了包含1000类的少样本检测数据集FSOD,在FSOD上训练得到的论文模型能够直接迁移到 ...

  6. 增量学习不只有finetune,三星AI提出增量式少样本目标检测算法ONCE | CVPR 2020

    论文提出增量式少样本目标检测算法ONCE,与主流的少样本目标检测算法不太一样,目前很多性能高的方法大都基于比对的方式进行有目标的检测,并且需要大量的数据进行模型训练再应用到新类中,要检测所有的类别则需 ...

  7. CVPR 2020几篇论文内容点评:目标检测跟踪,人脸表情识别,姿态估计,实例分割等

    CVPR 2020几篇论文内容点评:目标检测跟踪,人脸表情识别,姿态估计,实例分割等 CVPR 2020中选论文放榜后,最新开源项目合集也来了. 本届CPVR共接收6656篇论文,中选1470篇,&q ...

  8. 定位页面元素之xpath详解以及定位不到测试元素的常见问题

    一.定位元素的方法 id:首选的识别属性,W3C标准推荐为页面每一个元素设置一个独一无二的ID属性, 如果没有且很难找到唯一属性,解决方法:(1)找开发把id或者name加上.如果不行,解决思路可以是 ...

  9. 利用HTML5定位功能,实现在百度地图上定位(转)

    原文:利用HTML5定位功能,实现在百度地图上定位 代码如下: 测试浏览器:ie11定位成功率100%,Safari定位成功率97%,(add by zhj :在手机上测试(用微信内置浏览器打开),无 ...

随机推荐

  1. Django redis的使用

    一 简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted ...

  2. 第七周java实验作业

    实验七 继承附加实验实验时间 2018-10-11 1.实验目的与要求 (1)进一步理解4个成员访问权限修饰符的用途: Public  该类或非该类均可访问 Private  只有该类可以访问 Pro ...

  3. angularjs中$parse的用法

    转载自:https://umur.blog/2014/02/25/advanced-angular-parse/ 高级Angular:$ parse 如果你想加强你的AngularJS知识,$ par ...

  4. 浅析jdbc建立连接方式与背后的java类加载

    关于jdbc的连接方式#1Connection conn;Class.forName("com.mysql.jdbc.Driver"); //2conn=DriverManager ...

  5. 多线程之旅(ThreadPool 线程池)

    一.什么是ThreadPool 线程池(源码) 1.线程池顾名思义,有我们的系统创建一个容器装载着我们的线程,由CLR控制的所有AppDomain共享.线程池可用于执行任务.发送工作项.处理异步 I/ ...

  6. python中的抽象类

    今天给大家介绍一下python中一个强大的功能:抽象类 因为最近发现很多同事不理解抽象类,正好抽空写篇博客,给大家介绍一下抽象类 抽象类的作用就是控制子类的方法的名称,要求子类必须按照父类的要求的实现 ...

  7. Java基础语法(7)-数组

    title: Java基础语法(7)-数组 blog: CSDN data: Java学习路线及视频 1.数组的概述 数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并 ...

  8. vue - Babel之babel-polyfill、babel-runtime、transform-runtime

    引言 babel默认只转换新的 JavaScript 语法,比如箭头函数.扩展运算(spread). 不转换新的 API,例如Iterator.Generator.Set.Maps.Proxy.Ref ...

  9. PHP7内核(四):生命周期之开始前的躁动

    上一章我们对PHP的源码目录结构有了初步了解,本章我们继续从生命周期的维度对PHP进行剖析. 一.概览 生命周期是什么呢?你可以把它看作执行过程,PHP的生命周期也就是它从开始执行到结束执行的过程. ...

  10. 17.用cmd创建maven web工程

    1.跳转到需要创建maven工程的目录,输入 mvn archetype:generate 2.找到webapp的那一项,输入它的序号(这里是10) 3.输入groupId,artifactId,ve ...