偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

阿里開源MNNKit:基于MNN的移動(dòng)端深度學(xué)習(xí)SDK,支持安卓和iOS

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

 近來,有越來越多的深度學(xué)習(xí)框架開始面向移動(dòng)端進(jìn)行發(fā)展。近日,阿里也基于其 MNN推理引擎開源了最新的 MNNKit深度學(xué)習(xí)SDK,安卓和 iOS 開發(fā)者都可以方便地進(jìn)行調(diào)用。

近年來,很多企業(yè)都在研發(fā)面向移動(dòng)端的深度學(xué)習(xí)框架。在國內(nèi)有小米的 Mace、騰訊的 FeatherCNN(騰訊AI)和 ncnn(騰訊優(yōu)圖)、百度的 Paddle-moblie 等。而阿里也開發(fā)了自己的移動(dòng)端深度學(xué)習(xí)框架 MNN。

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

項(xiàng)目地址:https://github.com/alibaba/MNNKit

目前,MNNKit 已經(jīng)有人臉檢測(cè)、手勢(shì)識(shí)別、人像分割等,后續(xù)可能有更多 API 接入。

MNNKit: 基于 MNN 的深度學(xué)習(xí)工具

MNN 是基于阿里的 MNN 端上推理引擎所開發(fā)的應(yīng)用解決方案,主要面向安卓和 iOS 系統(tǒng),幫助將 AI 能力應(yīng)用在實(shí)際的移動(dòng)端場(chǎng)景中。

MNNKit 架構(gòu)

MNNKit 提供了一個(gè) SDK 供開發(fā)者使用,以下為 SDK 的架構(gòu)。

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

從圖中可以看出,MNNKit 可以分為三層結(jié)構(gòu),從底向上分別為:

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

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

  3. 業(yè)務(wù) Kit 層,包括了人臉檢測(cè)、手勢(shì)識(shí)別封裝的 API。據(jù)項(xiàng)目介紹,之后的業(yè)務(wù) Kit 層會(huì)不斷擴(kuò)展。

內(nèi)部原理

因?yàn)?MNNKit 主要提供阿里的端側(cè) AI 能力,因此封裝了很多相關(guān)應(yīng)用的 API。調(diào)用如下:

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

例如,當(dāng)用戶需要調(diào)用 API 的時(shí)候,需要首先創(chuàng)建實(shí)例,然后將圖像、視頻或其他結(jié)構(gòu)化數(shù)據(jù)輸入,進(jìn)行 AI 模型的推理工作。工作完成后釋放實(shí)例即可。

目前 MNNKit 已支持的 API 有:

  • 人臉檢測(cè)API 

  • 手勢(shì)識(shí)別 API

  • 人像分割 API

以人臉檢測(cè)為例,檢測(cè)內(nèi)容主要分為三大板塊:

  • 人臉基本信息

  • 人臉位置的矩形坐標(biāo)

  • 106 個(gè)關(guān)鍵點(diǎn)坐標(biāo)(區(qū)分被遮擋的和未被遮擋的)

  • 置信度

[[313534]]

106 個(gè)關(guān)鍵點(diǎn)的分布(來自官方開源 github)

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

人臉各區(qū)域關(guān)鍵點(diǎn)分布對(duì)應(yīng)表

  • 歐拉角度

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

搖頭(Yaw)、點(diǎn)頭(Pitch)、歪頭(Roll)三個(gè)角度值

  • 人臉動(dòng)作(包含 5 個(gè)人臉的動(dòng)作)

  • 眨眼

  • 張嘴

  • 搖頭

  • 點(diǎn)頭

  • 揚(yáng)眉

處理過程

我們知道了人臉檢測(cè)需要檢測(cè)的數(shù)據(jù)后,接下來看看處理過程:

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

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

首先,系統(tǒng)從攝像頭獲取數(shù)據(jù),作為 SDK 的輸入。接著,SDK 會(huì)進(jìn)行如下操作:

  1. 在 MNN 引擎執(zhí)行推理之前,對(duì)原始的輸入進(jìn)行預(yù)處理,保證輸入數(shù)據(jù)中的人臉為正向

  2. 使用 AI 模型進(jìn)行推理;

  3. 推理后,產(chǎn)生基于輸入圖像(預(yù)處理之后的)坐標(biāo)系的關(guān)鍵點(diǎn)結(jié)果;。

  4. 把關(guān)鍵點(diǎn)坐標(biāo)變換到和屏幕渲染坐標(biāo)系相同的方向,方便渲染。

程應(yīng)用中,最后的結(jié)果關(guān)鍵點(diǎn)要顯示在用戶屏幕上,前端會(huì)使用一個(gè)用來渲染的"畫布"。畫布的坐標(biāo)系被稱為渲染坐標(biāo)系,

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

代碼示例

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

安卓代碼

前文提到,調(diào)用 API 需要首先創(chuàng)建一個(gè)實(shí)例,以下為異步創(chuàng)建 FaceDetector 實(shí)例,主線程中回調(diào)的代碼。

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

在這里,人臉檢測(cè)API 會(huì)進(jìn)行檢測(cè)和跟蹤兩個(gè)動(dòng)作。檢測(cè)會(huì)遭到人臉位置和關(guān)鍵點(diǎn),而跟蹤是在人臉移動(dòng)時(shí)重新定位關(guān)鍵點(diǎn)的位置。

在視頻模式下,系統(tǒng)默認(rèn)每 20 幀檢測(cè)一次,其余幀只跟蹤。圖片模式下則每一次調(diào)用都檢測(cè)。

創(chuàng)建實(shí)例后,可以將數(shù)據(jù)輸入模型進(jìn)行推理。MNNKit 現(xiàn)在已支持多種數(shù)據(jù)格式輸入。在視頻流檢測(cè)場(chǎng)景中,我們可以使用攝像頭的回調(diào)數(shù)據(jù)作為接口的輸入。輸入數(shù)據(jù)的代碼如下:

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

使用輸入數(shù)據(jù)為 bitmap 的推理代碼如下:

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

當(dāng) FaceDetector 實(shí)例用完之后,我們需要手動(dòng)釋放實(shí)例,否則會(huì)產(chǎn)生 native 的內(nèi)存泄露。

public synchronized void release()

iOS 代碼

和安卓代碼類似,首先需要?jiǎng)?chuàng)建人臉檢測(cè)實(shí)例:

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

默認(rèn)主線程回調(diào):

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

PixelBuffer 輸入進(jìn)行推理的代碼如下:

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

UIImage 輸入進(jìn)行推理的代碼如下:

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

使用通用 buffer 數(shù)組輸入的代碼如下:

- (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;

實(shí)例生命周期結(jié)束后,會(huì)自動(dòng)觸發(fā)相關(guān)內(nèi)存的釋放,無需調(diào)用方手動(dòng)釋放。

據(jù)悉,MNNKit 是 MNN 團(tuán)隊(duì)在阿里系應(yīng)用大規(guī)模業(yè)務(wù)實(shí)踐后的成熟解決方案,歷經(jīng)雙十一等項(xiàng)目考驗(yàn),在不依賴于后端的情況下進(jìn)行高性能推理,使用起來穩(wěn)定方便。

責(zé)任編輯:張燕妮 來源: 機(jī)器之心
相關(guān)推薦

2019-05-07 14:42:03

深度學(xué)習(xí)編程人工智能

2018-06-29 09:01:51

開源技術(shù) 深度學(xué)習(xí)

2018-05-22 10:30:37

深度學(xué)習(xí)蘑菇街移動(dòng)端

2021-12-02 17:25:34

AI 數(shù)據(jù)人工智能

2017-01-11 16:36:51

Intel開源BigDL

2022-01-28 08:22:36

深度學(xué)習(xí)編譯器開源

2021-07-16 05:27:05

Windows 操作系統(tǒng)365 云電腦

2016-04-29 18:07:29

移動(dòng)端高性能Weex

2012-03-07 20:56:57

iPhone

2022-03-28 18:59:02

DockerFlask深度學(xué)習(xí)

2017-08-17 09:45:04

模型移動(dòng)嵌入式端

2013-06-26 15:50:54

2014-08-06 09:13:40

java安卓ios

2023-08-05 13:08:54

2020-07-03 15:03:47

深度學(xué)習(xí)編程人工智能

2017-11-16 17:26:35

深度學(xué)習(xí)移動(dòng)設(shè)備MobileNets應(yīng)

2020-09-22 14:52:33

華為禁令開發(fā)

2023-05-22 08:00:00

深度學(xué)習(xí)機(jī)器學(xué)習(xí)人工智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)