深度揭秘京东全景主图背后的技术

张开涛

2017-08-23

作者

黄志标:中国科学院大学硕士,京东AI与大数据部算法工程师。
擅长图像检索、深度学习领域。曾参与京东的上亿重图检测项目,目前主要负责京东全景主图、视频审核项目。

安山:山东大学机器人研究中心硕士,京东AI与大数据部资深算法工程师。
研究兴趣为大规模图像检索、计算机视觉。负责京东图像搜索引擎、知识产权保护、深度学习算法移动化。在计算机视觉领域获得2项发明专利授权,另有十余项专利申请。

据京东财报显示,京东集团第二季度净利润达9.765亿,年度活跃用户达2.583亿,订单完成量为5.912亿。扎实的用户基础显示了京东服务的优质。而技术便是支撑京东的服务品质不断提升的重要因素,全景主图技术就是其中一项。效果如下,相比以往仅展示3-5张静态图片,现在只需转动手机便可看到商品的360度视角信息,如此便更能让消费者选择到心仪的商品。
                      
                  
            
这种效果实现的整个过程包括拍摄商品视频素材、素材的自动化处理再到前端展示。而在拍摄了大量素材后,不可能采用人工来逐个处理,因此需要通过一种智能化方式来实现自动化处理。而处理的流程包括视频的分类,视频截帧,图片后处理,处理效果和效率直接影响用户体验。具体地,首先需要将视频分类为顺时针旋转、逆时针旋转以及不旋转类别,然后从视频中截取一定数量的图片,再对图片进行裁剪、合理安排播放顺序等等。

对视频的分类等处理过程中,由于视频素材种类千差万别、同种类素材较少,因此我们不采用广为使用、但需要大量数据训练的深度学习方法,我们采用的是光流算法,通过提取光流直方图特征,然后训练支持向量机分类器,对未知类别的样本进行分类,实践发现该方法效果较好,且应用广泛。下面具体介绍下光流法的历史发展、原理及应用。

光流法—-从图像分析运动的基本工具

光流场是指两幅图像之间像素点的运动速度场,也简称为光流,它是对物理世界中物体上各点实际运动速度的估计,因此计算光流场的问题就被称为光流估计问题,解决光流估计问题的方法统称为光流法。该方法1950年被提出来,至今仍蓬勃发展。

光流估计是通过二维平面空间的像素运动估计三维实体空间的运动,大部分情况下它是准确有效的。其实,人和其他一些视觉类动物也是通过类似光流估计的方法来“看清”世界的,比如,转动的电风扇没有发生逆转但有时我们却看到了风扇在逆转,这是因为投影到视网膜上的相邻两幅图像之间形成的光流场与实际运动方向相反了;自带近视眼的青蛙只能看到眼前运动的昆虫而看不到静止的昆虫。

发展历程

视觉对运动的感知有2种不同的解释,一种是与立体观测进行类比,另一种是视网膜上的光感受野对具有一定速度的光刺激的反应。前一种解释代表理论是quasi-stereoscopic理论,该理论派尝试通过2个步骤来解决视觉运动的感知问题,第一步是找出两幅图像各像素点之间的对应关系,第二步是从对应关系中计算出物体的结构。后一种解释是在假设物体是局部刚性的,通过计算出光流场来推断物体相对视网膜的运动以及三维物体结构。该两种思路在早期是各自发展、殊途同归,但是在后期的发展中,逐渐表现出相互借鉴、相互融合的趋势。

             
               

原理浅析

Horn & Schunck方法

1981年MIT的人工智能实验室Horn和Schunck提出了光流的变分模型,核心是2大约束。

1) 亮度恒常性。

图像上像素点的亮度是跟物体表面反射光多少成正比的,该约束假设了两幅图像上对应像素点的亮度变化为零。设像素点亮度为 E(x,y,t), 那么根据该假设有:

在运动过程中,像素点的位置是时间的函数,按链导法则展开,得到:




上图是一个体像素示意图,数字图像可表示为一个三维矩阵,离散量 i,j 为像素点的横纵坐标,k可以理解为相邻两幅图像的编号或同一个视频中相邻两帧编号。

2) 平滑性。

指的是相邻像素之间速度是渐进平滑的变化。之所以假设这个约束是为了排除物体遮挡情况,在遮挡区域的边界像素点的运动速度是突变的。描述平滑性大小的量是像素点的运动速度梯度值,如下:

在综合考虑所有像素点都满足上述2种约束后,光流估计问题被描述为一个全变差最优化问题,优化的目标函数为:


对该优化问题的求解过程比较复杂,在此略过。该方法具有里程碑性质,第一次将像素点的亮度与运动速度联系并建立了光流估计模型。数学形式优美,但计算量较大且约束太强,现实环境往往不满足假设条件。

改进方法

Horn & Schunck(HS)的方法在实际中会遇到遮挡、大量噪声、运动速度过快、照明发生变化、非刚性形变等难以解决的问题,但也为后续的光流估计奠定了基调,后续一系列方法都有形无形中考虑了上述2种约束。

1985年,拿到CMU哲学博士学位的Bruce D. Lucas在其研究图像配准的博士论文中明确提出了后来广为流行的两帧差分光流法,即Lucas-Kanade方法,其中Kanade是其导师的名字。该算法是在HS方法的基础上建立了n个二元线性方程组,然后通过最小二乘法求解方程组得到每个像素点的速度矢量,其代码在OpenCV中有实现。

在针对运动过快的问题中,诸多学者提出了由粗到精(coarse-to-fine)策略或金字塔方法, 尺度较大的图像上像素的位移超过了30个单位,但经过图像缩放后,位移就可以少于5个像素单位了,这其中必然丢失许多细节信息。 因此,先在粗粒度上计算光流场,然后以缩放前的图像作为指导,将光流场向上插值到同样大小,直到与原图尺寸相同。插值方法可以是线性插值、双线性插值和三线性插值, 最近几年的有EpicFlow和InterpoNet。

光流估计方法可以分为稀疏光流估计和稠密光流估计,其区别在于是否计算出图像上每个点的运动速度。稀疏光流估计中可以采用SIFT等特征描述子找出两幅图像之间的同一点,然后根据像素坐标算出运动速度,SIFT等特征描述子稳定性较好,但是由于其特征提取过程限制了图像大小至少是4X4 大小且在纹理全部相同或者弱纹理图像上效果较差。

在优化Horn & Schunck的目标函数时,由于亮度恒常性假设,若能找出前一幅图像上某像素点在当前图像上像素亮度和位置大小最接近的点,即可求解原问题。该查找过程是一个近似最近邻搜索过程,按照此思路进行改进的算法有PatchMatch。该思路的改进跟quasi-stereoscopic中“寻找像素点对应关系”是非常靠近的。

针对照明变化的问题,可以采用非线性预先滤波方法来降低照明变化的影响,如高斯平滑滤波、拉普拉斯滤波和边缘检测。值得注意的是,这些高阶滤波方法的效果常常跟数据集密切相关。

FlowNet方法

随着图像、视频数据的极速增长带来的源源不断的需求,以及CNN在特征提取、端到端训练及具有专门硬件支持的优势下,研究人员开始重新考虑之前被诟病为计算量大、难以实用的光流算法,并提出通过CNN来直接进行光流估计。最近2年CVPR上每年都有几篇直接以光流(optical flow)作为标题的论文,或者应用光流法进行目标检测、分割、运动估计的论文。

接下来,本文介绍一下2015年发表在ICCV的FlowNet,其通过输入两幅图像,通过CNN直接输出光流场。

先说FlowNet的网络结构,FLowNet的第一种结构称为FlowNetSimple或简称为FlowNetS。其结构分为CNN卷积部分和一个refinement部分,CNN卷积过程将2张3通道彩色图像堆叠为W X H X 6 的矩阵作为输入,输出的特征图为:

FLowNet的第二种结构称为 FlowNetCorr 或简称为 FlowNetC,其与FlowNetC的区别在于CNN卷积的前半部分FlowNetC是分别提取2幅彩色图像的中层特征,然后采用“correlation layer”对2个特征图进行相似度计算,进而得到相似度关系图,然后与一张图像的中层特征图拼接,FlowNetC后面的CNN卷积部分和refinement部分与FlowNetS相同。

FlowNet的refinement部分按照由粗到精的策略,以CNN卷积过程的中间层特征作为指导,把以上输出的特征图向上卷积(upconvolution)得到与W x H x 13的光流场。

FlowNet的训练过程是有监督的学习,训练集包括2张图像及其对应的光流场。但实际中往往是不知道光流场的,即ground truth的获取较困难,解决办法是使用传统的方法计算出光流并用来作为ground truth或者人工生成光流场和对应的图像。

该论文通过人工生成光流场及其对应的数据集Flying Chairs,实验表明:虽然该数据上与真实场景差别较大,但在此数据集上训练的FlowNet仍然可以在真实数据集上取得较好的结果。训练FLowNetS和FlowNetC的误差损失函数,可以是在refinement部分中分别用upconv5、upconv4、upconv3、upconv2的结果与CNN相应卷积层的L1误差以及光流场与真实光流场之间的L1误差采用加权求和方式得到最终的误差损失,然后采用反向传播算法,同时训练CNN卷积部分和refinement部分。

FlowNet的预测过程需要的只有prediction阶段的输出。对预测结果的评价方法可以是从视觉角度和量化角度以及运行时间这3个方面。其中可视化方法是通过将光流场中每个像素点的速度(u,v) 转化为三通道的彩色图像。其中一个方法是将计算每个像素的速度幅度以及像素方向 arctan(u/v) 映射到颜色圆盘上。如下左图是视频中的一帧图像及其对应的光流场可视化图,同一个部位颜色基本一致。其中可视化使用的孟塞尔颜色系统如下右图所示。


定量的评价方法有终点平均误差(average end-point error, AEPE),角度平均误差(average angular error, AAE)。

应用案例

视频中目标检测

直接利用光流法进行目标检测。通过光流法来进行目标检测的原理是基于目标与背景之间存在相对运动,而这种相对运动在光流场中表现出物体与背景的速度矢量方向和大小的不一致、物体内部的速度矢量方向和大小保持一致。

间接利用光流法。视频相对图像来说,数据量更大,对计算资源要求更多,但其相邻帧之间的信息冗余性和时间上下文信息,既能用来避免单帧图片检测中目标模糊、面积过小的问题,还能加速检测过程。以Jifeng Dai,MSRA发表在CVPR2017上的《Deep Feature Flow》(DFF)为例,简要介绍下光流法是如何用来加速视频检测的。


DFF 方法的思路是引入光流场计算函数,如SIFT FLOW,对关键帧和当前帧分别计算出其光流场和从关键帧到当前帧的尺度变化系数,然后结合输出的特征图,就可以计算出当前帧的特征图。DFF只需要对关键帧计算特征图,省略了所有非关键帧特征图计算时间,只要光流场计算函数F的时间比特征图计算时间少,那么就可以大大提高网络对视频逐帧处理的速度。

目标语义分割

光流估计和目标分割之间其实是可以相互联系的,发表在CVPR上的《Video Segmentation via Object Flow》一文就试图同时解决光流估计和目标分割问题。该方法(Object Flow)采用迭代优化的方法,每次迭代先利用光流信息和图割法进行目标分割,然后利用分割后的目标更新光流场,迭代整个过程直到算法收敛。

分割时,首先对目标定位,假设目标在相邻帧间移动不大的情况下,利用前一帧的分割掩膜和光流场,得到当前帧粗略的分割掩膜。对更新后的光流场的评估方法是利用该光流场将第t帧分割后的目标三线性插值变形到第t-1帧,然后计算变形的目标与第t-1帧中的目标像素重叠率,重叠率越高,效果越好。

图像合成

这里介绍一下光流法一个比较有趣的应用,《View Synthesis by Appearance Flow》,(AppFlow),该成果发表在ECCV2016。人擅长于在头脑中对看到的物体做旋转后的想象,AppFlow研究与人的这种能力等同的计算问题,称为“novel view synthesis”,其能根据输入图片中物体或场景的视角生成另一个视角的物体或场景,效果如下。

新视角图像合成有2类方法,分别是基于空间几何变换方法和基于参数模型学习的方法。但前一种方法在图像合成时会在物体中间产生“洞”,而后一种方法合成的图像又非常模糊。AppFlow结合上述两种方法的优点,采用参数学习的方法来近似物体的几何结构,尽量采用从原图复制像素的方法来避免模糊和保持清晰的纹理结构。

下图是AppFlow的网络结构:通过训练encoder-decoder模型来得到光流场,正是光流中包含有像素来源的信息使得直接复制像素变得可行。然后利用光流场和输入图像得到新视角的图像。在encoder阶段将输入的一张图像和视角变换信息编码到一个4096维的向量中,其中,视角变换是用一个独热编码的向量表示,向量长度为19,表示将 [-180°,+180°] 的视角每20度等分为19份。

输入一张图像合成新视角图像

如果要输入多张图像合成新图像,那么只要在输入单张图像的网络输出结果基础上再输出一个置信度,然后对两个网络输出结果进行加权求和就可得到最终图像

输入多张图像合成新视角图像

观点

光流法经历了近60年的发展,大致取得了3个阶段的阶梯式进步。第一个阶段发展较缓慢,第二个阶段得益于各种优化方法的提出而加快发展,第三个阶梯得益于深度学习的火热,且其发展仍在快速进行中。第三个阶段表现出训练数据集不足,尤其是针对遮挡、运动速度过快、照明变化等问题的ground truth难以得到,研究者纷纷提出新的数据集,但仍无法覆盖许多场景。光流法期待着从半监督式、无监督式方法中获得进一步的突破。

在实际应用中,以往光流法给人的印象是该方法计算时间较长、准确率不高,难以满足实际需要,大家都弃之不用。但最近8年光流法获得了突破,准确率大大提升,许多研究者都把光流法作为其算法的基本工具,甚至说自己的方法可以从更准确的光流法中获益;在时间效率上,也有研究者进行了各种加速的研究,也出现了在GPU上实现的版本。光流法值得图像处理、计算机视觉、虚拟现实等领域工作者的关注。

在实际应用问题中,会发现一个stat-of-the-art的算法并不意味着就能解决问题,有时还会出现内存不够、计算时间过长、没有训练数据集等问题。所以还是“实事求是,随机应变”为好。

京东AI与大数据部长期招聘资深算法工程师、架构师、前端/iOS/Android、产品经理等,欢迎投递简历到zhangkaitao@jd.com,坐标:北京-北辰世纪中心。

读者评论

相关博文

  • 社区使用反馈专区

    陈晓猛 2016-10-04

    尊敬的博文视点用户您好: 欢迎您访问本站,您在本站点访问过程中遇到任何问题,均可以在本页留言,我们会根据您的意见和建议,对网站进行不断的优化和改进,给您带来更好的访问体验! 同时,您被采纳的意见和建议,管理员也会赠送您相应的积分...

    陈晓猛 2016-10-04
    1094 174 0 3
  • 迎战“双12”!《Unity3D实战核心技术详解》独家预售开启!

    陈晓猛 2016-12-05

    时隔一周,让大家时刻挂念的《Unity3D实战核心技术详解》终于开放预售啦! 这本书不仅满足了很多年轻人的学习欲望,并且与实际开发相结合,能够解决工作中真实遇到的问题。预售期间优惠多多,实在不容错过! Unity 3D实战核心技术详解 ...

    陈晓猛 2016-12-05
    1210 34 0 1
  • 新书试读员征集

    陈晓猛 2016-12-01

    活动获奖名单公布 恭喜以下10位读者朋友获得本次试读员征集的名额,请私信 陈晓猛 将您的QQ号发给小编,以便加入读者VIP群,给您送出图书! 获奖名单 程续缘 悠悠的一杯茶 313150284@qq.com llaomao 落伍特青年 ...

    陈晓猛 2016-12-01
    393 12 0 0