前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在WebRTC上实现ML Kit笑容检测

在WebRTC上实现ML Kit笑容检测

作者头像
LiveVideoStack
发布2021-09-01 10:24:46
9990
发布2021-09-01 10:24:46
举报
文章被收录于专栏:音视频技术音视频技术

本文来自Houseparty的WebRTC视频专家Gustavo Garcia Bernardo和TokBox的WebRTC移动端专家Roberto Perez,他们通过Google的ML Kit在WebRTC通话中实现了简单的笑容检测,期间考虑到了检测准确率、延时以及检测频度与CPU占用率的平衡等,实际结果表明ML Kit的检测结果令人满意。LiveVideoStack对本文进行了摘译。

文 / Roberto Perez, Gustavo Garcia

译 / 元宝

原文 : https://webrtchacks.com/ml-kit-smile-detection/

现在,在大部分时间里建立视频通话变得相对简单,我们可以继续使用视频流做一些有趣的事情。随着机器学习(ML)的新进展以及越来越多的API和库的出现,计算机视觉也变得越来越容易。Google的ML Kit是最近提出的一个新的基于机器学习的库,可以快速访问计算机视觉输出。

为了展示如何使用Google的新ML KIT来检测实时WebRTC流上用户的笑容,我想欢迎过去Houseparty的WebRTC视频大师Gustavo Garcia Bernardo。与此同时欢迎TokBox的移动WebRTC专家Roberto Perez。他们给出了一些关于做面部检测的背景知识,展示了一些代码示例,但更重要的是分享了他们实现实时通信(RTC)应用程序内的微笑检测的最佳配置的研究。

介绍

在实时通信(RTC)中最常见的机器学习(的例子是计算机视觉。然而,除了使用人脸检测进行识别、跟踪和增强之外,我们还没有看到这些算法的许多实际应用。 幸运地是两周前Houseparty首席执行官Ben Rubin发表的一则让我们有机会探索人造视觉用例的评论:

“若有人可以做一个来检测笑脸的编外项目,以便让我们可以开始测量笑容并在仪表板上显示。 我认为这在许多不同的层面上都很重要。”

几乎与此同时,Google发布了他们用于机器学习的新的跨平台移动SDK,名为ML Kit。 我们想要立即测试这个。 幸运地是,所有的行星都可以让我们在一个真正的应用上尝试一下,即:在WebRTC对话中,在iPhone本地上通过ML检测笑容。

框架选择

我们可以一些设备上的机器学习框架和库开始这项任务。这种类型的用例最有名的库可能是OpenCV。 OpenCV是一个非常成熟的多平台解决方案,具有多种基于传统图像处理技术的功能。 特别是对于iOS,Apple去年在这一领域开始添加一些新的API接口。现在他们拥有高层次的Vision框架和更低层次但更灵活的CoreML。 在Android方面,ML支持主要由Tensorflow Lite提供。另外还有,在前面提到的,Google最近添加了新的ML Kit框架。

ML Kit具有一些优点。首先,它是多平台的,支持Android和iOS。 它也有几个不同级别的抽象概念(高级和低级的API)。另外,它提供了不同的部署和执行模型,允许在设备上和在云中进行处理。 最后,它还能够实时优化和更新设备上的模型。

实现

从流中提取图像

我们需要做的第一件事是将ML Kit集成在我们的WebRTC应用程序,以便访问这些图像。 我们需要获取本地或远程框架(取决于我们的用例)并将它们转换为ML Kit支持的正确格式。

ML Kit 人脸检测实验中 帧图像朝上的方向

在iOS中,ML Kit支持以UIImage或CMSampleBufferRef格式传递的帧。 注意 - 请确保旋转图像以保证图像帧“朝上”。根据您使用的不同WebRTC API,获取图像的方法也不同。如果你使用官方WebRTC iOS框架,则可以将新的渲染器连接到本地或远程RTCVideoTrack,以接收视频帧作为RTCVideoFrame的实例。 通过访问YUV缓冲区,你可以轻松地将其转换为UIImage。

如果你使用的是像TokBox这样的平台上的API,那么你将使用自定义驱动程序访问原始本地帧,然后在用户端收到它们后将它们传递给WebRT和/或远程帧。 这些帧将作为CVPixelBuffer或YUV缓冲区接收,这些缓冲区也很容易转换为UIImage。

人脸检测API

一旦你有了UIImage的框架,你可以将它传递给ML Kit人脸检测器。正如我们稍后在大多数情况下会看到的那样,您只会传递一定比例的帧,以减少对CPU使用率的影响。这是一段代码,展示了访问ML Kit API的容易程度:

概率阈值

我们发现使用0.5作为微笑概率阈值为我们的需求提供了良好的结果。 你可以看看我们构建的示例应用程序中的完整代码,通过利用使用OpenTok捕获视的频和上面的代码来检测微笑的概率。

性能评估

RTC应用程序通常是资源密集型的。 添加机器学习增加了这一点,所以资源消耗是一个主要问题。对于ML,通常要在准确性和资源使用之间进行权衡。在本节中,我们从不同的角度评估这些影响,为决定如何将这些功能引入应用程序提供一些预期值和指导方针。

注意:以下测试中的所有结果均在使用低端的iPhone 5 SE设备完成。

时延

要考虑的第一个重要参数是执行检测需要多长时间。

ML Kit具有一系列设置:

  • 检测模式:ML Kit在此提供两个选项:Fast vs. Accurate(快速与准确)。
  • 标记:识别眼睛,嘴巴,鼻子和耳朵。启用此功能会减慢检测速度,但我们得到的结果要好得多。
  • 分类:我们需要此功能进行笑脸检测
  • 脸部跟踪:跨帧跟踪相同的脸部。启用它可以使检测速度更快

检测时间以毫秒为单位 (ms)

精确模式和快速模式之间的差异并不大(除非跟踪功能被禁用)。 我们用快速模式获得的精确度非常好,所以我们决定采用以下组合:快速模式+标志+追踪。

CPU使用率

接下来我们将评估CPU使用率。 我们以每秒25帧的速率来处理。 在我们的用例中(以及其他许多情况下),我们不一定需要处理每一帧。 CPU /电池节省对我们来说比检测每一个微笑更重要,因此我们运行了一些测试,修改了我们传递给ML Kit进行识别的每秒帧数。

正如您在下图中看到的那样,在默认基线之上的额外CPU使用率(仅从摄像头捕获而不进行任何ML处理)与传递至ML Kit的脸部和笑脸检测API的每秒帧数几乎成线性增长。

ML Kit以不同帧率处理的CPU使用率

对于我们的实验,每1或2秒处理一帧时,CPU使用率就是合理的。

应用程序大小

现在,我们来考虑应用程序的大小。 我们的应用程序与任何应用程序一样,需要下载并加载。小总是好一些。随着ML套件的应用程序的大小“刚”增长约15Mb。 示例应用程序大小从只使用OpenTok时的46.8Mb到ML Kit添加进来后的61.5Mb。

准确度

最后我们聊聊准确性。我们注意到的第一件事情是即使在快速模式下配置ML Kit时,面部检测的准确程度也是如此。 我们的测试是在一个典型的移动/桌面视频会议设置中完成的,人在看相机,没有任何物体阻挡它。 在其他情况下,检测会更加不可靠,并且不是很有用。 ML Kit也支持在图像中检测多个面,但我们没有进行太多的测试,因为它在我们应用程序的使用中并不常见。

在我们的测试中,算法的决策总是非常接近人类可能会说的那样(至少在我们看来)。 您可以在下面看到一个视频以供参考,或者是自己运行示例应用并查看结果。

结论

即使这个用例非常简单,它也使我们有机会评估新的有前途的ML Kit框架。 它让我们看到了向应用程序添加新计算机视觉功能的价值和便利性。 从我们的角度来看,这次评估的两个最有意思的结果是:一,这些模型的准确性之高令人惊讶,二,无法像预期中的在当今典型的移动设备中以全帧速率运行这些算法

同样重要的是要注意,这些人脸检测用例中的一些可以用更简单的图像处理算法来解决,而不是应用ML技术。 在这方面,像苹果核心图像这样的一些API可能会提供更好的资源与精确度之间的折衷 - 至少可以在iOS平台上进行人脸检测。

然而,传统的图像处理方法仅限于用在那些算法设计的一些简化场景。 ML算法可以进行扩展和重新训练。 例如,使用ML来检测自定义人员的其他特征(如性别,年龄等)也可能很好。这种分析级别超出了传统图像分析算法可以达到的级别。

下一步

从技术角度来看,这次评估的下一步将是使用定制模型(可能使用CoreML)来实现更复杂的用例。 我们想到的是基于生成对抗网络的图像重建,用于非理想网络条件下的视频传输。这可能是提高视频质量的全新方法。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 LiveVideoStack 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档