“每天一篇,爱上Python”AI虚拟主播,这个项目一年都玩不够
来源:Jack Cui
今天分享一个算法 KalidoKit,我们看下效果:
根据真实的人物肢体、面部、手的动作,来驱动虚拟形象。
KalidoKit 是整合了多种算法实现的,Facemesh、Blazepose、Handpose、Holistic。
这个技术的主流应用方向就是虚拟主播。
可以驱动虚拟人物跳舞:
也可以像开头的动图那样,捕捉全身的动作,面部表情、手势等。
除了这种驱动虚拟形象类型的,还可以发挥自己的想象力,做一些有趣的小应用。
KalidoKit
该项目是基于 Tensorflow.js 实现的。
项目地址:
https://github.com/yeemachine/kalidokit
捕捉的关键点信息,可以用来驱动 2D 和 3D 的虚拟形象,结合一些虚拟形象的驱动引擎,即可实现文章开头所展示的效果。
既可以驱动 Live2D 形象,又可以驱动 3D VRM 形象。
这里涉及的技术点一篇文章讲不完,今天主要讲述基础的关键点检测技术:人脸关键点检测、人体姿态估计、手势姿态估计。
人脸关键点检测
人脸关键点检测,有稀疏的,有稠密的。
像基础一点的,68 个关键点检测。
一般来说,一些闭眼、头部姿态、张闭嘴的检测,用这种简单的 68 个关键点就够了。
当然,也有更加稠密的关键点检测。
对于一些皮肤美容类的应用场景,就需要稠密的关键点检测算法了,成千上万的那种。
不过算法的思想都是一样的,回归出这些关键点的位置坐标,通常搭配人脸检测算法使用。
想要学习人脸关键点检测算法的,推荐两个入门项目:
https://github.com/1adrianb/face-alignment
https://github.com/ChanChiChoi/awesome-Face_Recognition
一个是基础的入门项目,一个整合了人脸关键点的主流算法。
人体姿态估计
人体姿态估计也是计算机视觉中一个很基础的问题。
从名字的角度来看,可以理解为对“人体”的姿态(关键点,比如头,左手,右脚等)的位置估计。
一般可以分为 4 种任务:
- 单人姿态估计 (Single-Person Skeleton Estimation)
- 多人姿态估计 (Multi-person Pose Estimation)
- 人体姿态跟踪 (Video Pose Tracking)
- 3D人体姿态估计 (3D Skeleton Estimation)
简单来说,就是对于人体骨骼关节点进行检测,定位人体的姿态。
人体姿态估计,应用范围宽广,比如在自动驾驶行业进行街景中行人的姿态检测、动作预测;在安防领域的行人再识别问题,特殊场景的特定动作监控;影视产业的电影特效等。
想要学习的小伙伴,可以看这整理的论文:
https://github.com/cbsudux/awesome-human-pose-estimation
手势姿态估计
手关节更加灵活,动作敏捷和存在自我遮挡,因此略复杂一些。
不过原理和人体姿态估计类似。
除了这种常规的手势识别,也可以用来做一些特效。
其实,很多这种人体特效,位置的定位,都是借助这些关键点实现的。
总结
本文介绍了一些基础的算法,并推荐了一些学习资料,比较基础。