當前位置:
首頁 > 新聞 > 「騰訊優圖首度開源深度學習框架ncnn」主打手機端,同類cpu框架最快

「騰訊優圖首度開源深度學習框架ncnn」主打手機端,同類cpu框架最快

「騰訊優圖首度開源深度學習框架ncnn」主打手機端,同類cpu框架最快

【新智元招聘】AI 盛夏,星艦啟航。《新一代人工智慧發展規劃》發布之際,新智元也正式入駐融科資訊中心 B 座,整裝待發。天時地利,星辰大海,我們召喚你——新船員的加入!COO、總編、主筆、內容運營、客戶總監、客戶經理、視覺總監(兼職) 7 大職位招聘全新啟動。點擊文末閱讀原文查看詳情。

「騰訊優圖首度開源深度學習框架ncnn」主打手機端,同類cpu框架最快

根據新智元獲得的最新消息,騰訊社交網路事業群公布了首個AI開源項目,這同時也是騰訊優圖實驗室的第一個深度學習開源項目——ncnn。github地址:

https://github.com/Tencent/ncnn)

據介紹,ncnn是一個為手機端極致優化的高性能神經網路前向計算框架。ncnn 從設計之初深刻考慮手機端的部屬和使用。無第三方依賴,跨平台,手機端 cpu 的速度快於目前所有已知的開源框架。基於 ncnn,開發者能夠將深度學習演算法輕鬆移植到手機端高效執行,開發人工智慧 APP。以騰訊內部應用為例,ncnn 目前已在QQ,Qzone,微信,天天P圖等上得到應用。

騰訊優圖實驗室是以計算機視覺見長,ncnn的許多應用方向也都在圖像方面,如人像自動美顏,照片風格化,超解析度,物體識別。

新智元此前曾報道,騰訊優圖是騰訊AI的三大核心支柱之一,與微信AI團隊和新成立的騰訊AI Lab共同驅動騰訊的 AI 發展。2017年5月15日,香港中文大學終身教授賈佳亞博士加盟騰訊優圖實驗室,出任傑出科學家。本年度在國際上人臉識別標誌性比賽——LFW 和 MegaFace上,騰訊優圖都拿到了冠軍的成績。優圖實驗室創立於2012年,專註在圖像處理、模式識別、機器學習、數據挖掘等領域開展技術研發和業務落地,至今已有近5年的歷史。

深度學習演算法要在手機上落地,現成的 caffe-android-lib 項目依賴太多,手機上基本不支持cuda,需要個又快又小的前向網路實現。單純的精簡 caffe 等框架依然無法滿足手機 APP 對安裝包大小,運算速度等的苛刻要求。ncnn 作者認為,只有全部從零開始設計才能做出適合移動端的前向網路實現,因此從最初的架構設計以手機端運行為主要原則,考慮了手機端的硬體和系統差異以及調用方式。

騰訊優圖ncnn提供的資料顯示:對比目前已知的同類框架,ncnn是cpu框架中最快的,安裝包體積最小,跨平台兼容性中也是最好的。以蘋果主推的CoreML為例,CoreML 是蘋果主推的 iOS gpu 計算框架,速度非常快,但僅支持 iOS 11 以上的 iphone 手機,落地受眾太狹窄,非開源導致開發者無法自主擴展功能,對開源社區不友好。

ncnn與同類框架對比


對比 caffe tensorflow ncnn CoreML
計算硬體 cpu cpu cpu gpu
是否開源
手機計算速度 很快 極快
手機庫大小 較大
手機兼容性 很好 僅支持 ios11

為了更深入地了解這一騰訊社交網路事業群公布了首個AI開源項目。在獲得這一消息後,新智元第一時間對項目負責人nihui進行了專訪。

nihui,喜愛C/C++,騰訊優圖實驗室基礎研究組高級研究員,負責圖像和人臉相關的技術研究和軟體開發,非常熱愛開源社區,系騰訊社交網路事業群首個AI開源項目ncnn負責人。

新智元專訪ncnn負責人nihui:跑vgg、googlenet、resnet等模型速度比其他已知的開源框架快2~4倍

新智元:能否介紹一下ncnn的開發過程,作為負責人,你希望這一框架會有怎樣的發展?

nihui:最開始邊學習CNN邊寫點代碼,發現手機上還沒個好用的庫,於是自己動手吧。希望將來ncnn能更加充實些,比如支持更多的網路結構和更多的平台,更快的計算速度,最重要的是,希望有感興趣的開發者能一起改善。

新智元:你認為開源能給騰訊優圖帶來的最大好處是什麼?

nihui:大幅節省學習成本,很多東西有現成的,比自己從零開始做一個方便太多了。

新智元:ncnn為什麼會選擇純C++實現,這樣有什麼好處?如何應對不同平台開發者的需求?

nihui:我喜歡寫C++,C++較接近底層,能控制幾乎所有資源,運行代價小。目前主要是面向android和ios的,實際上只要有C++編譯器就可以。

新智元:為什麼在計算硬體上選擇CPU而不是GPU?

nihui:CPU的兼容性很好,但是各種各樣的GPU功能支持都不一樣,不容易實現,比如ios的metal和android的opencl。不否認GPU會更快,但GPU優化很複雜,想寫一個通用的GPU路徑很難,總之我做不出來。

新智元:TensorFlow現在已經是Github上最受歡迎的深度學習開源框架,同樣提供手機端的部署,你們和它們相比最大的優勢在哪些地方?如何跟它競爭,贏得開發者?

nihui:ncnn在手機上更快。實際上沒有什麼競爭關係,TensorFlow側重訓練,ncnn側重部署。

新智元:vgg、googlenet、resnet等模型在NCNN上的性能表現如何?你們有做過測試嗎?

nihui:都可以跑,速度比其他已知的開源框架快2~4倍,而且我們已經在基於這些主流模型的修改版實現智能應用了

新智元:以大家熟知的微信為例,ncnn可以如何得到應用?

nihui:ncnn支撐著一些優圖提供的演算法,例如人臉相關的應用。

新智元:能否列舉更多應用的列子,特別是圖像處理方面,性能表現如何?

nihui:人像自動美顏,照片風格化,超解析度,物體識別等等,對於小型的網路模型可以跑到實時。

新智元:手機端的成功應用,如果要延伸到其他終端,比如智能家居上,會面臨哪些問題?你們未來會不會在這些方向上做突破?

nihui:有cpu的地方ncnn都可以跑起來。智能家居的硬體環境不清楚,如果也是arm的話,移植下應該就可以了。

新智元:為什麼要從頭開發一個在手機端部署的神經網路框架?這是否意味著雲端部署有其不可避免的缺陷?未來,雲端和終端會如何發展?如何分工?

nihui:AR,VR都需要實時性,雲端即使再快也無法實時,所以終端部署是很有必要的。雲端適合處理大數據,比如推薦系統,安全系統,終端適合實時化的應用場景,比如智能機器人,無人駕駛。

新智元:除了ncnn,優圖後續還有什麼開源計劃?

nihui:優圖還有些不錯的圖像和AI相關的項目,沒有確實的計劃,大概想開源就開源了吧。

新智元:據介紹,ncnn應用到微信、QQ等騰訊的產品中,我們知道,騰訊的其他部門,比如騰訊也有自己的AI開發團隊,那麼你們之間的研究會存在重合嗎?優圖為騰訊其他部門提供技術支持的模式是怎樣的?

nihui:騰訊不同部門各有自己側重的研究方向,騰訊優圖是騰訊內部專註於圖像處理、模式識別、機器學習、數據挖掘等領域的核心技術團隊,主要基於整個騰訊的社交網路平台,為QQ、QQ空間 、QQ音樂、財付通、微眾銀行等提供圖像和模式識別技術支持。

ncnn10大功能

1. 支持卷積神經網路,支持多輸入和多分支結構,可計算部分分支

ncnn 支持卷積神經網路結構,以及多分支多輸入的複雜網路結構,如主流的 vgg、googlenet、resnet、squeezenet 等。計算時可以依據需求,先計算公共部分和 prob 分支,待 prob 結果超過閾值後,再計算 bbox 分支。如果 prob 低於閾值,則可以不計算 bbox 分支,減少計算量。

「騰訊優圖首度開源深度學習框架ncnn」主打手機端,同類cpu框架最快

2.無任何第三方庫依賴,不依賴BLAS/NNPACK等計算框架

ncnn 不依賴任何第三方庫,完全獨立實現所有計算過程,不需要 BLAS/NNPACK 等數學計算庫。


caffe-android-lib+openblas ncnn
boost gflags glog lmdb openblas opencv protobuf

3.C++實現,跨平台,支持android ios

ncnn 代碼全部使用 C/C++ 實現,跨平台的 cmake 編譯系統,可在已知的絕大多數平台編譯運行,如 Linux,Windows,MacOS,Android,iOS 等。由於 ncnn 不依賴第三方庫,且採用 C++ 03 標準實現,只用到了 std::vector 和 std::string 兩個 STL 模板,可輕鬆移植到其他系統和設備上。

4. ARM NEON彙編級良心優化,計算速度極快

ncnn 為手機端 CPU 運行做了深度細緻的優化,使用 ARM NEON 指令集實現卷積層,全連接層,池化層等大部分 CNN 關鍵層。對於寄存器壓力較大的 armv7 架構,手工編寫 neon 彙編,內存預對齊,cache 預緩存,排列流水線,充分利用一切硬體資源,防止編譯器意外負優化。

「騰訊優圖首度開源深度學習框架ncnn」主打手機端,同類cpu框架最快

測試手機為 nexus 6p,android 7.1.2。

5. 精細的內存管理和數據結構設計,內存佔用極低

在 ncnn 設計之初已考慮到手機上內存的使用限制,在卷積層、全連接層等計算量較大的層實現中,沒有採用通常框架中的 im2col + 矩陣乘法,因為這種方式會構造出非常大的矩陣,消耗大量內存。因此,ncnn 採用原始的滑動窗口卷積實現,並在此基礎上進行優化,大幅節省了內存。在前向網路計算過程中,ncnn 可自動釋放中間結果所佔用的內存,進一步減少內存佔用。

「騰訊優圖首度開源深度學習框架ncnn」主打手機端,同類cpu框架最快

內存佔用量使用 top 工具的 RSS 項統計,測試手機為 nexus 6p,android 7.1.2。

6. 支持多核並行計算加速,ARM big.LITTLE cpu調度優化

ncnn 提供了基於 openmp 的多核心並行計算加速,在多核心 cpu 上啟用後能夠獲得很高的加速收益。ncnn 提供線程數控制介面,可以針對每個運行實例分別調控,滿足不同場景的需求。針對 ARM big.LITTLE 架構的手機 cpu,ncnn 提供了更精細的調度策略控制功能,能夠指定使用大核心或者小核心,或者一起使用,獲得極限性能和耗電發熱之間的平衡。例如,只使用1個小核心,或只使用2個小核心,或只使用2個大核心,都盡在掌控之中。

「騰訊優圖首度開源深度學習框架ncnn」主打手機端,同類cpu框架最快

7. 整體庫體積小於500K,並可輕鬆精簡到小於300K

ncnn 自身沒有依賴項,且體積很小,默認編譯選項下的庫體積小於 500K,能夠有效減輕手機 APP 安裝包大小負擔。此外,ncnn 在編譯時可自定義是否需要文件載入和字元串輸出功能,還可自定義去除不需要的層實現,輕鬆精簡到小於 300K。

「騰訊優圖首度開源深度學習框架ncnn」主打手機端,同類cpu框架最快

8. 可擴展的模型設計,支持8bit量化和半精度浮點存儲,可導入caffe模型

ncnn 使用自有的模型格式,模型主要存儲模型中各層的權重值。ncnn 模型中含有擴展欄位,用於兼容不同權重值的存儲方式,如常規的單精度浮點,以及佔用更小的半精度浮點和 8bit 量化數。大部分深度模型都可以採用半精度浮點減小一半的模型體積,減少 APP 安裝包大小和在線下載模型的耗時。ncnn 帶有 caffe 模型轉換器,可以轉換為 ncnn 的模型格式,方便研究成果快速落地。

「騰訊優圖首度開源深度學習框架ncnn」主打手機端,同類cpu框架最快

9. 支持直接內存零拷貝引用載入網路模型

在某些特定應用場景中,如因平台層 API 只能以內存形式訪問模型資源,或者希望將模型本身作為靜態數據寫在代碼里,ncnn 提供了直接從內存引用方式載入網路模型的功能。這種載入方式不會拷貝已在內存中的模型,也無需將模型先寫入實體的文件再讀入,效率極高。

10. 可註冊自定義層實現並擴展

ncnn 提供了註冊自定義層實現的擴展方式,可以將自己實現的特殊層內嵌到 ncnn 的前向計算過程中,組合出更自由的網路結構和更強大的特性。

* 本文為新智元原創報道,未經授權請勿轉載。

點擊閱讀原文可查看職位詳情,期待你的加入~

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 新智元 的精彩文章:

騰訊首度開源手機端深度學習框架ncnn,同類cpu框架最快
新智元百人會:七高手縱論人機交互與終端智慧化現狀與痛點
谷歌官方CVPR最強總結:5位主席21篇論文,最關注數據
CVPR專題:大規模視覺理解競賽WebVision冠軍分享

TAG:新智元 |

您可能感興趣

Github熱門圖深度學習源碼與框架
Github 項目推薦 | 微軟開源 MMdnn,模型可在多深度學習框架間轉換
阿里首次開源深度學習框架X-Deep Learning
開源項目精選:機器學習開源框架 TensorFlow
Facebook又放大招!開源框架Pythia讓深度學習更高效
從 Google Trends,看各大深度學習框架使用熱度
吊打OpenAI!谷歌重磅開源強化學習框架Dopamine
Keras作者力推開源框架Lore:15分鐘搞定深度學習模型從配置到部署
caffe 深度學習 框架的建立
谷歌推出開源強化學習框架Dopamine
Facebook開源機器人框架PyRobot,擁有獨立API,輕鬆上手快速實踐
阿里深度學習框架開源了!無縫對接TensorFlow、PyTorch
Facebook開源視覺、語言多任務深度學習框架——Pythia
小米開源移動端深度學習框架MACE:可轉換TensorFlow模型
阿里開源大規模分散式圖學習框架:專為Graph嵌入,無縫對接TF/PyTorch
Facebook 最新開源框架 PyRobot,開闢 AI 機器人研究新紀元
用PyTorch做深度學習實驗!Facebook新框架Ax和BoTorch雙雙開源
阿里巴巴開源深度學習框架 X-Deep Learning,引領高維稀疏數據場景的深度學習標準
JFinal框架學習——cache的簡單使用
開源之殤 華為開源微服務框架servicecomb go語言大範圍抄襲