看完这篇文章我的内心是崩溃的…… 因为是第一次接触多模态深度学习,所以去搜索了解了一些基本的概念,然后在千辛万苦弄懂理解了他的方法之后,发现和之前的蒸馏文章 Fitnets:Hints for Thin Deep Nets 提出的方法是完全一样的,就是换了种表达而已…… 看了下两篇文章的投稿分别是 2015 年的 ICLR 和 CVPR,行吧……
多模态深度学习
要理解这个概念,首先要知道什么是 “模态”。模态是指某种类型的信息,或者是该信息的表示,例如文字、语言、声音、图形等。图像的模态也可以有很多种,例如 RGB 图像、深度图像、航拍图像、红外图像等。为了让机器更好的理解这个世界,他必须要能学习和处理这些模态的信息。多模态机器学习就是指建立模型使机器从多模态中学习各个模态的信息,并且实现各个模态的信息的交流和转换。
Supervision Transfer
这里首先介绍一下深度图像,我们从图中可以看到,它是由一块一块的颜色组成的,这些不同的颜色代表了这个位置的东西距离我看过去这个视点的远近。不同于 ImageNet,这一类的图像通常是缺乏标签的,因此无法直接在这些图像上做有监督的训练。这篇文章所提出的方法就是说,我可以从 RGB 图像上训练好一个模型,然后我去学习他对输入图像的一个 rich representation (蒸馏中的知识)
文章里用了很多的假设和数学记号,但其实整个过程下来和之前的蒸馏 Hint 那篇文章的方法是完全一致的,我们看一下他的具体算法流程:
在 RGB 图像上进行充分的训练直至达到收敛状态得到模型 L
取 L 中间层的输出并与模型 U 中间层的输出计算损失
这里因为中间层的输出可能不一致,需要使用一个卷积层将 U 的中间层输出 resize 成和 L 中间层输出一致
损失函数的选择在进行了不同的尝试后作者选取了 L2 损失
对于中间层的选取,作者使用 AlexNet 的第二个池化层
根据步骤 2 得到的损失反向传播训练 U 的前半段网络
在 depth 图像上进行训练直至模型 U 达到收敛状态
实验
这里对其对比的方法 [15] 做一个简单的说明(其实我也没仔细看),这篇文章是用其提出的某种方法提取了 RGB 和 depth 图像的特征,并将两部分一起传入 SVM 中做目标检测。此外 [15] 的作者还提出一种泛化的 Fast R-CNN 做法,具体是先用 Fast R-CNN 在 RGB 图像上训练,然后作者用某种方法对 depth 图像进行处理变成 HHA 图像(可以理解为与 RGB 更近似),并将之前训练好的模型在 HHA 图像上进行微调。
可以看到仅对于其参考的方法的话,作者的方法有了很大程度提升