分栗子 发自 凹非寺
量子位 出品 | 公众号 QbitAI

TensorFlow开源了一个实时人物分割模型,叫BodyPix

这个模型,在浏览器上用TensorFlow.js就能跑。

而且,帧率还很可观,在默认设定下:

用2018版15吋MacBook Pro跑,每秒25帧

用iPhone X跑,每秒21帧

注意,有线上Demo可以玩耍。

怎样分割

在BodyPix眼里,人体可以分成24个部位。比如,左手、右前小腿、后背等等。

对每个像素来说,模型首先需要判断,它是不是人体的一部分。

如果判断属于人体,再分辨它到底在人体的哪个部位:

这样,黑色剪影就变成了色彩丰富的分割成果。

开始食用

现在,来仔细看一下,这个模型该怎么用。

首先明确,如果不和其他模型搭配的话,BodyPix只适用于单人影像

第一部分:导入

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

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

或者,通过页面上的bundle来食用,就不用安装了:

 1<html>  2    <body>  3        <!-- Load TensorFlow.js -->  4        <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.13.3"></script>  5        <!-- Load BodyPix --> 6        <script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/body-pix"></script>  7            bodypix.load().then(function(net) { 8                // BodyPix model loaded 9            });10        </script>11    </body>12</html>

第二部分A:把人抠出来

这里,只是把像素分成人和非人。

每个像素,都会给出一个0-1之间的数值。

然后,设定一个阈值 (如0.5) 。数值大于等于阈值视为1,小于视为0

要召唤出一个API,叫estimatePersonSegmentation,来执行这个任务:

1const imageElement = document.getElementById('image');23// load the BodyPix model from a checkpoint4const net = await bodyPix.load();56// arguments for estimating person segmentation.7const outputStride = 16;8const segmentationThreshold = 0.5;

第二部分B:区分身体部位

24个身体部位,对应0-23的数字。非人体则是-1。

这里,要召唤出另一个API,叫estimatePartSegmentation

 1const imageElement = document.getElementById('image'); 2 3// load the BodyPix model from a checkpoint 4const net = await bodyPix.load(); 5 6// arguments for estimating body part segmentation. 7const outputStride = 16; 8const segmentationThreshold = 0.5; 910// load the person segmentation model from a checkpoint11const net = await bodyPix.load();1213const partSegmentation = await net.estimatePartSegmentation(imageElement, outputStride, segmentationThreshold);

更详细的食用步骤,请至文底博客传送门。

多人也可以?

BodyPix如果可以和人物检测器合并使用,就可以做多人分割任务了:

先把每个人用方框圈起来,然后再在每个方框里做分割。

但凭一己之力,BodyPix暂时还搞不定多人。

不过,对于一个能在浏览器上运行的实时模型,单人25帧每秒,已属优秀。

除了开源模型之外,TensorFlow团队还提供了线上Demo,打开摄像头就可以玩耍了:

Demo传送门:
https://storage.googleapis.com/tfjs-models/demos/body-pix/index.html

BodyPix传送门:
https://github.com/tensorflow/tfjs-models/tree/master/body-pix

博客传送门:
https://medium.com/tensorflow/introducing-bodypix-real-time-person-segmentation-in-the-browser-with-tensorflow-js-f1948126c2a0

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

加入社群

量子位现开放「AI+行业」社群,面向AI行业相关从业者,技术、产品等人员,根据所在行业可选择相应行业社群,在量子位公众号(QbitAI)对话界面回复关键词“行业群”,获取入群方式。行业群会有审核,敬请谅解。

此外,量子位AI社群正在招募,欢迎对AI感兴趣的同学,在量子位公众号(QbitAI)对话界面回复关键字“交流群”,获取入群方式。

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

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

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

喜欢就点「好看」吧 !

浏览器上跑:TensorFlow发布实时人物分割模型,秒速25帧,24个部位相关推荐

  1. 在英特尔独立显卡上部署YOLOv5 v7.0版实时实例分割模型

    作者:贾志刚 英特尔物联网创新大使 目录 1.1 YOLOv5实时实例分割模型简介 1.2 英特尔®消费级锐炫™ A 系列显卡简介 1.3  在英特尔独立显卡上部署YOLOv5-seg模型的完整流程 ...

  2. 如何在浏览器上跑深度学习模型?并且一行JS代码都不用写

    翻译 | 林椿眄 编辑 | 周翔 2017 年 8 月,华盛顿大学的陈天奇团队发布了 TVM,和 NNVM 一起组成深度学习到各种硬件的完整优化工具链,支持手机.CUDA.OpenCL.Metal.J ...

  3. 旷视科技提出双向网络BiSeNet:实现实时语义分割

    转于:https://zhuanlan.zhihu.com/p/41475332 全球计算机视觉三大顶会之一 ECCV 2018 (European Conference on Computer Vi ...

  4. 直接在服务器上跑系统,在服务器上跑代码

    在服务器上跑代码 内容精选 换一换 云速建站暂不支持自主搭建代码,您可以考虑通过添加高级代码插件实现相关功能.云速建站是一套基于SaaS模式的建站系统,使用的是云服务平台,不止是一台服务器,一个网站的 ...

  5. YOLACT实时实例分割

    Abstract 我们提出了一个简单的.完全卷积的实时实例分割模型,在MS-COCO上达到29.8map,在单个Titan Xp上以33.5fps的速度进行评估,这比以往任何竞争方法都要快得多.而且, ...

  6. MindSpore论文解读 | EPRNet:应用于实时街景分割的高效金字塔表征网络

    MindSpore作为一个端边云协同的的全场景AI开源框架(https://gitee.com/mindspore/),为开发者带来编程更简单.调试更轻松.性能更卓越.部署更灵活.使用更安全的体验,2 ...

  7. 在浏览器上也能训练神经网络?TensorFlow.js带你玩游戏~

    How to train neural network on browser 无论你是刚开始深度学习,亦或是个老练的老手,建立一个神经网络的训练环境有时都会很痛苦.让神经网络的训练像加载一个网页,然后 ...

  8. 7月31日云栖精选夜读 | 在浏览器上也能训练神经网络?TensorFlow.js带你玩游戏~...

    无论你是刚开始深度学习,亦或是个老练的老手,建立一个神经网络的训练环境有时都会很痛苦.让神经网络的训练像加载一个网页,然后点击几下,然后你就准备好马上进行推理,会不会是件很棒的事呢?(那必须棒) 在本 ...

  9. tensorflow.js在nodejs训练猫狗分类模型在浏览器上使用

    目录 本人系统环境 注意事项 前言 数据集准备 处理数据集 数据集初步处理 将每一张图片数据转换成张量数据(tensor) 将图片转换成张量数组的代码和运行效果 将图片的标注转换成张量数据(tenso ...

最新文章

  1. uboot引导kernel - 3 -uboot给内核传参详解
  2. IEDA与activiti不兼容等等安装错误问题的解决方案
  3. vue项目中app.vue 、main.js和 index.html的关联
  4. 英语语法---形容词性从句详解
  5. java-基础练习题3
  6. ASP.NET 安全认证(三)—— 用Form 表单认证实现单点登录(Single Sign On) .
  7. Linux内核态抢占机制分析
  8. JavaWeb——EL表达式
  9. 渗透测试入门1之信息收集
  10. SiteEngine 6.071. SQLInjection
  11. python之路_前端基础之jQuery入门2
  12. 进程的切换和系统的一般执行过程
  13. TreeMap内部实现简介
  14. 动画效果之时间轴对象构造器(即逐个执行动画)
  15. JSTL不同版本和EL表达式的关联
  16. 网易云再度升级!用Python爬取下载(一:思路)
  17. 程序员英文简历范例(Java, Python)
  18. 基于Java Swing五子棋小游戏设计和实现
  19. MATLAB中使用plotyy绘制双纵坐标图及坐标轴设置
  20. 数字化给财税行业带来的星星之火

热门文章

  1. 这个使用 Python 编写的 PDF 神器你值得拥有!
  2. Python 爬取 6000 篇文章分析 CSDN 是如何进入微信 500 强的
  3. 为什么越来越少的人用 jQuery?
  4. 如何用编程 get 百万年终奖?
  5. 靠社交和游戏两张牌,腾讯还能活多久? | 畅言
  6. 重大改革:Python 语言将被加入高考科目,VB 惨被淘汰!
  7. Android热修复更改图标,Android手写热修复(一)--ClassLoader
  8. win10系统要求配置_Windows 10最低系统配置要求
  9. 初一到初三需要用计算机吗,初一到初三不注意这8点,就等着中考完后悔吧!...
  10. react18并发渲染