成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

阿里開源MNNKit:基于MNN的移動端深度學習SDK,支持安卓和iOS

新聞 人工智能
近日,阿里開源了基于 MNN 引擎的項目 MNNKit,面向安卓和 iOS,以 SDK 的方式提供 AI 端側推理能力。開發者不需要了解算法細節就可以直接使用。

 近來,有越來越多的深度學習框架開始面向移動端進行發展。近日,阿里也基于其 MNN推理引擎開源了最新的 MNNKit深度學習SDK,安卓和 iOS 開發者都可以方便地進行調用。

近年來,很多企業都在研發面向移動端的深度學習框架。在國內有小米的 Mace、騰訊的 FeatherCNN(騰訊AI)和 ncnn(騰訊優圖)、百度的 Paddle-moblie 等。而阿里也開發了自己的移動端深度學習框架 MNN。

近日,阿里開源了基于 MNN 引擎的項目 MNNKit,面向安卓和 iOS,以 SDK 的方式提供 AI 端側推理能力。開發者不需要了解算法細節就可以直接使用。

項目地址:https://github.com/alibaba/MNNKit

目前,MNNKit 已經有人臉檢測、手勢識別、人像分割等,后續可能有更多 API 接入。

MNNKit: 基于 MNN 的深度學習工具

MNN 是基于阿里的 MNN 端上推理引擎所開發的應用解決方案,主要面向安卓和 iOS 系統,幫助將 AI 能力應用在實際的移動端場景中。

MNNKit 架構

MNNKit 提供了一個 SDK 供開發者使用,以下為 SDK 的架構。

阿里开源MNNKit:基于MNN的移动端深度学习SDK,支持安卓和iOS

從圖中可以看出,MNNKit 可以分為三層結構,從底向上分別為:

  1. MNN 引擎層,是 MNN (https://github.com/alibaba/MNN) 庫在 Android/iOS 上編譯好的包的二進制 Release 版本,提供端側運行環境。

  2. Core 基礎層,這主要抽象和封裝與 MNN c++接口調用粒度基本一致的上層 API,iOS 通過 OC 接口提供,Android 通過 Java 接口提供(TODO)。這一層同時也為上層 SDK 提供一些公共服務類或結構定義。

  3. 業務 Kit 層,包括了人臉檢測、手勢識別封裝的 API。據項目介紹,之后的業務 Kit 層會不斷擴展。

內部原理

因為 MNNKit 主要提供阿里的端側 AI 能力,因此封裝了很多相關應用的 API。調用如下:

阿里开源MNNKit:基于MNN的移动端深度学习SDK,支持安卓和iOS

例如,當用戶需要調用 API 的時候,需要首先創建實例,然后將圖像、視頻或其他結構化數據輸入,進行 AI 模型的推理工作。工作完成后釋放實例即可。

目前 MNNKit 已支持的 API 有:

  • 人臉檢測API 

  • 手勢識別 API

  • 人像分割 API

以人臉檢測為例,檢測內容主要分為三大板塊:

  • 人臉基本信息

  • 人臉位置的矩形坐標

  • 106 個關鍵點坐標(區分被遮擋的和未被遮擋的)

  • 置信度

[[313534]]

106 個關鍵點的分布(來自官方開源 github)

阿里开源MNNKit:基于MNN的移动端深度学习SDK,支持安卓和iOS

人臉各區域關鍵點分布對應表

  • 歐拉角度

阿里开源MNNKit:基于MNN的移动端深度学习SDK,支持安卓和iOS

搖頭(Yaw)、點頭(Pitch)、歪頭(Roll)三個角度值

  • 人臉動作(包含 5 個人臉的動作)

  • 眨眼

  • 張嘴

  • 搖頭

  • 點頭

  • 揚眉

處理過程

我們知道了人臉檢測需要檢測的數據后,接下來看看處理過程:

阿里开源MNNKit:基于MNN的移动端深度学习SDK,支持安卓和iOS

如圖所示,該流程是 iOS 和安卓設備后置攝像頭正向拍攝后,在移動端上的整體處理過程。

首先,系統從攝像頭獲取數據,作為 SDK 的輸入。接著,SDK 會進行如下操作:

  1. 在 MNN 引擎執行推理之前,對原始的輸入進行預處理,保證輸入數據中的人臉為正向

  2. 使用 AI 模型進行推理;

  3. 推理后,產生基于輸入圖像(預處理之后的)坐標系的關鍵點結果;。

  4. 把關鍵點坐標變換到和屏幕渲染坐標系相同的方向,方便渲染。

程應用中,最后的結果關鍵點要顯示在用戶屏幕上,前端會使用一個用來渲染的"畫布"。畫布的坐標系被稱為渲染坐標系,

在 SDK 檢測的最后一步,我們將關鍵點變換到和渲染坐標系相同的方向,然后等比例映射關鍵點坐標到渲染坐標系的坐標即可。映射后可以直接渲染到畫布上

代碼示例

MNNKit 提供了包括人臉檢測、手勢識別等方面的示例代碼。接下來我們以人臉檢測為例,看看怎樣可以在安卓或 iOS 中調用 API 進行推理工作。

安卓代碼

前文提到,調用 API 需要首先創建一個實例,以下為異步創建 FaceDetector 實例,主線程中回調的代碼。

public static void createInstanceAsync (Context context, FaceDetectorCreateConfig createConfig, InstanceCreatedListener<FaceDetector> listener)

在這里,人臉檢測API 會進行檢測和跟蹤兩個動作。檢測會遭到人臉位置和關鍵點,而跟蹤是在人臉移動時重新定位關鍵點的位置。

在視頻模式下,系統默認每 20 幀檢測一次,其余幀只跟蹤。圖片模式下則每一次調用都檢測。

創建實例后,可以將數據輸入模型進行推理。MNNKit 現在已支持多種數據格式輸入。在視頻流檢測場景中,我們可以使用攝像頭的回調數據作為接口的輸入。輸入數據的代碼如下:

public synchronized FaceDetectionReport[] inference(byte[] data, int width, int height, MNNCVImageFormat format, long detectConfig, int inAngle, int outAngle,  MNNFlipType outputFlip)

使用輸入數據為 bitmap 的推理代碼如下:

public synchronized FaceDetectionReport[] inference(Bitmap bitmap, long detectConfig, int inAngle, int outAngle, MNNFlipType outputFlip)

當 FaceDetector 實例用完之后,我們需要手動釋放實例,否則會產生 native 的內存泄露。

public synchronized void release()

iOS 代碼

和安卓代碼類似,首先需要創建人臉檢測實例:

+ (void)createInstanceAsync:(MNNFaceDetectorCreateConfig*)config Callback:(void(^)(NSError *error, MNNFaceDetector *faceDetector))block CallbackQueue:(dispatch_queue_t)callbackQueue;

默認主線程回調:

+ (void)createInstanceAsync:(MNNFaceDetectorCreateConfig*)config Callback:(void(^)(NSError *error, MNNFaceDetector *faceDetector))block;

PixelBuffer 輸入進行推理的代碼如下:

- (NSArray<MNNFaceDetectionReport *> *)inference:(CVPixelBufferRef)pixelBuffer Config:(MNNFaceDetectConfig)detectConfig Angle:(float)inAngle OutAngle:(float)outAngle FlipType:(MNNFlipType)flipType error:(NSError *__autoreleasing *)error;

UIImage 輸入進行推理的代碼如下:

- (NSArray<MNNFaceDetectionReport *> *)inferenceImage:(UIImage*)image Config:(MNNFaceDetectConfig)detectConfig Angle:(float)inAngle OutAngle:(float)outAngle FlipType:(MNNFlipType)flipType error:(NSError *__autoreleasing *)error;

使用通用 buffer 數組輸入的代碼如下:

- (NSArray<MNNFaceDetectionReport *> *)inference:(unsigned char*)data Width:(float)w Height:(float)h Format:(MNNCVImageFormat)format Config:(MNNFaceDetectConfig)detectConfig Angle:(float)inAngle OutAngle:(float)outAngle FlipType:(MNNFlipType)flipType error:(NSError *__autoreleasing *)error;

實例生命周期結束后,會自動觸發相關內存的釋放,無需調用方手動釋放。

據悉,MNNKit 是 MNN 團隊在阿里系應用大規模業務實踐后的成熟解決方案,歷經雙十一等項目考驗,在不依賴于后端的情況下進行高性能推理,使用起來穩定方便。

責任編輯:張燕妮 來源: 機器之心
相關推薦

2019-05-07 14:42:03

深度學習編程人工智能

2018-06-29 09:01:51

開源技術 深度學習

2018-05-22 10:30:37

深度學習蘑菇街移動端

2021-12-02 17:25:34

AI 數據人工智能

2017-01-11 16:36:51

Intel開源BigDL

2022-01-28 08:22:36

深度學習編譯器開源

2021-07-16 05:27:05

Windows 操作系統365 云電腦

2016-04-29 18:07:29

移動端高性能Weex

2012-03-07 20:56:57

iPhone

2020-07-03 15:03:47

深度學習編程人工智能

2022-03-28 18:59:02

DockerFlask深度學習

2017-08-17 09:45:04

模型移動嵌入式端

2020-09-22 14:52:33

華為禁令開發

2023-08-05 13:08:54

2017-11-16 17:26:35

深度學習移動設備MobileNets應

2013-06-26 15:50:54

2014-08-06 09:13:40

java安卓ios

2023-05-22 08:00:00

深度學習機器學習人工智能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产成人av好男人在线观看 | 精品人伦一区二区三区蜜桃网站 | 天天干天天谢 | 一区二区三区在线看 | 中文二区 | 一区二区三区四区国产 | 欧美日本韩国一区二区三区 | 久久伊人精品 | 亚洲一区二区三区免费在线 | 日韩一区二区在线看 | 色吧久久 | 精品一区二区av | 日韩三级在线 | 日韩资源| 亚洲精品视频久久 | jdav视频在线观看免费 | 国产精品成人一区二区 | 中文字幕在线视频免费视频 | 免费观看羞羞视频网站 | 色性av| 久久久久成人精品 | 精品久久久久久久 | 国产三区在线观看视频 | 久久出精品 | 伊人久久大香线 | 91精品国产综合久久久久久丝袜 | 老牛影视av一区二区在线观看 | 国产在线观看一区二区三区 | 国产精品久久久久久久久久久久 | 精品亚洲一区二区三区 | 色免费看 | 天天操天天射天天舔 | 国产午夜精品一区二区三区四区 | 一级二级三级黄色 | 精品国产乱码久久久久久闺蜜 | 精品中文字幕一区 | 成人影院网站ww555久久精品 | 狠狠夜夜| 日韩在线精品 | 一级黄片一级毛片 | 国产精品美女久久久av超清 |