亚洲国产成人欧美在线观看-亚洲欧美日韩中文字幕二区-久久99曰韩国产精品久久99-欧美成人精品第二区在线-成人精品视频一区二区不卡

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

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

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

三、每層卷積只能用一種尺寸的卷積核?-- Inception結構
  傳統的層疊式網(wǎng)絡(luò ),基本上都是一個(gè)個(gè)卷積層的堆疊,每層只用一個(gè)尺寸的卷積核,例如VGG結構中使用了大量的3×3卷積層。事實(shí)上,同一層feature map可以分別使用多個(gè)不同尺寸的卷積核,以獲得不同尺度的特征,再把這些特征結合起來(lái),得到的特征往往比使用單一卷積核的要好,谷歌的GoogleNet,或者說(shuō)Inception系列的網(wǎng)絡(luò ),就使用了多個(gè)卷積核的結構:

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

加入1×1卷積核的Inception結構

  根據上圖,我們來(lái)做個(gè)對比計算,假設輸入feature map的維度為256維,要求輸出維度也是256維。有以下兩種操作:
  256維的輸入直接經(jīng)過(guò)一個(gè)3×3×256的卷積層,輸出一個(gè)256維的feature map,那么參數量為:256×3×3×256 = 589,824
  256維的輸入先經(jīng)過(guò)一個(gè)1×1×64的卷積層,再經(jīng)過(guò)一個(gè)3×3×64的卷積層,最后經(jīng)過(guò)一個(gè)1×1×256的卷積層,輸出256維,參數量為:256×1×1×64 + 64×3×3×64 + 64×1×1×256 = 69,632。足足把第一種操作的參數量降低到九分之一!
  1×1卷積核也被認為是影響深遠的操作,往后大型的網(wǎng)絡(luò )為了降低參數量都會(huì )應用上1×1卷積核。
五、越深的網(wǎng)絡(luò )就越難訓練嗎?-- Resnet殘差網(wǎng)絡(luò )

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

  標準的卷積過(guò)程可以看上圖,一個(gè)2×2的卷積核在卷積時(shí),對應圖像區域中的所有通道均被同時(shí)考慮,問(wèn)題在于,為什么一定要同時(shí)考慮圖像區域和通道?我們?yōu)槭裁床荒馨淹ǖ篮涂臻g區域分開(kāi)考慮?

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

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

七、分組卷積能否對通道進(jìn)行隨機分組?-- ShuffleNet
在A(yíng)lexNet的Group Convolution當中,特征的通道被平均分到不同組里面,最后再通過(guò)兩個(gè)全連接層來(lái)融合特征,這樣一來(lái),就只能在最后時(shí)刻才融合不同組之間的特征,對模型的泛化性是相當不利的。為了解決這個(gè)問(wèn)題,ShuffleNet在每一次層疊這種Group conv層前,都進(jìn)行一次channel shuffle,shuffle過(guò)的通道被分配到不同組當中。進(jìn)行完一次group conv之后,再一次channel shuffle,然后分到下一層組卷積當中,以此循環(huán)。

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

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

  上圖b可以理解為卷積核大小依然是3×3,但是每個(gè)卷積點(diǎn)之間有1個(gè)空洞,也就是在綠色7×7區域里面,只有9個(gè)紅色點(diǎn)位置作了卷積處理,其余點(diǎn)權重為0。這樣即使卷積核大小不變,但它看到的區域變得更大了。詳細解釋可以看這個(gè)回答:如何理解空洞卷積(dilated convolution)?
十、卷積核形狀一定是矩形嗎?-- Deformable convolution 可變形卷積核

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

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

Copyright © 東莞佰和生物科技有限公司  備案號:粵ICP備19095204號
地址:東莞松山湖高新技術(shù)產(chǎn)業(yè)開(kāi)發(fā)區科技四路16號光大We谷C2棟616室

本站部分圖文來(lái)源網(wǎng)絡(luò ),如有侵權問(wèn)題請通知我們處理!