--------点击屏幕右侧或者屏幕底部“+订阅”,关注我,随时分享机器智能最新行业动态及技术干货------------
MNN Kit是什么?
MNN Kit 是阿里巴巴把经过多次战役实战考验的常用业务场景的模型进行封装,得到的一系列简单易用的 SDK。它底层的技术基石是推理引擎是 2019 年 5 月开源的 MNN。
急于尝试的同学们:MNN Kit 使用文档与开源的 Demo 工程的 GitHub 地址在此:
这些模型的背后,是淘系内部算法团队多年的技术沉淀。比如,MNN Kit 的人脸检测所使用的一系列模型,是由淘系专注于客户端深度学习视觉算法的 PixelAI 团队提供。
MNN Kit 的模型简介
MNN Kit 目前开放了以下三种场景的 SDK:
- 人脸检测
- 人像分割
- 手势识别
人脸检测
人脸检测是 MNNKit 提供的 AI 解决方案 SDK ,在端上提供了高精度、实时、功能丰富的人脸检测能力,能满足各种基于人脸检测的业务场景。
它提供了人脸基本信息(人脸的矩形坐标,106个关键点坐标,置信度),人脸三个维度(Yaw, Pitch, Roll)的欧拉角度,以及人脸在视频流中的动作(眨眼,点头等)。
106 个关键点的效果图如下:
人脸检测模型是一个非常通用的能力。在它的基础上,我们可以做出各种有意思的玩法,比如美颜,人脸贴纸,换脸,人脸老化效果等。2018 年双十一晚会现场的“笑脸大作战”互动节目,让明星互动 PK 笑脸数。它的背后是用人脸检测结合笑脸检测模型,实时识别出视频流中的笑脸,并与 emoji 进行匹配。
手势识别
手势检测是 MNNKit 提供的移动端 AI 解决方案 SDK,在端上提供了实时的手势检测和识别能力,基于它应用可以拓展丰富的业务场景和玩法。比如,你可以基于手势检测的模型,开发出猜拳的游戏;或者你可以基于它开发一款用受手势控制 App ,可以让用户在手指不方便接触屏幕的时候(比如吃饭时),可以远程刷手机。你的脑洞是玩法应用的边界。
人像分割
人像分割是 MNNKit 提供的移动端 AI 解决方案 SDK ,在端上提供了实时的人像分割能力。它也是一个基础的模型能力,可以应用到比如证件照自动抠图,协助 PS 等场景。
效果图如下:
极简的接入流程
MNN Kit 诞生于阿里巴巴淘系,一个需要针对诸如双 11,双 12 ,年货节等大促活动快速上线业务的环境。简单快速将模型整合到 app 里,是 MNN Kit 的必备的特性。
MNN Kit 的基本 API 只有三个:创建实例、推理、释放实例。使用流程如下图所示:
下面以 Android 中的人脸检测为例,简要介绍一下接入的代码。
创建实例
我们异步创建 FaceDetector 实例,它会在主线程中回调 onSucceeded:
推理
我们从 Android Camera API 的 onPreviewFrame callback 中,可以获得相机帧的数据 data。定义好需要在视频流中的人脸动作(如眨眼,张嘴等),即可在当前帧进行人脸检测。
释放实例
App 需要根据自己应用场景,主动释放模型所占用的内存。以我们的 Demo 为例,在 Activity 的 onDestroy ,释放掉模型占用的内存。你可以根据自己 app 的流程,来决定在什么时间节点进行释放。
前后处理最佳实践
在一个真正的落地场景中,除了以上三步以外,还有一些针对相机视频流的前后处理。这些处理,在很多时候都是类似的。比如前处理方面,如何正确地处理相机帧,需要考虑摄像头是前置还是后置,相机的旋转;后处理方面,需要把模型输出的结果(例如人脸关键点坐标)映射到原图进行渲染。
MNN Kit 把这些最佳工程实践作为参考实现放在了 Demo 里面。这 Demo 的代码在 MNN Kit的GitHub 开源。
未来
MNN Kit 目前极大的简化了移动开发流程中使用通用模型能力的流程。如果你的应用场景不是完全契合这个通用的场景呢?很多情况下,以一个优秀的基础模型为起点,进行迁移学习,就可以得到适合你自己应有场景的模型。MNN 团队会后续发布产品来帮助大家更加轻松高效地进行迁移学习。
另外,MNN Kit 会逐步覆盖到其他的通用场景的模型。请大家拭目以待!
原文链接: https://mp.weixin.qq.com/s/SXwQofXaDQ19ncyIYVmMIQ