0
本文作者: 汪思穎 | 2018-08-12 11:17 |
雷鋒網(wǎng) AI 科技評(píng)論按,本文作者陳泰紅(ahong007@yeah.net),他為 AI 科技評(píng)論撰寫了關(guān)于 MnasNet 的獨(dú)家解讀文章。
1. Motivation
CNN 模型近年發(fā)展非常迅猛,在多項(xiàng)視覺(jué)任務(wù)中都展現(xiàn)出極佳的性能。但 CNN 模型體積巨大,計(jì)算性能低,這是比較明顯的缺點(diǎn),計(jì)算需求的增加使得在諸如終端(手機(jī)/AR/VR/無(wú)人機(jī))上部署最先進(jìn)的 CNN 模型變得困難。
終端輕量化神經(jīng)網(wǎng)絡(luò)模型需要同時(shí)考慮三個(gè)維度:參數(shù)少、速度快和精度高。目前 Mobile V1&V2,shuffle Net V1 等 CNN 模型在移動(dòng)端取得一定進(jìn)展,但是使用間接評(píng)價(jià)標(biāo)準(zhǔn),如 FLOPS 等,手工設(shè)計(jì)模型卷積架構(gòu)難以在三個(gè)維度取得平衡。Google 團(tuán)隊(duì)最新提出 MnasNet,使用強(qiáng)化學(xué)習(xí)的思路,提出一種資源約束的終端 CNN 模型的自動(dòng)神經(jīng)結(jié)構(gòu)搜索方法。論文將實(shí)時(shí)性顯式地結(jié)合到主要目標(biāo)中,這樣搜索空間就可以識(shí)別出一個(gè)在準(zhǔn)確性和實(shí)時(shí)性實(shí)現(xiàn)良好平衡的模型,即實(shí)時(shí)性和準(zhǔn)確率作為 reward,并且直接使用手機(jī)平臺(tái)(Pixel phones 等)運(yùn)行模型,直接測(cè)量實(shí)時(shí)性和準(zhǔn)確率。為了進(jìn)一步在靈活性和搜索空間大小之間取得適當(dāng)?shù)钠胶?,論文還提出一種新的分解層次搜索空間,該空間允許整個(gè)網(wǎng)絡(luò)的分層多樣性。
MnasNet 模型在 Pixel phones 上直接運(yùn)行,在 ImageNet 分類和 COCO 目標(biāo)檢測(cè)等計(jì)算機(jī)視覺(jué)領(lǐng)域均取得 state-of-art 水平。ImageNet 分類任務(wù)中,在 pixel 1 上取得了 74.0% 的 top-1 精度,耗時(shí) 76 毫秒,比 MobileNetV2 快 1.5 倍,比 NASNet 快 2.4 倍。在 COCO 目標(biāo)檢測(cè)任務(wù)中,比 MobileNets 取得了更好的 mAP 和實(shí)時(shí)性。
2. Related Work
CNN 模型壓縮有一些常用的方式:量化、減枝和手工設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)架構(gòu)(卷積方式)。比較著名的量化模型有 Deepcompression,Binary-Net,Tenary-Net,Dorefa-Net、SqueezeNet,Mobile V1&V2,shuffle Net V1&V2。
SongHan 提出的 DeepCompression 可以說(shuō)是神經(jīng)網(wǎng)絡(luò)壓縮領(lǐng)域開(kāi)山之作,主要分為三個(gè)主要的部分:剪枝,量化,哈夫曼編碼。量化將大量的數(shù)學(xué)運(yùn)算變成了位操作(Binary-Net),這樣就節(jié)省了大量的空間和前向傳播的時(shí)間,使神經(jīng)網(wǎng)絡(luò)的應(yīng)用門檻變得更低。但是這些壓縮算法在準(zhǔn)確率上有很大的局限性。論文使用的多是選擇傳統(tǒng) CNN 架構(gòu)(AlexNet,VGG)作為測(cè)試對(duì)象,而這些網(wǎng)絡(luò)本身冗余度較高。
而設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)架構(gòu)的方式是目前在終端常用的方式,比如 MobileNet V2 等已經(jīng)在小米手機(jī)的 AI 相機(jī)和指紋識(shí)別、人臉識(shí)別等應(yīng)用場(chǎng)景落地。
SqueezeNet 為了降低模型參數(shù),替換 3x3 的卷積 kernel 為 1x1 的卷積 kernel,減少輸入 3x3 卷積的 input feature map 數(shù)量,減少 pooling 。
MobileNet V1 的主要工作是用 depthwise sparable convolutions 替代過(guò)去的 standard convolutions 來(lái)解決卷積網(wǎng)絡(luò)的計(jì)算效率和參數(shù)量的問(wèn)題。MobileNet V2 主要的改進(jìn)有兩點(diǎn):
1、Linear Bottlenecks。也就是去掉了小維度輸出層后面的非線性激活層,目的是為了保證模型的表達(dá)能力。
2、Inverted Residual block。該結(jié)構(gòu)和傳統(tǒng) residual block 中維度先縮減再擴(kuò)增正好相反,因此 shotcut 也就變成了連接的是維度縮減后的 feature map。
Shuffle Net 引入 pointwise group convolution 和 channel shuffle 解決效率問(wèn)題,比如小米 MIX2,它自帶的 0.5 秒人臉識(shí)別自動(dòng)解鎖使用的就是 Shuffle Net。Shuffle Net V2 是最新發(fā)表在 ECCV2018 的論文,提出了四點(diǎn)準(zhǔn)則,并對(duì)網(wǎng)絡(luò)進(jìn)行了四點(diǎn)改進(jìn):(1)使用相同的通道寬度的卷積;(2)考慮使用組卷積;(3)降低碎片化程度;(4)減少元素級(jí)運(yùn)算。
在終端設(shè)備手工設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)難以在準(zhǔn)確率和實(shí)時(shí)性間取得平衡,更為復(fù)雜的是,每種設(shè)備類型都有自己的軟件和硬件特性,并且可能需要不同的體系結(jié)構(gòu)才能達(dá)到最佳的精度-效率權(quán)衡。目前芯片設(shè)計(jì)公司如高通、小米、華為、蘋果都有針對(duì)自家芯片做的底層優(yōu)化,以提高 CNN 的實(shí)時(shí)性。
3. Architecture
3.1 搜索算法
本文提出了一種用于設(shè)計(jì)移動(dòng) CNN 模型的自動(dòng)神經(jīng)結(jié)構(gòu)搜索方法。圖 1 顯示論文總體視圖,與以前方法的主要區(qū)別是多目標(biāo)獎(jiǎng)勵(lì)和新的搜索空間。論文考慮兩個(gè)因素:首先,將設(shè)計(jì)問(wèn)題描述為一個(gè)考慮 CNN 模型精度和推理實(shí)時(shí)性的多目標(biāo)優(yōu)化問(wèn)題。使用架構(gòu)搜索和強(qiáng)化學(xué)習(xí)以找到模型,在準(zhǔn)確率和實(shí)時(shí)性取得平衡。其次,之前很多自動(dòng)化搜索方法主要是搜索幾種類型的單元,然后通過(guò) CNN 網(wǎng)絡(luò)重復(fù)疊加相同的單元,而未能考慮卷積操作造成的運(yùn)算效率差異。
帕雷托最優(yōu)(called Pareto optimal)是經(jīng)濟(jì)學(xué)的一個(gè)概念,是指資源分配的一種理想狀態(tài)。給定固有的一群人和可分配的資源,如果從一種分配狀態(tài)到另一種狀態(tài)的變化中,在沒(méi)有使任何人境況變壞的前提下,使得至少一個(gè)人變得更好,這就是帕雷托改善。帕雷托最優(yōu)的狀態(tài)就是不可能再有更多的帕雷托改善的狀態(tài)。
m 表示模型,ACC(m) 表示目標(biāo)模型的準(zhǔn)確率,LAT(m) 表示耗時(shí),T 表示目標(biāo)耗時(shí)。而論文提出一種策略,基于梯度的強(qiáng)化學(xué)習(xí)方法尋找帕雷托最優(yōu),同時(shí)對(duì) ACC(m) 和 LAT(m) 帕雷托改善。
如圖 1 所示,模型包括三個(gè)部分:基于 RNN 的控制器,用于實(shí)現(xiàn)模型準(zhǔn)確率的訓(xùn)練器,基于推斷引擎測(cè)量耗時(shí)。論文采用評(píng)估-更新循環(huán)訓(xùn)練控制器,直到模型收斂。
3.2 層級(jí)搜索空間
論文使用層級(jí)搜索空間,即劃分 CNN layers 成多個(gè) groups,對(duì)每個(gè) group 搜索卷積和連接,相比其他算法只搜索幾個(gè)復(fù)雜的單元,然后重復(fù)疊加相同的單元,論文簡(jiǎn)化了每個(gè)單元格的搜索空間,但允許各個(gè)單元不同。
如圖 3 所示,論文劃分 CNN 模型為一系列預(yù)定義的 Block 序列,逐漸降低輸入分辨率和增加濾波器尺寸。每一個(gè) Block 內(nèi)含有一系列 identical layers,其卷積操作和連接由每一個(gè) Block 搜索空間確定。對(duì)第 i 個(gè) Block,由以下參數(shù)決定:
卷積類型(Convolutional ops ConvOp): regular conv (conv), depthwise conv (dconv), and mobile inverted bottleneck conv with various expansion ratios
卷積內(nèi)核 Convolutional kernel size KernelSize: 3x3, 5x5.
跳躍層連接方式 Skip operations SkipOp: max or average pooling, identity residual skip, or no skip path.
輸出濾波器尺寸 Output filter size Fi
每個(gè) block 卷積層個(gè)數(shù) Number of layers per block Ni.
ConvOp, KernelSize, SkipOp, Fi 決定每一卷積層架構(gòu),而 Ni 決定每一個(gè) block 重復(fù)卷積層的次數(shù)。
4. Experiment
論文直接在 ImageNet 訓(xùn)練集搜索最優(yōu)解,之后進(jìn)行少量的訓(xùn)練,從訓(xùn)練集選擇 50K 圖像作為驗(yàn)證集??刂破髟谒阉骷軜?gòu)中采樣約 8k 個(gè)模型,但只有很少的模型(<15)轉(zhuǎn)移到 ImageNet 和 COCO。
在 ImageNet 的訓(xùn)練過(guò)程:模型試驗(yàn) RMSProp 優(yōu)化,decay=0.9,momentum =0.9。每一層卷積后均有 Batch norm,momentum 0.9997,weight decay = to 0.00001,模型的訓(xùn)練過(guò)程可參考 MnasNet 論文。
從論文的實(shí)驗(yàn)效果看到,MnasNet 模型在 MnasNet 分類任務(wù)和 COCO 目標(biāo)檢測(cè)任務(wù)中均優(yōu)于自家公司之前提出的 MobileNet V1&V2,群雄逐鹿、百舸爭(zhēng)流、青出于藍(lán)。好的團(tuán)隊(duì)有實(shí)際業(yè)務(wù)需求,有服務(wù)器集群支持,有內(nèi)涵底蘊(yùn)精心打磨。
5. Discussion
論文的圖 7 顯示了 MnasNet 算法的神經(jīng)網(wǎng)絡(luò)架構(gòu),包含一系列線性連接 blocks,每個(gè) block 雖然包含不同類別的卷積層,每一卷積層都包含 depthwise convolution 卷積操作,最大化模型的計(jì)算效率。但是和 MobileNet V1&V2 等算法有明顯不同:
1、模型使用更多 5x5 depthwise convolutions。對(duì)于 depthwise separable convolution, 一個(gè) 5x5 卷積核比兩個(gè) 3x3 卷積核更高效:
假如輸入分辨率為(H,W,M),輸出分辨率為(H,W,N),C5x5 和 C3x3 分別代表 5x5 卷積核和 3x3 卷積核計(jì)算量,通過(guò)計(jì)算可以看到,N>7 時(shí),C5x5 計(jì)算效率大于 C3x3 計(jì)算效率:
2、層分級(jí)的重要性。很多輕量化模型重復(fù) block 架構(gòu),只改變?yōu)V波器尺寸和空間維度。論文提出的層級(jí)搜索空間允許模型的各個(gè) block 包括不同的卷積層。輪的ablation study比較了 MnasNet 的各種變體(即單獨(dú)重復(fù)使用各個(gè) block),在準(zhǔn)確率和實(shí)時(shí)性方面難以達(dá)到平衡,驗(yàn)證了層分級(jí)的重要性。
個(gè)人觀點(diǎn):論文使用強(qiáng)化學(xué)習(xí)的思路,首先確定了 block 的連接方式,在每個(gè) block 使用層級(jí)搜索空間,確定每個(gè)卷積層的卷積類型,卷積核、跳躍層連接方式,濾波器的尺寸等。如果讓強(qiáng)化學(xué)習(xí)自己選擇模型的架構(gòu),比如 Encoder-Decoder,U-Net,F(xiàn)PN 等,是否在目標(biāo)檢測(cè)語(yǔ)義分割方面有更好的表現(xiàn)。
以上僅為個(gè)人閱讀 MnasNet 論文后的理解,總結(jié)和一些思考,觀點(diǎn)難免偏差,望讀者以懷疑的態(tài)度閱讀,歡迎交流指正。
參考文獻(xiàn):
1. MnasNet: Platform-Aware Neural Architecture Search for Mobile.
https://arxiv.org/pdf/1807.11626.pdf
2. Mobilenets:Efficient convolutional neural networks for mobile vision applications.
https://arxiv.org/pdf/1704.04861.pdf
3. Mobilenetv2: Inverted residuals and linear bottlenecks. CVPR2018 .
4. ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices .
https://arxiv.org/pdf/1707.01083.pdf
5. Shu?eNet V2: Practical Guidelines for E?cient CNN Architecture Design.ECCV2018
雷峰網(wǎng)特約稿件,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。