原作 Valentin Bazarevsky & Andrei Tkachenka
Root 编译自 Google Research Blog
量子位 报道 | 公众号 QbitAI
大场面的科幻动作片,拍摄过程肯定离不开绿幕。
制作过程更加磨人。
抠绿+后期要做到完美(空间位置关系、光影关系),不仅要求细心,还得堆大量时间。
为了让影视制作简单点,谷歌研发出了可以在手机端就实时抠背景的工具(暂时没名儿)。
这个实时抠背景的工具目前只出到Beta版,只在YouTube移动端上有。
谷歌小哥哥戏精附体(´• ᵕ •`)*
这个技术,是用CNN(卷积神经网络)实现的。
这个神经网络框架,专为移动端设计。所以,在构建和训练的过程中,谷歌给自己定了一些原则:
- 移动端的解决方案一定要足够轻量,跑起来至少要比现有的最厉害的抠图模型快个十倍,要30倍就更理想了;
- 为了最好的实时呈现效果,这个模型出的片必须达到30FPS(帧/秒)。
这个抠背景的模型,帧数的处理得很讲究。
帧数不能太多,不然费算力,也无法及时出图;但也不能太少,否则看起来卡顿。
数据集
为了训练这个模型,谷歌标注了成千上万个图像。
前景标出头发、眉毛、皮肤、眼镜、鼻孔、嘴唇等。
神经网络的输入
谷歌的分离模型,是通过RGB通道计算出视频源每帧的前景。
关键抠出来的前景前后两帧之间要连贯。
现在的方法是用LSTM和GRU,对算力要求太高了,要用在移动端实时出片上不太现实。
LSTM,长短期记忆算法,是一种时间递归神经网络。GRU,门控循环单元。
LSTM搭GRU,可以通过门控机制使循环神经网络,做到记忆过去的信息,同时还能选择性地忘记一些不重要的信息而对长时间跨度的信息的前后关系进行建模。
谷歌想到的解决办法是,把上一帧已经算出来的蒙版(挡住背景用的)当作下一帧的第四个通道的信息。这样,就能节省算力,拿到的片子视觉上还满足连贯介个要求。
训练流程:原始帧(左);被分离成三个通道加上一帧的蒙版通道(中);根据这四个通道信息预测出这一帧的蒙
视频里抠背景,如果镜头里前景物体剧变,比方说突然多了个人,前后帧的去背景效果就不连续了。
为了避免这个问题,保持视频的流畅性,谷歌稍微改了一下标注的规则:
- 训练模型先空杯(不把上一帧的蒙版当成已知的信息),判断出新闯进来的物体;
- 然后定义新进入物体以外的背景蒙版,小改动的话就调整上帧蒙版,大改动的话就抛弃上帧蒙版;
- 对当前帧做羽化处理,优化抠图后的毛边,模仿镜头在快速移动或旋转时候的情境。
小姐姐在试实时的抠图效果
经过调整,谷歌训练的模型表现炒鸡好,在iPhone7上能实时出100多FPS的片,谷歌的Pixel2出40多FPS的高清片。
拿YouTube上stories频道上的片试了试,抠背景效果都很流畅。抠图效果也很棒棒,在验证数据集上实现了94.8%的IOU(交叠率,在这里就是抠背景效果贴不贴合)。
谷歌短期内想实现的目标是,用YouTube上stories频道上的片子来测试优化这个抠背景技术。最后能成熟地用于未来的AR服务上。
最后,附编译来源,
https://research.googleblog.com/2018/03/mobile-real-time-video-segmentation.html
“