解卷積解析


Deconvolution Networks(論文解析)


作者:elfin   資料來源:deconvolution論文



1、簡介

Deconvolution Networks是在AI領域第一次使用Deconvolution的先驅,但是它並沒有提出解卷積層的概念,而是再其下一篇文章中提出(參考其他論文)。兩篇文章的資源參考:


Top  ---  Bottom

2、摘要

​ 除了邊緣原語之外,構建健壯的中低層圖像表示是一個長期存在的目標。許多現有的特征檢測器在空間上聚集邊緣信息,破壞邊緣交叉、平行和對稱等線索。我們提出了一個學習框架,其中捕捉這些中級線索的特征會自發地從圖像數據中出現。我們的方法是基於稀疏約束下的卷積分解,並且是完全無監督的。通過建立這種分解的層次結構,我們可以學習豐富的特征集,這些特征集對於圖像的分析和合成都是一種健壯的圖像表示。


Top  ---  Bottom

3、模型

​ 我們首先考慮應用於圖像的單個解卷積網絡層。解卷積層的輸入為特征圖\(y^{i}\),由\(K_{0}\)個通道組成,分別為通道:\(y_{1}^{i}、y_{2}^{i}、\cdots、y_{K_{0}}^{i}\) 。我們使用\(K_{1}\)個隱特征圖\(z_{k}^{i}\)與過濾器\(f_{k,c}\)的線性和表示這個特征圖的一個通道\(c\)

\[\sum_{k=1}^{K_{1}}z_{k}^{i}\bigoplus f_{k,c}=y_{c}^{i}\qquad(1) \]

此后,除非另有說明,否則符號對應於矩陣。如果\(y_{c}^{i}\)是一個\(N_{r} \times N_{c}\) 圖且過濾器為\(H \times H\) ,則這個隱特征圖的size為\(\left ( N_{r} + H -1 \right )\times \left ( N_{c} + H -1 \right )\) 。但是上面的公式\((1)\)是一個沒有證明的系統,為了得到一個唯一的解,我們在\(z_{k}^{i}\)上引入了一個正則化項來鼓勵潛在隱特征圖中的稀疏性。這讓我們得到一個如下的總體損失函數形式:

\[C_{1}\left ( y^{i} \right )=\frac{\lambda }{2}\sum_{c=1}^{K_{0}}\left \| \sum_{k=1}^{K_{1}}z_{k}^{i}\bigoplus f_{k,c} - y_{c}^{i} \right \|_{2}^{2} + \sum_{k=1}^{K_{1}} \left | z_{k}^{i} \right |^{p}\qquad(2) \]

其中,我們假設重建項為高斯噪聲,正則化項為\(p\)范數。\(\lambda\)是平衡的一個超參數。請注意,我們的模型本質上是自頂向下的:給定潛在的特征映射,我們可以合成一幅圖像。

注:

  • 自頂向下是指由低分辨率向高分辨率變換的模型,這種結構可以重現源圖的圖像輪廓、主要特征;
  • 自底向上是指由高分辨率向低分辨率變化的模型,這種模型可以提取特征,特征的感受野越來越大。

許多方法側重於自底向上推理,但我們致力於獲得高質量的潛在表征。

在第3.2節描述的學習中,我們使用一組圖像\(y=\left \{ y^{1},\cdots ,y^{I} \right \}\),求\(\mathop{\arg\min}_{f,z}C_{1}\left ( y \right )^{2}\),每個圖像的潛在特征圖和濾波器。請注意,每個圖像都有自己的一組特征圖,而過濾器對所有圖像都是公用的。


Top  ---  Bottom

3.1 體系構建

上述架構從多通道輸入圖像產生稀疏特征圖。通過處理特征圖,可以很容易地將其堆疊起來形成層次結構。第\(l\)層的損失函數可以推出為如下的形式:

\[C_{l}\left ( y \right )=\frac{\lambda }{2}\sum_{i=1}^{I}\sum_{c=1}^{K_{l-1}}\left \| \sum_{k=1}^{K_{l}}g_{k,c}^{l}\left (z_{k,l}^{i}\bigoplus f_{k,c}^{l} \right ) -z_{c,l-1}^{i}\right \|_{2}^{2} + \sum_{i=1}^{I}\sum_{k=1}^{K_{l}} \left | z_{k,l}^{i} \right |^{p}\qquad(3) \]

其中:

  • \(z_{c,l-1}^{i}\)是上一層的特征圖;

  • \(g_{k,c}^{l}\)是一個固定的二進制矩陣,它決定了特征圖之間的復雜度;

  • 如下圖所示,我們由\(l-1\)層得到很多新的特征圖,並由此稀疏化得到高分辨率的\(l\)層特征圖;

    我們不在層之間執行任何池、子采樣或分裂規范化操作,盡管它們很容易合並。


Top  ---  Bottom

3.2 學習過濾器

為了學習過濾器,我們首先固定過濾器的值,最小化當前層的損失\(C_{l}\left ( y \right )\),然后固定特征圖最小化\(C_{l}\left ( y \right )\)得到過濾器。這個過程實際上就是神經網絡的前向傳播與后向傳播。

特征圖推導:

給定\(l\)層輸入與過濾器,我們可以得到\(l\)層的特征圖。關於\(l\)層的特征圖估計我們可以使用:

\[\hat{C}_{l}\left ( y \right )=\frac{\lambda }{2}\sum_{i=1}^{I}\sum_{c=1}^{K_{l-1}}\left \| \sum_{k=1}^{K_{l}}g_{k,c}^{l}\left (z_{k,l}^{i}\bigoplus f_{k,c}^{l} \right ) -z_{c,l-1}^{i}\right \|_{2}^{2} + \frac{\beta}{2} \sum_{i=1}^{I}\sum_{k=1}^{K_{l}}\left \| z_{k,l}^{i} - x_{k,l}^{i} \right \|_{2}^{2} + \sum_{i=1}^{I}\sum_{k=1}^{K_{l}} \left | x_{k,l}^{i} \right |^{p} \qquad(4) \]

特征圖的偏導:

\[\frac{\partial \hat{C}_{l}\left ( y \right )}{\partial z_{k,l}^{i}}=\lambda \sum_{c=1}^{K_{l-1}}F_{k,c}^{l^{T}}\left ( \sum_{\tilde{k}=1}^{K} F_{\tilde{k},c}^{l}z_{k,l}^{i} - z_{c,l-1}^{i}\right ) + \beta\left ( z_{k,l}^{i} - x_{k,l}^{i} \right ) \qquad(5) \]

注意這里的\(c\)可以理解為通道指標。

上面的公式我們可以使用矩陣乘法的形式給出:

\[A\begin{pmatrix} z_{1,l}^{i}\\ \cdots \\ z_{K_{l},l}^{i} \end{pmatrix}=\begin{pmatrix} \sum_{c=1}^{K_{l-1}}F_{1,c}^{l^{T}}z_{c,l-1}^{i} + \frac{\beta }{\lambda }x_{1,l}^{i}\\ \cdots \\ \sum_{c=1}^{K_{l-1}}F_{K,c}^{l^{T}}z_{c,l-1}^{i} + \frac{\beta }{\lambda }x_{K_{l},l}^{i} \end{pmatrix} \qquad(6) \]

關於矩陣\(A\)的解我們可以顯示地給出:

\[A=\begin{pmatrix} \sum_{c=1}^{K_{l-1}}F_{1,c}^{l^{T}}F_{1,c}^{l} + \frac{\beta }{\lambda }I & \cdots & \sum_{c=1}^{K_{l-1}}F_{1,c}^{l}F_{K_{l},c}^{l^{T}}\\ \cdots & \cdots & \cdots \\ \sum_{c=1}^{K_{l-1}}F_{1,c}^{l}F_{K_{l},c}^{l^{T}} & \cdots & \sum_{c=1}^{K_{l-1}}F_{K_{l},c}^{l^{T}}F_{K_{l},c}^{l} + \frac{\beta }{\lambda }I \end{pmatrix} \qquad(7) \]

另一方面關於\(x_{k,l}^{i}\)我們可以由如下公式取值得到:

\[x_{k,l}^{i} = max\left ( \left | z_{k,l}^{i} \right |-\frac{1}{\beta },0 \right )\frac{z_{k,l}^{i}}{\left | z_{k,l}^{i} \right |} \qquad(8) \]

過濾器的偏導:

\[\frac{\partial \hat{C}_{l}\left ( y \right )}{\partial f_{k,c}^{l}} = \lambda \sum_{i=1}^{I}\sum_{\tilde{c}=1}^{K_{l-1}} Z_{k,l}^{i^{T}}\left ( \sum_{\tilde{k}=1}^{K_{l}}g_{\tilde{k},c}^{l} Z_{\tilde{k},l}^{i} f_{\tilde{k},\tilde{c}}^{l} - z_{\tilde{c},l-1}^{i} \right ) \qquad(9) \]

根據上面的偏導公式我們就可以實現對參數進行更新迭代了。

下面是算法的整個過程:

有特征圖與卷積核之后,要重構“圖像”實際就是實現高分辨率、高超分辨率的特征圖,這個正是解卷積網絡層的主要功能。關於解卷積建議參考https://www.cnblogs.com/dan-baishucaizi/p/14397940.html。


Top  ---  Bottom

4、小結

​ 由上面的公式與參考文章https://www.cnblogs.com/dan-baishucaizi/p/14397940.html,我們大概可以get到其本質,那么作者到底是怎么定義它的?

​ 在文獻Adaptive Deconvolutional Networks for Mid and High Level Feature Learning中,首先我們知道解卷積的主要作用是重構圖像,注意這個重構的圖像是抽象的高級語義。下面的圖片有效地展示了其功能:

明顯隨着模型框架的層數堆疊,對象的主要輪廓信息被學習到並重構可視化!

重構這種圖像有什么用,實際上在語義分割、實例分割等方向上,這非常有用,因為我們知道在高分辨率下能夠重構實例,那么分割也不是問題。換句話說,計算機只需要尋找上面圖片中的輪廓即可,而計算機重構這張圖片難道不整數利用了這種位置信息嗎?所以這可以證明其實現分割不是難事!


Top  ---  Bottom

5、deconvolution正式提出

​ 解卷積一詞在深度學習領域的正式提出,是在Adaptive Deconvolutional Networks for Mid and High Level Feature Learning中。

5.1 作者提出的可視化框架

這里有卷積層、池化層組成!

5.2 接卷積定義

如上圖所示,輸出的重構\(\hat{y}_{1}\)(c是通道索引)是可以由上一層的2D特征圖(單通道)與過濾器卷積后求和得到:

\[\hat{y}_{1}^{c}=\sum_{k=1}^{K_{1}}z_{k,1}\ast f_{k,1}^{c} \qquad(10) \]

星號表示2D卷積操作。上面的公式到底是什么?下面是我的白話解釋:

  • 解卷積層的輸出的每一通道都是由\(K_{1}\)個過濾器與解卷積層的輸入進行卷積后,再求和生成的!
  • 注意這里的求和一般不是簡單的數值相加,而是將卷積操作(下采樣)后的特征圖進行稀疏化再合並(實現上采樣的效果)!

為了簡潔起見,我們將層\(l\)的卷積和求和操作合並到一個卷積矩陣\(F_{l}\),並將2D特征圖\(z_{k,l}\)合並為3D特征圖\(z_{l}\) 。則有:

\[\hat{y}_{1} = F_{1}z_{1} \qquad(11) \]


Top  ---  Bottom

完!


免責聲明!

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



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