0
雷鋒網(wǎng) AI 開發(fā)者按:谷歌從 17 年發(fā)布 MobileNets 以來,每隔一年即對該架構(gòu)進行了調(diào)整和優(yōu)化。現(xiàn)在,開發(fā)者們對 MobileNetV3 在一次進行了改進,并將 AutoML 和其他新穎的思想融入到該移動端的深度學(xué)習(xí)框架中。谷歌發(fā)布了相關(guān)文章對升級后的 MobileNetV3 進行了講解,雷鋒網(wǎng) AI 開發(fā)者將其整理編譯如下。
將深度學(xué)習(xí)融合到移動端正成為人工智能領(lǐng)域最活躍的研究領(lǐng)域之一。而設(shè)計能夠在移動端運行時有效執(zhí)行的深度學(xué)習(xí)模型,則需要對神經(jīng)網(wǎng)絡(luò)中的許多架構(gòu)范例進行更進一步的思考。
移動端的深度學(xué)習(xí)模型需要平衡復(fù)雜神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的精度和移動運行時的性能約束。在移動端深度學(xué)習(xí)領(lǐng)域中,計算機視覺仍然是最具挑戰(zhàn)性的領(lǐng)域之一。
在 2017 年,谷歌推出了基于 TensorFlow 的計算機視覺系列模型 MobileNets。而最新的 MobileNets 架構(gòu)正是于幾天前發(fā)布,其中包含了一些改進移動端計算機視覺模型的有趣想法。
MobileNetV3 是該模型結(jié)構(gòu)的第三個版本,它能夠為許多主流的移動應(yīng)用程序提供圖像分析的功能。該體系結(jié)構(gòu)還被集成到流行的框架中,例如:TensorFlow Lite。
MobileNet 需要盡可能維持其中發(fā)展較快的計算機視覺和深度學(xué)習(xí)領(lǐng)域與移動環(huán)境局限性之間平衡。因此,谷歌一直在定期對 MobileNets 架構(gòu)進行更新,其中也加入了一些有關(guān)于深度學(xué)習(xí)領(lǐng)域中最新穎的想法。
MobileNetV3 論文地址:
MobileNets 的第一個版本于 2017 年春季發(fā)布,其核心思想是引入一系列基于 TensorFlow 的計算機視覺模型,在最大限度地提高精度的同時,平衡設(shè)備上或嵌入式應(yīng)用程序的有限資源。從概念上講,MobileNetV1 正試圖實現(xiàn)兩個基本目標,以構(gòu)建移動第一計算機視覺模型:
較小的模型 參數(shù)數(shù)量更少
較小復(fù)雜度 運算中乘法和加法更少
遵循這些原則,MobileNetV1 是一個小型、低延遲、低功耗的參數(shù)化模型,可以滿足各種用例的資源約束。它們可以用于實現(xiàn):分類、檢測、嵌入和分割等功能。
MobileNetV1 的核心架構(gòu)則基于一個流線型架構(gòu),該架構(gòu)使用深度可分離卷積網(wǎng)絡(luò)來構(gòu)建了輕量級深度神經(jīng)網(wǎng)絡(luò)。就神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)而言,深度可分離卷積將卷積核分成兩個單獨的卷積核,這兩個卷積核依次進行兩個卷積,即先是深度卷積,然后進行逐點卷積,如下圖所示。
在 MobileNetV1 中,深度卷積網(wǎng)絡(luò)的每個輸入信道都應(yīng)用了單個濾波器。然后,逐點卷積應(yīng)用 1 x1 卷積網(wǎng)絡(luò)來合并深度卷積的輸出。這種標準卷積方法既能濾波,又能一步將輸入合并成一組新的輸出。在這之中,深度可分離卷積將其分為兩層,一層用于濾波,另一層則用于合并。
第一代 MobileNetV1 的實現(xiàn)作為了 TensorFlow Slim 圖像分類庫的一部分;而隨著新的移動應(yīng)用程序使用全新的模式進行構(gòu)建,就誕生出了新的想法以改進整體架構(gòu)。
第二個版本的 MobileNet 架構(gòu)于 2018 年初發(fā)布。MobileNetV2 則基于 MobileNetV1 的一些思想,并結(jié)合新的思想來優(yōu)化了諸如:分類、目標檢測和語義分割等任務(wù)的體系結(jié)構(gòu)。從架構(gòu)的角度來看,MobileNetV2 為架構(gòu)增添了兩個新模塊:
引入了層與層之間的線性瓶頸
瓶頸之間的快捷連接。(基本結(jié)構(gòu)如下所示)
MobileNetV2 之中的核心思想是,瓶頸對模型的中間輸入和輸出進行編碼,而內(nèi)層則用于封裝模型從較低級別概念(如:像素等)轉(zhuǎn)換到較高級別描述符(如:圖像類別等)的能力。最后,與傳統(tǒng)的剩余連接一樣,快捷方式能夠?qū)崿F(xiàn)更快地訓(xùn)練速度和更高的準確性。
MobileNets 架構(gòu)的最新改進在今年發(fā)表的一篇研究論文中(https://arxiv.org/abs/1905.02244)進行了總結(jié),其主要貢獻是使用 AutoML 為給定的問題找到最佳的神經(jīng)網(wǎng)絡(luò)架構(gòu);這與之前版本架構(gòu)的人工設(shè)計形成了鮮明對比。
具體來說,MobileNetV3 利用了兩種 AutoML 技術(shù),即:
MnasNet(一種自動移動神經(jīng)體系結(jié)構(gòu)搜索(MNAS)方法,https://ai.google/research/pubs/pub47217/)
NetAdapt(適用于移動應(yīng)用程序的平臺感知型算法,https://arxiv.org/pdf/1804.03230.pdf)
MobileNetV3 首先使用 MnasNet 進行粗略結(jié)構(gòu)的搜索,然后使用強化學(xué)習(xí)從一組離散的選擇中選擇最優(yōu)配置。之后,MobileNetV3 再使用 NetAdapt 對體系結(jié)構(gòu)進行微調(diào),這體現(xiàn)了 NetAdapt 的補充功能,它能夠以較小的降幅對未充分利用的激活通道進行調(diào)整。
除此之外,MobileNetV3 的另一個新穎想法是在核心架構(gòu)中加入一種名為「Squeeze-and-Excitation」的神經(jīng)網(wǎng)絡(luò)(簡稱 SE-Net,也是 ImageNet 2017 圖像分類冠軍)。該神經(jīng)網(wǎng)絡(luò)的核心思想是通過顯式地建模網(wǎng)絡(luò)卷積特征通道之間的相互依賴關(guān)系,來提高網(wǎng)絡(luò)所產(chǎn)生表示的質(zhì)量。具體而言,就是通過學(xué)習(xí)來自動獲取到每個特征通道的重要程度,然后依照這一結(jié)果去提升有用的特征并抑制對當(dāng)前任務(wù)用處不大的特征。
為此,開發(fā)者們提出了一種允許網(wǎng)絡(luò)進行特征重新校準的機制。通過該機制,網(wǎng)絡(luò)可以學(xué)習(xí)使用全局信息來選擇性地強調(diào)信息性特征,并抑制不太有用的特征。
而在 MobileNetV3 的例子中,該架構(gòu)擴展了 MobileNetV2,將 SE-Net 作為搜索空間的一部分,最終得到了更穩(wěn)定的架構(gòu)。
MobileNetV3 中還有一個有趣的優(yōu)化,則是重新設(shè)計了體系結(jié)構(gòu)中一些運行成本較高的層。第二代 MobileNetV2 中的一些層是模型準確性的基礎(chǔ),但也引入了潛在變量。通過合并一些基本的優(yōu)化功能,MobileNetV3 能夠在不犧牲準確性的情況下,刪除 MobileNetV2 體系結(jié)構(gòu)中三個運行成本較高的層。
因此,MobileNetV3 相比以前的架構(gòu)有了顯著的改進。例如,在目標檢測任務(wù)中,MobileNetV3 的操作延遲在減少 25% 的同時,維持和以前版本相同的精度。在分類任務(wù)中,也能看到類似的改進,如下圖所示:
目前,可以看到 MobileNets 仍然是移動計算機視覺中最先進的體系結(jié)構(gòu)之一。而在這過程中,AutoML 在 MobileNetV3 中的融合也為我們打開了一扇通向更多充滿創(chuàng)意的的架構(gòu)大門,這些架構(gòu)可能也是我們曾經(jīng)從未想過的。
GitHub 中提供了 MobileNets 的最新版本,Tensorflow 目標檢測 API 中則包含了 MobileNetV3 的具體實現(xiàn),相關(guān)地址如下。
MobileNets 最新版本 GitHub 地址:
https://github.com/tensorflow/models/tree/master/research/slim/nets/mobilenet
MobileNetV3 的具體實現(xiàn):
https://github.com/tensorflow/models/tree/master/research/object_detection
雷鋒網(wǎng) AI 開發(fā)者
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。