Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

基于TensorFlow Lite的移动端AR解决方案 SmileAR

SmileAR是爱奇艺自研的基于TensorFlow Lite的移动端AR解决方案,目前已部署到爱奇艺旗下的多个产品中,包括日活过亿的爱奇艺主APP、深受小朋友喜爱的儿童产品奇巴布以及重点发力的姜饼短视频等。

爱奇艺是中国最大的在线视频公司之一,其愿景是“做一家以科技创新为驱动的伟大娱乐公司”。创新是刻印在爱奇艺体内的平台基因,爱奇艺希望通过不断的技术创新,持续改善用户的娱乐体验,其中就包括在AI/AR领域的创新研究。

图1. SmileAR Logo

SmileAR是爱奇艺自研的基于TensorFlow Lite的移动端AR解决方案,该方案包含人脸检测、人脸关键点、人体关键点、人像分割、手势识别、物体识别等基础算法。基于这些基础算法我们进一步封装了美颜、美体、尬舞机、扫一扫等AR应用。目前SmileAR已部署到爱奇艺旗下的多个产品中,包括日活过亿的爱奇艺主APP、奇巴布、姜饼短视频及爱奇艺直播机等。

图2. SmileAR移动端AR解决方案系统框架

人脸关键点识别与追踪

对于直播和视频拍摄,人脸关键点定位是其中一项重要的基础能力。人脸关键点是指人脸区域中能够体现表情状态的脸部位置,包括眼睛、嘴巴、鼻子等部位。基于人脸关键点定位得到的准确点位信息,可以实现瘦脸、局部美妆、虚拟穿戴等功能。这些功能已经在爱奇艺主站APP的短视频拍摄中落地,可以自动进行瘦脸、大眼等美颜功能,还能切换各种风格的头饰穿戴,让普通用户也能拥有一张明星脸。

图3. SmileAR人脸关键点算法Demo

手势跟踪与识别

手势识别是移动端上的一种重要交互方式,根据不同手势触发响应动效,能提高短视频的交互性。手势识别采用了SSD检测模型,使用MobileNet作为主干网络,在部署时使用量化技术提高执行速度,最终在移动端实现了实时手势检测。目前爱奇艺手势识别已经部署在了爱奇艺客户端、爱奇艺直播机、姜饼短视频等APP中。 

图4. SmileAR手势贴图Demo

人体关键点识别

人体关键点识别算法作为爱奇艺的SmileAR中的一部分,已经在"奇巴布"APP中的"萌宝舞室"模块中落地,该模块是爱奇艺专为0-12岁宝宝而设计。其通过让宝宝模仿专业儿童舞蹈教练的跳舞动作,从而达到锻炼宝宝的协调能力的目的。在宝宝模仿学习的过程中,我们的算法会不断对宝宝的模仿动作进行识别,并与舞蹈教练的动作进行相似度计算,从而对宝宝动作的精准度进行判断,当动作较为精准时会触发相应的动效(如各种水果等),不断激励宝宝学习和改进。该功能上线以来受到了宝妈宝爸的一致好评,表示:这个功能简直是"哄娃利器"。

图5. SmileAR舞蹈打分Demo

移动端算法优化

众所周知,深度学习的推理需要消耗大量的算力,这正是手机、平板这样的移动终端所欠缺的能力,并且SmileAR多数算法需要实时进行处理,这就对我们的移动端加速及算法优化带来了巨大挑战。同时不同业务对算法的需求也是多种多样的,我们针对不同的业务需求也做了相应的算法优化。

常规加速优化

为了提升算法的推理速度,我们采用了常规的模型加速方法,将复杂的主干网络替换为适合移动端的MobileNet V2网络;对精度要求不是那么高的业务场景,我们进一步减小网络的输入尺寸、减少MobileNet V2网络的通道数。这一系列操作对算法的执行速度有显著的提升。

量化训练加速

因为浮点型数据在移动端计算很慢,我们使用TensorFlow对算法模型进行了Quantization-aware training的训练,新版的TensorFlow对量化的支持很完善,只要在训练代码中加入两行代码即可完成量化训练,我们先通过正常的训练获得收敛的模型,再对其进行量化训练。在高通骁龙,华为麒麟和联发科Helio等主流芯片上的CPU推理速度改进如下表:

图6. 人脸检测量化前后耗时对比

人脸关键点抖动优化

预测单帧图像的关键点容易出现抖动,因此我们对多帧图像进行考虑,利用了视频的时序信息,使用高斯混合模型融合之前帧的关键点信息,获得当前帧稳定的人脸关键点。

图7. 单帧与时序模型的关键点稳定性对比

多任务训练优化

为了得到更好的效果,人脸检测和人体关键点识别均采用了多任务学习。由于人脸姿态、表情变化大,因此人脸模型加入对姿态、表情等的预测。模型结构如下图:

图8. 人脸多任务模型结构

在测试数据上,人脸关键点定位加入姿态估计任务,误差降低了8%;加入表情识别,误差降低了2%;人体关键点如果只是预测热度图会导致点位偏差较大,因此该模型也引入了多任务模型。

跳出局部最优解

人体关键点算法是多任务学习,关键点热度图仅是其中的一个任务,由于网络的裁剪,部分点会输出一张全零的热度图(陷入局部最优,全零输出代价很小),针对这个问题,我们设计一种热度图的辅助损失函数,对全零热度图增加一个惩罚,最终解决了陷入局部最优的问题。

图9. 增加热度图辅助损失函数后的损失曲线

Hard Mining

在人脸关键点定位任务中,各种数据分布不均衡,一些困难的场景,如大角度,闭眼,张大嘴等,样本数量较少。当模型训练到收敛后,通过Hard mining可以进一步减少误检数并提高模型稳定性。

图10. Hard-mining效果对比

移动端部署

跨平台部署

为了实现Android、iOS和Windows多端部署,我们采用了TensorFlow Lite的C++接口。将TensorFlow Lite编译成不同平台的静态库引入项目,然后在iOS和Android平台分别使用Objective C和Java进行上层的封装,这样就可以实现移动端native部分的代码复用,提高跨平台开发效率。而在Windows端,我们用C++做了同样的封装,并将Tflite成功应用在人脸检测等功能中。在输入为1080P的情况下,速度达到了实时。在SDK交付时,只需要针对业务方需求进行打包,业务方只需要调用相应的Java/Objective C层API,不需要关心底层实现,方便移动端产品线集成。同时因为TensorFlow Lite可以直接在Windows上直接运行,我们将它也应用到了爱奇艺的Windows客户端上。

SDK鉴权和模型保护

在模型交付部分,模型文件使用爱奇艺自研加密算法进行加密,提高移动端模型的安全性。同时为了保护爱奇艺的知识产权,我们也增加了License授权验证

包大小管理

移动端网络环境复杂,包大小会严重影响下载成功率和用户体验,我们利用了链接时优化的方法进一步缩小TensorFlow Lite库的大小。由于TensorFlow Lite默认注册了所有的算子,我们实际中只需要用到算子的一部分,因此我们可以将不需要的算子剔除。在将静态库链接入动态库或者可执行程序时,没有使用的代码不会被链接器纳入链接产物,利用这一点,我们继承了MutableOpResolver,注册模型中需要的算子。这种方案既不会影响TensorFlow Lite静态库代码,又可以动态增删算子。

总结与展望

本文以SmileAR为例,介绍了 TensorFlow Lite 在爱奇艺中的应用。TFLite作为一个为移动端定制的引擎,其跨平台的支持(Android、IOS、Windows 64位),使得我们一套模型可以多端部署,大大节约了研发成本;其卓越的执行效率,使得很多算法能在移动端实时运行,为产品落地提供了有力保障;其丰富的工具,如benchmark tool,可以快速的分析模型耗时并为模型裁剪提供有力的帮助。借助TFLite的力量,SmileAR已经顺利在多端、多APP中落地。

SmileAR作为爱奇艺AI技术落地的重要应用场景,未来将在视频时域信息增稳、模型移动端加速、模型精度优化、不同平台GPU加速等研究方向持续探索,并将在Google TensorFlow生态支持下,持续为爱奇艺各个业务线提供高效稳定的AR解决方案,助力爱奇艺的用户增长与留存,使用户可以便捷平等地享受由科技创新带来的沉浸式的极致AR体验,为用户提供快乐的娱乐体验。

爱奇艺技术产品团队
爱奇艺技术产品团队

爱奇艺做一家以科技创新为驱动的伟大娱乐公司,用大数据指导内容的制作、生产、运营、消费。并通过强大的云计算能力、带宽储备以及全球性的视频分发网络,为用户提供更好的视频服务。

入门TensorFlowAR
6
相关数据
Qualcomm机构

高通公司(英语:Qualcomm,NASDAQ:QCOM)是一个位于美国加州圣地亚哥的无线电通信技术研发公司,由加州大学圣地亚哥分校教授厄文·马克·雅克布和安德鲁·维特比创建,于1985年成立。两人此前曾共同创建Linkabit。 高通公司是全球3G、4G与5G技术研发的领先企业,目前已经向全球多家制造商提供技术使用授权,涉及了世界上所有电信设备和消费电子设备的品牌。根据iSuppli的统计数据,高通在2007年度一季度首次一举成为全球最大的无线半导体供应商,并在此后继续保持这一领导地位。其骁龙移动智能处理器是业界领先的全合一、全系列移动处理器,具有高性能、低功耗、逼真的多媒体和全面的连接性。目前公司的产品和业务正在变革医疗、汽车、物联网、智能家居、智慧城市等多个领域。

http://www.qualcomm.com/
华为机构

华为创立于1987年,是全球领先的ICT(信息与通信)基础设施和智能终端提供商。

https://www.huawei.com/cn/
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

SSD技术

一种计算机视觉模型。论文发表于 2015 年(Wei Liu et al.)

提升算法技术

Boosting是一种主要用于减少偏差的机器学习集成元算法,也是监督学习的一个变化,是一种将弱学习器转换为强学习器的机器学习算法家族。 Boosting是基于Kearns和Valiant(1988,1989)提出的问题:一组弱学习器能创造一个强大的学习器吗?一个弱的学习器被定义为一个分类器,它与真实的分类只有轻微的相关性(它可以比随机猜测更好地标注示例)。相反,强大的学习器是一个与真实分类任意相关的分类器。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

物体识别技术

计算机视觉领域的一个分支,研究物体的识别任务

多任务学习技术

模仿学习技术

模仿学习(Imitation Learning)背后的原理是是通过隐含地给学习器关于这个世界的先验信息,就能执行、学习人类行为。在模仿学习任务中,智能体(agent)为了学习到策略从而尽可能像人类专家那样执行一种行为,它会寻找一种最佳的方式来使用由该专家示范的训练集(输入-输出对)。

爱奇艺机构

2010年4月22日正式上线,推崇品质、青春、时尚的品牌内涵如今已深入人心,网罗了全球广大的年轻用户群体,积极推动产品、技术、内容、营销等全方位创新。企业愿景是做一家以科技创新为驱动的伟大娱乐公司。于2018年3月29日在纳斯达克上市。

http://iQIYI.COM
推荐文章
暂无评论
暂无评论~