人工智能動態
  • 來源: 知乎
  • 日期: 2019-09-12
文章摘自知乎,作者Justin ho,發布於2019.06.28
  CNN從2012年的AlexNet發展至今,科學家(jiā)們發明出各種各樣的CNN模型,一個比一個深,一(yī)個比一個準確,一個比一個(gè)輕量。我下麵會對近幾年一些具有變革性的工作進行簡單盤點,從這些充滿革新性的工作中探(tàn)討日後的(de)CNN變革方向。
注:水平(píng)所限,下麵的見解或許有偏差,望大牛指正。另外隻介紹其中具有代表性的模型,一些著名的模型由於原理相同將不作介紹,若有遺漏也歡迎指(zhǐ)出。
一、卷積隻能(néng)在同一組進行嗎?-- Group convolution
  Group convolution 分(fèn)組卷積,最早在AlexNet中出現(xiàn),由於當時的(de)硬件資源有限,訓練AlexNet時卷積操(cāo)作不能全部放在同一個GPU處理(lǐ),因此作(zuò)者把feature maps分給多(duō)個GPU分別進行處理,最後把多個GPU的結果進行融合。

alexnet
  分組卷積的思想影響比較深遠,當前一些輕量級(jí)的SOTA(State Of The Art)網絡,都用到了分組卷積(jī)的操作,以節省計算量。但題主有(yǒu)個疑問是,如果分組卷積是分在不同GPU上的(de)話,每個GPU的計算量就降低到 1/groups,但(dàn)如果依然在同一個GPU上計算,最終整體的計算量是否不變?找了pytorch上有關組卷積操作的介紹,望讀者解答我的疑問。

pytroch github
EDIT:
  關於(yú)這個(gè)問題,知乎用戶朋友 蔡冠羽 提出了他的(de)見解:
我感覺group conv本身應該就大大減少了參數,比如當input channel為256,output channel也為(wéi)256,kernel size為3*3,不做group conv參數為256*3*3*256,若group為8,每個(gè)group的input channel和output channel均為32,參數為8*32*3*3*32,是原來的八分之一。這是我的理解。
   我的理解是分組卷積最後每一組輸出的feature maps應該是(shì)以concatenate的方式組合,而不是(shì)element-wise add,所以每組輸(shū)出的channel是 input channels / #groups,這樣參數量就大大減少了。
二、卷積核一定越大越好?-- 3×3卷積核
  AlexNet中用到了(le)一些非(fēi)常(cháng)大的卷積核,比如11×11、5×5卷積核,之前人們的觀念是,卷積核越大(dà),receptive field(感受野)越大,看到的圖片信息越多,因(yīn)此獲(huò)得的(de)特征越好。雖說如此,但是大的卷積核會導致計算量的暴增,不利於模型(xíng)深度的增加,計算性能也(yě)會降低。於(yú)是在VGG(最早使用)、Inception網絡中,利用2個3×3卷積核的組合比1個5×5卷(juàn)積核的效果更佳,同時參數量(3×3×2+1 VS 5×5×1+1)被降低,因此後來3×3卷積核被廣泛應用在各種模型中。

三、每層(céng)卷積隻能用一(yī)種尺寸的卷積核?-- Inception結構
  傳統的層疊(dié)式網絡,基本上都是(shì)一個個卷積層的堆疊,每層隻用一個尺寸(cùn)的卷積核(hé),例如VGG結構中使用了大量的3×3卷積(jī)層。事實上,同一層(céng)feature map可以分別使用(yòng)多個不同尺寸(cùn)的卷積核,以獲得不同尺度的特征,再把這些特征結合起來,得到的特征往往比(bǐ)使(shǐ)用單(dān)一卷(juàn)積核的要好,穀歌的GoogleNet,或者說Inception係(xì)列的網絡(luò),就使用(yòng)了多個卷積核的結構:

最初版本的Inception結(jié)構(gòu)
  如上圖(tú)所示,一個輸入的feature map分別同時經過1×1、3×3、5×5的卷積核的處理,得出(chū)的特征再組合起來,獲得更佳的特征。但這(zhè)個結構會存在一個嚴重的(de)問題:參數量比單個卷積核要多很多,如此(cǐ)龐大的(de)計算量會(huì)使得模型效率低下。這就引出了一(yī)個新(xīn)的結構:
四、怎樣才能減少卷積層參數量?-- Bottleneck
發明(míng)GoogleNet的團隊發現,如果僅僅引入(rù)多個尺寸的卷積(jī)核(hé),會帶來大量的(de)額外的參數,受到Network In Network中1×1卷(juàn)積核的啟發,為了解決這個問題,他(tā)們往Inception結構中加入了一些1×1的卷積核,如圖所示:

加入1×1卷積(jī)核的Inception結構

  根據上圖,麻豆免费视频來做個對比計算,假設輸入feature map的維(wéi)度為256維,要求輸出維度也是256維(wéi)。有以下(xià)兩種(zhǒng)操作(zuò):
  256維的輸入直(zhí)接經過一個3×3×256的(de)卷積層,輸出一個256維的feature map,那麽參數量(liàng)為(wéi):256×3×3×256 = 589,824
  256維的輸入先經過一個1×1×64的卷積層,再經過一個3×3×64的卷積(jī)層,最後經(jīng)過一個1×1×256的卷積層(céng),輸出256維,參數量為(wéi):256×1×1×64 + 64×3×3×64 + 64×1×1×256 = 69,632。足足把第一種操作的(de)參數量降低到九分之一!
  1×1卷積核也被認為是影響深遠的操作,往後大型的(de)網絡為了降(jiàng)低參數量都(dōu)會應用上1×1卷積核。
五、越深的網絡(luò)就越難訓練(liàn)嗎?-- Resnet殘差網絡

ResNet skip connection
  傳統(tǒng)的卷積層層疊網絡會遇到一個問題,當層數加深(shēn)時,網絡的表現越來越差,很大程度上的原(yuán)因是因為當層(céng)數加深時,梯(tī)度消散得越來越嚴重(chóng),以至於反向傳(chuán)播很難(nán)訓(xùn)練到淺層的網絡。為了解決這個問題,何凱明大神想出了一個(gè)“殘差網絡”,使得梯度更(gèng)容(róng)易地流動到淺層的網絡(luò)當中去,而且這種“skip connection”能帶來更多的好處,這裏可以參考一個PPT:極深(shēn)網絡(ResNet/DenseNet): Skip Connection為何有效及其它(tā) ,以及我的一篇文(wén)章:為什麽ResNet和DenseNet可以這麽(me)深?一文詳解殘差塊為何能解決梯(tī)度彌散(sàn)問題(tí)。 ,大家可以結合下麵的評(píng)論進行思(sī)考。
六、卷積操(cāo)作時(shí)必(bì)須(xū)同時考慮通(tōng)道和區域嗎?-- DepthWise操作

  標準(zhǔn)的卷積過程可以看上圖(tú),一個2×2的卷積核在卷積時,對應圖像區域中的所有通道均被同時考慮,問題在於,為什麽一定要同時考慮圖像區域和通道?麻豆免费视频為什(shí)麽不能把通道和空間區域分開考慮?

  Xception網絡(luò)就是基於以上的問題發(fā)明而來。麻豆免费视频(men)首(shǒu)先對每一個(gè)通道(dào)進行各自的卷積操作,有多少個通道就有多少個(gè)過濾器。得(dé)到新(xīn)的通道feature maps之後,這時再對這批新的通道(dào)feature maps進行標準的1×1跨通道卷積操作。這種操作被稱為 “DepthWise convolution” ,縮寫“DW”。
  這種操作是相當有效的,在imagenet 1000類分類任務中已經超(chāo)過了InceptionV3的表現,而且也同時減少了大量的(de)參數,麻豆免费视频來算一算,假設輸入通道數為3,要求輸出通道數為256,兩種做法:
  1.直接接一個3×3×256的卷積核,參數量(liàng)為:3×3×3×256 = 6,912
  2.DW操作,分兩(liǎng)步完成,參數量(liàng)為:3×3×3 + 3×1×1×256 = 795,又把參數(shù)量降低(dī)到九分之一!
  因此,一個depthwise操作(zuò)比標準的卷積操作降低不少的參數量,同時論文中(zhōng)指出這個模型得到了更好的分類效果。

EDIT:2017.08.25
  本文在發出(chū)12小時後,一位知乎用戶私信了我,向我介紹了Depthwise和Pointwise的曆史工作,而Xception和mobilesnet也引用了他們16年的工作,就是Min Wang et al 的Factorized Convolutional Neural Networks,這篇論文的(de)Depthwise中,每一通道輸出的(de)feature map(稱為“基層”)可以不止一個,而Xception中(zhōng)的Depthwise separable Convolution, 正是這篇工作中“單一基層(céng)”的情況。推薦有興趣的讀者關注下他們的工作,這裏有篇(piān)介紹博文:【深度學習】卷(juàn)積層提速Factorized Convolutional Neural Networks。而最早關於separable convolution的介紹,Xception作者提到,應該追溯(sù)到Lau- rent Sifre 2014年的(de)工作 Rigid-Motion Scattering For Image Classification 6.2章節。

七、分組卷積(jī)能否對通道進行隨機分組(zǔ)?-- ShuffleNet
在AlexNet的Group Convolution當中,特征的(de)通道被平均分(fèn)到不同組裏麵,最後再通過(guò)兩(liǎng)個全連接層來融合特(tè)征,這樣一來,就隻能在(zài)最後時刻才融合不同組之間的特(tè)征,對模型的泛(fàn)化性是相當不利的。為了解決這(zhè)個問題,ShuffleNet在每一次層疊這種Group conv層前,都進(jìn)行一次channel shuffle,shuffle過(guò)的通道(dào)被分配到不同組當(dāng)中。進(jìn)行完一次group conv之後,再一次channel shuffle,然(rán)後(hòu)分到下一層組卷積當中,以(yǐ)此循環。

來自ShuffleNet論文
  經過channel shuffle之後,Group conv輸出的特征能考(kǎo)慮到更多通道,輸出的特征自然代(dài)表性就更高。另外,AlexNet的分組卷積,實際(jì)上(shàng)是標準卷積操作,而在ShuffleNet裏麵的分組卷積操作是depthwise卷積,因此結合了通(tōng)道洗牌和分組depthwise卷積的ShuffleNet,能得到超少量的(de)參數以及超越mobilesnet、媲美AlexNet的準確(què)率!
  另外值得一提的是,微軟亞洲研究院MSRA最近也有類似的工作,他們提出了一個IGC單元(Interleaved Group Convolution),即(jí)通用卷積神經網絡交錯組卷積(jī),形式上類似進行了兩(liǎng)次組卷積,Xception 模塊可以(yǐ)看(kàn)作交錯組卷積的(de)一個特例,特別推薦看看這(zhè)篇文章:王井東詳解ICCV 2017入選論文:通用(yòng)卷積神經網絡交錯組(zǔ)卷積
  要注意的是,Group conv是(shì)一種channel分組的方式,Depthwise +Pointwise是卷積的方式,隻是ShuffleNet裏麵把兩者(zhě)應用起來(lái)了(le)。因此Group conv和Depthwise +Pointwise並不能劃等號(hào)。
八、通道間的特征(zhēng)都是平等(děng)的(de)嗎? -- SEnet
  無論(lùn)是在Inception、DenseNet或者ShuffleNet裏麵,麻豆免费视频對所有通道產(chǎn)生的特征都是不分(fèn)權重直接結合的,那為什麽要(yào)認為所有通道的特征對模型的作用就是相(xiàng)等的呢? 這是一個(gè)好問題,於是,ImageNet2017 冠軍SEnet就出來了。

SEnet 結構(gòu)
  一組特征在(zài)上一層被(bèi)輸出,這時候分兩條路線,第一(yī)條直接通過,第二(èr)條首先進行Squeeze操作(Global Average Pooling),把每個通道2維的特征壓縮成一個1維,從而得到一個特征(zhēng)通(tōng)道向量(每個數字代表(biǎo)對應通(tōng)道的(de)特征)。然後進行Excitation操作,把這一列特征通道向量輸入兩個全連(lián)接層和sigmoid,建模出特征通道間的相關(guān)性,得到的輸出其實就是每個通道對應的權重(chóng),把這些權重通過Scale乘法通(tōng)道加權(quán)到原來的特(tè)征上(第一條路),這(zhè)樣(yàng)就完成了特征通道的權重分配(pèi)。作者(zhě)詳細解釋可以看這篇文章:專欄 | Momenta詳解ImageNet 2017奪冠(guàn)架構SENet
九、能否讓固定大小的卷積(jī)核(hé)看到更大範圍的區域?-- Dilated convolution
  標準的3×3卷積核隻能看到對應區域3×3的大小,但(dàn)是為(wéi)了能讓卷積核看到更(gèng)大的範圍,dilated conv使其成為了可能。dilated conv原論文中的結構如圖所示:

  上圖b可以(yǐ)理解為(wéi)卷積(jī)核大小依然是3×3,但(dàn)是每個卷(juàn)積點之(zhī)間有1個空洞,也就是在綠色7×7區域裏麵,隻有(yǒu)9個紅色點(diǎn)位置作了卷積處理,其餘點權(quán)重為0。這樣(yàng)即使卷(juàn)積核大小不變,但它看到的區域變(biàn)得更大了。詳細解釋可以看這個(gè)回答:如何理解空洞卷積(dilated convolution)?
十、卷積核形狀一定(dìng)是矩形嗎(ma)?-- Deformable convolution 可變形卷積(jī)核

圖來自微軟亞洲研究院公眾號
  傳統的卷積核一(yī)般(bān)都是長方形或正(zhèng)方形,但MSRA提出(chū)了一個相當反直覺的見(jiàn)解,認為卷積核的形狀可(kě)以是變化的,變形的卷積核(hé)能讓它(tā)隻看感興趣的圖(tú)像區域 ,這樣識別出來的特征更佳(jiā)。

  圖(tú)來自微(wēi)軟亞洲研究院公(gōng)眾號要做(zuò)到這(zhè)個操(cāo)作,可以直(zhí)接在原來的過濾器前麵再加一層(céng)過濾(lǜ)器,這層過濾器學習的是下一層卷積核(hé)的位置偏移量(offset),這樣隻是增加了一層(céng)過濾器,或者直接把原網絡中的某一層過濾器(qì)當成學習offset的過濾器,這(zhè)樣實際增加的計算量是相(xiàng)當少(shǎo)的,但能實現可變形卷積核,識別特征的效果更好。詳細MSRA的解讀可以看(kàn)這個鏈接(jiē):可(kě)變形卷積網(wǎng)絡:計算機新“視”界(jiè)。
啟發與思考
  現在越來越多的CNN模型從巨型網絡到輕量(liàng)化網絡一步(bù)步演變,模型準確率也越來越高。現在工業(yè)界追求的(de)重點已經不是準確率的提升(因為都已經很高了(le)),都聚焦於速度與準確率的trade off,都希望模型又快又準。因此從(cóng)原來AlexNet、VGGnet,到體積小一點的Inception、Resnet係列,到目前能(néng)移植到移動端的mobilesnet、ShuffleNet(體積能降低到0.5mb!),麻豆免费视频可以看到這樣一(yī)些趨勢:
卷(juàn)積核(hé)方麵:
大卷積核用多個(gè)小卷積核代替;
單一尺寸卷積核用多尺寸卷積核代替;
固定形狀卷積核趨於使用可變形卷積(jī)核;
使用1×1卷積核(bottleneck結構)。
卷積層通道方麵:
標準卷積用depthwise卷積代替;
使用分組卷積;
分組卷積前(qián)使用channel shuffle;
通道(dào)加權計算。
卷積層連接方麵:
使用skip connection,讓模型更深(shēn);
densely connection,使每一層都融合上其它層的特征輸出(DenseNet)
啟發
  類(lèi)比到通道加權操作,卷積層跨層連接能否也進行加權處理?bottleneck + Group conv + channel shuffle + depthwise的結合會不(bú)會成為以後降低參數量的標準配置?
企業文化
東莞佰和的企業(yè)文化:佰和智能科技伴(bàn)您(nín)終身,幸福健康每一家
公司戰略用專業AI技術、腸道菌群技術和免疫食品技術建(jiàn)立老年智能健(jiàn)康服(fú)務平台
宗旨:做中國優秀的將人工智(zhì)能技術應用在老年人群和老年癡呆人群的專(zhuān)業公司
公司願景創建和發展(zhǎn)中(zhōng)國領先的老年癡呆、老人智能健(jiàn)康服務平台
公司的核心價值觀以人為本、開放、自由、平等(děng)、創新、奉獻,人人都是企業的主人
公司的服務目標通過使用佰和的產品,讓老年癡呆(dāi)患者和老人過有(yǒu)尊嚴的晚年生活
社會責任:減輕國家、社會、家庭(tíng)的負擔,減輕護工的壓力(lì),提高老年癡呆患(huàn)者生活質量
聯係我(wǒ)們
東莞佰和生物科技有限公司
手機:13925845520
聯係人:何先(xiān)生(shēng)
郵箱:henrik@baiherobot.com
網址:www.hggb.cn
地址:東莞鬆山湖高新技術產業開發區科技四(sì)路16號光大We穀C2棟(dòng)616室
其它 >>

Copyright © 東莞佰和生物科技有限公司  備案號:粵ICP備(bèi)19095204號
地址:東莞鬆山湖高新技術產業(yè)開發區科(kē)技四路16號光大We穀(gǔ)C2棟616室

本站部分圖文來源網絡,如有侵權問題請(qǐng)通知麻豆免费视频處理!
网站地图 麻豆免费视频-免费麻豆国产黄网站在线观看-国产麻豆视频免费观看-麻豆tv.appfor在线看