model_insight
模型构建
最近 SE-net, Non-local, GLoRe, GC-net, 的出现,我们开始更多的通过显式的约束来构建网络结构。其实这种通过显式的约束来构建模型的方式,例如通过显式的可变性模块构建空间关系的 Deformable conv.
仿射变换(全局模式,局部模式)
其实在构建网络的时候,我们有很多显式的约束,例如图像空间中物体的仿射变换:
- 多尺度
- 旋转
- 平移
在网络中多尺度,可以被不同大小的卷积核近似模仿,而最近的trident-net,用了共享权值的多尺度网络更合理的解决了多尺度问题。并且最近的octava conv slow-fast 也可以看作一种不同尺度的建模。可变性卷积可以看作是图像空间的仿射变换的拆分。
语义相关性
在构建网络中除了我们关注物体的空间表现形式。我们往往还会关心图像中物体的相互关系,或者是不通层次的语义之间的关系,或者同一层次语义之间关系。那么这里我们就引出了三个我们想要建模的概念:
- 图像中语义的空间关系
- 同一层次的语义之间的关系
- 不同层次的语义之间的关系
这里我们定义一些符号 $f \in R^{c \ast h \ast w}$ 的三维的向量,这里我们对这个原始特征进行变形为 $nf \in R^{c \ast hw}$.
那么图像内部的空间关系的构建,也是是我们所说的 non-local net, 通过枚举图像中所有空间位置之间的相互关系,对相关的特征进行聚合,获得最终的特征表达。大致可以表示为:
$$ff=nf \ast softmax_{c=1}(nf^T \ast nf) +nf$$
那SE_net描述的同一层次的语义相关性,或者也可以认为是注意力机制:
$$ff= \Theta (\max_{c=1}(nf) \times f$$
这里的 $\Theta$ 对通道之间的关系进行建模,以此获得更重要的通道。
在GC-net中,空间的约束并不是non-local,因为non-local的计算量是非常大的,尤其是当特征图的特别大的时候,所以在GC中可以看作一种自注意力机制,有点像CAM之类的东西,并没有对图像中内部关系进行建模。但是这样做的好处就是有效的降低了计算量。
其实在分类问题中,我们应该更深入的思考问题,空间的相关性,和特征的相关性怎样才能更好的被建模。
- 建模什么样的空间相关性?
- 语义之间的相关性怎么建模?被用来干什么?
空间的相关性,被用来做什么?
在视频的理解过程中,空间的相关性一般被用来对相邻帧内部的物体的相关性进行建模的,类似轨迹聚类这种。但是在图像的分类中,空间聚类被用来干什么。从可变性卷积,我们看一看到空间的相关性,很多时候是物体的共生性,也就是同一个物体的不同的part之间的共生性,或者是其他更多语义上的共生性,这种共生性在语义上可能并不具有non-local中的特征相似性。所以对这种建模,更好的方式进行建模。
语义之间的相关性怎么建模?被用来干什么?
在SE_net中,使用的 $\Theta$ 是对通道之间的相关性进行建模的,可是这个相关性是什么呢?
其实并没有很好的回答。那么怎么才能更好的理解这种相关性呢?
同一层次的语义之间的关系,我最先想到的就是 GRAM matrix, bilinear pooling,style transfer中使用作为图像的有效表达。大致可以表示为:
$$ff=nf \ast nf^T$$
这里很好的保存了不同通道之间的相关性,这个和non-local看着十分相似。
假设 1. 相关性大特征对分类更加有效,相当于对细小特征空间的细分,所以应该加强这部分的特征。
假设 2. 相关性大的特征影响了空间的分布,我们应该使得空间更加的均匀,所以应该抑制。
那么我们有了相关性,有了语义的相关性,和两个假设我们应该怎么对这些特征进行建模呢?
$$ff= sigmoid(\Phi \sum_{c=1}(nf \ast nf^T)) \times f$$
或者是
$$ff= (1-sigmoid(\Phi \sum_{c=1}(nf \ast nf^T))) \times f$$
有效性的问题是遏制Gram矩阵模块化的最主要的问题,计算量很大,但是我们可以通过降低resolution来提高效率。