醋醋百科网

Good Luck To You!

实时人像分割工具升级!谷歌发布BodyPix2.0,支持多人识别

BodyPix是一个开源的机器学习模型,它允许在浏览器中使用TensorFlow.js对人和人的身体部分进行分割。

近日,BodyPix 升级到了2.0版本,加入了多人支持,并且具有更高的准确性(基于ResNet50)、新的API、权重量化以及对不同图像尺寸的

GitHub:

https://github.com/tensorflow/tfjs-models/tree/master/body-pix

人体图像分割到底是什么?

在计算机视觉中,图像分割是指将图像中的像素分为语义区域(通常用于定位对象和边界)的技术。

经过训练的BodyPix模型可对人和其二十四个身体部位(左手,右前小腿或背部躯干等部位)执行此操作。

换句话说,BodyPix可以将图像的像素分为两类:1)代表人物的像素2)代表背景的像素。它可以将代表人的像素分类为二十四个身体部位中的任何一个。

在使用默认设置的情况下,BodyPix可以在15寸MacBook Pro上以25 fps的速度估计,并渲染人和身体部位的分割。而在iPhone X上,BodyPix能以21 fps的速度进行估计。

用人体图像分割可以做什么?

这项技术可以成为从增强现实到摄影编辑再到图像或视频艺术效果等广泛应用的工具。

去年,当研究者发布PoseNet(有史以来第一个允许使用简单的网络摄像头在浏览器中进行人体估计的模型)时,人们想到了该技术的各种用例。研究者希望BodyPix能够进行同样的创造性实验。

为什么要在浏览器中进行?

与PoseNet的情况类似,以前,实时的人体分割只能用专门的硬件或难以安装的软件来完成,而且对系统要求很高。

相反,BodyPix和PoseNet都不需要安装,只需几行代码即可使用。不需要专门的摄像头来使用这些模型。最后,只需要打开一个url就可以访问这些应用程序。

所有的计算都是在设备上完成的,所以数据是私有的。基于此,BodyPix是易获得的。

BodyPix入门

深入了解一下使用模型的技术细节。

BodyPix可用于将图像分割成像素,这些像素可能是人的一部分,也可能不是。

属于人的那些像素可以进一步分类为二十四个身体部位之一。重要的是,该模型适用于单个人的数据,因此请确保输入数据不是多个人的。

第1部分:导入TensorFlow.js和BodyPix库

回顾一下如何设置BodyPix项目的基础知识。

该库可以通过以下方式安装:

npm install @ tensorflow-models / body-pix,然后使用es6模块导入:

或通过页面中的捆绑软件,无需安装:

第2部分

  • 人体分割

从根本上讲,人体分割将图像分为属于人的像素和不属于人的像素。

在遮光罩下,当一个图像被输入到模型后,它被转换成一个二维图像,每个像素的浮点值在0到1之间,表示人在那个像素中存在的概率。

被称为“分割阈值”的值表示一个像素的分数必须被认为是人的部分的最小值。

使用分割阈值,那些0-1的浮点值变成二进制的0或1(即,如果阈值为0.5,则超过0.5的任何值都转换为1,低于0.5的任何值都转换为0)。

“细分阈值”的值表示像素得分被认为是人体部分像素的最小值。

使用分段阈值,那些0-1浮点值将变为二进制0或1s(即,如果阈值为0.5,则任何大于0.5的值将转换为1s,而任何小于0.5的值将转换为0s)。

人体分割的示例如下:

有关此方法及其参数的完整说明,参阅github:

https://github.com/tensorflow/tfjs-models/tree/master/body-pix#person-segmentation

绘制人体部位分割输出

使用estimate Part Segmentation的输出和由partid索引的颜色数组,to Colored Part Image Data将为像素的每个部分生成相应颜色的图像。

然后可以使用drawMask方法在原始图像的顶部将其绘制到画布上:

drawMask将图像绘制到画布上,并使用指定的不透明度绘制包含掩模的ImageData。

如果maskBackground设置为true(默认),则toMaskImageData将生成一个ImageData,与上面第一幅图像上的
estimatePersonSegmentation的输出类似,如果maskBackground设置为false,则生成第三幅图像。

  • 人体部位细分

适用于图像的示例性人体部位分割算法

除了简单的人和非人体部分的分类外,BodyPix还可以将图像分割成代表二十四个身体部位中任何一个的像素。

将图像输入模型后,图像将转换为二维图像,每个像素的整数值在0到23之间,指示该像素属于24个身体部位中的哪个。 身体外部的像素的值为-1。

研究者调用API方法——Estimate Person Segmentation来对图像或视频执行人体分割;这个简短的代码块显示了如何使用它:

人体分割的示例如下:

有关这些方法以及如何使用它们的详细说明,请参阅github:

https://github.com/tensorflow/tfjs-models/tree/master/body-pix#output-utility-functions

如何使BodyPix运行更快或更准确

BodyPix带有不同尺寸的模型,具有不同的性能。通过设定模型的大小和输出步长,可以在运行速度和准确性之间进行权衡。

默认情况下,BodyPix加载的是0.75倍的MobileNetV1架构,适合中低端GPU的计算机使用,而导入0.50倍的模型可以用于移动设备。

倍率的数值越大,神经网络中层的尺寸也越大,准确率更高、推理速度更慢。不同倍率模型的性能对比如下:

该值对应于MobileNet体系结构和检查点。 值越大,层的大小越大,并且以速度为代价的模型越精确。将此值设置为较小值可以提高速度,但会降低精度。

输出步长是在进行分段时设置的参数,其值可以为8、16或32。

在较高级别上,它会影响姿态估计的准确性和速度。输出跨度的值越低,精度越高,但速度越慢,值越大,预测时间越快,但精度越低。

此外,原始图像的大小也会影响性能。

由于分割后,结果将按比例缩放到原始图像大小,因此原始图像越大,缩放和绘制结果时就需要进行更多的计算。

为了加快处理速度,可以尝试按比例缩小图像,然后再将其输入到API。

对于具有更强大GPU的计算机,官方建议使用ResNet架构,这一部分也是2.0版加入的新功能。

BodyPix的制作

BodyPix使用卷积神经网络算法。研究者训练了ResNet模型和MobileNet模型。

尽管基于ResNet的模型更为准确,但该博客文章涉及MobileNet,MobileNet已开源,能够在移动设备和标准消费计算机上高效运行。

对于MobileNet模型,传统的分类模型的最后一个池和全连接层已经被一个1x1卷积层代替,以预测一个密集的2D分割地图。

该示例显示了MobileNet从输入图像到输出层的逐层激活

人体分割

BodyPix的核心是执行人体分割的算法,换句话说,是对输入图像的每个像素执行二进制决策,以估计该像素是否属于某个人。

来看看它是如何工作的:

可以将显示人体区域分割任务的图像表示为按像素的二进制决策任务。 1表示像素属于人物区域,0表示像素不属于人物区域(出于说明目的,降低了分割分辨率)

通过MobileNet网络输入图像,使用sigmoid激活函数将输出转换为0到1之间的值,该值可以解释为一个像素是否属于一个人的概率。

分割阈值(例如0.5)通过确定一个像素的分数必须被认为是人的一部分的最小值,将其转换为二进制分割。

应用于图像的人员分割算法的示例数据表示。从左至右:输入图像,sigmoid后的网络分割预测,以及阈值后的二进制分割。

人体部位分割

为了估计人体部位分割,使用相同的MobileNet表示,但这一次,通过预测一个额外的24通道输出张量P来重复上述过程,其中24是身体部位的数量。每个通道都对人体部位存在的概率进行编码。

该示例显示了MobileNet从输入图像到附加的24通道人体部位分割输出的逐层激活

举例说明,人体部位分割的任务可以表示为多通道每像素二进制决策任务。对于每个体部通道,1表示一个像素属于体部区域,0表示一个像素不属于体部区域

对于每个图像位置,输出张量P中有24个通道,因此需要在24个通道中找到最佳部分。在推断期间,对于输出身体部位张量P的每个像素位置(u,v),body_part_id使用以下公式选择属于第i个部位概率最高的像素:

这将产生一个二维图像,每个像素都包含一个整数,该整数表示该像素属于哪个身体部位。通过将值设置为-1,可以把不属于人体的部分剔除掉。

使用argmax公式对24通道进行梳理,然后使用人体分割出属于人的部分区域(每个body_part_id由一个独特的颜色表示,为了便于说明,输出分辨率降低了),这些示例显示了最终1通道人体部分的id输出。

使用真实和模拟数据进行训练

为了将图像中的像素分割为二十四个身体部位区域的任务,手动注释大量的训练数据非常耗时。研究者将使用计算机图形来渲染具有地面真人体部位分割注释的图像。

为了训练模型,将渲染的图像和真实的COCO图像(带有2D关键点和实例分割注释)混合。

使用混合训练策略和多任务损失,ResNet模型能够从模拟注释中学习二十四个人体部位的预测能力。最后,研究者将ResNet模型对COCO图像的预测用于BodyPix的MobileNet模型中。

该示例显示了将ResNet模型的预测提炼为基于MobileNet的BodyPix模型的示例。

与PoseNet一起,研究者认为BodyPix朝着野外、本地和消费设备的动作捕捉又迈出了一小步。

目前仍有不少问题尚未完全解决:如3D人体形态的捕捉、高频软组织肌肉运动、服装外观细节及其变形等。

展望未来,研究者认为,运动捕捉技术将在更广泛的应用和行业得以运用。

参考链接:

  • https://blog.tensorflow.org/2019/11/updated-bodypix-2.html

视频点击预测大赛火热进行中

3万元奖金、证书、实习、就业机会已准备就位,快叫上小伙伴一起来组队参赛吧。

赛题:希望参赛者通过已有的用户信息、视频信息以及他们是否观看过某些视频,来预测我们推荐给这些用户的视频对方是否会观看。

个人、高等院校、科研单位、互联网企业、创业团队、学生社团等人员均可报名。

报名及组队时间:即日起至2020年2月1日

报名入口:

http://www.turingtopia.com/competitionnew/detail/e4880352b6ef4f9f8f28e8f98498dbc4/sketch

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言