AI:IPPR的数学表示-CNN稀疏结构进化(Mobile、xception、Shuffle、SE、Dilated、Deformable)
???????? 接上一篇:AI:IPPR的數(shù)學(xué)表示-CNN基礎(chǔ)結(jié)構(gòu)進(jìn)化(Alex、ZF、Inception、Res、InceptionRes)。
? ? ? ?? 抄自于各個(gè)博客,有大量修改,如有疑問,請(qǐng)移步各個(gè)原文.....17年的總結(jié)...CSDN吞圖. ?????????????????
?前言:AutoML-NasNet
??????? VGG結(jié)構(gòu)和INception結(jié)構(gòu)、ResNet基元結(jié)構(gòu)的出現(xiàn),驗(yàn)證了通過反復(fù)堆疊小型inception結(jié)構(gòu)可以構(gòu)建大型CNN網(wǎng)絡(luò),而構(gòu)建過程可以通過特定的規(guī)則自動(dòng)完成。自動(dòng)完成大型網(wǎng)絡(luò)的稀疏性構(gòu)建出現(xiàn)了一定的人為指導(dǎo),如Mobile、xception、Shuffle、SE各個(gè)網(wǎng)絡(luò),另一方面是遠(yuǎn)未得到泛用性的AutoML自動(dòng)搜索網(wǎng)絡(luò)結(jié)構(gòu)。
?????? Google I/O開發(fā)者大會(huì)上,萬惡的資本主義壟斷公司全球私人信息的無恥把持者—美國谷歌推出能自動(dòng)設(shè)計(jì)機(jī)器學(xué)習(xí)模型的方法AutoML,想讓神經(jīng)網(wǎng)絡(luò)更“平易近人”。雖然AutoML能設(shè)計(jì)出與人類設(shè)計(jì)的神經(jīng)網(wǎng)絡(luò)同等水平的小型神經(jīng)網(wǎng)絡(luò),但始終被限制在CIFAR-10和Penn Treebank等小型數(shù)據(jù)集上。即使在CIFAR-10 等小型數(shù)據(jù)集上進(jìn)行搜索CNN結(jié)構(gòu),仍然需要500塊TESLA顯卡的水準(zhǔn)。
??????? AutoML方法主要使用了強(qiáng)化學(xué)習(xí)和遷移學(xué)習(xí)。論文NAS-NeuralArchitecture Search With ReinforcementLearning的基礎(chǔ)做了突破性的改進(jìn),使得能讓機(jī)器在小數(shù)據(jù)集(CIFAR-10數(shù)據(jù)集)上自動(dòng)設(shè)計(jì)出CNN網(wǎng)絡(luò),并利用遷移學(xué)習(xí)技術(shù)使得設(shè)計(jì)的網(wǎng)絡(luò)能夠被很好的遷移到ImageNet數(shù)據(jù)集,驗(yàn)證集上達(dá)到了82.7%的預(yù)測精度,同時(shí)也可以遷移到其他的計(jì)算機(jī)視覺任務(wù)上(如目標(biāo)檢測)。
?????? 至此,Google接近完成布局整個(gè)AI的基礎(chǔ)設(shè)施,主推的中間件平臺(tái)(機(jī)器學(xué)習(xí)框架)TensorFlow,向上延伸到直接面對(duì)問題域的自動(dòng)生成結(jié)構(gòu)框架AutoML,向下延伸到Android系統(tǒng),以及硬件執(zhí)行處理器TPU。這樣,你只要給出問題描述和一部分?jǐn)?shù)據(jù),使用Google的服務(wù)可以一站式完成。這就意味著,只要哪天Google不爽了或者美國不爽了,Google不再給你服務(wù),你將不僅連空中樓閣都不是,而是海市蜃樓。
???
神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)自動(dòng)搜索初探:
?????? Neural Architecture Search with Reinforcement Learning(ICLR 2017 Best Paper)。為了增加網(wǎng)絡(luò)結(jié)構(gòu)搜索的 scalability,Google Residency Program 的成員 Barrret Zoph 在 Quoc Le 的帶領(lǐng)下開始了神經(jīng)網(wǎng)絡(luò)自動(dòng)調(diào)參的嘗試,Neural Architecture Search with Reinforcement Learning 就是對(duì)這一工作的總結(jié)。該論文獲得了 ICLR 2017 的 Best Paper。Barret Zoph 的工作成功在 CIFAR 和 PTB 上面搜索到了 state-of-the-art 的 CNN 和 LSTM 結(jié)構(gòu)。
?????? ? Barret Zoph 使用強(qiáng)化學(xué)習(xí)進(jìn)行網(wǎng)絡(luò)結(jié)構(gòu)搜索,網(wǎng)絡(luò)框架圖如下圖:
???????
??????? Controller 是由 RNN 構(gòu)成能夠產(chǎn)生每層網(wǎng)絡(luò)的 Kernel 大小和 skip connection 的連接,產(chǎn)生了網(wǎng)絡(luò)結(jié)構(gòu)之后,使用網(wǎng)絡(luò)結(jié)構(gòu)的準(zhǔn)確率作為 Reward function。Controller 會(huì)根據(jù) reward function 的反饋進(jìn)行網(wǎng)絡(luò)結(jié)構(gòu)調(diào)節(jié),最后會(huì)得到最優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu)。Controller 生成網(wǎng)絡(luò)結(jié)構(gòu)預(yù)測如下圖:
??????
............................
??????? AutoML分別找到在CIFAR-10和ImageNet圖像分類、COCO物體檢測中的最佳層。這兩層結(jié)合形成一種新架構(gòu),我們稱之為“NASNet”。
??????
?????
?????? 直接使用nas的框架來跑imagenet顯然是不行的!于是就有了AutoML這篇工作了:[1707.07012] Learning Transferable Architectures for Scalable Image Recognition。個(gè)人覺得這篇工作可以看做是在nas的基礎(chǔ)上加上幾個(gè)改進(jìn),使得可以在cifar10上設(shè)計(jì)的網(wǎng)絡(luò)能夠在imagenet上有效。
?????? 第一個(gè)改進(jìn)其實(shí)是一個(gè)經(jīng)驗(yàn):cnn 可以由同構(gòu)模塊進(jìn)行堆疊而構(gòu)成。這樣設(shè)計(jì)一個(gè)大型cnn網(wǎng)絡(luò)就直接簡化為設(shè)計(jì)一個(gè)block就行了,也就可以用nas解決了。
??????? 第二個(gè)改進(jìn):合理選擇搜索空間中的操作,使得block運(yùn)行時(shí)對(duì)輸入尺寸沒有要求(例如卷積,pooling等操作)。這樣圖像由cifar的32 到imagenet的大尺寸圖片就不會(huì)有問題了。
??????? 第三個(gè)改進(jìn)還是經(jīng)驗(yàn):block的連接,block內(nèi)部的一些拓?fù)浣Y(jié)構(gòu)根據(jù)經(jīng)驗(yàn)可以固定,不用去學(xué)。
基于以上幾條,nas那一套就可以直接用啦。這篇工作里面的網(wǎng)絡(luò)也看起來人性化一些,一個(gè)原因就是經(jīng)驗(yàn)性的東西加入了很多。
??????? 有了上面的想法,留給機(jī)器來做就好了,剩下的事情就簡單了。。。。。。。。。個(gè)屁啊,好的想法和最終的paper之間還差500塊gpu呢(ノ`⊿′)ノ。
?
另一個(gè)分支
??????? CNN的一個(gè)方向是模塊化以及結(jié)構(gòu)化,進(jìn)而可以自動(dòng)化生成。另外一個(gè)方向則向著輕量化、稀疏化的方向發(fā)展,主力為人工設(shè)計(jì)優(yōu)化網(wǎng)路結(jié)構(gòu)。網(wǎng)絡(luò)結(jié)構(gòu)產(chǎn)生各種進(jìn)化,有MobileNet、ShuffleNet、deformNet等。一切都是為了結(jié)構(gòu)再稀疏。
????? ? 搜狗總是無辜切換繁體字...
?
Bottleneck-為降低參數(shù)而降低參數(shù)
???? ? 為降低參數(shù)而降低參數(shù),微軟的發(fā)展了ResNet網(wǎng)絡(luò),對(duì)應(yīng)Google發(fā)展了Inception結(jié)構(gòu),加入1×1卷積核。
?????? 文章:?? ResNet之Deeper Bottle Architecture,簡稱DBA
?????? 關(guān)于ResNet,原作者闡述
Because of concerns on the training time that we can afford, we modify the building block as abottleneck design.
?????? 就是說,作者考慮到自己GPU的計(jì)算能力有限,所以才采用了bottleneck design!說到底還是沒錢上1080唄!不過2015年的時(shí)候1080還沒出來,那他為什么不上TITAN,還是沒錢唄!一個(gè)DBA內(nèi)部的結(jié)構(gòu)圖如下:
?????? ,通過對(duì)ResNet基元的疊加,產(chǎn)生大的整個(gè)ResNet網(wǎng)絡(luò)。
?????? 另一方面,GoogleNet的團(tuán)隊(duì)發(fā)現(xiàn),如果僅僅引入多個(gè)尺寸的卷積核,會(huì)帶來大量的額外的參數(shù),受到Network In Network中1×1卷積核的啟發(fā),為了解決這個(gè)問題,他們往Inception結(jié)構(gòu)中加入了一些1×1的卷積核,如圖所示:
?
加入1×1卷積核的Inception結(jié)構(gòu)
根據(jù)上圖,我們來做個(gè)對(duì)比計(jì)算,假設(shè)輸入feature map的維度為256維,要求輸出維度也是256維。有以下兩種操作:
256維的輸入直接經(jīng)過一個(gè)3×3×256的卷積層,輸出一個(gè)256維的feature map,那么參數(shù)量為:256×3×3×256 = 589,824
256維的輸入先經(jīng)過一個(gè)1×1×64的卷積層,再經(jīng)過一個(gè)3×3×64的卷積層,最后經(jīng)過一個(gè)1×1×256的卷積層,輸出256維,參數(shù)量為:256×1×1×64 + 64×3×3×64 + 64×1×1×256 = 69,632。足足把第一種操作的參數(shù)量降低到九分之一!
??? 1×1卷積核也被認(rèn)為是影響深遠(yuǎn)的操作,往后大型的網(wǎng)絡(luò)為了降低參數(shù)量都會(huì)應(yīng)用上1×1卷積核。1×1卷積核并不是真正的濾波器,它只是圖像的每個(gè)點(diǎn)都乘以1個(gè)權(quán)重,再加上一個(gè)偏置。M張圖像——>1個(gè)1×1卷積神經(jīng)元(有M個(gè)權(quán)重、一個(gè)偏置)——>1張圖像。
?
可分離卷積結(jié)構(gòu)-xception/MobileNet
?
??????? DepthWise操作:卷積操作非必須同時(shí)考慮通道和區(qū)域,由此引發(fā)把通道和空間區(qū)域分開考慮的DepthWise操作。
?????? 一個(gè)2×2的卷積核在卷積時(shí),對(duì)應(yīng)圖像區(qū)域中的所有通道均被同時(shí)考慮,問題在于,為什么一定要同時(shí)考慮圖像區(qū)域和通道?下圖為對(duì)比標(biāo)準(zhǔn)卷積核DepthWise操作。
???????
??????? 我們?yōu)槭裁床荒馨淹ǖ篮涂臻g區(qū)域分開考慮?
????????
?????? 我們首先對(duì)每一個(gè)通道進(jìn)行各自的卷積操作,有多少個(gè)通道就有多少個(gè)過濾器。得到新的通道feature maps之后,這時(shí)再對(duì)這批新的通道feature maps進(jìn)行標(biāo)準(zhǔn)的1×1跨通道卷積操作。這種操作被稱為 “DepthWise convolution” ,縮寫“DW”。
????? 這種操作是相當(dāng)有效的,在imagenet 1000類分類任務(wù)中已經(jīng)超過了InceptionV3的表現(xiàn),而且也同時(shí)減少了大量的參數(shù),我們來算一算,假設(shè)輸入通道數(shù)為3,要求輸出通道數(shù)為256,兩種做法:
?????? 1.直接接一個(gè)3×3×256的卷積核,參數(shù)量為:3×3×3×256 = 6,912
?????? 2.DW操作,分兩步完成,參數(shù)量為:3×3×3 + 3×1×1×256 = 795,又把參數(shù)量降低到九分之一 ! 因此,一個(gè)depthwise操作比標(biāo)準(zhǔn)的卷積操作降低不少的參數(shù)量,同時(shí)論文中指出這個(gè)模型得到了更好的分類效果。
????? Inception假設(shè):卷積層試圖在3D空間學(xué)習(xí)過濾器,2個(gè)空間維度( 寬和高)以及1個(gè)通道維度,因此一個(gè)卷積核需要同時(shí)繪制跨通道相關(guān)性和空間相關(guān)性。Inception模塊背后的思想就是通過將這個(gè)過程分解成一系列相互獨(dú)立的操作以使它更為便捷有效。進(jìn)一步講,典型的Inception模塊首先處理跨通道相關(guān)性,通過一組1×1卷積,將輸入數(shù)據(jù)繪制到3或4個(gè)小于原始輸入的不同空間,然后通過3×3或者5×5卷積將所有相關(guān)性繪制到更小的3D空間。圖示如上。實(shí)際上Inception背后基本的假設(shè)是使跨通道相關(guān)性和空間相關(guān)性的繪制有效脫鉤。
?
????? 通道間的相關(guān)性和空間相關(guān)性完全分離,文章:對(duì)Xception(一種深度可分離卷積)模型的介紹
????? Google現(xiàn)在作惡已經(jīng)肆無忌憚了:如何評(píng)價(jià)google的inceptionX網(wǎng)絡(luò),闡述的比較詳細(xì)
? ? ? xception:一個(gè)完全基于深度可分卷積層的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。實(shí)際上,我們做如此假設(shè):卷積神經(jīng)網(wǎng)絡(luò)的特征圖中的跨通道相關(guān)性和空間相關(guān)性的繪制可以完全脫鉤。由于這種假設(shè)是Inception結(jié)構(gòu)中極端化的假設(shè),我們將它稱作Xception,意指極端Inception。
?
交錯(cuò)組卷積IGC-模塊:
?
?????? 7 月 17 日,微軟亞洲研究院的一篇論文《Interleaved Group Convolutions for Deep Neural Networks》入選計(jì)算機(jī)視覺領(lǐng)域頂級(jí)會(huì)議 ICCV 2017(International Conference on Computer Vision)。論文中提出了一種全新的通用卷積神經(jīng)網(wǎng)絡(luò)交錯(cuò)組卷積(Interleaved Group Convolution,簡稱 IGC)模塊,解決了神經(jīng)網(wǎng)絡(luò)基本卷積單元中的冗余問題,可以在無損性能的前提下,縮減模型、提升計(jì)算速度,有助于深度網(wǎng)絡(luò)在移動(dòng)端的部署。研究就從通道的角度出發(fā),設(shè)計(jì)了一種全新的卷積冗余消除策略。
?
?????? 文章:交錯(cuò)組卷積詳解? ,消除冗余卷積核
?????? 論文:Interleaved Group Convolutions for Deep Neural Networks
?????? 研究的設(shè)計(jì)思路是來自于微軟亞洲研究院去年提出的深度融合(Deep Fusion)概念,其本質(zhì)是將不同分支的網(wǎng)絡(luò)在中間層進(jìn)行融合。他們在進(jìn)一步研究中發(fā)現(xiàn),一個(gè)標(biāo)準(zhǔn)的卷積也可以采用類似的多分支結(jié)構(gòu),由此展開深入研究,研究出了較為簡單的交錯(cuò)組卷積模塊,即 IGC 模塊。
???????
?
?????? 每個(gè)交錯(cuò)組卷積模塊包括兩個(gè)組卷積(group convolution)過程——第一次組卷積(primary group convolution)以及第二次組卷積(secondary group convolution)。組卷積曾被用于 AlexNet 中,將模型分布在兩個(gè) GPU 上以解決內(nèi)存處理問題。用一個(gè) 32 通道的例子來解釋一下組卷積:把 32 個(gè)輸入通道平均分為 4 組,每組擁有 8 個(gè)通道,并分別對(duì) 4 組單獨(dú)做卷積運(yùn)算。這樣的好處是參數(shù)較少可以提升計(jì)算速度,但是同時(shí),由于每組卷積之間不存在交互,不同組的輸出通道與輸入通道并不相關(guān)。為了讓輸入通道與每一個(gè)輸入通道實(shí)現(xiàn)關(guān)聯(lián),交錯(cuò)組卷積過程巧妙地引入了第二次組卷積,即第二次組卷積過程中,每組的輸入通道均來自于第一次組卷積過程不同的組,達(dá)到交錯(cuò)互補(bǔ)的目的。
?????
????????????????????????????????????????????????????????????????????????????????? 交錯(cuò)組卷積過程
?????? 從消除卷積核冗余的角度看,一個(gè)組卷積等價(jià)于具有稀疏核的普通卷積,而交錯(cuò)組卷積,即兩次組卷積則等價(jià)于兩個(gè)稀疏核相乘的普通卷積。這兩個(gè)稀疏矩陣相乘可以得到兩兩相關(guān)的稠密矩陣,是一個(gè)線性的過程。在網(wǎng)絡(luò)模型大小及計(jì)算復(fù)雜度相同的條件下,相較于普通卷積,使用 IGC 模塊的網(wǎng)絡(luò)更寬,性能更優(yōu)。
........................
?????? Xception 模塊可以看作交錯(cuò)組卷積的一個(gè)特例。如果第一次組卷積過程中,每組只有一個(gè)輸出通道,那么就變成了特殊的組卷積,即 channel-wise convolution,第二次組卷積成為 1X1 的卷積,這與 Xception 相似;如果第一次組卷積過程里僅有一組,那么這個(gè)過程就變成了普通卷積,第二次組卷積過程則相當(dāng)于分配給每個(gè)通過一個(gè)不同的權(quán)重。那么問題來了,極端情況下是否能帶來最佳結(jié)果?研究團(tuán)隊(duì)也針對(duì)這個(gè)問題進(jìn)行了探討,并設(shè)計(jì)了相關(guān)實(shí)驗(yàn),結(jié)果發(fā)現(xiàn)并不是這樣。
????????
?
?????? 通過實(shí)驗(yàn)結(jié)果可以發(fā)現(xiàn),網(wǎng)絡(luò)的性能會(huì)隨著通道數(shù)及組數(shù)的變化而變化,最優(yōu)性能配置點(diǎn)存在于兩個(gè)極端情況之間。精確度會(huì)隨著第一次組卷積分成的組數(shù)的增加(第二次組卷積分成的組數(shù)的減少)而提升,達(dá)到極值后開始降低。
?
?
?
MobileNet:
??????? MobileNet的主要工作是用depthwise sparable convolutions替代過去的standard convolutions來解決卷積網(wǎng)絡(luò)的計(jì)算效率和參數(shù)量的問題。使用深度分離的卷積可以極大地減少運(yùn)算和內(nèi)存的消耗,同時(shí)僅犧牲1%~5%的準(zhǔn)確率損失,準(zhǔn)確率的折損率取決于需要達(dá)到的運(yùn)算節(jié)約。
???????
?
ShulffeNet-分組卷積操作:
??????? 在AlexNet的Group Convolution當(dāng)中,特征的通道被平均分到不同組里面,最后再通過兩個(gè)全連接層來融合特征,這樣一來,就只能在最后時(shí)刻才融合不同組之間的特征,對(duì)模型的泛化性是相當(dāng)不利的。為了解決這個(gè)問題,ShuffleNet在每一次層疊這種Group conv層前,都進(jìn)行一次channel shuffle,shuffle過的通道被分配到不同組當(dāng)中。進(jìn)行完一次group conv之后,再一次channel shuffle,然后分到下一層組卷積當(dāng)中,以此循環(huán)。
???????
? 來自ShuffleNet論文
?????? 經(jīng)過channel shuffle之后,Group conv輸出的特征能考慮到更多通道,輸出的特征自然代表性就更高。另外,AlexNet的分組卷積,實(shí)際上是標(biāo)準(zhǔn)卷積操作,而在ShuffleNet里面的分組卷積操作是depthwise卷積,因此結(jié)合了通道洗牌和分組depthwise卷積的ShuffleNet,能得到超少量的參數(shù)以及超越mobilenet、媲美AlexNet的準(zhǔn)確率!速度可以超過AlexNet10倍。
?????? 要注意的是,Group conv是一種channel分組的方式,Depthwise +Pointwise是卷積的方式,只是ShuffleNet里面把兩者應(yīng)用起來了。因此Group conv和Depthwise +Pointwise并不能劃等號(hào)。
?????? 此文打的字比較多:從MobileNet到ShuffleNet-CNN網(wǎng)絡(luò)優(yōu)化學(xué)習(xí)總結(jié) ,長文也算比較有條理性,建議花半個(gè)小時(shí)讀一下這個(gè)翻譯。
?????? ........................
?????? 論文:ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
????? 分析一下 Xception 與 ResNeXt 的問題。先說效率,Xception 和 ResNeXt 所引入的 depthwise separable convolution 和 group convolution 雖然能協(xié)調(diào)模型的能力與計(jì)算量,但被發(fā)現(xiàn)它們的 pointwise convolution 占據(jù)著很大的計(jì)算量。因此ShuffleNet考慮引入 pointwise group convolution 來解決這個(gè)問題,后文有例子能看出這點(diǎn)。再說準(zhǔn)確率,前面也提到過 ResNeXt 的 C 參數(shù)是有極限的,也就是說給 ResNeXt 調(diào)參是沒有前途的,僅有的參數(shù)還有極限。而且 group convolution 用 groups 數(shù)來協(xié)調(diào)模型效果與計(jì)算量,這本身就是一對(duì)技術(shù)矛盾。TRIZ理論告訴我們遇到技術(shù)矛盾,一定要打消協(xié)調(diào)的念頭,并深入挖掘矛盾本質(zhì),尋找機(jī)會(huì)消除矛盾。
?????? 我認(rèn)為 ShuffleNet 解決這兩個(gè)問題的思路是,先引入 pointwise group convolution 解決效率問題,再想辦法把它所帶來的次級(jí)問題與原來的效果問題合在一起解決,原因是次級(jí)問題也是group的調(diào)整。實(shí)際上,引入 pointwise group convolution 可以認(rèn)為利用 TRIZ 的 STC 算子或提前做原則,這跟 Xception 把 groups 分到最小變成 depthwise 的極限思路也像。既然 ResNeXt 在瓶頸模塊中間采用了 splitting 策略,為何就不在輸入就采用這種策略呢?這樣不網(wǎng)絡(luò)整體就分離了么?然而,這個(gè)分組數(shù) g 跟 Cardinality 一樣影響著模型的能力,由此 pointwise group convolution 帶來了次級(jí)問題。而這個(gè)問題的本質(zhì)是什么呢?對(duì)比分組卷積和常規(guī)卷積的運(yùn)算規(guī)則,我們能夠發(fā)現(xiàn)根本矛盾可能是分組卷積沒有 Channel Correlation,那么需要解決的矛盾就變成如何讓分組卷積也有 Channel Correlation。Face++ 用 Channel Shuffle 來解決這個(gè)問題。
???????
?????? 如上圖(b)所示,Input 分成 3 組并分別做了對(duì)應(yīng)的變換( 3x3 GConv1),然后在下一次變換(3x3 GConv2)之前做了一次分組間的 Channel Shuffle。如此一來,每個(gè)分組就含有了 其它分組的局部 Channel Correlation 了。如果 Channel Shuffle 次數(shù)足夠多,我覺著就可以認(rèn)為這完全等效于常規(guī)卷積運(yùn)算了。這是一個(gè)不錯(cuò)的創(chuàng)新點(diǎn),只是效率看起來并不那么完美,原因是 Channels Shuffle 操作會(huì)導(dǎo)致內(nèi)存不連續(xù)這個(gè)影響有待評(píng)估。另外,即使兩個(gè)分組的大小不一樣,Channel Shuffle 仍然是可以做的。ShuffleNet 以 Channel Shuffle 為基礎(chǔ)構(gòu)造出 ShuffleNet Unit,最后我們看一下這個(gè) ShuffleNet Unit。
?????
?????? 關(guān)于計(jì)算和推導(dǎo)還是看原文吧:從MobileNet到ShuffleNet-CNN網(wǎng)絡(luò)優(yōu)化學(xué)習(xí)總結(jié)
?????? ShuffleNet,通過引入 Channel Shuffle 解決分組卷積的 Channel Correlation 問題,并充分驗(yàn)證它的有效性,同時(shí)具備理論創(chuàng)新與實(shí)用性。理論上,用了一種輕量級(jí)的方法解決了 AlexNet 原有的分組并行信息交互問題。而且這個(gè)網(wǎng)絡(luò)的效率很高,適合嵌入式產(chǎn)品。美中不足的是,Channel Shuffle 看起來對(duì)現(xiàn)有 CPU 不大友好,畢竟破壞了數(shù)據(jù)存儲(chǔ)的連續(xù)性,使得 SIMD(單指令多數(shù)據(jù)流) 的發(fā)揮不是特別理想,估計(jì)在實(shí)現(xiàn)上需要再下點(diǎn)功夫。
?
通道之間特征稀疏性——SENet???????
??????? 無論是在Inception、DenseNet或者ShuffleNet里面,我們對(duì)所有通道產(chǎn)生的特征都是不分權(quán)重直接結(jié)合的,那為什么要認(rèn)為所有通道的特征對(duì)模型的作用就是相等的呢? 這是一個(gè)好問題,于是,ImageNet2017 冠軍SEnet就出來了。
????????
?????? SEnet 結(jié)構(gòu) : 一組特征在上一層被輸出,這時(shí)候分兩條路線,第一條直接通過,第二條首先進(jìn)行Squeeze操作(Global Average Pooling),把每個(gè)通道2維的特征壓縮成一個(gè)1維,從而得到一個(gè)特征通道向量(每個(gè)數(shù)字代表對(duì)應(yīng)通道的特征)。然后進(jìn)行Excitation操作,把這一列特征通道向量輸入兩個(gè)全連接層和sigmoid,建模出特征通道間的相關(guān)性,得到的輸出其實(shí)就是每個(gè)通道對(duì)應(yīng)的權(quán)重,把這些權(quán)重通過Scale乘法通道加權(quán)到原來的特征上(第一條路),這樣就完成了特征通道的權(quán)重分配。作者詳細(xì)解釋可以看這篇文章:專欄 | Momenta詳解ImageNet 2017奪冠架構(gòu)SENet.
??????? 中國人寫的,就不必要裝13看英文了......
????? ? 論文下載鏈接:https://arxiv.org/pdf/1709.01507.pdf
??????? Pretrained模型和相關(guān)代碼可訪問github獲取: https://github.com/hujie-frank/SENet
?
固定卷積核增加感受野-dilated conv孔洞卷積
????? ?? 參考:MIT SceneParsing 與dilated conv網(wǎng)絡(luò);如何理解擴(kuò)展卷積網(wǎng)絡(luò)?下一段摘抄于此文
?????? ? 論文:Multi-scale context aggregation by dilated convolutions
???? ?? 誕生背景,在圖像分割領(lǐng)域,圖像輸入到CNN(典型的網(wǎng)絡(luò)比如FCN[3])中,FCN先像傳統(tǒng)的CNN那樣對(duì)圖像做卷積再pooling,降低圖像尺寸的同時(shí)增大感受野,但是由于圖像分割預(yù)測是pixel-wise的輸出,所以要將pooling后較小的圖像尺寸upsampling到原始的圖像尺寸進(jìn)行預(yù)測(upsampling一般采用deconv反卷積操作,deconv可參見知乎答案如何理解深度學(xué)習(xí)中的deconvolution networks?),之前的pooling操作使得每個(gè)pixel預(yù)測都能看到較大感受野信息。因此圖像分割FCN中有兩個(gè)關(guān)鍵,一個(gè)是pooling減小圖像尺寸增大感受野,另一個(gè)是upsampling擴(kuò)大圖像尺寸。在先減小再增大尺寸的過程中,肯定有一些信息損失掉了,那么能不能設(shè)計(jì)一種新的操作,不通過pooling也能有較大的感受野看到更多的信息呢?答案就是dilated conv。
??????? 標(biāo)準(zhǔn)的3×3卷積核只能看到對(duì)應(yīng)區(qū)域3×3的大小,但是為了能讓卷積核看到更大的范圍,dilated conv使其成為了可能。dilated conv原論文中的結(jié)構(gòu)如圖所示:
????????
??????? 上圖b可以理解為卷積核大小依然是3×3,但是每個(gè)卷積點(diǎn)之間有1個(gè)空洞,也就是在綠色7×7區(qū)域里面,只有9個(gè)紅色點(diǎn)位置作了卷積處理,其余點(diǎn)權(quán)重為0。這樣即使卷積核大小不變,但它看到的區(qū)域變得更大了。
???????? dilated的好處是不做pooling損失信息的情況下,加大了感受野,讓每個(gè)卷積輸出都包含較大范圍的信息。在圖像需要全局信息或者語音文本需要較長的sequence信息依賴的問題中,都能很好的應(yīng)用dilated conv,比如圖像分割[3]、語音合成WaveNet[2]、機(jī)器翻譯ByteNet[1]中。
?
消除邊緣冗余-變形卷積核
??????? 同樣的物體在圖像中可能呈現(xiàn)出不同的大小、姿態(tài)、視角變化甚至非剛體形變,如何適應(yīng)這些復(fù)雜的幾何形變是物體識(shí)別的主要難點(diǎn),也是計(jì)算機(jī)視覺領(lǐng)域多年來關(guān)注的核心問題。
??????? 微軟亞洲研究院視覺計(jì)算組的研究員在arXiv上公布了一篇題為“Deformable Convolutional Networks”(可變形卷積網(wǎng)絡(luò))的論文,首次在卷積神經(jīng)網(wǎng)絡(luò)(convolutional neutral networks,CNN)中引入了學(xué)習(xí)空間幾何形變的能力,得到可變形卷積網(wǎng)絡(luò)(deformable convolutional networks),從而更好地解決了具有空間形變的圖像識(shí)別任務(wù)。研究員們通過大量的實(shí)驗(yàn)結(jié)果驗(yàn)證了該方法在復(fù)雜的計(jì)算機(jī)視覺任務(wù)(如目標(biāo)檢測和語義分割)上的有效性,首次表明在深度卷積神經(jīng)網(wǎng)絡(luò)(deep CNN)中學(xué)習(xí)空間上密集的幾何形變是可行的。
????? ? ? GitHub代碼:https://github.com/msracver/Deformable-ConvNets
????? ?? 論文:Deformable Convolutional Networks
???????? 文章翻譯:可變形卷積網(wǎng)絡(luò)—計(jì)算機(jī)新“視”界
???????? 傳統(tǒng)的卷積核一般都是長方形或正方形,但MSRA提出了一個(gè)相當(dāng)反直覺的見解,認(rèn)為卷積核的形狀可以是變化的,變形的卷積核能讓它只看感興趣的圖像區(qū)域 ,這樣識(shí)別出來的特征更佳。
??????
?????? 微軟亞洲研究院的研究員們發(fā)現(xiàn),標(biāo)準(zhǔn)卷積中的規(guī)則格點(diǎn)采樣是導(dǎo)致網(wǎng)絡(luò)難以適應(yīng)幾何形變的“罪魁禍?zhǔn)住?/span>。為了削弱這個(gè)限制,研究員們對(duì)卷積核中每個(gè)采樣點(diǎn)的位置都增加了一個(gè)偏移的變量。通過這些變量,卷積核就可以在當(dāng)前位置附近隨意的采樣,而不再局限于之前的規(guī)則格點(diǎn)。這樣擴(kuò)展后的卷積操作被稱為可變形卷積(deformable convolution)。標(biāo)準(zhǔn)卷積和可變形卷積在圖1中有簡要的展示。
??????????
??????? 可變形卷積單元中增加的偏移量是網(wǎng)絡(luò)結(jié)構(gòu)的一部分,通過另外一個(gè)平行的標(biāo)準(zhǔn)卷積單元計(jì)算得到,進(jìn)而也可以通過梯度反向傳播進(jìn)行端到端的學(xué)習(xí)。加上該偏移量的學(xué)習(xí)之后,可變形卷積核的大小和位置可以根據(jù)當(dāng)前需要識(shí)別的圖像內(nèi)容進(jìn)行動(dòng)態(tài)調(diào)整,其直觀效果就是不同位置的卷積核采樣點(diǎn)位置會(huì)根據(jù)圖像內(nèi)容發(fā)生自適應(yīng)的變化,從而適應(yīng)不同物體的形狀、大小等幾何形變,如圖2、3中所展示。
??????????
????? 總結(jié):要做到可變性操作,可以直接在原來的過濾器前面再加一層過濾器,這層過濾器學(xué)習(xí)的是下一層卷積核的位置偏移量(offset),這樣只是增加了一層過濾器,或者直接把原網(wǎng)絡(luò)中的某一層過濾器當(dāng)成學(xué)習(xí)offset的過濾器,這樣實(shí)際增加的計(jì)算量是相當(dāng)少的,但能實(shí)現(xiàn)可變形卷積核,識(shí)別特征的效果更好。
?
CNN結(jié)構(gòu)的新發(fā)展
?????? 一個(gè)類似于窮舉的大CNN結(jié)構(gòu)到了貌似接近遍歷整個(gè)圖像狀態(tài)空間的程度,迭代更新的過程中附帶著CNN結(jié)構(gòu)的稀疏性構(gòu)建。同時(shí)也代表了解決一般問題的通路,逐步劃分子空間,從歸納到遍歷的一般套路。
卷積核方面:大卷積核用多層多個(gè)個(gè)小卷積核代替;單一尺寸卷積核用多尺寸卷積核代替;固定形狀卷積核趨于使用可變形卷積核;使用1×1卷積核(bottleneck結(jié)構(gòu))。
卷積層通道方面:標(biāo)準(zhǔn)卷積用depthwise卷積代替;使用分組卷積;分組卷積前使用channel shuffle;通道加權(quán)計(jì)算。
卷積層連接方面:使用skip connection,讓模型更深,集成為概率模型;densely connection,使每一層都融合上其它層的特征輸出(DenseNet),這種方法不一定妥當(dāng)......
其他啟發(fā):類比到通道加權(quán)操作,卷積層跨層連接能否也進(jìn)行加權(quán)處理?bottleneck + Group conv + channel shuffle + depthwise的結(jié)合會(huì)不會(huì)成為以后降低參數(shù)量的標(biāo)準(zhǔn)配置?
?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的AI:IPPR的数学表示-CNN稀疏结构进化(Mobile、xception、Shuffle、SE、Dilated、Deformable)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10款路由器大对比-路由器 比较
- 下一篇: 聪明的女人不生二胎(女人37岁生二胎)