bilinear pooling

一、双线性汇合的计算过程:

第一步,计算Gram 矩阵:

对于一组H×W×D的feature maps,$oldsymbol{x}_{i} in mathbb{R}^{D}$是图像的深度描述,其中$1 leq i leq H W$。双线性汇合双线性汇合是计算深度描述向量的格拉姆矩阵(Gram matrix),其中$oldsymbol{G} in mathbb{R}^{D imes D}$。

egin{equation}
oldsymbol{G} :=frac{1}{H W} sum_{i=1}^{H W} oldsymbol{x}_{i} oldsymbol{x}_{i}^{ op}
end{equation}

如果 不在整张图里面求取一个均值,思考一个像素点更容易理解双线性汇合。

把$x_{1}$作为列向量,$x_{1}^{T}$就是行向量,这样相乘就是一个D×D的矩阵。

从数学运算上思考上面的格拉姆矩阵,相当于是这么算的,将每个feature map展开为一维向量的形式,格拉姆矩阵中的一个值就是两个feature map向量【1,HW】与【HW,1】的乘积再除上HW。而综合来看就是【D,HW】与【HW,D】的矩阵乘积除以HW。

第二步,将格拉姆矩阵展成向量:

egin{equation}
oldsymbol{s} :=operatorname{vec} oldsymbol{G} in mathbb{R}^{D^{2}}
end{equation}

第三步,进行规范化:

egin{equation}
s_{k} leftarrow operatorname{sign} s_{k} sqrt{left|s_{k} ight|}, s leftarrow frac{s}{|s|}
end{equation}

(这个地方没有明白是如何计算的?)

二、延申与扩展

 协方差矩阵的定义:

egin{equation}
mathbf{Sigma} :=frac{1}{H W} sum_{i=1}^{H W}left(oldsymbol{x}_{i}-oldsymbol{mu} ight)left(oldsymbol{x}_{i}-oldsymbol{mu} ight)^{ op}=frac{1}{H W} oldsymbol{X} ilde{oldsymbol{I}} oldsymbol{X}^{ op}
end{equation}

其中:

egin{equation}
oldsymbol{mu} :=frac{1}{H W} sum_{i=1}^{H W} oldsymbol{x}_{i}
end{equation}

egin{equation}
ilde{oldsymbol{I}} :=oldsymbol{I}-frac{1}{H W} mathbf{1} mathbf{1}^{ op} in mathbb{R}^{H W imes H W}
end{equation}

(这个地方没有明白是如何计算的?)

原文地址:https://www.cnblogs.com/yanxingang/p/10771624.html