4

如何不花钱,让人工智能帮你视频抠图?

 3 years ago
source link: https://zhuanlan.zhihu.com/p/373774006
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

如何不花钱,让人工智能帮你视频抠图?

南开大学 情报学博士


v2-b1fb8eff1826cd2d0c57a386fa57bb8f_720w.jpg

自从去年以来,因为线上教学和当UP主,我录制视频的机会显著增多了。

只不过,视频背景的处理一直是个痛点。

这是我最近录的一段视频开头部分。

v2-5528102fc52e842e5545ed49ab1ad75e_b.jpg

你如果一直在看我的视频节目,对这个背景兴许并不陌生。

我真的喜欢后面墙上不规则的黑板白班、脱落的墙皮和不知道什么颜料的笔画上去的线条吗?

当然不是。

但是我没有选择。家里地方小,东西堆得满。能利用的地方,只有这么大而已。

之前在视频教程里面,我给你介绍过人工智能应用 runwayml 把任何的视频背景都变成绿幕。

v2-d81029173f5a7c364589675e63a738ba_b.jpg

这样你就可以把背景换成你想要的样子。书房、图书馆、咖啡馆……甚至是太空。

但是这个方法有些问题。一来需要你手工进行微调(主要对于边缘未能正确识别的区域),二来价格比较高。

原先我试用的时候,每个月是15美金。刚刚打开网站又看了一眼——又涨价了。现在需要28美金/月,还是按年支付的优惠价格。

面对高价,我是不是得转回头,每次都把绿幕弄上呢?

不。明明有了新的技术,咱可不能这么容易服输。

好在,我发现了另一款同样基于人工智能的应用。

它可以变任意背景为绿幕效果,不需要你手动进行边缘色块调整,而且还免费

在官网主页上面,有一些实际效果的演示。

例如这一个。

v2-edc7dde2b3a1d2b621aad7d382419430_b.jpg

实话实说,我被震惊了。别说是人像边缘了,就连快速抖动散乱头发的抠图,都做得堪称完美。

应用的作者是一群来自华盛顿大学的研究者。

你要是对这个应用背后的技术细节感兴趣,他们的论文也可以全文阅读。

下面我们来说说这个抠图应用怎么用。

尽管作者在官网主页上提供了源代码和脚本样例,但是我觉得最好的使用方式,还是使用 Google Colab Notebook 的方式

打开之后,大概长这样。

这个样例 Colab Notebook 里包含的代码块,一共只有5个,很简洁。而且其中前两个还是可以忽略的。

因为第一行是安装gdown软件包依赖。而实际上,这个软件包是Google Colab 自带默认载入的。因此没有必要重新安装。

至于第二代码块的两行,则是只有你使用应用自带样例的时候才需要。

!gdown https://drive.google.com/uc?id=1tCEk8FE3WGrr49cdL8qMCqHptMCAtHRU -O /content/src.mp4 -q
!gdown https://drive.google.com/uc?id=1wAR3JjnTO60B_DUr7ruIJj0Z2pcIGkyP -O /content/bgr.png -q

你只需要在页面左侧的文件管理器中,点击按钮,上传自己的视频文件为 src.mp4 ,背景图片为 bgr.png,就可以了。

这里,我必须要说明一下,需要自己上传背景照片这一点,现在还让人感觉麻烦。不过我实际操作了一下,录像之后随手拍了一张背景图,也就是这个样子。倒也不费什么事。

看了背景之后,你大概也明白我为啥非想要把它去除了吧?

越过前面2个代码块,咱们直接依次执行后面的3个。如果你对 Google Colab 的操作不是很熟悉,也可以参考一下我的这篇《如何用 Google Colab 练 Python?》。

执行过程你需要稍微等待一会儿,电脑在云端积极地帮你进行运算处理。

当处理结束的时候,你会在 output 目录下面看到若干个文件。其中的 com.mp4 是我们需要的。

打开以后,是这个样子的。

v2-a6516da2ee8bef83cfc0555ce0917fbf_b.jpg

可以看到,前面人像在动,但是边缘处理非常妥帖。

在 output 目录下面,你还能看到几个其他的视频文件。它们都是输出过程中产生的副产品。

例如这个,是机器帮你扣出的前景动态轮廓。

v2-9f335289fe7b33628a67dcaf8c34c5b8_b.jpg

我是用一个完整视频的前10秒,进行的测试。现在测试成功了,我于是换上完整版视频。视频长度为10分钟左右,体积大约900MB。

这次的处理,就比较缓慢了。我等了一个多小时,才算弄好。不过其实这里是可以优化提速的,下文有介绍。

v2-c53f1ee68b8699b286f80a22de6c1dd5_b.jpg

Google Colab 运行在云端,不需要消耗本机计算资源。你不需要时刻把窗口开在前面,甚至可以中途盖上笔记本盖子休眠。只需要保证窗口离线时间不要太久就好。我的经验是半个小时左右开启看一次就好。如果已经离线,Colab 会自动尝试重新连接运行时(Runtime)。

我这里有几个小建议。

首先,你当然也可以直接把900多MB的视频上传到 Google Colab 的文件工作区。但是这个上传速度,会很慢。

我建议你先把视频文件存储到 Google Drive 里面,然后利用 gdown 命令,下载到 Colab 。从 Google Drive 到 Colab ,比直接上传,能快上十倍不止。

我这里仿照 Notebook 默认样例,写下来的语句是这样的。

!gdown https://drive.google.com/uc?id=1AKmOVf3h8o-BkATV6WZownknkDp6GZJH -O /content/bgr.png -q

第二个问题是背景图片。尽管我是在同一地点按下手机的拍照按钮,但是因为 iPhone 摄像的设定,录像的分辨率(1920x1080)和手机拍照的分辨率不一致,就会导致报错。

问题解决起来并不复杂。我找到了这样一个网站,叫做 aconverter 。它可以免费在线转换图片的格式和分辨率。

这里我设定转成 PNG 格式,并且把新的分辨率强制设定为 1920x1080,运行的时候就没有再次报错了。

第三,是我真正转换完毕,才发现的问题,那就是其实 Notebook 里面有提示。如果只需要转换结果,不需要那些副产品,则运行速度可以提升的。

你所需要做的,只是把最后一个代码块中的这一句

--output-type com fgr pha err ref
--output-type com

就可以了。

成功转换视频背景为绿幕之后,我在 unsplash 网站上面找到了一个不要版权的背景图片。

看着挺眼熟吧?没错,不少在线会议网站,都用了这个背景图。

最终合成的效果,是这个样子的。

怎么样,这背景看着,还挺像回事吧?

小结一下,这款新的人工智能抠图应用使你无需购买或使用绿幕,便可以利用免费的 Google Colab Notebook ,获得几乎完美的抠图效果。

你有没有更好的视频抠图方式呢?欢迎在留言区分享给大伙儿。咱们共同学习交流。

如果你觉得本文有用,请点赞。

如果本文可能对你的朋友有帮助,请转发给他们。

欢迎关注我的专栏,以便及时收到后续的更新内容。

延伸阅读

如何从零基础学最前沿的 Python 深度学习?

如何高效学Python?

如何用Python和深度神经网络识别图像?

如何训练和解释你的图片分类深度卷积模型?

如何不用绿幕,从视频中移除背景?

题图:Photo by KAL VISUALS on Unsplas


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK