晓查 发自 凹非寺 
量子位 报道 | 公众号 QbitAI

今天,Google官方推出了使用TensorFlow.js的人体图像分割工具BodyPix 2.0,对该工具进行了一次重大升级,加入多人支持,并提高了准确率。

BodyPix能将图像分割为属于人的和不属于人的像素,属于人的部分可以进一步分类为二十四个身体部位之一。

BodyPix可以直接在浏览器中运行,开发者只需加入几行代码,即可与电脑或手机的摄像头配合使用。

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

BodyPix于今年2月推出,本次2.0版的主要更新有:对多人图像的支持、增加基于ResNet-50的模型、新的API、权重量化以及对不同尺寸图像的支持。

功能演示

在项目的GitHub主页上,TensorFlow给出了BodyPix 2.0软件的一些基本用法演示,还有网页版Demo供用户体验。

人像分割

对于给定具有一个或多个人的图像,人像分割可预测所有人的分割。segmentPerson返回PersonSegmentation,对应于图像中人物分割的对象。

segmentPerson默认不会在不同的个人之间消歧义。因此如果您需要对不同的人进行区分,请使用segmentMultiPerson,不过引入此方法会导致运行速度变慢。

以上结果返回的是一组0和1的数组,用于表示该像素点是否属于人。

身体部位细分

BodyPix的segmentPersonParts方法可以预测所有人的24个身体部位分割。

PartSegmentation会所有合并的人,返回值是每个像素与身体部位相对应的编码。同样的,如果需要区分多人,请使用segmentMultiPersonParts。

身体不同部位对应的编码如下表所示:

把结果输出到图像上

BodyPix还包含其他实用程序功能,可以将输出结果与原始图像合成,得到你所需的渲染图像。

bodyPix.toMask可以给人和背景加上一层蒙版,指定渲染像素的颜色和不透明度。

bodyPix.toColoredPartMask可以给人体部位分割加上一个24色的颜色数组,每个身体部位都对应着数组中的一个颜色。

以上是BodyPix的基础功能的用法。

既然BodyPix可以区分出人体和背景 ,我们就可以用它实现实时的背景虚化,调用的API方法是bodyPix.drawBokehEffect

利用BodyPix识别出身体不同部位的功能,可以调用bodyPix.blurBodyPart给人脸打上马赛克。

此外还有更多的图像绘制API,在此就不一一列举了。

安装方法

BodyPix使用非常简便,用户可以将其与脚本标签一起嵌入HTML使用:

<html>   <body> <!-- Load TensorFlow.js --> <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.13.3"></script> <!-- Load BodyPix --><script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/body-pix"></script> bodypix.load().then(function(net) {// BodyPix model loaded});</script></body>
</html>

或者通过npm方式安装:

npm install @tensorflow-models/body-pix

然后使用es6模块导入:

import * as bodyPix from '@tensorflow-models/body-pix'; async function loadAndUseBodyPix() {const net = await bodyPix.load();// BodyPix model loaded
}

如何让BodyPix运行更快

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

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

const net = await bodyPix.load({architecture: 'MobileNetV1',outputStride: 16,multiplier: 0.75,quantBytes: 2
});

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

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

const net = await bodyPix.load({architecture: 'ResNet50',outputStride: 32,quantBytes: 2
});

原理简介

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

图像通过MobileNet网络馈送,并且使用S型激活函数将输出转换为0到1之间的值。

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

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

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

传送门

试玩Demo:

官方博客:

GitHub地址:

作者系网易新闻·网易号“各有态度”签约作者

大咖齐聚!第一批参会嘉宾重磅揭晓

量子位 MEET 2020 智能未来大会启幕,李开复、倪光南、景鲲、周伯文、吴明辉、曹旭东、叶杰平、黄刚等AI大咖与你一起读懂人工智能。观众票即将售罄,扫码报名预定席位 ~

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「在看」吧 !

谷歌发布人体图像分割工具BodyPix 2.0,支持多人识别,可在iPhone上流畅运行相关推荐

  1. Google人体图像分割模型Bodypix再次更新,针对Coral开发板优化,720p/30fps流畅运行...

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI AI开发板果然是各大厂商的必争之地.树莓派4刚发布8GB版,快被遗忘的谷歌Coral开发板就迎来新的机器学习模型,登上了近日GitHub开 ...

  2. python 人体建模_Google人体图像分割模型Bodypix再次更新,720p/30fps流畅运行

    晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI AI开发板果然是各大厂商的必争之地.树莓派4刚发布8GB版,快被遗忘的谷歌Coral开发板就迎来新的机器学习模型,登上了近日GitHub开源 ...

  3. SDL安全设计工具,一款支持多人协作实施威胁建模的微信小程序

    SDL安全设计工具,一款支持多人协作实施威胁建模的微信小程序楔子痛点威胁建模活动组织方法道具使用方法要点使用示例多人单人Q&A其他游戏参考阅读致谢 Shingle,音[ˈʃɪŋɡl],是世界上 ...

  4. 谷歌发布 iOS 黑客工具软件,或导致 iOS 11 被越狱

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 为 iPhone 带来巨大进步, 让 iPad 实现里程碑式飞跃. 这个是苹果官网上 iOS ...

  5. debug5x 微信_微信发布 Web 开发者工具 V0.5.0 新增 X5 Blink 内核调试功能

    微信 Web 开发者工具的功能: 1.使用自己的微信号来调试微信网页授权: 2.调试.检验页面的 JS-SDK 相关功能与权限,模拟大部分 SDK 的输入和输出: 3.使用基于 Weinre 的移动调 ...

  6. linux wine运行效率,Wine 3.0让Windows应用在Linux上流畅运行!

    [IT168 资讯]就在最近,VirtualBox中对Linux发行版的支持随着Linux内核4.16的发布而变得更好. 但是,如果你希望在Linux系统上运行Windows应用程序呢?为此,Wine ...

  7. ios多人协作工具有哪些?支持多人同步在线使用的协同办公软件

    目前,使用ios系统的人群占有大多数,ios系统属于闭环系统,系统的流畅度比较高,不仅生活中需要经常使用ios系统的手机,工作中一些需要记录的备忘事项也会借助ios系统上的备忘记事软件. 由于工作中很 ...

  8. 谷歌发布TF新工具:计算速度提升2倍,减少无效参数

    萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一顿操作后,需要实时模糊背景的视频,看起来流畅了不少: 实时目标检测的延迟也更低了: 这是谷歌特意为移动设备和Web端开发的一系列新工具,可 ...

  9. [代码发布]中文文字转换组件 1.0,支持VB/ASP编程

    中文文字转换组件 1.0 *************************************************************** 版本历史: ***************** ...

最新文章

  1. C语言 数字翻转输出
  2. 【深度学习】预训练的卷积模型比Transformer更好?
  3. (3) Hibernate的查询 标准(Criteria)查询
  4. [react] immutable的原理是什么
  5. hough变换检测圆周_Python OpenCV 霍夫变换
  6. 《大厂内部资料》Redis 性能优化的 13 条军规!全网首发
  7. Hibernate入门(二)——hibernateAPI详解
  8. 9种动态可视化技巧,快速提升可视化大屏能力(附模板)
  9. 【WPF】如何保存RichTextBox的文本到数据库?以及如何对RichTextBox的Document做绑定?...
  10. java生成随机数的代码_java随机数代码的三种生成方式怎么编写?
  11. VC dimension(Vapnik-Chervonenkis dimension)
  12. 移动开发用户行为分析神器之--AppSee!
  13. 2021年下半年软考信息安全工程师上午选择题及解析
  14. 毕业设计 基于单片机的万能红外遥控器 - 物联网 嵌入式
  15. python多线程爬取妹子图
  16. 只需5分钟教会你使用React中的JSX
  17. Vue项目中的静态资源引入
  18. python爬取电脑本地数据_利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息...
  19. paramiko.ssh_exception.SSHexception:Server connection dropped:
  20. 如何解决Siri无法正常运行的问题

热门文章

  1. PostgreSQL可视化客户端工具
  2. MySQL主从复制异步原理以及搭建
  3. sshpass连接主机以及执行命令
  4. 2016 VR年终大趴行业大佬齐聚,共同探讨AR、VR的商业化道路之变
  5. 数据告诉你,胡歌的微世界
  6. jQuery-EasyUI异步加载树形菜单
  7. Atitit hsv转grb  应该优先使用hsv颜色原则 方便人类
  8. oracle 11g dataguard安装出现的错误
  9. PYTHON线程知识再研习F---队列同步Queue
  10. 去除右键的一键备份到115网盘”