19CVPR 结果早就出来了,最近才读到的19年oral的去模糊工作。博主认真的搜了一下18年的CVPR,deblurring 相关的oral为zero,底层图像复原的oral工作也很少。因此,十分兴奋看到deblurring的oral工作。


问题


文章介绍了一种使用双目视觉实现去模糊的端到端基于深度学习的算法。所谓双目视觉,就是存在左视和右视两张图像。通过结合两张图像的信息,实现去模糊和过程。双目视觉在图像领域中十分常见,例如仿生机器人的两个摄像头,手机双摄,无人驾驶飞行器等等。(博主观点:对一个应用问题,如果有多帧图像,有更多的信息那就应该用。这点区别于学术研究)


Observation


针对一个这样的双目视觉的问题,作者提出了两个观测:


  1. 模糊程度和场景深度相关:如下图的第一行所示,距离成像探测器近的绿色框内,模糊的程度大,具体表现为局部块模糊的尺寸更大;为距离成像探测器较远的黄色框内,局部模糊程度更小。
  2. 左视和右视的模糊不同:对比下图的上下两行信息,在绿色框区域,模糊的方向和尺寸上存在一定的偏差。

在这里插入图片描述


Analysis


根据上面的两个观测,启发作者在实现双目视觉去模糊 的时候利用上述两个信息。在利用上述信息之前,先细致的分析这个observation。分别将两个observation定义为:depth-varying blur和view-varying blur.


Depth-varying blur


画出一个简单的模型,如图二所示。从Fig. (2)(a)中,我们可以得出结论,







Δ


X


/


Δ


P


=


f


/


z



\Delta X / \Delta P = f / z


ΔX/ΔP=f/z
(1)


根据上述公式,我们可以发现运动模糊




Δ


X



\Delta X


ΔX
是和深度




f



f


f
反相关的。简单验证了第一个observation。(为什么是简单,因为模糊程度虽然和深度相关,但是我们还是认为不绝对,比如一个距离你近的人和一个距离远的车,也许距离远的车模糊程度更高。因此前提还是前后两个目标的速度相似)


View-varying blur


第二个observation说的是两个视点的模糊程度是不一致的。作者从平移和旋转两个角度来说明。注意:平移是指物体的平移,旋转是指相机的旋转
如图二(b)所示目标平移时,当目标沿着深度方向移动时,可以得出如下结论







Δ



X


L



/


Δ



X


R



=





P


t



M







/





P


t



N







=


h


/


(


h


+


b


)



\Delta X _ { L } / \Delta X _ { R } = \overline { P _ { t } M } / \overline { P _ { t } N } = h / ( h + b )


ΔXL/ΔXR=PtM/PtN=h/(h+b)


那么说明两个视点的模糊分别为




Δ



X


L




\Delta X _ { L }


ΔXL





Δ



X


R




\Delta X _ { R }


ΔXR
。他们和视点和目标的位置有关,因此,两个视点中目标模糊的成像也是不相同的。
如图三(c)所示相机旋转时,






v



C


L




/



v



C


R




=





C


L



O







/





C


R



O








v _ { C _ { L } } / v _ { C _ { R } } = \overline { C _ { L } O } / \overline { C _ { R } O }


vCL/vCR=CLO/CRO

两个视点的线速度的方向和大小都不同,说明目标在成像面的模糊核方向和大小都不同。
图在这里插入图片描述


方法


为了解决双目视觉去模糊的问题,设计的方法就是要建模上述的两个观测。设计的网络结构如下图所示。
博主将网络结构分成了三块,去模糊,估计深度信息,和融合网络。
在这里插入图片描述


去模糊网络和深度估计网络


这两个网络结构类似,输入不同,功能不同。都是用U-NET搭建而成,中间引入了空洞ResBlock 和context module(其实就是ASSP,只是改了空洞卷积的参数,ASSP可见DeepLab原文)。(博主认为这是一些很tival和experimental的东西,我最关心的是如何建模上述的两个观测)
在这里插入图片描述


融合网络


融合网络就是要将上述提到的两个观测和去模糊问题实现有机的融合。因此融合的内容分为三个部分,一个是去模糊的特征:





F


L




F ^ { L }


FL
,另外两个分别是:深度信息和视点间的差异。下图以左视为例进行说明。
视点间的差异建模为:首先从左视和右视图像中学习一个gate mapping (门映射图像)





G


L




G ^ { L }


GL
,这是一个图像或者理解为特征,范围为0-1,用于和右视的特征





F


R




F ^ { R}


FR
点乘,把有利于左视的信息保留下来,其他的信息则从左视中找到。也就是





F


views


L



=



F


L







(


1






G


L



)



+



W


L




(



F


R



)







G


L




F _ { \text {views} } ^ { L } = F ^ { L } \odot \left( 1 - G ^ { L } \right) + W ^ { L } \left( F ^ { R } \right) \odot G ^ { L }


FviewsL=FL(1GL)+WL(FR)GL
所示的函数,这样获得了建模视点间差异信息和特征





F



v


i


e


w


s



L




F_{views} ^ { L }


FviewsL

深度信息建模为:把前面提取到的深度信息和深度估计网络的倒数第二层特征





F


D




F ^ { D }


FD
结合起来得到深度注意的特征





F



d


e


p


t


h



L




F_{depth} ^ { L }


FdepthL

上述三者结合就实现了同和网络。
在这里插入图片描述


实验结果


这里其实不是很明白只是比较了单目的图像去模糊算法,其实存在多目的图像去模糊方法,不知道为什么没有比较。具体实验可以间原文。
在这里插入图片描述
在这里插入图片描述


总结(博主总结)


  1. 作者针对双目去模糊的问题(相关工作很少)采用了统一的深度学习框架进行了实现,取得了较好的效果
  2. 作者对问题进行观测,分析,建模,实验。是当前浮躁深度学习(黑箱子)中不错的工作。