丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能開發(fā)者 正文
發(fā)私信給AI研習(xí)社
發(fā)送

0

CNN 中千奇百怪的卷積方式大匯總

本文作者: AI研習(xí)社 編輯:賈智龍 2017-09-20 17:13
導(dǎo)語:卷積方式那么多,哪一種最適合你們?

雷鋒網(wǎng)按:本文原作者Xf Mao,本文原載于知乎。雷鋒網(wǎng)已獲得作者授權(quán)。

推薦另一篇很好的總結(jié):變形卷積核、可分離卷積?卷積神經(jīng)網(wǎng)絡(luò)中十大拍案叫絕的操作。

這篇總結(jié)很專業(yè),并且很好的回答了評(píng)論中的疑問:

Depthwise Separable Convolution 就是卷積加 group 吧?

這篇文章里是這么說的:

要注意的是,Group conv 是一種 channel 分組的方式,Depthwise +Pointwise 是卷積的方式,只是 ShuffleNet 里面把兩者應(yīng)用起來了。因此 Group conv 和 Depthwise +Pointwise 并不能劃等號(hào)。

我覺得 Depthwise +Pointwise 卷積是提供一種把 feature map 的空間信息(height&width)和通道信息(channel)拆分分別處理的方法,而 group 卷積只是單純的通道分組處理,降低復(fù)雜度。

對(duì)于表述有誤的地方歡迎更正!另外目前僅列舉了一些比較著名且實(shí)用的卷積操作,對(duì)于沒提到的,希望大家指出與補(bǔ)充

1. 原始版本

最早的卷積方式還沒有任何騷套路,那就也沒什么好說的了。

見下圖,原始的 conv 操作可以看做一個(gè) 2D 版本的無隱層神經(jīng)網(wǎng)絡(luò)。

附上一個(gè)卷積詳細(xì)流程:

【TensorFlow】tf.nn.conv2d 是怎樣實(shí)現(xiàn)卷積的? - CSDN 博客

CNN 中千奇百怪的卷積方式大匯總

代表模型:

LeNet:最早使用 stack 單卷積 + 單池化結(jié)構(gòu)的方式,卷積層來做特征提取,池化來做空間下采樣

AlexNet:后來發(fā)現(xiàn)單卷積提取到的特征不是很豐富,于是開始 stack 多卷積 + 單池化的結(jié)構(gòu)

VGG([1409.1556] Very Deep Convolutional Networks for Large-Scale Image Recognition):結(jié)構(gòu)沒怎么變,只是更深了

2. 多隱層非線性版本

這個(gè)版本是一個(gè)較大的改進(jìn),融合了 Network In Network 的增加隱層提升非線性表達(dá)的思想,于是有了這種先用 1*1 的卷積映射到隱空間,再在隱空間做卷積的結(jié)構(gòu)。同時(shí)考慮了多尺度,在單層卷積層中用多個(gè)不同大小的卷積核來卷積,再把結(jié)果 concat 起來。

這一結(jié)構(gòu),被稱之為 “Inception”

CNN 中千奇百怪的卷積方式大匯總

代表模型:

Inception-v1([1409.4842] Going Deeper with Convolutions):stack 以上這種 Inception 結(jié)構(gòu)

Inception-v2(Accelerating Deep Network Training by Reducing Internal Covariate Shift):加了 BatchNormalization 正則,去除 5*5 卷積,用兩個(gè) 3*3 代替

Inception-v3([1512.00567] Rethinking the Inception Architecture for Computer Vision):7*7 卷積又拆成 7*1+1*7

Inception-v4([1602.07261] Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning):加入了殘差結(jié)構(gòu)

3. 空洞卷積

Dilation 卷積,通常譯作空洞卷積或者卷積核膨脹操作,它是解決 pixel-wise 輸出模型的一種常用的卷積方式。一種普遍的認(rèn)識(shí)是,pooling 下采樣操作導(dǎo)致的信息丟失是不可逆的,通常的分類識(shí)別模型,只需要預(yù)測(cè)每一類的概率,所以我們不需要考慮 pooling 會(huì)導(dǎo)致?lián)p失圖像細(xì)節(jié)信息的問題,但是做像素級(jí)的預(yù)測(cè)時(shí)(譬如語義分割),就要考慮到這個(gè)問題了。

所以就要有一種卷積代替 pooling 的作用(成倍的增加感受野),而空洞卷積就是為了做這個(gè)的。通過卷積核插 “0” 的方式,它可以比普通的卷積獲得更大的感受野,這個(gè) idea 的 motivation 就介紹到這里。具體實(shí)現(xiàn)方法和原理可以參考如下鏈接:

如何理解空洞卷積(dilated convolution)?

膨脹卷積 --Multi-scale context aggregation by dilated convolutions

我在博客里面又做了一個(gè)空洞卷積小 demo 方便大家理解

【Tensorflow】tf.nn.atrous_conv2d 如何實(shí)現(xiàn)空洞卷積? - CSDN 博客

代表模型:

FCN([1411.4038] Fully Convolutional Networks for Semantic Segmentation):Fully convolutional networks,顧名思義,整個(gè)網(wǎng)絡(luò)就只有卷積組成,在語義分割的任務(wù)中,因?yàn)榫矸e輸出的 feature map 是有 spatial 信息的,所以最后的全連接層全部替換成了卷積層。

Wavenet(WaveNet: A Generative Model for Raw Audio):用于語音合成。

4. 深度可分離卷積

Depthwise Separable Convolution,目前已被 CVPR2017 收錄,這個(gè)工作可以說是 Inception 的延續(xù),它是 Inception 結(jié)構(gòu)的極限版本。

為了更好的解釋,讓我們重新回顧一下 Inception 結(jié)構(gòu)(簡(jiǎn)化版本):

CNN 中千奇百怪的卷積方式大匯總

上面的簡(jiǎn)化版本,我們又可以看做,把一整個(gè)輸入做 1*1 卷積,然后切成三段,分別 3*3 卷積后相連,如下圖,這兩個(gè)形式是等價(jià)的,即 Inception 的簡(jiǎn)化版本又可以用如下形式表達(dá):

CNN 中千奇百怪的卷積方式大匯總

OK,現(xiàn)在我們想,如果不是分成三段,而是分成 5 段或者更多,那模型的表達(dá)能力是不是更強(qiáng)呢?于是我們就切更多段,切到不能再切了,正好是 Output channels 的數(shù)量(極限版本):

CNN 中千奇百怪的卷積方式大匯總

于是,就有了深度卷積(depthwise convolution),深度卷積是對(duì)輸入的每一個(gè) channel 獨(dú)立的用對(duì)應(yīng) channel 的所有卷積核去卷積,假設(shè)卷積核的 shape 是 [filter_height, filter_width, in_channels, channel_multiplier],那么每個(gè) in_channel 會(huì)輸出 channel_multiplier 那么多個(gè)通道,最后的 feature map 就會(huì)有 in_channels * channel_multiplier 個(gè)通道了。反觀普通的卷積,輸出的 feature map 一般就只有 channel_multiplier 那么多個(gè)通道。

具體的過程可參見我的 demo:

【Tensorflow】tf.nn.depthwise_conv2d 如何實(shí)現(xiàn)深度卷積? - CSDN 博客

既然叫深度可分離卷積,光做 depthwise convolution 肯定是不夠的,原文在深度卷積后面又加了 pointwise convolution,這個(gè) pointwise convolution 就是 1*1 的卷積,可以看做是對(duì)那么多分離的通道做了個(gè)融合。

這兩個(gè)過程合起來,就稱為 Depthwise Separable Convolution 了:

【Tensorflow】tf.nn.separable_conv2d 如何實(shí)現(xiàn)深度可分卷積? - CSDN 博客

代表模型:Xception(Xception: Deep Learning with Depthwise Separable Convolutions

5. 可變形卷積

可形變卷積的思想很巧妙:它認(rèn)為規(guī)則形狀的卷積核(比如一般用的正方形 3*3 卷積)可能會(huì)限制特征的提取,如果賦予卷積核形變的特性,讓網(wǎng)絡(luò)根據(jù) label 反傳下來的誤差自動(dòng)的調(diào)整卷積核的形狀,適應(yīng)網(wǎng)絡(luò)重點(diǎn)關(guān)注的感興趣的區(qū)域,就可以提取更好的特征。

如下圖:網(wǎng)絡(luò)會(huì)根據(jù)原位置(a),學(xué)習(xí)一個(gè) offset 偏移量,得到新的卷積核(b)(c)(d),那么一些特殊情況就會(huì)成為這個(gè)更泛化的模型的特例,例如圖(c)表示從不同尺度物體的識(shí)別,圖(d)表示旋轉(zhuǎn)物體的識(shí)別。

CNN 中千奇百怪的卷積方式大匯總

這個(gè) idea 的實(shí)現(xiàn)方法也很常規(guī):

CNN 中千奇百怪的卷積方式大匯總

上圖中包含兩處卷積,第一處是獲取 offsets 的卷積,即我們對(duì) input feature map 做卷積,得到一個(gè)輸出(offset field),然后再在這個(gè)輸出上取對(duì)應(yīng)位置的一組值作為 offsets。假設(shè) input feature map 的 shape 為 [batch,height,width,channels],我們指定輸出通道變成兩倍,卷積得到的 offset field 就是 [batch,height,width,2×channels],為什么指定通道變成兩倍呢?因?yàn)槲覀冃枰谶@個(gè) offset field 里面取一組卷積核的 offsets,而一個(gè) offset 肯定不能一個(gè)值就表示的,最少也要用兩個(gè)值(x 方向上的偏移和 y 方向上的偏移)所以,如果我們的卷積核是 3*3,那意味著我們需要 3*3 個(gè) offsets,一共需要 2*3*3 個(gè)值,取完了這些值,就可以順利使卷積核形變了。第二處就是使用變形的卷積核來卷積,這個(gè)比較常規(guī)。(這里還有一個(gè)用雙線性插值的方法獲取某一卷積形變后位置的輸入的過程)

這里有一個(gè)介紹性的 Slide:http://prlab.tudelft.nl/sites/default/files/Deformable_CNN.pdf

代表模型:Deformable Convolutional Networks(Deformable Convolutional Networks):暫時(shí)還沒有其他模型使用這種卷積,期待后續(xù)會(huì)有更多的工作把這個(gè) idea 和其他視覺任務(wù)比如檢測(cè),跟蹤相結(jié)合。

6. 特征重標(biāo)定卷積

這是 ImageNet 2017 競(jìng)賽 Image Classification 任務(wù)的冠軍模型 SENet 的核心模塊,原文叫做”Squeeze-and-Excitation“,我結(jié)合我的理解暫且把這個(gè)卷積稱作” 特征重標(biāo)定卷積 “。

和前面不同的是,這個(gè)卷積是對(duì)特征維度作改進(jìn)的。一個(gè)卷積層中往往有數(shù)以千計(jì)的卷積核,而且我們知道卷積核對(duì)應(yīng)了特征,于是乎那么多特征要怎么區(qū)分?這個(gè)方法就是通過學(xué)習(xí)的方式來自動(dòng)獲取到每個(gè)特征通道的重要程度,然后依照計(jì)算出來的重要程度去提升有用的特征并抑制對(duì)當(dāng)前任務(wù)用處不大的特征。

CNN 中千奇百怪的卷積方式大匯總

這個(gè)想法的實(shí)現(xiàn)異常的簡(jiǎn)單,簡(jiǎn)單到你難以置信。

首先做普通的卷積,得到了一個(gè)的 output feature map,它的 shape 為 [C,H,W],根據(jù) paper 的觀點(diǎn),這個(gè) feature map 的特征很混亂。然后為了獲得重要性的評(píng)價(jià)指標(biāo),直接對(duì)這個(gè) feature map 做一個(gè) Global Average Pooling,然后我們就得到了長(zhǎng)度為 C 的向量。(這里還涉及到一個(gè)額外的東西,如果你了解卷積,你就會(huì)發(fā)現(xiàn)一旦某一特征經(jīng)常被激活,那么 Global Average Pooling 計(jì)算出來的值會(huì)比較大,說明它對(duì)結(jié)果的影響也比較大,反之越小的值,對(duì)結(jié)果的影響就越小)

然后我們對(duì)這個(gè)向量加兩個(gè) FC 層,做非線性映射,這倆 FC 層的參數(shù),也就是網(wǎng)絡(luò)需要額外學(xué)習(xí)的參數(shù)。

最后輸出的向量,我們可以看做特征的重要性程度,然后與 feature map 對(duì)應(yīng) channel 相乘就得到特征有序的 feature map 了。

雖然各大框架現(xiàn)在都還沒有擴(kuò)展這個(gè)卷積的 api,但是我們實(shí)現(xiàn)它也就幾行代碼的事,可謂是簡(jiǎn)單且實(shí)用了。

另外它還可以和幾個(gè)主流網(wǎng)絡(luò)結(jié)構(gòu)結(jié)合起來一起用,比如 Inception 和 Res:

CNN 中千奇百怪的卷積方式大匯總CNN 中千奇百怪的卷積方式大匯總

代表模型:Squeeze-and-Excitation Networks(Squeeze-and-Excitation Networks

7. 比較

我們把圖像(height,width)作為空間維度,把 channels 做為特征維度。
CNN 中千奇百怪的卷積方式大匯總

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

CNN 中千奇百怪的卷積方式大匯總

分享:
相關(guān)文章

編輯

聚焦數(shù)據(jù)科學(xué),連接 AI 開發(fā)者。更多精彩內(nèi)容,請(qǐng)?jiān)L問:yanxishe.com
當(dāng)月熱門文章
最新文章
請(qǐng)?zhí)顚懮暾?qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說