点上方计算机视觉联盟获取更多干货

仅作学术分享,不代表本公众号立场,侵权联系删除

转载于:作者丨rainforest wang@知乎(已授权)

来源丨https://zhuanlan.zhihu.com/p/344953635

编辑丨极市平台

985人工智能博士笔记推荐

周志华《机器学习》手推笔记正式开源!附pdf下载链接,Github2500星!

本文主要介绍我们刚刚被_IEEE Transactions on Pattern Analysis and Machine Intelligence_ (T-PAMI)录用的一篇文章:Regularizing Deep Networks with Semantic Data Augmentation(https://arxiv.org/abs/2007.10538)。其会议版本发表在NeurIPS 2019:https://arxiv.org/abs/1909.12220。代码和预训练模型已开源:https://github.com/blackfeather-wang/ISDA-for-Deep-Networks。

在计算机视觉任务中,数据扩增是一种基于较少数据、产生大量训练样本,进而提升模型性能的有效方法。传统数据扩增方法主要借助于图像域的翻转、平移、旋转等简单变换,如图1中第一行所示。我们的工作则提出了一种隐式语义数据扩增算法:ISDA,意在实现对样本进行更为「高级」的、「语义」层面的变换,例如改变物体的背景、颜色、视角等,如图1中第二行所示,注意这些变换并不改变任务标签。具体而言,ISDA具有几个重要的特点:

  1. 与传统数据扩增方法高度互补,有效地增进扩增多样性和进一步提升性能

  2. 巧妙地利用深度神经网络长于学习线性化表征的性质,在特征空间完成扩增过程,无需训练任何辅助生成模型(如GAN等),几乎不引入任何额外计算或时间开销

  3. 直接优化无穷扩增样本期望损失的一个上界,最终形式仅为一个全新的损失函数,简单易用,便于实现

  4. 可以广泛应用于全监督、半监督图像识别、语义分割等视觉任务,在ImageNet、Cityscapes等较大规模的数据集上效果比较明显

图1:传统数据扩增与语义数据扩增的比较

1. Introduction (研究动机及简介)

数据扩增是一种非常有效的提升深度学习模型泛化性能的方法,一般而言,我们会在输入空间进行一些特定的变换,以基于有限的数据产生大量的样本用于训练,如图2中对汽车图像进行旋转左右翻转放缩裁剪等。其效果往往非常显著,例如,在图2右侧柱状图中,我们展示了在相同的实验设置(优化器、训练时长等)下,在 CIFAR 图像识别数据集上,是否进行数据扩增所导致的性能差异。在 CIFAR-10 数据集上,测试误差从 13.6% 降至 6.4%;在 CIFAR-100 数据集上,测试误差从 44% 降至 27%。

图2:传统数据扩增简介

本质上,数据扩增的效果来源于促进模型对于我们定义的这些变换的不变性。然而,从生物体的角度出发,视觉的不变性并不仅限于简单的几何变换,而是更多地体现在更为高级的语义层面。例如在图3中,当我们改变汽车的颜色、视角和背景时,我们仍然可以辨识出,这是一辆汽车。这就启发我们:能不能将这些不改变类别主体的语义变换引入到数据扩增中?

图3:语义数据扩增简介

那么,如何实现这样的语义数据扩增呢?显然,一个最简单的方法就是在数据集上训练一个或多个生成模型,如GAN,去捕捉不同类别的语义分布,再从中得到大量扩增后的样本,但这样做有几个明显的弊端:(1)这一方法比较复杂,训练GAN需要设计特定的模型和配套算法,实现起来比较困难;(2)时间和计算开销较大,一方面,训练GAN需要消耗大量额外的时间和计算资源,另一方面,将GAN应用于产生扩增样本将引入额外的推理开销,并可能减慢主要模型的训练;(3)根据我们的实验结果,这一方法效果比较有限(关于这一点的详情,请参见我们的paper,简而言之,GAN的训练同样依赖于比较多的数据,于是有一个悖论:数据少->GAN难以训练->扩增效果不好;数据多->虽然GAN可以训练好->但是与直接用这些数据训练模型相比,GAN难以提供超出数据集范畴的信息,效果有限)。

图4:基于生成模型的语义数据扩增

如何更简单高效的实现我们所希望的语义变换呢?事实上,我们可以借助卷积神经网络的一个非常有趣的性质:之前的研究工作证明,由于我们往往用线性分类器约束网络的输出,深度网络的特征空间往往是线性化的,输入空间中不同样本之间复杂的语义关系倾向于表现为其对应深度特征之间的简单空间线性关系。换言之,深度特征空间中的一些方向是对应于特定语义变换的[1][2][3]。以Deep Feature Interpolation[1]为例(图5),若我们任意收集一定数量蓝色汽车和红色汽车的图片,取得前者深度特征均值指向后者深度特征均值的向量,则这一向量就代表了“将汽车的颜色由蓝色变为红色”这一语义变换。对于任意一张全新的蓝色汽车图片,我们将其深度特征沿这一方向平移后,就可以得到将这辆汽车的颜色换为红色后,所得图片对应的深度特征(这一方法的合理性证明自,此特征可以以特定方式映射回图像空间[1])。

图5:借助深度特征空间的图像语义变换 —— Deep Feature Interpolation

我们的工作受到了这一现象的启发,在深度特征空间中,我们为训练样本寻找改变颜色、视角、动作和背景不影响类别标签语义变换所对应的方向,通过将训练数据的深度特征在这些方向上平移,低成本地实现多样化语义数据扩增,以弥补传统扩增方法在语义不变性上的不足。

2. Method (方法详述)

为了实现前文所述的目标,一个显而易见的问题是:如何在深度特征空间中寻找这些“有意义的语义方向”?Deep Feature Interpolation[1]中所采用的的方法是人工收集对应于具体变换的特定数据,再对语义方向进行标注。显然,这一思路是不适用于数据扩增的,其一,对于每一类别甚至每一样本,可行的语义方向都是有所不同的,对每一变换人工收集数据成本巨大;其二,可能的语义变换数量极多,通过预先定义、人工寻找的方只能找到非常有限的少数方向

为了解决这两点不足,一个可能的选择是:通过随机采样得到扩增所需的语义方向。这样一方面节省了人工标注的开销,另一方面可以保证语义方向的在特征空间中连续分布,发现更多潜在的语义方向,从而提升扩增的多样性。但如此一来,采样的方式就变得尤为重要,考虑到特征空间维度极高(例如ResNet-50在ImageNet上产生2048维的特征空间,即便以二值化的假设近似,可能的取值也有  种),若完全随机采样,得到的语义方向极有可能是没有任何意义的,如图6所示,将汽车的图片沿“飞翔”或是“变老”的方向平移是完全没有意义的。

图6:通过随机采样寻找语义方向

那么,如何设计合适的采样方法呢?我们的工作巧妙地利用了已有的训练数据。具体而言,每一类别的样本都是有其类内特征分布的,实际上这种数据分布隐含了这类数据可能变化的方向。为了说明这一点,我们首先考虑下面这一个例子(图7)。“鸟”这一类的样本在“飞翔”这一方向上具有较大的方差,因为训练数据中同时包含“飞翔”和“不飞翔”的鸟,相对而言,其在“变老”这一方向上方差几乎为0,因为数据中不可能存在“老”或“年轻”的鸟。同理,数据中存在“老”或“年轻”的人,而不存在“飞翔”的人,因此“人”这一类的样本在“变老”这一方向上应当有较大的方差,在“飞翔”这一方向上方差几乎为0。总而言之,在多维空间中,我们可以利用类内特征分布刻画某类图像可能在哪些方向上有语义的变化

图7:类内深度特征分布

出于这一点,我们通过统计每一类别的类内协方差矩阵,为每一类别构建了一个零均值的高斯分布,进而从中采样出有意义的语义变换方向,用于各自类别内的数据扩增,以此来近似手工标注的过程,以取得正确性、高效性、多样性的良好权衡,其示意图如图8所示,关于具体的技术细节(例如协方差估计方法),请参阅我们的paper。

图8:基于类内分布的高斯采样

在数学上讲,给定第  个样本对应的深度特征  ,其扩增后的形式应当是一个以 为均值的正态分布随机变量 :

图9:语义数据扩增的数学形式

其中  为一常数。给定这一形式后,一个来源于传统数据扩增的自然思路是从随机变量 的分布中采样  次,优化其平均损失:

其中  为样本数目, 为 对应的标签, 为网络最后一线性分类层的参数,为类别数目, 为网络参数。但事实上, 较大、样本数目较多、特征空间维度较高时,采样  次并计算损失所引入的额外训练开销同样是不容小视的。因此,我们考虑采样无穷次,即  的情况

此时,我们实质上得到了在扩增分布上的期望损失。对于传统数据扩增方法而言,这一期望损失是难以计算的。但是,由于我们的扩增操作是在特征空间完成的,在数学上,我们可以方便的对上式进行处理。通过利用 Jensen 不等式,我们可以得到其一个易于计算的上界

通过将这一上界作为我们的实际优化目标,我们得到了一个简单易行且高效的语义数据扩增算法,如下所示:

我们的算法被称为Implicit Semantic Data Augmentation(ISDA,隐式语义数据扩增) ,其最有趣的一点是,我们从语义数据扩增的角度出发,得到的算法最终却可以归化为一个全新的损失函数。 除标准的图像识别外,本算法也可应用于任何使用Soft-Max交叉熵损失的视觉任务,例如图像分割等。

事实上,除了上述介绍的基本的监督学习情境外,ISDA也可以在一致性正则(consistency regularization)的思路下拓展至半监督学习,其最终算法同样体现为一个全新的损失函数(期望KL散度的一个上界),且同样可以与现有方法实现很好的互补。关于这一点的细节,由于空间所限不在此赘述,请参阅我们的paper~

3. Experiments (实验结果)

  • ImageNet 图像识别,在ResNet系列网络上的提升效果普遍在1%左右

图10:ImageNet 图像识别效果
  • 与效果较佳的传统数据扩增方法有效互补(RA、AA分别代表RandAugment[4]和AutoAugment[5])

图11:与 state-of-the-art 的传统数据扩增方法有效互补
  • 半监督学习实际效果,可在现有方法基础上有效提升

图12:半监督学习的实验结果
  • Cityscapes 语义分割,可以在PSPNet[6]和DeepLab-V3[7]的基础上将mIOU提升1%以上

图13:Cityscapes 语义分割的实验结果
  • 为了证实我们的确实现了语义数据扩增,我们利用BigGAN[8]在ImageNet上进行了可视化实验,其结果如下图所示。其中 Augmented 中的图片为ISDA扩增的结果,Randomly Generated 中的图片为BigGAN随机生成的图片。可以看到,ISDA所改变的语义包括狗的动作、鸟的背景、帆船的远近及位置、车的视角、热气球的颜色等,并不改变类别标签,且可以显著地看出,这些扩增得到的样本分布与原图片更为接近,而与类内随机样本差距较大。这些观察与我们前文所述的假设是高度吻合的。

图14:ImageNet上的可视化结果

4. Conclusion (结语)

最后总结一下,在我个人看来,这项工作的主要价值在于其为数据扩增算法的设计带来了三个启发性的思路:(1)关注语义层面 的数据扩增;(2)利用特征空间的性质,对深度特征进行数据扩增;(3)从期望损失的形式出发,向大家展示了数据扩增不一定是随机化的方法,亦可以体现为一个确定的形式,例如损失函数。

欢迎大家follow我们的工作~。

@inproceedings{NIPS2019_9426,title = {Implicit Semantic Data Augmentation for Deep Networks},author = {Wang, Yulin and Pan, Xuran and Song, Shiji and Zhang, Hong and Huang, Gao and Wu, Cheng},booktitle = {Advances in Neural Information Processing Systems (NeurIPS)},pages = {12635--12644},year = {2019},
}@article{wang2021regularizing,title = {Regularizing deep networks with semantic data augmentation},author = {Wang, Yulin and Huang, Gao and Song, Shiji and Pan, Xuran and Xia, Yitong and Wu, Cheng},journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence},year = {2021}
}

如有任何问题,欢迎留言或者给我发邮件,附上我的主页链接

www.rainforest-wang.cool/www.rainforest-wang.cool

参考

  1. ^abcdUpchurch P, Gardner J, Pleiss G, et al. Deep feature interpolation for image content changes[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 7064-7073.

  2. ^Bengio Y, Mesnil G, Dauphin Y, et al. Better mixing via deep representations[C]//International conference on machine learning. 2013: 552-560.

  3. ^Li M, Zuo W, Zhang D. Convolutional network for attribute-driven and identity-preserving human face generation[J]. arXiv preprint arXiv:1608.06434, 2016.

  4. ^Cubuk E D, Zoph B, Shlens J, et al. Randaugment: Practical automated data augmentation with a reduced search space[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops. 2020: 702-703.

  5. ^Cubuk E D, Zoph B, Mane D, et al. Autoaugment: Learning augmentation policies from data[J]. arXiv preprint arXiv:1805.09501, 2018.

  6. ^Zhao H, Shi J, Qi X, et al. Pyramid scene parsing network[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 2881-2890.

  7. ^Chen L C, Papandreou G, Schroff F, et al. Rethinking atrous convolution for semantic image segmentation[J]. arXiv preprint arXiv:1706.05587, 2017.

  8. ^https://github.com/ajbrock/BigGAN-PyTorch

-------------------

END

--------------------

我是王博Kings,985AI博士,华为云专家、CSDN博客专家(人工智能领域优质作者)。单个AI开源项目现在已经获得了2100+标星。现在在做AI相关内容,欢迎一起交流学习、生活各方面的问题,一起加油进步!

我们微信交流群涵盖以下方向(但并不局限于以下内容):人工智能,计算机视觉,自然语言处理,目标检测,语义分割,自动驾驶,GAN,强化学习,SLAM,人脸检测,最新算法,最新论文,OpenCV,TensorFlow,PyTorch,开源框架,学习方法...

这是我的私人微信,位置有限,一起进步!

王博的公众号,欢迎关注,干货多多

手推笔记:

思维导图  |  “模型评估与选择”  |  “线性模型”  |  “决策树”  |  “神经网络”  |  支持向量机(上)  |  支持向量机(下)  |  贝叶斯分类(上)  |  贝叶斯分类(下)  |  集成学习(上)  |  集成学习(下)  |  聚类  |  降维与度量学习  |  稀疏学习  |  计算学习理论  |  半监督学习  |  概率图模型  |  规则学习

增长见识:

博士毕业去高校难度大吗?  |  研读论文有哪些经验之谈?  |  聊聊跳槽这件事儿  |  聊聊互联网工资收入的组成  |  机器学习硕士、博士如何自救?  |  聊聊Top2计算机博士2021年就业选择  |  非科班出身怎么转行计算机?  |  有哪些相见恨晚的科研经验?  |  经验 | 计算机专业科班出身如何提高自己编程能力?  |  博士如何高效率阅读文献  |  有哪些越早知道越好的人生经验?  |

其他学习笔记:

PyTorch张量Tensor  |  卷积神经网络CNN的架构  |  深度学习语义分割  |  深入理解Transformer  |  Scaled-YOLOv4!  |  PyTorch安装及入门  |  PyTorch神经网络箱  |  Numpy基础  |  10篇图像分类  |  CVPR 2020目标检测  |  神经网络的可视化解释  |  YOLOv4全文解读与翻译总结  |

点分享

点收藏

点点赞

点在看

收藏 | 损失函数实现数据扩增相关推荐

  1. T-PAMI 2021 | 换个损失函数就能实现数据扩增?

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨rainforest wang@知乎(已授权) 来源丨http ...

  2. 【天池赛事】零基础入门语义分割-地表建筑物识别 Task2:数据扩增方法

    [天池赛事]零基础入门语义分割-地表建筑物识别 Task1:赛题理解与 baseline(3 天) – 学习主题:理解赛题内容解题流程 – 学习内容:赛题理解.数据读取.比赛 baseline 构建 ...

  3. 数据读取与数据扩增方法

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:樊亮.黄星源.Datawhale优秀学习者 本文对图像数据读取及图 ...

  4. 图像数据读取及数据扩增方法

    Datawhale干货 作者:王程伟,Datawhale成员 本文为干货知识+竞赛实践系列分享,旨在理论与实践结合,从学习到项目实践.(零基础入门系列:数据挖掘/cv/nlp/金融风控/推荐系统等,持 ...

  5. Kaggle知识点:数据扩增方法

    在Kaggle视觉竞赛中,数据扩增(Data Augmentation)是不可少的环节.数据扩增可以增加训练集的样本,同时也可以有效环节模型过拟合的情况,也可以给模型带来的更强的泛化能力.本文将全面介 ...

  6. OpenCV:Adaboost训练时数据扩增

    更准确的模型需要更多的数据,对于传统非神经网络机器学习方法,不同的特征需要有各自相符合的数据扩增方法. 1.   在使用opencv_traincascade.exe 过程中,图像读取在 classi ...

  7. 天池-街景字符编码识别2-数据读取与数据扩增

    本此使用[定长字符识别]思路来构建模型 赛题地址 零基础入门CV赛事- 街景字符编码识别 关于更详细的数据预处理可=可以参考我的另一篇博文: 卷积神经网络性能优化(提高准确率) 2 数据读取与数据扩增 ...

  8. 零基础入门语义分割——Task2 数据扩增

    文章目录 一.OpenCV数据扩增 二.albumentations数据扩增 三.Pytorch数据读取 数据扩增方法:数据扩增是一种有效的正则化方法,可以防止模型过拟合,在深度学习模型的训练过程中应 ...

  9. Datawhale 零基础入门CV赛事-Task2 数据读取与数据扩增

    文章目录 数据读取 图像读取 1.pillow 2.opencv 数据读取 数据扩增 数据读取 导入需要的包以及文件路径 import json, glob import numpy as np fr ...

最新文章

  1. 解密时刻:机器学习能力太强好吗?
  2. maven的依赖范围_Maven依赖范围
  3. 解决MySQL server has gone away
  4. Vue+Openlayers+Draw实现画笔切换功能,切换画笔为点、线、面
  5. 利用管道实现进程间通信
  6. charles 安装 ssl_最全面的解决Charles手机抓包的证书问题(步骤非常详细)
  7. 华硕z97不识别m2固态_华硕H110T +i3 8100T 组装黑苹果Mac mini安装教程
  8. sqlserver 字符转数值_PLC根据寄存器数值查询MySQL/SQLServer数据库,将数据到寄存器...
  9. 1个ieee1394端口_5G新在哪儿(6)?-天线端口的故事
  10. ServiceLoader用法demo
  11. Mac备份工具:Carbon Copy Cloner Mac支持m1
  12. 1001.A+B Format
  13. matlab机器人工具箱puma560模型学习
  14. excel几个数相加等于某个数_EXCEL如何求出哪几个单元格里的数字之和等于某个特定值...
  15. JavaWeb中的四大作用域
  16. 【智能优化算法-正弦余弦算法】基于反向正弦余弦算法求解高维优化问题附matlab代码
  17. uniapp 如何将输入值转成大写
  18. 沃尔玛全球最便宜的10美元智能机评测报告
  19. [转]软件开发项目计划编制过程
  20. NSSCTF web题记录

热门文章

  1. c语言 printf_C语言(4) 屏幕输出指令printf
  2. activemq linux教程,Linux及Windows下ActiveMQ下载与安装教程
  3. java导出excel_Hutool Java 工具类库导出 Excel,超级简单!
  4. 【script】python 中文汉字与url的转换
  5. python 安装包时出现红字_你好啊!Python,初次见面,多多指教
  6. android选项菜单xml,使用 XML 定义选项菜单
  7. client netty 主动发数据_Netty服务器无限循环给客户端发送数据
  8. python asyncio_Python 中的异步编程:Asyncio
  9. html5页面值在另一个页面反显,2009年上海市高校计算机等级考试(一级A卷)及理论题参考答案...
  10. Hibernate笔记2