人工标注数据集中普遍存在噪声,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. 说说has a与is a的区别?

    is a是典型的"一般到特殊"的关系,也就是典型的继承关系.例如Apple is a Fruit.那么Apple是一种特殊的Fruit,也就是说Apple继承了Fruit. has ...

  2. 什么是 YAML?

    YAML 是一种人类可读的数据序列化语言.它通常用于配置文件. 与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML 文件就更加 结构化,而且更少混淆.可以看出 YAML 具有分层配置数据 ...

  3. Dubbo 必须依赖的包有哪些?

    Dubbo 必须依赖 JDK,其他为可选.

  4. Vue手动集成less预编译器

    less是一门css预处理语言,简单的说就是在css的基础上提升为可编程性的预编译器 需要在项目中安装 less ,less-loader 2个插件,语法为:npm i -D less less-lo ...

  5. 什么是JDK?什么是JRE?说说它们之间的区别?

     JDK (Java Development Kit)  JDK是整个Java的核心,包括了Java运行环境JRE(Java Runtime Envirnment),一堆Java工具(javac,ja ...

  6. 解释 AOP?

    面向切面的编程,或 AOP, 是一种编程技术,允许程序模块化横向切割关注点,或横切典型的责任划分,如日志和事务管理.

  7. 学习zabbix(四)

    一. 监控知识 1.硬件监控: 机房巡检,远程控制卡,IPMI 2.系统监控: cpu负载查看(指标):uptime(低于3),top(30%-70%), vmstat, mpstat 内存监控: f ...

  8. 利用Matlab快速绘制栅格地图

    代码演示 % 基于栅格地图的机器人路径规划算法 % 第1节:利用Matlab快速绘制栅格地图 clc clear close all %% 构建颜色MAP图 cmap = [1 1 1; ... % ...

  9. Pandas怎样新增数据列

    Pandas怎样新增数据列? 在进行数据分析时,经常需要按照一定条件创建新的数据列,然后进行进一步分析. 直接赋值 df.apply方法 df.assign方法 按条件选择分组分别赋值 0.读取csv ...

  10. 使用Node.js版本管理器

    使用Node.js版本管理器 完全卸载Node.js 清除Package缓存:npm cache clean --force 卸载Node.js:wmic product where caption= ...