學術資訊 | TNN新版本上線!全新特性,更加好用!

TNN作為騰訊優圖對外開源的深度學習推斷框架,在6月10日對外開源以來受到了業界的廣泛關注,吸引了眾多的開發者。開源的第4天登上了GitHub熱搜榜;在3個月的時間內,累積了將近1800個Star;TNN技術交流群的人數也突破1200。

優圖實驗室也持續地對外輸出,針對開發者提出的問題不斷完善。經過一系列迭代,優圖實驗室在9月11日發布TNN新版本——v0.2版本。TNN新版本在通用性、易用性、NPU支援上都有很大的提升。

▶ TNN官網地址:

//tnn.tencent.com

在ONNX作為中間格式轉換的基礎上,TNN新版本新增了模型轉換工具,可直接將TF Lite的模型轉為TNN的模型。同時在轉換過程中,引入了兩次模型優化:一次是針對模型本身的結構進行等效轉換、層融合與常數摺疊等優化;另一次是在TNN Runtime中需要輸入輸出大小才能進行的優化,如Reshape層相關的融合等。

TF Lite轉TNN模型工具

TNN新版本新增了對SSD、YOLO等模型的支援。在運算元數量上從之前的80個增加到88個,新增的運算元包括DetectionPostProcess、PriorBox、SquaredDifference等常用運算元。另外原來運算元的功能也進行了擴充,如在 Pad 運算元除了在H和W方向擴充外,新支援了在 Channel 方向進行擴充。

基於TNN的Mat數據結構,新版本TNN增加了Mat的常用的影像預處理操作,如Resize,Crop,WarpAffine,格式轉換等操作。Mat預處理介面的開放,打通了移動端AI推理的整條鏈路。用戶可以直接輸入原始YUV的數據,經過預處理模組和推理模組,最終獲取到模型的結果。如圖所示👇

Mat預處理模組針對不同的硬體平台進行了特殊的優化,與OpenCV v4.4.0的相關影像處理相比,性能有顯著的優勢。預處理從1080P和720P縮小到224×224的性能數據對比如下👇

TNN新版本新增了模型庫,首次將優圖自研演算法直接開放給用戶使用,同時提供了Demo演示示例。此次版本更新我們輸出了優圖在各個領域廣泛使用的人臉配准演算法模型,後續TNN將基於騰訊優圖和騰訊光影的演算法能力陸續推出手勢識別、頭髮分割、超解析度等演算法模型。

TNN新版本重構了示例程式碼TNNSDKSample,抽象了TNN調用的相關介面,用戶可輕鬆基於TNNSDKSample直接構造自己的SDK並進行效果演示。同時TNN新增了BlazeFace、YOLOv5、Mobilenet SSD等多個示例,便於用戶根據自身使用場景進行參考。

BlazeFace人臉檢測

騰訊優圖人臉配准

YOLOV5物體檢測

華為從麒麟970開始增加了NPU(神經網路處理器)。NPU是專為深度學習演算法而設計,算力強,功耗低。在如智慧手機等實際端側AI應用場景中,AI算力與功耗的協調是至關重要的,有了NPU的加持,智慧手機如虎添翼。

TNN框架在麒麟晶片的適配與性能優化方面,和華為進行了的深度合作。基於之前的合作成果,受邀參加華為9月10日的HDC大會,並且在技術論壇中進行合作案例的經驗分享和技術展示。目前TNN新版本終於要對外開放NPU能力了!

HDC技術專題演講

TNN展台

TNN在NPU的適配上通過HiAI Foundation層適配、IR適配來達到介面統一和模型統一的效果。用戶在原來的基礎上可以非常方便的切換到NPU進行模型推理。只需要初始化時DeviceType設置為NPU,剩下的工作都會自動完成。

支援NPU後,我們也對NPU的實際性能進行了測試,使用TNN的benchmark模型,測試數據如下👇

可以發現,NPU的算力非常驚人,同樣的平台,NPU的性能比GPU和CPU高出很多。而NPU的功耗僅有CPU的1/10左右。高性能,低功耗,真的是太適合移動端的AI推理了!

目前騰訊優圖實驗室正聯合騰訊光影研究室遷移部分AI應用到NPU平台。比如,微視中人臉變小孩的應用和實時人臉3D玩法。

人臉變小孩

3D卡通捏臉

TNN的目標是做一個全平台支援的AI推理框架,TNN在其他硬體平台(X86、NVIDIA、Atlas)的適配與優化也做了大量的工作,後續會陸續對外開放,敬請期待!