浏览器上跑:TensorFlow发布实时人物分割模型,秒速25帧,24个部位
分栗子 发自 凹非寺
量子位 出品 | 公众号 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个部位相关推荐
- 在英特尔独立显卡上部署YOLOv5 v7.0版实时实例分割模型
作者:贾志刚 英特尔物联网创新大使 目录 1.1 YOLOv5实时实例分割模型简介 1.2 英特尔®消费级锐炫™ A 系列显卡简介 1.3 在英特尔独立显卡上部署YOLOv5-seg模型的完整流程 ...
- 如何在浏览器上跑深度学习模型?并且一行JS代码都不用写
翻译 | 林椿眄 编辑 | 周翔 2017 年 8 月,华盛顿大学的陈天奇团队发布了 TVM,和 NNVM 一起组成深度学习到各种硬件的完整优化工具链,支持手机.CUDA.OpenCL.Metal.J ...
- 旷视科技提出双向网络BiSeNet:实现实时语义分割
转于:https://zhuanlan.zhihu.com/p/41475332 全球计算机视觉三大顶会之一 ECCV 2018 (European Conference on Computer Vi ...
- 直接在服务器上跑系统,在服务器上跑代码
在服务器上跑代码 内容精选 换一换 云速建站暂不支持自主搭建代码,您可以考虑通过添加高级代码插件实现相关功能.云速建站是一套基于SaaS模式的建站系统,使用的是云服务平台,不止是一台服务器,一个网站的 ...
- YOLACT实时实例分割
Abstract 我们提出了一个简单的.完全卷积的实时实例分割模型,在MS-COCO上达到29.8map,在单个Titan Xp上以33.5fps的速度进行评估,这比以往任何竞争方法都要快得多.而且, ...
- MindSpore论文解读 | EPRNet:应用于实时街景分割的高效金字塔表征网络
MindSpore作为一个端边云协同的的全场景AI开源框架(https://gitee.com/mindspore/),为开发者带来编程更简单.调试更轻松.性能更卓越.部署更灵活.使用更安全的体验,2 ...
- 在浏览器上也能训练神经网络?TensorFlow.js带你玩游戏~
How to train neural network on browser 无论你是刚开始深度学习,亦或是个老练的老手,建立一个神经网络的训练环境有时都会很痛苦.让神经网络的训练像加载一个网页,然后 ...
- 7月31日云栖精选夜读 | 在浏览器上也能训练神经网络?TensorFlow.js带你玩游戏~...
无论你是刚开始深度学习,亦或是个老练的老手,建立一个神经网络的训练环境有时都会很痛苦.让神经网络的训练像加载一个网页,然后点击几下,然后你就准备好马上进行推理,会不会是件很棒的事呢?(那必须棒) 在本 ...
- tensorflow.js在nodejs训练猫狗分类模型在浏览器上使用
目录 本人系统环境 注意事项 前言 数据集准备 处理数据集 数据集初步处理 将每一张图片数据转换成张量数据(tensor) 将图片转换成张量数组的代码和运行效果 将图片的标注转换成张量数据(tenso ...
最新文章
- uboot引导kernel - 3 -uboot给内核传参详解
- IEDA与activiti不兼容等等安装错误问题的解决方案
- vue项目中app.vue 、main.js和 index.html的关联
- 英语语法---形容词性从句详解
- java-基础练习题3
- ASP.NET 安全认证(三)—— 用Form 表单认证实现单点登录(Single Sign On) .
- Linux内核态抢占机制分析
- JavaWeb——EL表达式
- 渗透测试入门1之信息收集
- SiteEngine 6.071. SQLInjection
- python之路_前端基础之jQuery入门2
- 进程的切换和系统的一般执行过程
- TreeMap内部实现简介
- 动画效果之时间轴对象构造器(即逐个执行动画)
- JSTL不同版本和EL表达式的关联
- 网易云再度升级!用Python爬取下载(一:思路)
- 程序员英文简历范例(Java, Python)
- 基于Java Swing五子棋小游戏设计和实现
- MATLAB中使用plotyy绘制双纵坐标图及坐标轴设置
- 数字化给财税行业带来的星星之火
热门文章
- 这个使用 Python 编写的 PDF 神器你值得拥有!
- Python 爬取 6000 篇文章分析 CSDN 是如何进入微信 500 强的
- 为什么越来越少的人用 jQuery?
- 如何用编程 get 百万年终奖?
- 靠社交和游戏两张牌,腾讯还能活多久? | 畅言
- 重大改革:Python 语言将被加入高考科目,VB 惨被淘汰!
- Android热修复更改图标,Android手写热修复(一)--ClassLoader
- win10系统要求配置_Windows 10最低系统配置要求
- 初一到初三需要用计算机吗,初一到初三不注意这8点,就等着中考完后悔吧!...
- react18并发渲染