来自 手机 2019-08-03 12:20 的文章

手机拍视频实时换背景继马卡龙玩图后Versa又出了

  现场的展示中,这个App能让手机拍摄的视频,产生电影绿幕一般的效果,实时从视频中去掉背景,只保留主角人物,并把背景换成用户设定好的特效。

  想要实时的进行视频处理,还能实现精细的“抠图”效果,无论对于算法还是算力来说,恐怕都不是一件容易的事。

  绿幕侠背后的公司,正是此前风靡一时的手机P图应用马卡龙玩图所属的AI公司Versa。

  Versa CTO赵维杰介绍说,绿幕侠背后用到的视频人景分离技术,就相当于把视频拆成一帧一帧,实现每一帧的语义分割。

  首先,必须保证对每一帧的语义分割处理时间低于30毫秒,时间一到,就要开始处理下一帧了,否则视频就会变卡;

  其次,因为是将语义分割应用在视频中,因此必须保证分割出来的精确度,一方面不能把边缘处理的太粗糙,一方面要保证每一帧内容的连续性,不能上一帧人物手里还有个包包,下一帧包包就被抠掉了,制造出一种“薛定谔的包包”状态;

  通过自研“概念网络”的优化,提升了当前帧的分割精确度,又将时间空间信息嵌入到更紧凑的维度上,降低backbone的复杂度,赵维杰他们花了半年多完成了绿幕侠算法的研究,将每一帧的处理时间降到30毫秒以下,模型也被压缩到了1M左右。

  Versa技术团队找了许多主流手机芯片运行这个模型,发现这些芯片跑出来效果都不够好。要么算力不够,导致卡顿,必须把模型压缩才能运行,但这样效果就会变差;要么功耗太高,发热太严重,用一会儿手机就卡了。

  直到他们尝试在荣耀9X的SoC麒麟810上运行模型,发现不仅算力和功耗达到了要求,而且还有了另外一个好处:I/O的设计更好,数据搬移效率高。

  “其实手机小模型运行所耗的时间很多不是在运算上的,而是耗在了数据搬运上”,赵维杰这样对量子位解释。

  当他们在麒麟810上测试手机小模型时,输入了1080P的高分辨率视频,跑出结果后惊奇的发现:

  麒麟810和GTX1070的运行结果在一个量级,手机上跑60ms的模型,在PC上(加上I/O)大概是20ms。

  为什么一个手机芯片能跑的跟GTX1070这种电脑GPU的运行结果相提并论?

  赵维杰的解释是,对视频小模型来说,桌面GPU虽然算力强,但是小模型根本用不上这么大的算力,反而视频数据显存搬移的I/O是瓶颈,时间都花在数据搬运上了。麒麟810的I/O设计比较出色,省了不少时间。另外,桌面GPU是32bit浮点,810是16bit浮点。GPU是通用芯片,NPU是专门用于神经网络计算,对算子可以特别优化。最终的总时间上跟手机上可比。

  因此,Versa也决定,这个新的App将在荣耀9X手机上首发,月底上线应用商店。

  一种思路是模型压缩。不过赵维杰觉得,模型从设计起就应当是一个小的东西,而不是从一个巨大的模型逐渐压缩到小,毕竟,模型总要拿出来用的,并不能只用在最顶尖的硬件上。

  “AI公司和硬件公司都在追求一个中间地带,AI公司希望能在现在的硬件上就跑更好的算法,硬件公司在追求越来越厉害的硬件平台,让越来越大的算法在体积小的移动的硬件上跑得起来。”赵维杰这样说。

  针对不同的平台,Versa也提供了不同的算法。比如此前已有的产品马卡龙玩图,赵维杰提到,需要在在最优秀的硬件上跑出最优秀的效果,在普通硬件商做出最大覆盖,最低端手机可以上云端跑,“提供差异化的算法,是任何一个AI公司追求的本质。”