好久没写知乎了,现在音频集群被我弄的差不多了。
给自己一个任务,开始研究视频集群中的一些功能,实现美颜的方法其实有很多,基础的美颜算法其实网上有很多,只要不涉及到部位大小的拉伸和替换,只是换肤还是不难的。
腾讯会议和Zoom都有一个功能,就是虚拟背景。
实现效果类似下图:
可以让用户选择替换的自己想要背景,除去原始背景的画面。
主动接下了这个需求,其实我个人也对此挺有兴趣的。
这里的技术实现的核心,就是如何识别出在摄像头前面的人。
然后把人物扣取出来,再合并到一个虚拟背景中去。
说的容易,核心是怎么扣出人像?大家可以知道,在拍电影的时候,很多人可以在需要处理的画面中,添加绿幕(Green screen),用于工具中的抠图方便,但是现实中,我们的背景非常复杂,在实际使用中,不可能必须让用户去找一个绿幕。
那么怎么办呢?其实思路大家都是一样的,就是接触机器学习,通过对大量图形的训练,让程序自己可以识别出人型边框。
这里首推tensorflow。
但是这货有一个毛病,虽说它声称是可以跨平台的,而且按照官方文档有Windows安装说明,但是实际上搞得我好几天,一直有一个错误无法突破。在github上发起issue去问询,发现早就有好多人问过了,就是对windows的支持不足引起的,至今没什么好的办法。
于是在几天的尝试和毫无进展后,果断放弃。选择使用nodejs架设tensorflow。绕过跨平台的障碍!
虽然你可以用tensorflow做一个图像拟合的过程,但是费时费力,其实在这方面,谷歌早给你做好了,就是bodypix(bodypix简直就是一个神话!谷歌的贴心服务几乎把所有常用物品和人物模型识别都给你搞好了)。
客户端呢?借助opencv捕获摄像头进行图像的处理和合并。
实现过程思路如下: