人工标注数据集中普遍存在噪声,ReLabel能够自动且低成本地将原本的单标签数据集转化为多标签数据集,并且提出配合random crop使用的高效LabelPooling方法,能够更准确地指导分类网络的训练



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

论文: Re-labeling ImageNet:from Single to Multi-Labels, from Global to Localized Labels

Introduction


  ImageNet数据集是图像识别领域很重要的数据集,数据集本身假设图片中只有一个目标,但是目前发现其中包含了很多噪声数据,很多图片实际上可能存在多个类别目标,这种情况就会误导网络的学习。此外,论文发现常用的Random crop数据增强方法会加剧这一现象,对验证集的每张图片进行100次Random crop,统计裁剪图片与原目标之间的IoU,结果如上面的图所示,IoU低于0.5的占比为76.5%,IoU为0的占比甚至高达8%,这显然会给训练带来极大的干扰。

  为了解决这一问题,论文提出ReLabel,通过一个标注网络(machine annotator)取得图片的pixel-wise多标签标注\(L\in \mathbb{R}^{H\times W\times C}\),该标注包含标签信息和位置信息,然后按该多标签标注信息将原本的单标签标注转化为多标签标注。论文也提出LabelPooling来配合Random crop使用,根据crop的区域与pixel-wise标注输出对应的多标签信息。区别于知识蒸馏,每张图片每次都需要forward计算,ReLabel方法仅需要每张图片进行一次forward计算,后续都是简单的比例计算,计算量较小。

Re-labeling ImageNet


  由于人工标注的成本很高,论文采用了一个标注网络(machine annotator)获取pixel-wise标注,网络结构可以为任意sota网络,考虑到训练的耗时,取该网络在Super-ImageNet数据集上预训练模型,然后在ImageNet上进行fine-tuned。根据交叉熵损失函数的特性,虽然该标注网络是在单标签数据集上训练得到的,但由于数据集存在噪声,这使得网络潜在有多标签预测的能力。

  由于我们希望获取pixel-wise多标签标注,将原网络的全局池化层去掉,并将后续的全连接层替换为\(1\times 1\)卷积层,修改后的网络\(f(x)\)的输出变为\(L\in \mathbb{R}^{W\times H\times C}\),这便是我们需要的pixel-wise标注信息。

Training a Classifier with Dense Multi-labels


  在获得多标签信息\(L\)后,训练时通过Label Pooling获取训练目标,如上图所示,与常规方法的主要区别如下:

  • 常规的训练步骤不管random crop的结果,均赋予原图的单标签。
  • Label Pooling先获取图片对应的pixel-wise多标签信息,然后使用RoIAlign对random crop对应的区域进行特征提取,最后使用全局池化和softmax操作进行分类,得到多标签向量\([0,1]^C\)。

  使用ReLabel的训练流程可参考上面的伪代码,由于pixel-wise多标签标注是预先计算好的,所以采用ReLabel带来额外计算非常小。

Discussion


Space consumption

  当使用EfficientNet-L2作为标注网络时,输入分辨率为\(475\times 475\),输出的pixel-wise标注信息大小\(L\in \mathbb{R}^{15\times 15\times 100}\),保存所有图片的完整标注信息大约需要1TB的存储。对于每一张图片,除了top-k类别外,其它类别的pixel-wise标注信息几乎都为0,所以可以只需要保存每张图片的top-5 pixel-wise标注信息,大约为10GB,相当于ImageNet数据集大小的10%。

Time consumption

  ReLabel需要将ImageNet中每张图片进行一次前向计算,大约耗费10 GPU/时,相当于ResNet-50完整训练时间的3.3%。在每个迭代,LabelPooling大约增加每次迭代的0.5%的额外耗时,而知识蒸馏每轮迭代都要teacher网络进行一次完整的前向计算,耗时相当大。

Which machine annotator should we select?

  不同标注网络对ReLabel的效果影响很大,论文对比了多种网络结构,结果如上图所示,最终论文选择了EfficientNet-L2作为标注网络。

Factor analysis of ReLabel

  ReLabel是多标签和pixel-wise的,为了对比这两个特性的必要性,增加了以下三种实现的对比:

  • Localized single labels:跟ReLabel的步骤一样,最后取softmax分数最大的标签,而非多标签。
  • Global multi-labels:不使用RoIAlign,直接将完整的标注信息进行全局池化,最后取多标签。
  • Global single labels:不使用RoIAlign,直接将完整的标注信息进行全局池化,最后softmax分数最大的标签。

  结果如上图所示,论文提出的ReLabel实现方式效果最好。

Confidence of ReLabel supervision

  论文也对ReLabel在不同IoU情况下的监督能力进行了探讨,记录5百万张random crop的图片与GT的IoU以及ReLabel输出的最大标签分数,结果如上图所示,标签分数与IoU正相关。当IoU非常小时,标签分数也非常小,这就相当于给网络训练提供了一个训练目标不确定的信号。

Experiments


  多标签pixel-wise标注信息的可视化。

  与其它标签监督方法对比。

  对不同网络结构的性能提升。

  搭配其它训练技巧的效果。

  与知识蒸馏的耗时对比。

  作为目标检测主干网络的表现。

Conclusion


  人工标注数据集中普遍存在噪声,ReLabel能够自动且低成本地将原本的单标签数据集转化为多标签数据集,并且提出配合random crop使用的高效LabelPooling方法,能够更准确地指导分类网络的训练。





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

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

ReLabel:自动将ImageNet转化成多标签数据集,更准确地有监督训练 | 2021新文的更多相关文章

  1. 税号输入框 将input框中的输入自动转化成半角大写

    这两天出了这么一个需求,输入税号的时候,需要自动将其转化为半角大写,并且阻止标点符号中文汉字的输入.(下面会有:全半角转换.文本框选中.光标位置判断.设置光标位置 这些内容) 然后我就开始了慢慢查找资 ...

  2. 微信小程序:将中文语音直接转化成英文语音

    作者:瘟小驹    文章来源<微信小程序个人开发全过程> 准备工作: 准备工具:Eclipse.FileZilla.微信开发者工具.一个配置好SSL证书(https)的有域名的服务器 所需 ...

  3. 从数据库读取数据后显示成html标签

    也许很多人从数据库中读的数据是不需要数据成html标签的,但是也许有一天你们会发现当我们需要输出成html标签时编译器却自动帮我们输出成字符串了这是我们可以这样来 方法1: 最常用的方法,使用JS或J ...

  4. 如何用python将一个时间序列转化成有监督学习

    机器学习可以被用于时间序列预测. 在机器学习能使用之前,时间序列预测需要被重新转化成有监督学习.将一个序列组合成成对的输入输出序列. 在这篇教程中,你会发现如何通过使用机器学习算法将单变量和多变量的时 ...

  5. js中对象转化成字符串、数字或布尔值的转化规则

    js中对象可以转化成 字符串.数字.布尔值 一.对象转化成字符串: 规则: 1.如果对象有toString方法,则调用该方法,并返回相应的结果:(代码通常会执行到这,因为在所有对象中都有toStrin ...

  6. chrome插件开发-----------将网址转化成二维码website2QRcode

    微信自带的浏览器无法输入链接,仅仅能通过扫描二维码实现.可是有时候看到一个有趣的站点,想分享,还得先去将链接转化成二维码的站点.先转成二维码.再扫描.有点麻烦.所以写了一个插件.直接生成二维码. 须要 ...

  7. 如何将一个Maven项目转化成一个Eclipse项目

    有时候我们需要将一个Maven项目导入到Eclipse中,直接作为一个普通的eclipse项目来导入是不行的,我们可以通过一个命令来实现:mvn eclipse:eclipse 1. 进入该Maven ...

  8. .net core2.0添加json文件并转化成类注入控制器使用 让js调试更简单—console

    .net core2.0添加json文件并转化成类注入控制器使用 上一篇,我们介绍了如何读取自定义的json文件,数据是读取出来了,只是处理的时候太麻烦,需要一遍一遍写,很枯燥.那么有没有很好的办法呢 ...

  9. ADO.NET .net core2.0添加json文件并转化成类注入控制器使用 简单了解 iTextSharp实现HTML to PDF ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下 C# AutoMapper 了解一下

    ADO.NET   一.ADO.NET概要 ADO.NET是.NET框架中的重要组件,主要用于完成C#应用程序访问数据库 二.ADO.NET的组成 ①System.Data  → DataTable, ...

随机推荐

  1. LCS&&LRC&&LIS问题

    注:最近笔试题经常碰到DP动态规划的问题,但是由于本人没有接触过DP,笔试后看到别人家的答案简洁又漂亮,真的羡慕:难的DP自己可能不会,那再见到常见的LCS和LRS以及LIS为问题总该会吧: 资料参考 ...

  2. 什么是Spring的MVC框架?

    Spring 配备构建Web 应用的全功能MVC框架.Spring可以很便捷地和其他MVC框架集成,如Struts,Spring 的MVC框架用控制反转把业务对象和控制逻辑清晰地隔离.它也允许以声明的 ...

  3. spring集成mongodb简单使用和测试方式

    @EnableMongoRepositories @ComponentScan(basePackages = "cn.example") @Configuration public ...

  4. memcacuery cache 相比,有什么优缺点?

    把 memcached 引入应用中,还是需要不少工作量的.MySQL 有个使用方便的 query cache,可以自动地缓存 SQL 查询的结果,被缓存的 SQL 查询可以被反复 地快速执行.Memc ...

  5. 读懂jstack

    1 jstack jstack是JDK自带的一种线程栈跟踪工具,用于生成java虚拟机当前时刻线程快照.在定位线程卡顿.死锁.block等原因的时候非常有用.使用方法是: jstack [-l] pi ...

  6. BFC理解

    Block formatting context (块级格式化上下文) 页面文档由块block构成 每个block在页面上占据自己的位置 使用新的元素构建BFC overflow:hidden | a ...

  7. 隐藏IE10默认在input框输入内容后显示“X”按钮

    ::-ms-clear{display: none;} ::-ms-reveal{display: none;}

  8. Python中使用正则表达式获取两个字符中间部分

    问题背景:当我们爬取网页信息时,对于一些标签的提取是没有意义的,所以需要提取标签中间的信息. 解决办法:用到了re包下的函数 方法1:用到了research()方法和group()方法 方法2:用到了 ...

  9. git clone 遇到的问题

    经常遇到这个问题, 所以今天决定把它记录下来 当使用git clone时,会报Please make sure you have the correct access rights and the r ...

  10. Leetcode541/151之String与char数组与StringBuffer

    String与char数组与StringBuffer 通常情况下遇到删除字符或者反转字符串时需要将String转为char数组或者StringBuffer String与char数组 char [] ...