bilinear pooling


一、雙線性匯合的計算過程:

第一步,計算Gram 矩陣:

對於一組H×W×D的feature maps,$\boldsymbol{x}_{i} \in \mathbb{R}^{D}$是圖像的深度描述,其中$1 \leq i \leq H W$。雙線性匯合雙線性匯合是計算深度描述向量的格拉姆矩陣(Gram matrix),其中$\boldsymbol{G} \in \mathbb{R}^{D \times D}$。

\begin{equation}
\boldsymbol{G} :=\frac{1}{H W} \sum_{i=1}^{H W} \boldsymbol{x}_{i} \boldsymbol{x}_{i}^{\top}
\end{equation}

如果 不在整張圖里面求取一個均值,思考一個像素點更容易理解雙線性匯合。

把$x_{1}$作為列向量,$x_{1}^{T}$就是行向量,這樣相乘就是一個D×D的矩陣。

從數學運算上思考上面的格拉姆矩陣,相當於是這么算的,將每個feature map展開為一維向量的形式,格拉姆矩陣中的一個值就是兩個feature map向量【1,HW】與【HW,1】的乘積再除上HW。而綜合來看就是【D,HW】與【HW,D】的矩陣乘積除以HW。

第二步,將格拉姆矩陣展成向量:

\begin{equation}
\boldsymbol{s} :=\operatorname{vec} \boldsymbol{G} \in \mathbb{R}^{D^{2}}
\end{equation}

第三步,進行規范化:

\begin{equation}
s_{k} \leftarrow \operatorname{sign} s_{k} \sqrt{\left|s_{k}\right|}, s \leftarrow \frac{s}{\|s\|}
\end{equation}

(這個地方沒有明白是如何計算的?)

二、延申與擴展

 協方差矩陣的定義:

\begin{equation}
\mathbf{\Sigma} :=\frac{1}{H W} \sum_{i=1}^{H W}\left(\boldsymbol{x}_{i}-\boldsymbol{\mu}\right)\left(\boldsymbol{x}_{i}-\boldsymbol{\mu}\right)^{\top}=\frac{1}{H W} \boldsymbol{X} \tilde{\boldsymbol{I}} \boldsymbol{X}^{\top}
\end{equation}

其中:

\begin{equation}
\boldsymbol{\mu} :=\frac{1}{H W} \sum_{i=1}^{H W} \boldsymbol{x}_{i}
\end{equation}

\begin{equation}
\tilde{\boldsymbol{I}} :=\boldsymbol{I}-\frac{1}{H W} \mathbf{1} \mathbf{1}^{\top} \in \mathbb{R}^{H W \times H W}
\end{equation}

(這個地方沒有明白是如何計算的?)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM