深度學習中的反向卷積
點擊上方“小白學視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達
本文轉(zhuǎn)自:opencv學堂
圖像反卷積的含義是對模糊圖像進行反向模糊去除,讓圖像重新變得清晰化,本質(zhì)上是一種圖像去模糊算法,而且它可以看出是圖像卷積模糊的反向操作,OpenCV在其3.4版本中新增了移動圖像去模糊算法,通過反卷積操作實現(xiàn)。其原理主要是基于PSF進行重新估算模糊半邊,然后進行反向卷積算計得到。簡單的模糊圖像與反卷積/去模型效果如下:
關(guān)于深度學習中的卷積層作用與聲明,可以參考公眾號文章:
卷積神經(jīng)網(wǎng)絡(luò)是如何實現(xiàn)不變性特征提取的深度學習中的反向卷積
深度學習中的反向卷積跟圖像的反卷積去模糊有本質(zhì)區(qū)別,深度學習中的反向卷積本質(zhì)上是轉(zhuǎn)置卷積操作,常見在圖像語義分割網(wǎng)絡(luò)FCN、對抗生成網(wǎng)絡(luò)中DCGAN中。專置卷積的作用對卷積層的解碼,實現(xiàn)從低維特征向量向高維特征空間的映射,生成與輸入大小完全一致的feature maps。對于一個正常的卷積操作:
輸入是4x4大小,卷積核3x3大小,步長是1,輸出是2x2大小,如果對它們近一步分析就是知道,輸入是4x4=16維度的數(shù)據(jù),輸出是2x2=4維的數(shù)據(jù),展開的卷積核權(quán)重系數(shù)如下:
它是一個16x4的矩陣,現(xiàn)在我們需要輸入是4維度,輸出是16維度,相當于對這個矩陣進行了轉(zhuǎn)置操作,轉(zhuǎn)置卷積就是這樣出來的。常見的轉(zhuǎn)置卷積操作有如下兩種:
單位步長
填充周圍為零,通過填充輸入來計算轉(zhuǎn)置卷積,通過這種方式把反向/轉(zhuǎn)置卷積,當成一個正常的卷積操作。輸入2x2,輸出4x4,步長1,卷積核3x3,操作演示如下:
分步步長
通過對每一行每一列分步進行填充,得到輸入填充好的輸入,然后再進行正常的卷積操作,這種方法更加的合理。輸入=3x3,填充=2,步長等于1的分步卷積方式的轉(zhuǎn)置操作輸出5x5的feature顯示如下:
在這里需要特別注意的是上述對轉(zhuǎn)置卷積的步長跟正向卷積的步長不是一樣的,單位步長的轉(zhuǎn)置卷積步長=S,輸入圖像H=W=N,則輸出圖像大小為 H=W=SXN,這個必須保持一致。
Tensorflow中轉(zhuǎn)置卷積代碼演示如下:import tensorflow as tfimport numpy as npdef test_conv2d_transpose():# input (batch_size, height, width, channels) - 2x2x1 image in batch of 1x = tf.constant(np.array([[[], [2]],[], [4]]]]), tf.float32)f = tf.constant(np.array([[]], [[1]], [[1]]],[]], [[1]], [[1]]],[]], [[1]], [[1]]]]), tf.float32)conv = tf.nn.conv2d_transpose(x, f, output_shape=(1, 4, 4, 1), strides=[1, 2, 2, 1], padding='SAME')with tf.Session() as session:result = session.run(conv)print(result)assert (np.array([[[], [1.0], [3.0], [2.0]],[], [1.0], [3.0], [2.0]],[], [4.0], [10.0], [6.0]],[], [3.0], [7.0], [4.0]]]]) == result).all()test_conv2d_transpose()下載1:OpenCV-Contrib擴展模塊中文版教程
在「小白學視覺」公眾號后臺回復(fù):擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。 下載2:Python視覺實戰(zhàn)項目52講 在「小白學視覺」公眾號后臺回復(fù):Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。 下載3:OpenCV實戰(zhàn)項目20講 在「小白學視覺」公眾號后臺回復(fù):OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。 交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~







