人工标注数据集中普遍存在噪声,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. idea如何打包项目,部署到linux后台运行

    服务器安装tomcat 上传好tomcat包 scp -r tomcat liwwww@111116.11222.101121.12111111:/opt/ linux下启动tomcat服务的命令   ...

  2. Kafka学习(二)

    作者:程序员cxuan链接:https://www.zhihu.com/question/53331259/answer/1262483551来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...

  3. catkin编译系统

    引言 最近项目中遇到一个需求:将 C++ 程序 (不是 ROS node,只是普通的 C++ 程序)中的变量发布到 ROS topic 上,以便 ROS 中的其他 node 进行后续处理. 原 C++ ...

  4. matlab二维插值--interp2与griddata

    二者均是常用的二维插值方法,两者的区别是, interp2的插值数据必须是矩形域(X,Y必须分别是单调向量),即已知数据点(x,y)组成规则的矩阵,或称之为栅格,可使用meshgid生成. gridd ...

  5. 小程序web开发框架-weweb介绍

    weweb是一个兼容小程序语法的前端框架,你可以用小程序的写法,来写web单面应用.如果你已经有小程序了,通过它你可以将你的小程序运行在浏览器中.在小程序大行其道的今天,它可以让你的小程序代码得到最大 ...

  6. Issues with position fixed & scroll(移动端 fixed 和 scroll 问题)

    转载请注明英文原文及译文出处 原文地址:Issues with position fixed & scrolling on iOS 原文作者:Remy Sharp译文地址:移动端 fixed ...

  7. JavaScript 的Date构造函数太迷惑了。。。

    1 new Date(2021,0,1,0,0,0,0) ===> Fri Jan 01 2021 00:00:00 GMT+0800 (中国标准时间) 2 new Date(2021,1,1, ...

  8. linux-RHEL7.0 —— 《Linux就该这么学》阅读笔记

    目录 linux-RHEL7.0 安装部署 修改root密码 RPM(红帽软件包管理器) YUM(软件仓库) Systemd初始化进程 总结 linux命令 帮助命令 man 系统工作命令 echo ...

  9. 安装vue.js的方法

    一.安装nodejs环境,可以再nodejs官网下载相应的版本安装在自己电脑: 一般国内需要切换npm到国内淘宝环境,安装好nodejs之后切换国内淘宝镜像就能使用国内的npm包(npm instal ...

  10. Python入门-import导入模块功能

    1.啥是模块 模块(module):用来实现或者多个功能的Python代码,(包含变量.函数.类),本质就是*.py后缀文件. 包(package):定义了一个由模块和子包组成的Python应用程序执 ...