视频会议玩消失?借助神器TensorFlow.js,200行代码教你“隐身”,GitHub标星3k+-阿里云开发者社区

开发者社区> -技术小助手-> 正文

视频会议玩消失?借助神器TensorFlow.js,200行代码教你“隐身”,GitHub标星3k+

简介: 视频会议玩消失?借助神器TensorFlow.js,200行代码教你“隐身”,GitHub标星3k+
+关注继续查看

疫情期间,许多公司都开启了远程办公,试想一下,在视频会议时,如果你的同事突然从镜头中消失,大家会有什么样的反应?

Google网站工程师Jason Mayes就做了这么一个项目,成功吓到了自己的盆友。通过TensorFlow.js制作了一个插件,可以让系统分离人物和背景,然后从场景中实时删除任何人,也就是说,可以从视频中让人“消失”。

从处理视频的效果来看,隐身的效果还不错。

当然,除了文章开头提到的“隐身“恶作剧,Jason也想到了不少有趣的应用场景。比如帮一个BBC在线连线的“翻车”视频做消除处理:从这两个小孩“嚣张”地走进来到被“无情”地拎走,都被Jason的小插件处理的一干二净

推特上的粉丝也表示,这确实很有趣,也很神奇。

目前,该项目在GitHub上的标星已超过三千。

项目地址:

https://github.com/jasonmayes/Real-Time-Person-Removal

借助神器TensorFlow.js,200行代码实现“隐身”

除了在GitHub放出项目,作者也在codepen.io网站上放出了所有的代码,其JS代码只有短短200多行。

文摘菌也仔细学习了一下,值得注意的是,这个项目本身没有训练新的模型,用的是TensorFlow.js现成的模型,然后通过算法对视频进行了处理,体现的是巧妙的工程思维。

首先,作者利用TensorFlow.js提供的身体分割模型识别出的人体,并定义一个人体区域。


同时,为了应对可能出现的假阴性,定义一个1.3的比例参数。

这个参数很重要,如果大了,背景的更新区域就会变小,视频的实时性也将受到影响;如果定义小了,那么在人物快速移动时,会出现身体边缘闪现的情况,这是一个工程上的取舍问题,感兴趣的同学可以动手修改试一下。

而后,对除人体区域之外的区域(即背景部分)进行实时更新,当在定义的人体区域外检测到人体(即人体出现了移动)时,即可对新的背景部分进行更新


完整代码链接如下,感兴趣的同学可以试试看👇

https://codepen.io/jasonmayes/


TensorFlow.js能做的远不止让你“消失”

作者整个项目的核心是TensorFlow.js提供的身体分割模型,TensorFlow.js可以说是网站工程师使用机器学习模型的一个神器!

TensorFlow.js是一个使用JavaScript进行机器学习开发的库,允许使用JavaScript进行机器学习模型的开发,并可以直接在浏览器或Node.js中使用机器学习模型。

而作者要让镜头中人物“消失”,首先就要找到人体的位置区域,这里使用的就是TensorFlow.js已经训练好的身体分割模型。

比如上面这个项目所用的身体分割模型MobileNet,其调用十分简单

当然,除了MobileNet这种小而快但是准确率不是特别高的模型,也可以选择ResNet这种大而慢但是准确率相对较高的模型。

并且除了身体分割模型,TensorFlow.js还提供图像分类、对象检测、身体分割、句子编码等多种现成的机器学习模型。当然,如果有需要,用户也可以进行重新训练自己的模型。

再或者,如果你想做一些有趣的事情放松一下,TensorFlow.js也绝对不会让你失望。

知乎网友Henry,同时也是一位阿里的高级技术专家,就用TensorFlow.js做了一个完全独立运行于浏览器环境下的AI程序,成功打爆了隐藏在Chrome中的彩蛋游戏“暴龙酷跑”(T-Rex Runner)。

第一次,AI在尝试3次后逐渐学会了如何控制暴龙避让障碍物。

第二次,在引入遗传算法后,仅尝试2次后AI即可学会躲避障碍物。

技术比创造力多一点点的15年老程序员

项目的作者的Jason Mayes在GitHub上的自我介绍是一位15年开发年龄的工程师,除了在GitHub留下足迹,他还给自己做了一个特别有意思的个人网站。

目前,Jason Mayes就职于谷歌“Creative Innovation”团队,专门帮助谷歌的客户开发定制的Web解决方案,所以Jason对HTML、CSS和JavaScript十分熟练,因此在GitHub上的其他项目也都是用这几种语言来实现。

比如他还写过一个小程序,用来在网站上无缝排列自己的“猫片”,看着他为每一张照片配的旁白,资深“猫奴”无疑了。

在网站里面,Jason形容自己是Web开发人员、程序员、技术顾问和分析师的混合型开发者,51%偏向技术,49%偏向创造

的确,要成为一名合格的开发者,除了技术过硬,对这个世界的好奇心也是做出好项目的重要源泉。



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
18节视频课+编程源码揭秘Python的高阶编程之函数
函数是组织好的、可重复使用的、用来实现单一或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。
1932 0
java面试题:写代码使得分别出现StackOverflowError和OutOfMemoryError
今天做了个笔试,这是其中的一道题目:写代码使得分别出现StackOverflowError和OutOfMemoryError。 1.StackOverflowError   堆栈溢出错误一般是递归调用嘛。
708 0
从json自动生成模型代码
http://www.cocoachina.com/ios/20150713/12480.html
704 0
Python告诉你:千万级网红李子柒的视频都在拍些什么?
导读:今天我们来聊聊把生活过成诗的李子柒。Python技术部分请看第二部分。公众号后台,回复关键字“李子柒”获取完整数据。
687 0
【整理】波罗密多老师python视频
作者:david_zhang@sh 【转载时请以超链接形式标明文章】链接:http://www.cnblogs.com/david-zhang-index/archive/2012/08/07/2627213.
617 0
视频点播开发者实战:视频水印动态替换
在某些特定场景,不同的视频需要压制不同的水印信息,例如:短视频需要压制不同用户的昵称等,以表示不同视频版权属于不同的上传用户。
2639 0
1457
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载