衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深度解析什么是轉(zhuǎn)置卷積

智能感知與物聯(lián)網(wǎng)技術(shù)研究所 ? 來(lái)源:CSDN博客 ? 作者:CSDN博客 ? 2020-09-03 09:39 ? 次閱讀

這篇文章對(duì)轉(zhuǎn)置卷積(反卷積)有著很好的解釋?zhuān)@里將其翻譯為中文,以饗國(guó)人。

對(duì)于上采用的需求

當(dāng)我們用神經(jīng)網(wǎng)絡(luò)生成圖片的時(shí)候,經(jīng)常需要將一些低分辨率的圖片轉(zhuǎn)換為高分辨率的圖片。

對(duì)于這種上采樣(up-sampling)操作,目前有著一些插值方法進(jìn)行處理: 最近鄰插值(Nearest neighbor interpolation) 雙線(xiàn)性插值(Bi-Linear interpolation) 雙立方插值(Bi-Cubic interpolation) 以上的這些方法都是一些插值方法,需要我們?cè)跊Q定網(wǎng)絡(luò)結(jié)構(gòu)的時(shí)候進(jìn)行挑選。這些方法就像是人工特征工程一樣,并沒(méi)有給神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的余地,神經(jīng)網(wǎng)絡(luò)不能自己學(xué)習(xí)如何更好地進(jìn)行插值,這個(gè)顯然是不夠理想的。

為什么是轉(zhuǎn)置卷積

轉(zhuǎn)置卷積(Transposed Convolution)常常在一些文獻(xiàn)中也稱(chēng)之為反卷積(Deconvolution)和部分跨越卷積(Fractionally-strided Convolution),因?yàn)榉Q(chēng)之為反卷積容易讓人以為和數(shù)字信號(hào)處理中反卷積混起來(lái),造成不必要的誤解,因此下文都將稱(chēng)為轉(zhuǎn)置卷積,并且建議各位不要采用反卷積這個(gè)稱(chēng)呼。 如果我們想要我們的網(wǎng)絡(luò)可以學(xué)習(xí)到最好地上采樣的方法,我們這個(gè)時(shí)候就可以采用轉(zhuǎn)置卷積。這個(gè)方法不會(huì)使用預(yù)先定義的插值方法,它具有可以學(xué)習(xí)的參數(shù)。理解轉(zhuǎn)置卷積這個(gè)概念是很重要的,因?yàn)樗谌舾芍匾奈墨I(xiàn)中都有所應(yīng)用,如: 1、在DCGAN中的生成器將會(huì)用隨機(jī)值轉(zhuǎn)變?yōu)橐粋€(gè)全尺寸(full-size)的圖片,這個(gè)時(shí)候就需要用到轉(zhuǎn)置卷積。 2、在語(yǔ)義分割中,會(huì)使用卷積層在編碼器中進(jìn)行特征提取,然后在解碼層中進(jìn)行恢復(fù)為原先的尺寸,這樣才可以對(duì)原來(lái)圖像的每個(gè)像素都進(jìn)行分類(lèi)。這個(gè)過(guò)程同樣需要用到轉(zhuǎn)置卷積。

卷積操作

讓我們回顧下卷積操作是怎么工作的,并且我們將會(huì)從一個(gè)小例子中直觀的感受卷積操作。假設(shè)我們有一個(gè)的矩陣,我們將在這個(gè)矩陣上應(yīng)用的卷積核,并且不添加任何填充(padding),步進(jìn)參數(shù)(stride)設(shè)置為1,就像下圖所示,輸出為一個(gè)的矩陣。

這個(gè)卷積操作在輸入矩陣和卷積核中,對(duì)每個(gè)元素的乘積進(jìn)行相加。因?yàn)槲覀儧](méi)有任何填充和使用1為步進(jìn),因此我們只能對(duì)這個(gè)操作進(jìn)行4次,因此我們的輸出矩陣尺寸為。

這種卷積操作使得輸入值和輸出值之間存在有位置上的連接關(guān)系,舉例來(lái)說(shuō),輸入矩陣左上方的值將會(huì)影響到輸出矩陣的左上方的值。更具體而言,的卷積核是用來(lái)連接輸入矩陣中的9個(gè)值,并且將其轉(zhuǎn)變?yōu)檩敵鼍仃嚨囊粋€(gè)值的。一個(gè)卷積操作是一個(gè)多對(duì)一(many-to-one)的映射關(guān)系。讓我們記住這個(gè),我們接下來(lái)將會(huì)用得著。

反過(guò)來(lái)操作吧

現(xiàn)在,假設(shè)我們想要反過(guò)來(lái)操作。我們想要將輸入矩陣中的一個(gè)值映射到輸出矩陣的9個(gè)值,這將是一個(gè)一對(duì)多(one-to-many)的映射關(guān)系。這個(gè)就像是卷積操作的反操作,其核心觀點(diǎn)就是用轉(zhuǎn)置卷積。舉個(gè)例子,我們對(duì)一個(gè)的矩陣進(jìn)行上采樣為的矩陣。這個(gè)操作將會(huì)維護(hù)一個(gè)1對(duì)應(yīng)9的映射關(guān)系。

因此就結(jié)論而言,卷積操作是多對(duì)一,而轉(zhuǎn)置卷積操作是一對(duì)多,如下圖所示,每一個(gè)“對(duì)”而言,都需要維護(hù)一個(gè)權(quán)值。

但是我們將如何具體操作呢?為了接下來(lái)的討論,我們需要定義一個(gè)卷積矩陣(convolution matrix)和相應(yīng)的轉(zhuǎn)置卷積矩陣(transposed convolution matrix)。

卷積矩陣

我們可以將一個(gè)卷積操作用一個(gè)矩陣表示。這個(gè)表示很簡(jiǎn)單,無(wú)非就是將卷積核重新排列到我們可以用普通的矩陣乘法進(jìn)行矩陣卷積操作。如下圖就是原始的卷積核:

我們對(duì)這個(gè)的卷積核進(jìn)行重新排列,得到了下面這個(gè)的卷積矩陣:

這個(gè)便是卷積矩陣了,這個(gè)矩陣的每一行都定義了一個(gè)卷積操作。下圖將會(huì)更加直觀地告訴你這個(gè)重排列是怎么進(jìn)行的。每一個(gè)卷積矩陣的行都是通過(guò)重新排列卷積核的元素,并且添加0補(bǔ)充(zero padding)進(jìn)行的。

為了將卷積操作表示為卷積矩陣和輸入矩陣的向量乘法,我們將輸入矩陣攤平(flatten)為一個(gè)列向量,形狀為,如下圖所示。

我們可以將這個(gè)的卷積矩陣和的輸入列向量進(jìn)行矩陣乘法,這樣我們就得到了輸出列向量。

這個(gè)輸出的的矩陣可以重新塑性為一個(gè)的矩陣,而這個(gè)矩陣正是和我們一開(kāi)始通過(guò)傳統(tǒng)的卷積操作得到的一模一樣。

簡(jiǎn)單來(lái)說(shuō),這個(gè)卷積矩陣除了重新排列卷積核的權(quán)重之外就沒(méi)有啥了,然后卷積操作可以通過(guò)表示為卷積矩陣和輸入矩陣的列向量形式的矩陣乘積形式進(jìn)行表達(dá)。 所以各位發(fā)現(xiàn)了嗎,關(guān)鍵點(diǎn)就在于這個(gè)卷積矩陣,你可以從16()到4()因?yàn)檫@個(gè)卷積矩陣尺寸正是的,然后呢,如果你有一個(gè)的矩陣,你就可以從4()到16()了,這不就是一個(gè)上采樣的操作嗎?啊哈!讓我們繼續(xù)吧!

轉(zhuǎn)置卷積矩陣

我們想要從4()到16(),因此我們使用了一個(gè)的矩陣,但是還有一件事情需要注意,我們是想要維護(hù)一個(gè)1到9的映射關(guān)系。 假設(shè)我們轉(zhuǎn)置這個(gè)卷積矩陣變?yōu)椤N覀兛梢詫?duì)和列向量進(jìn)行矩陣乘法,從而生成一個(gè)的輸出矩陣。這個(gè)轉(zhuǎn)置矩陣正是將一個(gè)元素映射到了9個(gè)元素。

這個(gè)輸出可以塑形為的矩陣:

我們只是對(duì)小矩陣進(jìn)行上采樣為一個(gè)更大尺寸的矩陣。這個(gè)轉(zhuǎn)置卷積矩陣維護(hù)了一個(gè)1個(gè)元素到9個(gè)元素的映射關(guān)系,因?yàn)檫@個(gè)關(guān)系正表現(xiàn)在了其轉(zhuǎn)置卷積元素上。需要注意的是:這里的轉(zhuǎn)置卷積矩陣的參數(shù),不一定從原始的卷積矩陣中簡(jiǎn)單轉(zhuǎn)置得到的,轉(zhuǎn)置這個(gè)操作只是提供了轉(zhuǎn)置卷積矩陣的形狀而已。

總結(jié)

轉(zhuǎn)置卷積操作構(gòu)建了和普通的卷積操作一樣的連接關(guān)系,只不過(guò)這個(gè)是從反向方向開(kāi)始連接的。我們可以用它進(jìn)行上采樣。另外,這個(gè)轉(zhuǎn)置卷積矩陣的參數(shù)是可以學(xué)習(xí)的,因此我們不需要一些人為預(yù)先定義的方法。即使它被稱(chēng)為轉(zhuǎn)置卷積,它并不是意味著我們將一些現(xiàn)存的卷積矩陣簡(jiǎn)單轉(zhuǎn)置并且使用其轉(zhuǎn)置后的值。 從本質(zhì)來(lái)說(shuō),轉(zhuǎn)置卷積不是一個(gè)卷積,但是我們可以將其看成卷積,并且當(dāng)成卷積這樣去用。我們通過(guò)在輸入矩陣中的元素之間插入0進(jìn)行補(bǔ)充,從而實(shí)現(xiàn)尺寸上采樣,然后通過(guò)普通的卷積操作就可以產(chǎn)生和轉(zhuǎn)置卷積相同的效果了。你在一些文章中將會(huì)發(fā)現(xiàn)他們都是這樣解釋轉(zhuǎn)置卷積的,但是這個(gè)因?yàn)樵诰矸e操作之前需要通過(guò)添加0進(jìn)行上采樣,因此是比較低效率的。注意:轉(zhuǎn)置卷積會(huì)導(dǎo)致生成圖像中出現(xiàn)棋盤(pán)效應(yīng)(checkerboard artifacts),這篇文章《Deconvolution and Checkerboard Artifacts》推薦了一種上采樣的操作(也就是插值操作),這個(gè)操作接在一個(gè)卷積操作后面以減少這種現(xiàn)象。如果你的主要目的是生成盡可能少棋盤(pán)效應(yīng)的圖像,那么這篇文章就值得你去閱讀。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 卷積
    +關(guān)注

    關(guān)注

    0

    文章

    95

    瀏覽量

    18548

原文標(biāo)題:一文搞懂轉(zhuǎn)置卷積(反卷積)

文章出處:【微信號(hào):tyutcsplab,微信公眾號(hào):智能感知與物聯(lián)網(wǎng)技術(shù)研究所】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用PyTorch深度解析卷積神經(jīng)網(wǎng)絡(luò)

    卷積神經(jīng)網(wǎng)絡(luò)(CNN)是一種特殊類(lèi)型的神經(jīng)網(wǎng)絡(luò),在圖像上表現(xiàn)特別出色。卷積神經(jīng)網(wǎng)絡(luò)由Yan LeCun在1998年提出,可以識(shí)別給定輸入圖像中存在的數(shù)字。
    發(fā)表于 09-21 10:12 ?857次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)—深度卷積網(wǎng)絡(luò):實(shí)例探究及學(xué)習(xí)總結(jié)

    深度學(xué)習(xí)工程師-吳恩達(dá)》03卷積神經(jīng)網(wǎng)絡(luò)—深度卷積網(wǎng)絡(luò):實(shí)例探究 學(xué)習(xí)總結(jié)
    發(fā)表于 05-22 17:15

    解析深度學(xué)習(xí):卷積神經(jīng)網(wǎng)絡(luò)原理與視覺(jué)實(shí)踐

    解析深度學(xué)習(xí):卷積神經(jīng)網(wǎng)絡(luò)原理與視覺(jué)實(shí)踐
    發(fā)表于 06-14 22:21

    C語(yǔ)言教程之矩陣的轉(zhuǎn)

    C語(yǔ)言教程之矩陣的轉(zhuǎn),很好的C語(yǔ)言資料,快來(lái)學(xué)習(xí)吧。
    發(fā)表于 04-25 15:41 ?0次下載

    如何使用基于轉(zhuǎn)卷積操作改進(jìn)進(jìn)行單階段多邊框目標(biāo)檢測(cè)方法

    針對(duì)單階段多邊框目標(biāo)檢測(cè)( SSD)模型在以高交并比(IoU)評(píng)估平均檢測(cè)精度(mAP)時(shí)出現(xiàn)的精度下降問(wèn)題,提出一種使用轉(zhuǎn)卷積操作構(gòu)建的循環(huán)特征聚合模型。該模型以SSD模型為
    發(fā)表于 12-12 11:49 ?4次下載
    如何使用基于<b class='flag-5'>轉(zhuǎn)</b><b class='flag-5'>置</b><b class='flag-5'>卷積</b>操作改進(jìn)進(jìn)行單階段多邊框目標(biāo)檢測(cè)方法

    深度學(xué)習(xí)中的各種卷積網(wǎng)絡(luò)大家知多少

    對(duì)于那些聽(tīng)說(shuō)過(guò)卻又對(duì)它們沒(méi)有特別清晰的認(rèn)識(shí)的小伙伴們,這篇文章非常值得一讀。Kunlun Bai 是一位人工智能、機(jī)器學(xué)習(xí)、物體學(xué)以及工程學(xué)領(lǐng)域的研究型科學(xué)家,在本文中,他詳細(xì)地介紹了 2D、3D、1x1 、轉(zhuǎn) 、空洞(擴(kuò)張)、空間可分離、
    的頭像 發(fā)表于 02-22 09:44 ?4254次閱讀

    探析深度學(xué)習(xí)中的各種卷積

    在信號(hào)處理、圖像處理和其它工程/科學(xué)領(lǐng)域,卷積都是一種使用廣泛的技術(shù)。在深度學(xué)習(xí)領(lǐng)域,卷積神經(jīng)網(wǎng)絡(luò)(CNN)這種模型架構(gòu)就得名于這種技術(shù)。但是,深度學(xué)習(xí)領(lǐng)域的
    的頭像 發(fā)表于 02-26 10:01 ?3427次閱讀
    探析<b class='flag-5'>深度</b>學(xué)習(xí)中的各種<b class='flag-5'>卷積</b>

    一篇文章搞定CNN轉(zhuǎn)卷積

    在CNN中,轉(zhuǎn)卷積是一種上采樣(up-sampling)的方法。如果你對(duì)轉(zhuǎn)卷積感到困惑,那么就來(lái)讀讀這篇文章吧。
    的頭像 發(fā)表于 01-31 17:32 ?4714次閱讀

    深度學(xué)習(xí)&計(jì)算機(jī)視覺(jué)方向的相關(guān)面試題

    卷積也稱(chēng)為轉(zhuǎn)卷積,如果用矩陣乘法實(shí)現(xiàn)卷積操作,將卷積核平鋪為矩陣,則
    的頭像 發(fā)表于 09-24 13:04 ?2621次閱讀
    <b class='flag-5'>深度</b>學(xué)習(xí)&計(jì)算機(jī)視覺(jué)方向的相關(guān)面試題

    深入理解深度學(xué)習(xí)中的反(轉(zhuǎn))卷積

    本文首發(fā)于 GiantPandaCV :深入理解神經(jīng)網(wǎng)絡(luò)中的反(轉(zhuǎn))卷積作者:梁德澎本文主要是把之前在知乎上的回答:反卷積和上采樣+卷積
    發(fā)表于 02-07 11:17 ?0次下載
    深入理解<b class='flag-5'>深度</b>學(xué)習(xí)中的反(<b class='flag-5'>轉(zhuǎn)</b><b class='flag-5'>置</b>)<b class='flag-5'>卷積</b>

    PyTorch教程14.10之轉(zhuǎn)卷積

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程14.10之轉(zhuǎn)卷積.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 11:11 ?0次下載
    PyTorch教程14.10之<b class='flag-5'>轉(zhuǎn)</b><b class='flag-5'>置</b><b class='flag-5'>卷積</b>

    深度學(xué)習(xí)中的各種卷積原理解析

    從技術(shù)上講,信號(hào)處理中的去卷積卷積運(yùn)算的逆運(yùn)算。但這里卻不是這種運(yùn)算。因此,某些作者強(qiáng)烈反對(duì)將轉(zhuǎn)卷積稱(chēng)為去
    發(fā)表于 07-01 10:24 ?730次閱讀
    <b class='flag-5'>深度</b>學(xué)習(xí)中的各種<b class='flag-5'>卷積</b>原理<b class='flag-5'>解析</b>

    MATLAB | 這是我見(jiàn)過(guò)最離譜的轉(zhuǎn)操作

    注:此轉(zhuǎn)操作與 t-product 積相對(duì)應(yīng),在其他類(lèi)型張量運(yùn)算中的轉(zhuǎn)操作可能有不同的定義方式,請(qǐng)注意區(qū)分。
    的頭像 發(fā)表于 07-21 11:50 ?892次閱讀
    MATLAB | 這是我見(jiàn)過(guò)最離譜的<b class='flag-5'>轉(zhuǎn)</b><b class='flag-5'>置</b>操作

    卷積神經(jīng)網(wǎng)絡(luò)的工作原理和應(yīng)用

    卷積神經(jīng)網(wǎng)絡(luò)(FCN)是深度學(xué)習(xí)領(lǐng)域中的一種特殊類(lèi)型的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),尤其在計(jì)算機(jī)視覺(jué)領(lǐng)域表現(xiàn)出色。它通過(guò)全局平均池化或轉(zhuǎn)卷積處理任意尺寸
    的頭像 發(fā)表于 07-11 11:50 ?1289次閱讀

    如何在Tensorflow中實(shí)現(xiàn)反卷積

    在TensorFlow中實(shí)現(xiàn)反卷積(也稱(chēng)為轉(zhuǎn)卷積或分?jǐn)?shù)步長(zhǎng)卷積)是一個(gè)涉及多個(gè)概念和步驟的過(guò)程。反卷積
    的頭像 發(fā)表于 07-14 10:46 ?706次閱讀
    路单百家乐官网的玩法技巧和规则| 百家乐官网10法则| 百家乐桌定制| 百家乐官网送1000 | 最新百家乐游戏机| 谈谈百家乐官网赢钱技巧| 大发888在线娱乐合作伙伴 | 井冈山市| 爱赢百家乐的玩法技巧和规则| 伟易博百家乐官网娱乐城 | 百家乐官网赌博机销售| tt娱乐城网址| 百家乐23珠路打法| 成都百家乐官网牌具| 澳门百家乐必胜看| 百家乐太阳城小郭| 百家乐官网生活馆| 云龙县| 大发888赢速通充值| 百家乐西园二手房| 明溪百家乐官网的玩法技巧和规则| 七乐百家乐官网现金网| 大发888开户注册平台| 百家乐赌场网| 百家乐官网发牌靴8| 百家乐官网视频游戏会员| 龙腾国际娱乐| 全讯网vc8888.com| 时时博百家乐娱乐城| 免费百家乐官网缩水工具| 真人百家乐官网新开户送彩金| 韦德娱乐| 新全讯网网站112| 易胜博百家乐娱乐城| 属猪与属狗 做生意| 麻将百家乐官网筹码| 新葡京百家乐官网现金| 澳门网络游戏| 百家乐官网高| 澳门百家乐官网赌技巧| 澳门百家乐官网娱乐城注册|