2020 年 9 月 25 日,在由中国科协主办,清华大学计算机科学与技术系、AI TIME 论道承办的《2020 中国科技峰会系列活动青年科学家沙龙——人工智能学术生态与产业创新》上,清华大学自动化系助理教授黄高博士进行了题为《图像数据的语义层扩增方法》的主题报告,黄高博士于 2015 年博士毕业于清华大学,主要的研究方向为深度学习、计算机视觉、强化学习。

图 1:深度神经网络的语义数据扩增

深度学习的成功主要依赖于三个重要的因素:大数据、大计算以及算法模型的创新,这三个要素缺一不可。目前,有大量的研究聚焦于新的模型和算法,而从事硬件和架构相关研究的人员会关注如何把硬件做的更好、并行度更高。相比之下,学术界对大数据的关注热度有所下降,很多人似乎默认我们现在已经拥有大量可用的数据。然而,在实际应用中,真正拥有大量高质量标注数据的场景还是非常少的,人工标注数据的成本十分高昂。

图 2:数据扩增

在标注数据不足的情况下,数据扩增是一种非常有效的提升模型性能的方法。如图 2 所示,在右侧的柱状图中,我们比较了在相同的实验设置(优化器、训练时长等)下在 CIFAR-10/CIFAR-100 数据集上进行数据扩增前后的测试误差,其中蓝色代表未使用数据扩增的实验结果,橙色代表使用数据扩增的实验结果。在 CIFAR-10 数据集上,测试误差从 13.6% 降至 6.4%;在 CIFAR-100 数据集上,测试误差从 44% 降至 27%,模型的性能提升十分显著。相对于深度学习模型和其它方面的优化,数据扩增的有效性举足轻重。

对于图像数据而言,我们可以对其进行一系列变换来实现数据扩增。例如,对于图 2 中的汽车图像,我们可以对原始的汽车图像应用旋转、左右翻转、裁剪、放缩等变换,这并不会改变图像的类别。通过这种方式,我们可以根据一张图像扩展出多张图像,有效地增加训练数据,防止模型的过拟合现象。

图 3:语义数据增强

为了进一步提升数据扩增的效果,我们试图进行更加高级的变换。例如,我们把可以更换汽车的颜色、切换一个观测视角、或者换一个车标,此时它仍然是一辆汽车。然而,相较于前文提到的旋转、翻转、裁剪等简单变换,这类相对「高级」的变换要困难得多,我们将其称为「语义数据增强」。在这里,我们将重点讨论如何实现更好的语义数据增强。

图 4:基于 GAN 的语义数据增强

目前,研究人员已经提出了一些进行语义数据增强的方法。例如,利用所有汽车的图像构建一个数据集,从而形成一个数据分布,其中每一类包含数十到数百张图像。我们可以使用该数据集训练一个对抗生成网络(GAN),并利用训练好的 GAN 生成无穷无尽的汽车图像。然而,基于 GAN 的方法存在诸多弊端:首先,GAN 的训练十分困难。该方法将引入大量额外的计算量,其优化过程也十分不稳定。其次,此类方法对模型性能的提升较为有限。通常,数据集中每个类别的图像大致有数十到数百张,而我们只能针对每一个类别训练一个 GAN。尽管我们也可以使用 Conditional GAN(CGAN)类的方法,但是 GAN 生成的图像质量仍然较差。如果我们使用这样生成的数据训练下游的分类器,只能得到微弱的模型性能提升。

图 5:深度特征插值

因此,我们试图设计更高效的语义数据增强方法。在计算机视觉顶级会议 CVPR 2017 上有一篇论文「Deep feature interpolation for image content changes」中,作者认为经过卷积神经网络的特征提取之后,样本将会在特征空间中被线性化,也就是说,在神经网络的特征空间中每一个方向都代表特定的语义。以人脸图像特征为例,某一个方向可能对应于人脸表情从不笑到笑,另一个方向对应于人脸从戴眼镜到不戴眼镜。这篇文章的作者提出了一种名为「深度特征插值」的方法,如图 5 所示,假设在特征空间中,我们有一些正常人脸、微笑人脸、张嘴笑人脸、戴眼镜人脸的特征,可以沿着红色箭头的方向从微笑人脸的特征变化到张口笑人脸的的特征,该方向就代表张开嘴的语义;类似地,蓝色箭头的方向代表戴眼镜的语义。根据该假设,如果我们将某张普通人脸图像映射到特征空间中,并且将其特征与红色方向的向量相加,再基于语义增强后的特征重构图像,就会得到一个张嘴笑的人脸;同样,如果将普通人脸的特征与蓝色向量相加,就会得到戴眼镜的人脸图像。受到该论文的启发,黄高博士团队试图通过在深度特征空间中将原始图像的特征与一些方向上的向量相加,从而在不改变图像属性和标签的情况下,根据一张图像扩展出多个不同版本的图像,达到数据扩增的目的。

隐式语义数据扩增

图 6:隐式语义数据增强

在论文「Deep feature interpolation for image content changes」中,作者需要手动地在特征空间找出进行「深度特征插值」的方向。举例而言,作者可能会手动收集一些戴眼镜的人脸与不戴眼镜的人脸,找出这两类人脸变化的方向,将该方向上的向量应用到不同的样本上,为不戴眼镜的人脸戴上眼镜。然而,这一过程的工作量巨大,通过人类手动的方式也只能找到非常有限的方向。实际上,人脸、汽车等图像数据可能涉及各种各样的变换,通过手工的方式很难实现多样化的数据扩增。如何实现高效、多样化的数据扩增成为了一个挑战。

图 7:通过采样得到语义方向

为了实现上述目标,一个非常直观的思路是通过随机采样获得这种语义的方向。然而,我们需要明确从哪些方向进行采样,避免这些采样的方向没有实际的意义。例如,对一张人脸图像来说,我们通过采样得到一个方向可以使人脸变老、加上皱纹,这样的变换是有意义的。但是如果在人脸特征上加上飞翔方向的语义则没有任何意义。而如果我们直接在特征空间中进行随机采样,经常会采样得到这种没有意义的方向。

图 8:估计图像的分布

为了解决上述采样过程中的问题,我们试图估计每个类别图像的分布。如图 8 所示,红色样本组成的簇可能对应的图像类别是「鸟」,蓝色簇则对应的图像类别为「人」,实际上这种数据分布隐含了这类数据可能变化的方向。例如,红色的数据点在从左上到右下的方向上有方差,说明该方向上可能存在语义的变化,左上角可能是飞的鸟,右下角可能是站着的鸟,此时从左上到右下的方向是有意义的。类似地,对于蓝色的人脸数据来书哦,从左下到右上的方向可能对人脸图像是有意义的语义方向。在多维空间中,我们可以利用方差矩阵刻画某类图像可能在哪些方向上有语义的变化。因此,在采样过程中,我们并不是在所有方向上随机均衡地进行采样,而是先估计出数据的协同差矩阵,从而捕获每一类数据的方差的变化方向。

图 9:对协方差矩阵的动态估计

为了在训练过程中快速计算方差,黄高博士团队设计了一种在线迭代的计算公式,每当接收一个 mini-batch 的输入数据,我们都会在特征空间中计算出其特征向量,用该向量更新每一类的方差矩阵,最终得到样本的均值和方差。通常,这里的方差矩阵规模不会很大。

图 10:在以原始图像为均值的正态分布上采样

在求得方差后,我们可以对数据点进行有针对性的采样。假设数据的分布为正态分布,我们可以以原始图像的特征为均值,利用求得的协方差矩阵在很多方向上进行采样。通过将采样得到的方向应用到一张图像上,从而利用各种采样得到的方向对某张图像进行语义变换。

图 11:交叉熵损失函数

在求得了变换方向后,接下来我们将考虑如何设计损失函数。如图 11 所示,这是一个常见的交叉熵损失。假设有 N 个训练样本,我们将通过训练来最小化训练损失。在这里,我们通过采样的方式对数据进行了扩增,每次采样了 M 个方向的语义变换,并将其与原来的图像相加,将数据扩增了 M 倍。

图 12:提升优化效率

然而,随着训练集规模的增大,相应的训练开销也会大幅增加,我们需要提升优化的效率。由于原始的 N 个样本被扩增为了 N×M 个副本,我们将 M 设置成无穷,并求出这些样本的期望。尽管很难对期望进行求解,但是我们可以通过 Jensen 不等式求出其易于计算的上界,并且消掉了 M。

图 13:ISDA 等价于最小化一个新的鲁棒损失函数

此时,与进行语义增强变换前一样,我们也只需要最小化 N 个样本的误差。在不用对网络进行改变的情况下,该过程等价于最小化一个新的鲁棒损失函数。

概括起来,我们通过估计每个类别的方差找出可以进行采样的方向,利用该方向上的变换对原始图像进行数据扩增。在对进行了数据扩增后的损失函数进行优化时,为了降低计算开销,我们通过上界可以快速地最小化损失函数。

实验结果

图 14:在 ImageNet 数据集上的图像分类实验结果

为了验证 ISDA 的数据扩增效果,黄高博士团队在多个数据集上进行了对比实验。在分类任务中,ISDA 可以将 ResNet-50 模型在 ImageNet 数据集上的误差率从 23.0% 降低至 21.9%,这个提升在 ImageNet是较为显著的。

图 15:ISDA 在半监督场景下的性能测试

ISDA 在半监督学习任务上的性能提升更为明显。这是因为,半监督学习设定下训练数据相对比较少,通过数据扩增把可以有效增加训练数据量,提升泛化性能。

ISDA 在语义分割任务上也有较好的表现。在基本不增加计算开销的情况下,该方法相较于 Deeplab-V3 在 mIOU 指标上取得了超过 1.5% 的性能提升。

大数据相加_清华大学黄高——图像数据的语义层扩增方法相关推荐

  1. ICLR2021 | 清华大学黄高团队:显存不够?不妨抛弃端到端训练

    智源导读:本文主要介绍清华大学黄高团队被ICLR2021接收的一篇文章:Revisiting Locally Supervised Learning: an Alternative to End-to ...

  2. 图像uri错误啥意思_使用PHP的图像数据URI

    图像uri错误啥意思 If you troll page markup like me, you've no doubt seen the use of data URI's within image ...

  3. 处理大客流量高并发数据通讯_云如何处理高流量网站?

    处理大客流量高并发数据通讯 It is often seen that one of the main benefits of the cloud is its perceived ability t ...

  4. python 读取图片成为一维数组_在OpenCV里图像数据与一维数组转换

    通过读取文件之后,生成的图像数据一般是二维或三维数组,每个数组元素是8位字节大小.有时候从网络里接收到一串数据,它是字节顺序的,比如有30000个字节,想要把它转换为300X100的图像大小,这个怎么 ...

  5. python实现数据可视化_使用Matplotib python实现数据可视化

    python实现数据可视化 I Feel: 我觉得: In today's digital world data has become as important as air. Machines &a ...

  6. 基于plotly数据可视化_如何使用Plotly进行数据可视化

    基于plotly数据可视化 The amount of data in the world is growing every second. From sending a text to clicki ...

  7. 数据多重共线性_多重共线性对您的数据科学项目的影响比您所知道的要多

    数据多重共线性 Multicollinearity is likely far down on a mental list of things to check for, if it is on a ...

  8. 什么事数据科学_如果您想进入数据科学,则必须知道的7件事

    什么事数据科学 No way. No freaking way to enter data science any time soon-That is exactly what I thought a ...

  9. lwip连续发数据卡死_用lwip发送大量数据时,遇到的问题解答记录;

    这两天,师弟在两台电脑上搭建了lwipwin32通信平台,目的是能够不断发送一幅幅图片图像大小为1280*720大小的图片.如果不考虑压缩情况且是256色即1字节,这样大小的一幅图片需要发送大约发送1 ...

  10. keras时间序列数据预测_使用Keras的时间序列数据中的异常检测

    keras时间序列数据预测 Anomaly Detection in time series data provides e-commerce companies, finances the insi ...

最新文章

  1. 2020考研公共课_基础精讲课_管理类联考综合能力 联考逻辑(读书笔记)
  2. PMCAFF《产品经理第一课》第三期开始报名!天团导师再次升级,631培训模式升级...
  3. 数据结构(一)--稀疏数组
  4. 初学ASP.NET 必看
  5. ci框架 mysql 超时时间_mysql 字符集和校验规则( CHARSET amp; COLLATE)
  6. NodeJs实现自定义分享功能,获取微信授权+用户信息
  7. STM32F7xx —— FatFS(W25QXX)
  8. javascript导入EXCEL数据
  9. 【伙伴故事】一盏智能灯,点亮家庭和工业照明的新未来
  10. python字典中的键是什么_在python字典中作为键的对象
  11. python爬虫避免重复数据_No.2﹣Python﹣scan﹣anti-crawler(随机请求头和IP代理)取消链接和重复数据消除,NO2pythonscrapy,反,爬虫,去...
  12. 使用pscp实现Windows 和 Linux服务器间远程拷贝文件
  13. MTK:架构和消息机制(必看)
  14. Moq -.NET的Mocking库
  15. 宁波市中学生计算机程序设计,宁波市第26届中小学生计算机程序设计竞赛初赛试题(小学组)...
  16. VS2017编译SNMP库
  17. vue可以编辑发布多长的视频_VUE做长视频的具体操作步骤_VUE可以调整视频时长吗-如何调整-VUE设置视频分段和时长的完整版教程_9号资讯...
  18. kali 控制安卓手机拍照,查看定位,获取通信录,以及其他
  19. 打印机驱动无法安装到计算机是,打印机后台程序服务没有运行,打印机驱动无法安装,打印机驱动安装失败-中关村在线...
  20. 飞鹅云打印 API_C#

热门文章

  1. Android 使用View绘制文字(DrawText)技术总结
  2. MySQL的启动脚本
  3. 【转】php json_encode中文为空的解决办法
  4. 【设计模式】Iterator设计作业-设计LinkedList的iterator
  5. hibernate+spring+struts集成,并自动生成实体类和DAO层的步奏
  6. 使用canto+w3m实现在控制台上完美阅读RSS
  7. 【鱼眼镜头3】[鱼眼畸变模型]:除法模型(核密度估计径向失真校正方法)
  8. 数据bag中的激光雷达数据和相机数据分割出来
  9. 概率论:均值、标准差、方差、协方差、矩
  10. Knowledge Graph - NLP