一. 前言
-
这是一篇解读论文的博客,论文标题为:Heterogeneous Non-Local Fusion for Multimodal Activity Recognition
-
其中涉及到的知识点有:
- 模态融合(视频信息与传感器信息)
- Non-Local神经网络
- 活动识别
二. 概述
- 这篇文章是做活动识别的,采用的方法是模态融合的方法,融合的信号源有视频信号和传感器信号
- 其中创新点是对Non-Local神经网络做出了一些创新,使得其能够对异构信号源进行融合
三. Local神经网络
- Local神经网络的例子
- 在讲Non-Local之前,很有必要讲一下什么是Local神经网络,因为它们是相对而言的
- 举两个深度学习领域的典型例子:CNN网络处理图片、RNN网络进行机器翻译
- CNN网络处理图片
- 从上图可以看到,在做卷积和池化等计算时,是对图片一个个局部进行计算(其实是为了提取有效的特征);当filter是3x3的大小时,那么这时计算的就是图片中3x3的9个像素的大小
- 所以,CNN网络为什么是Local的体现在不能一下子对整个图片进行计算,而是对图片每个局部进行特征提取
-
RNN网络进行机器翻译
机器翻译
- 从上图可以看到,机器翻译时输入的是一个一个单词,然后将上一个单词计算后的输出作为下一个的输入,来找到单词之间的联系(也叫远程依赖)
- 从这个处理过程可以看到,RNN网络是一个一个单词的计算,而不是一下子计算整个语句,输出翻译结果,RNN网络属于Local神经网络体现在这里
四. Non-Local神经网络
- 什么是Non-Local神经网络?
- 了解了什么是Local的概念之后,Non-Local的概念其实就是相对的,也就是说,它可以处理全局的信息,而不是对局部进行处理
-
用图片进行解释
Non-Local
- 图片截取自文章:Non-local Neural Networks
- 做的工作是对视频信号进行处理,从而进行视频分类
- 首先,这是一个视频的四个帧,其中是第一帧中的一个位置(像素点);会发现这个位置不仅关联了本图片的其他位置,还关联了其他帧的位置(图片中只画出了一部分关联性较强的位置),这也是Non-Local的体现,因为这个网络是考量全局的
-
用公式进行解释
Non-Local公式
- 变量代表的意义:是输入信号,和在前面的图片上可以看到,是图片上两个不同的位置(可以是同一帧图片,也可以是不同帧图片),然后和下标其实是位置的index,可以简单理解为位置的编号;是输出结果
- 函数的意义:函数用来计算位置和所有位置之间的关系,计算结果是一个标量(即常量,相对于矢量的一种说法),Non-Local其实就体现在这里是所有位置;函数计算输入信号在位置的representation,是一个简单的线性函数;其中是用来标准化的(就是控制输出的的值的大小,没有实际的意义)
- 特点:这里其实能看出Non-Local网络的其中一个特点:可以计算时空信息,计算同一张图片的两个不同位置的联系时体现空间,计算不同图片(两帧之间)的两个不同位置时体现时间,可以同时计算所以体现了时空特性,所以Non-Local可以很好的应用于视频的信息计算
- 总结:通过对公式的各部分进行分析,可以看到其实质是考量不同位置之间的关系;换句话说,若某个位置跟其他位置关系密切,那么说明这个位置是很重要的,我们从这个位置就能得出很多的信息,那么就可以赋予更大的权重(Enforced by representations from all other locations)
五. Non-Local Block
- Non-Local Block其实是对Non-Local神经网络的一个封装
- 如下图所示,会发现Non-Local Block的一个很重要的特点:输入的张量与输出的张量维度是一样的,所以Non-Local Block可以很轻易的嵌入其他网络
block
六.模态融合
- 前言
-
基于以上对Non-Local Block的了解,可以看到输入是同一个张量,也就是只有一种信号源;那么如果这里输入的是不同的张量和,就实现了模态的融合
-
当然,这需要解决一些问题,比如这里张量的维度不再一样了,怎么才能进行不同维度张量的计算
- 用公式进行解释
-
这里把前面的换成即可,但是意义上也发生了一些改变
-
变量代表的意义:是第一个模态的信号,是第二个模态的信号,不再是位置的编号,而是信号的dimensional index(维度的编号),是信号的dimensional index;是输出结果
-
函数的意义:函数用来计算和之间的关系,函数计算输入信号在的representation,是一个简单的线性函数,同时也maps into the same embedding space,意思就是调整维度大小(通过卷积从M调到K);还是用来标准化的
-
关键点:可以看到同时输入和的只有函数,所以关键在函数,文中指出只需要将两个模态的输入信号的channel dimensions调至同样大小即可运算,这也是这篇文章最主要的问题;比如张量是𝐷1 × 𝐷2 × ... × 𝐷𝑝 × 𝑁,张量是𝑆1 × 𝑆2 × ... × 𝑆𝑞 ×𝑀,只需要和的大小相同即可
-
详解:能计算的原因其实是利用了张量的特性;举个例子,二维张量是一个矩阵的形式,3X2大小的矩阵与2X4大小的矩阵能相乘的条件是第一个矩阵的列与第二个矩阵的行相同;所以张量相乘需要第一个张量最后一个维度与第二个张量第一个维度相同(如下图)
-
总结:至此可以总结一下该block的所有特性
- 首先,可以计算时空信息
- 其次,输出维度与维度一致,可嵌入其他网络
- 最后,其实际作用是通过来加强的特征学习
模态融合
七.一些扩展
-
文中给出了三种不同的模型,实际想考量的分别是:以传感器为主要信息源,视频为辅的效果;以视频为主要信息源,传感器为辅的效果;对称模型的效果,也就是两种模态所起的作用是相同的
image
实验部分略
网友评论