谷歌移動端神經網絡架構MobileNet的CoreML實現

機器學習 Google 編程語言 iPhone 機器之心 2017-06-09

選自GitHub

機器之心編譯

作者:Matthijs Hollemans

參與:李澤南

6 月 5 日開幕的 WWDC 2017 開發者大會上,蘋果正式推出了一系列新的面向開發者的機器學習 API,包括面部識別的視覺 API、自然語言處理 API,這些 API 的背後都有 Core ML 機器學習框架的身影。蘋果軟件主管兼高級副總裁 Craig Federighi 在大會上介紹說,Core ML 致力於加速在 iPhone、iPad、Apple Watch 等移動設備上的人工智能任務,支持深度神經網絡、循環神經網絡、卷積神經網絡、支持向量機、樹集成、線性模型等。這一框架的易用性如何?大會之後,開源社區中很快就出現了有關 Core ML 的實現。

MobileNet 在 CoreML 上的實現

MobileNet 是谷歌在 2017 年 4 月發表的一項研究,它是一種高效、小尺寸的神經網絡架構,適用於構建手機/移動設備上的低延遲深度學習應用,並可以完成多種不同任務。

CoreML 實現鏈接:https://github.com/hollance/MobileNet-CoreML

本實現是論文《MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications》中神經網絡架構 MobileNet 的蘋果 CoreML 框架實現。它使用了 MobileNet-Caffe 中的預訓練內容。

想使用這個 app,請在 Xcode 9 中打開 MobileNetCoreML.xcodeproj,並在 iOS11 系統或同版本的模擬器中運行。目前,它只能用於預測貓的圖片,實時視頻的識別將在稍後加入(可以看看 Forge:https://github.com/hollance/Forge,一個用於 iOS10 的 Metal 神經網絡工具包,和 MobileNet 共同使用可以處理視頻)。

谷歌移動端神經網絡架構MobileNet的CoreML實現

模型遷移

這個版本已經包含了完整的 MobileNet.mlmodel,所以你不必遵循這一章節的所有步驟。當然,如果你希望嘗試,以下是如何將原版 Caffe 模型轉換到.mlmodel 文件中的方法:

1. 從 Caffemodel 文件中下載模型,放到本項目中的根目錄下。(注意,你不必下載 mobilenet_deploy.prototxt,它在本項目中已經存在。該實現作者還在尾部加入了一個原版缺失的 Softmax 層)

原 Caffe 實現連接:https://github.com/shicai/MobileNet-Caffe

2. 在終端加入如下代碼:

$ virtualenv -p /usr/bin/python2.7 env

使用/usr/bin/python2.7 設置虛擬環境非常重要,如果你在使用其他版本的 Python,則轉換腳本會崩潰——Fatal Python error: PyThreadState_Get: no current thread;同時,你需要使用 Keras 1.2.2 版本,而不是更新的 2.0 版。

3. 運行 coreml.py 腳本進行轉換:

$ python coreml.py

這會生成 MobileNet.mlmodel 文件。

4. 通過禁止 virtualenv 進行清理:

$ deactivate

論文:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

論文鏈接:https://arxiv.org/abs/1704.04861v1

谷歌移動端神經網絡架構MobileNet的CoreML實現

摘要

我們提出了 MobileNets:一種用於移動端和嵌入式視覺應用的新模型。它基於一種流線型架構,使用深度可分離卷積方法來構建輕量級深度神經網絡。我們引入了兩個簡單的全局超參數,可以在延遲和準確性之間找到平衡點。這些超參數允許模型開發者針對應用面臨的侷限性選擇正確尺寸的模型。在 ImageNet 分類任務中,我們的模型具有資源消耗和精度的平衡性,並展示了頗具競爭力的性能。我們也展示了 MobileNets 在多種不同應用中的有效性,其中包括物體檢測、粒度分類、面部屬性和大規模地理定位。

谷歌移動端神經網絡架構MobileNet的CoreML實現

MobileNets 可以應用於多種識別任務,讓設備實現智能化

相關推薦

推薦中...