论文阅读:Self-Supervised Video Defocus Deblurring with Atlas Learning

这是 2024 年发表在 ACM Siggraph 上的一篇文章

Self-Supervised Video Defocus Deblurring with Atlas Learning

Abstract

对焦不准的问题几乎在所有视频制作者的作品中都普遍存在,这会降低视频质量,并且常常导致高昂的时间成本(延误)以及需要重新拍摄。当前的自动对焦(AF)系统在面对现实场景和拍摄现场中常见的突发干扰因素时很脆弱,比如拍摄主体的移动或光线的变化。单张图像的散焦去模糊方法在应用于视频时在时间连贯性上表现不稳定,并且无法恢复那些因随时间变化的散焦模糊而被遮盖的细节。

在本文中,我们提出了一种端到端的解决方案,该方案能让用户在后期处理过程中纠正对焦不准的问题。我们的方法将散焦的视频生成并参数化为清晰的分层神经图谱,并将一致的对焦跟踪信息反向传播回视频帧中。我们引入了一种新颖的可微圆盘模糊层,以便更精确地模拟点扩散函数(PSF),同时结合了一个弥散圆(COC)图估计模块,该模块从当前的单张图像散焦去模糊(SIDD)网络中转移了相关知识。我们的处理流程能够在生成的图谱上直接实现连贯、清晰的视频重建,以及有效的拍摄主体对焦校正和跟踪。此外,通过采用我们的方法,我们从散焦视频中获得了与当前最先进的光流估计方法相当的效果。

  • 图 1 这是关于系统的视频散焦去模糊和编辑的内容。以对焦不准的视频作为输入(第一行),我们首先重建潜在的清晰视频(第二行),将其参数化为从噪声中重建的两个图谱。我们在 Adobe Photoshop 中编辑背景图谱,改变场景中的一些物体(蓝色箭头指示处)。这些简单的编辑以一致且时间上稳定的方式传播到整个视频中。最后,在合成过程中,我们修正物体跟踪并改变背景散景效果。这些编辑同样具有一致性和时间稳定性。我们在时间维度上截取一段视频数据(黄色虚线处),并在最后一列展示,以此来呈现运动质量。我们方法中唯一耗费资源的步骤是学习初始参数化;而编辑操作可以实时完成 。

Introduction

浅景深最初是由于早期电影制作的限制而出现的,比如感光度(ISO)有限。然而,导演们很快就利用了浅景深在叙事方面的潜力,以此来引导观众的注意力。因此,浅景深迅速成为营造电影质感画面的关键要素。如今,专业的跟焦员会精心规划拍摄工作,尤其是对于长镜头或 "一镜到底" 的拍摄,这些拍摄往往涉及大量的镜头移动和复杂的走位安排。对于一次成功的拍摄而言,保持对焦准确至关重要。

相反,业余内容创作者依赖相机的自动对焦(AF)功能。现代自动对焦系统已从传统的对比度检测自动对焦(CDAF)以及相位检测自动对焦(PDAF)发展为具备面部、眼睛和物体跟踪功能的更智能的系统。遗憾的是,在现实场景中,拍摄对象运动状态的突然变化、光线条件的改变,或者多个拍摄对象的同时出现,都很容易干扰自动对焦系统,从而导致拍摄的画面失焦。

技术上的缺陷和人为失误常常迫使视频制作者要么重新拍摄失焦的镜头,要么在无视对焦错误的情况下,接受质量较低的视频。在后期制作中修复失焦的镜头正逐渐成为一种很有前景的替代方案。我们的论文介绍了一套流程,其旨在从因失焦而失真的视频中重建清晰的内容,实现对焦编辑以修正拍摄对象的跟踪问题,通过我们所习得的图谱实现便捷的场景编辑,并输出额外的通道,以便在合成过程中实现复杂的效果。

在图 2 中,我们通过模拟一个包含三个空间点的视频来说明这项任务的复杂性:前景中有一个静止的绿色点,背景中有一个静止的蓝色点,还有一个动态的橙色点在三维空间中自由移动。每个静止点都有一个独特的散焦程度,这由其在场景中的深度决定。随着对焦距离随时间从前向后移动(浅蓝色矩形所示),每个静止点的散焦程度也会发生变化。在现实世界的视频拍摄场景中,相机的移动又增添了一层不确定性。这些复杂性给视频散焦去模糊带来了重大挑战,并且会影响其他视频处理任务,如目标跟踪或光流估计。

  • 图 2 空间和时间上变化的散焦模糊。随着视频拍摄的推进(从 t 1 t_1 t1到 t 4 t_4 t4),对焦距离从前向后移动(从 z 1 z_1 z1到 z 4 z_4 z4)。我们将每帧的焦平面表示为一个浅蓝色的矩形。绿色和蓝色的点是静止的,处于不同的空间位置和深度,而橙色的点在每一帧中沿着橙色曲线在三维空间中移动。

校正失焦是一个分两步的过程,首先要消除散焦模糊,这也被称为散焦去模糊,随后是散焦合成,即根据场景的深度应用散焦模糊效果。散焦合成是一个正向问题,过去已有针对图像和视频的相关探讨。另一方面,散焦去模糊是一个逆向问题,与散焦合成相比面临着不同的挑战。与单张图像的散焦去模糊(SIDD)不同,视频中的失焦校正需要着重保持时间上的一致性。这里的关键难点在于,由于场景和相机的移动,以及相机自动对焦功能可能产生的变化,所导致的随时间变化的散焦模糊。

受近期一些隐式视频表示方法的启发,我们应用分层图谱对视频进行参数化处理和去模糊,以实现良好的一致性和时间稳定性。最近,阿布奥莱姆等人(2021 年)基于 SYNTHIA 数据集中的清晰图像和深度图合成了一个数据集。然而,当应用于真实世界的视频时,在合成数据集上训练的方法往往会因领域差异而效果不佳。我们的自监督网络无需依赖如此庞大的数据集,可直接对每个单独的视频进行去模糊处理。

在这项工作中,我们做出了以下贡献:(1)我们提出了首个端到端的视频散焦去模糊方法,支持进行广泛的场景编辑,包括对焦校正和背景虚化编辑。(2)我们实现了一个镜头模糊 CUDA 层,其具有一种新颖的可微圆盘内核,能够模拟点扩散函数(PSF)真实的衰减边界(肥皂泡效应)。(3)我们采用迁移学习的方法引入了一个弥散圆(COC)图估计网络。这一策略在保持具有竞争力的性能的同时,构建了一个更轻量级的架构。(4)作为我们所提出流程的一个直接应用,我们表明可以对输出的前景和背景通道进行对焦校正和跟踪,我们所习得的图谱支持进行大量的编辑操作,并且我们证明了还可以从所习得的 UV 图中估计光流。

Method

为了实现一致的视频编辑,分层神经图谱将输入视频分解为一组二维分层图谱。通过将动态点的运动有效地映射到二维平面上,这种表示方法有效地避免了在我们的问题(图 2)中从物理层面解决相机与物体运动之间模糊性的需要。这种多层表示方法可以无缝地适用于我们所面临的区分静态点和动态点这一特定挑战,从而能够对它们分别进行处理。

此外,分层神经图谱能够借助现成的图像编辑工具实现直接且直观的编辑操作,并且这些编辑效果可以自然且一致地反馈到视频帧中。清晰区分的前景层、背景层和遮罩层使我们能够在后期制作中进行对焦跟踪,而且将它们组合到视频帧中既简便又快捷。

视频的高效表示、直观的编辑空间以及一致的编辑质量,使得分层神经图谱在清晰视频编辑方面表现出色。然而,当直接应用于视频散焦去模糊任务时,它并没有展现出强大的性能。我们将在 4.2 节中展示并比较原始分层神经图谱,以及它与我们的重新模糊模块相结合后的性能表现。

图 3 展示了我们训练流程的概览,该流程由四个主要子模块组成:(1)神经映射网络 Neural Mapping Network 使用三个多层感知器 M ( f , a , b ) \mathbb{M}_{(f,a,b)} M(f,a,b) ,分别将输入坐标转换为前景 UV 图、背景 UV 图和透明度图(第 3.1 节)。(2)图谱学习网络 Atlas Learning Network( A \mathbb{A} A)采用了深度图像先验的概念,并利用一个卷积神经网络从噪声中学习前景图谱和背景图谱(第 3.2 节)。(3)镜头模糊层 Lens Blur Layer( L \mathbb{L} L)根据估计的弥散圆(COC)图对潜在的清晰图像进行重新模糊处理(第 3.3 节)。(4)COC 图估计网络 COC Map Estimation Network( C \mathbb{C} C)从输入的散焦图像中估计每个像素的 COC 半径(第 3.4 节)。在接下来的各小节中,我们将对这些子模块分别进行详细解释。

  • 图 3 系统概述。我们的映射网络从输入坐标中学习前景 UV 图、背景 UV 图和透明度(alpha)图。与此同时,图谱网络从噪声图中生成清晰的前景图谱和背景图谱。我们根据 UV 图从图谱中对背景和前景进行采样,并在透明度图的引导下对得到的图层进行混合。随后,我们利用从 COC 图估计网络中得到的估计模糊尺度,对混合后的图像进行重新模糊处理。我们使用原始视频帧对这一过程进行自监督,用重新模糊后的输出对原始视频帧进行估计,并在此过程中学习清晰图像的先验信息。
Neural Mapping

遵循基于坐标的神经表示原理,分层神经图谱在坐标 p x , y , t ∈ R 3 p_{x,y,t} \in \mathbb{R}^3 px,y,t∈R3 处开始合成过程,其中 x x x 和 y y y 表示空间坐标, t t t 表示时间坐标(帧索引)。三个多层感知器,分别记为 M b : R 3 → R 2 M_b:\mathbb{R}^3 \to \mathbb{R}^2 Mb:R3→R2、 M f : R 3 → R 2 M_f:\mathbb{R}^3 \to \mathbb{R}^2 Mf:R3→R2和 M α : R 3 → R 1 M_{\alpha}:\mathbb{R}^3 \to \mathbb{R}^1 Mα:R3→R1,分别预测背景 UV 图 U V b ∈ R 2 UV_b \in \mathbb{R}^2 UVb∈R2、前景 UV 图 U V f ∈ R 2 UV_f \in \mathbb{R}^2 UVf∈R2以及透明度混合图 α ∈ R 1 \alpha \in \mathbb{R}^1 α∈R1。每个点p映射到 U V f p = M f ( p ) = ( u f p , v f p ) UV_{f}^{p} = M_f(p) = (u_{f}^{p}, v_{f}^{p}) UVfp=Mf(p)=(ufp,vfp)、 U V b p = M b ( p ) = ( u b p , v b p ) UV_{b}^{p} = M_b(p) = (u_{b}^{p}, v_{b}^{p}) UVbp=Mb(p)=(ubp,vbp) 以及 α p \alpha^p αp。在这一部分,我们采用了与原始分层神经图谱相同的架构。然而,我们发现直接应用他们的图谱估计网络会导致性能较差。受深度图像先验(DIP)的启发,我们在图谱学习网络中采用了一个卷积神经网络。

Atlas Learning

深度图像先验(DIP)利用深度卷积网络的结构来隐式捕捉有关自然图像统计的先验知识,并且已被证明特别适用于图像修复任务。一般来说,与未经专门设计的卷积神经网络结构相比,简单的多层感知器(MLP)结构在捕捉纹理和边缘等空间特征方面往往表现欠佳。因此,我们使用一个轻量级的卷积神经网络从噪声图中生成并表示我们的分层图谱图像。我们观察到,仅解码器的架构能有效地学习我们的图谱。我们在向上采样层中应用 pixel-shuffle 技术,以便更好地学习和保留高频细节。结果表明,与原始的基于多层感知器的图谱表示方法相比,性能有所提升。

图谱学习网络,记为 A \mathbb{A} A,将噪声图 ( Z f , Z b ) ∈ R C ′ × H ′ × W ′ (Z_f, Z_b) \in \mathbb{R}^{C'\times H'\times W'} (Zf,Zb)∈RC′×H′×W′作为输入,并对其进行上采样,以生成我们的前景和背景图谱图像 ( A f , A b ) ∈ R 3 × H × W (A_f, A_b) \in \mathbb{R}^{3\times H\times W} (Af,Ab)∈R3×H×W。请注意,图谱学习网络在前景和背景图谱生成过程中共享权重。对于一个特定的点p,我们使用获取到的 U V f p UV_{f}^{p} UVfp和 U V b p UV_{b}^{p} UVbp坐标,分别从 A f A_f Af和 A b A_b Ab中采样颜色。最后,我们使用学习得到的 α \alpha α值作为混合因子,将这两种颜色进行组合,从而得到潜在的清晰颜色 c ^ p sharp \hat{c}_{p}^{\text{sharp}} c^psharp。整个过程可以总结如下:

c ^ sharp p = α A f ( M f ( p ) ) + ( 1 − α ) A b ( M b ( p ) ) (1) \hat{c}_{\text{sharp}}^{\mathbf{p}} = \alpha A_f(\mathbb{M}_f(\mathbf{p})) + (1 - \alpha) A_b(\mathbb{M}_b(\mathbf{p})) \tag{1} c^sharpp=αAf(Mf(p))+(1−α)Ab(Mb(p))(1)

其中 A f = A ( Z f ) A_f = \mathbb{A}(Z_f) Af=A(Zf) 且 A b = A ( Z b ) A_b = \mathbb{A}(Z_b) Ab=A(Zb)。需要注意的是,在本文中我们使用一个前景层和一个背景层来呈现视频内容。然而,正如(卡斯滕等人 2021 年的研究)中指出的,还可以轻松添加更多的层,以适应更复杂的运动和场景。为了促使网络生成清晰的图像,我们引入了一个重新模糊模块来重现模糊图像,这样就可以使用原始输入视频帧作为自监督来优化网络。

Lens Blur Layer

为了能够对潜在的清晰图像进行重新模糊处理,我们开发了一个可微的圆盘核 CUDA 层,它在我们的重新模糊模块中支持点扩散函数(PSF)的连续半径。与高斯核相比,圆盘核被认为是对现实镜头模糊更准确的表示,但它在可微性方面存在挑战。传统的圆盘核通常以离散尺寸表示,这使得它们不适合精确表示连续的 PSF 半径。现有的使用圆盘核实现可微性的方法,通常依赖于如双曲正切(tanh)这样的函数(见布萨姆等人 2019 年的研究以及罗等人 2023 年的研究),或者像(格沃斯德克等人 2011 年的研究)中讨论的分段函数。这些方法主要侧重于控制点扩散函数的大小,并产生均匀的点扩散函数。然而,点扩散函数的实际形状是不均匀的,由于光学像差,其边缘有明显的衰减。阿布奥莱姆等人(2021 年)试图通过将巴特沃斯滤波器与不可微的圆盘核相结合来创建点扩散函数的衰减边界,结果得到的最终核仍然不可微。在本文中,我们提出了一个简单有效的解决方案 ------ 一个可微的圆盘核,它无需额外修改或复杂函数就能自然地捕捉到清晰的衰减边界。我们的可微圆盘核内的值 k k k 可以按如下方式计算。

k = e β d e β d − d , with d = r − x 2 + y 2 (2) k = \frac{e^{\beta d}}{e^{\beta d} - d}, \quad \text{with } d = r - \sqrt{x^{2} + y^{2}} \tag{2} k=eβd−deβd,with d=r−x2+y2 (2)

其中 d ∈ R d \in \mathbb{R} d∈R表示到圆盘边缘的距离, r ∈ R + r \in \mathbb{R}^+ r∈R+是圆盘的半径, x , y ∈ [ − ⌊ s 2 ⌋ − 1 , ⌊ s 2 ⌋ + 1 ] x,y \in [-\lfloor\frac{s}{2}\rfloor - 1, \lfloor\frac{s}{2}\rfloor + 1] x,y∈[−⌊2s⌋−1,⌊2s⌋+1],这里 s ∈ N s \in \mathbb{N} s∈N表示核的大小。我们使用 β ∈ R + \beta \in \mathbb{R}^+ β∈R+ 来控制衰减边界的厚度。需要注意的是, β \beta β 的值应大于 1 / e 1/e 1/e 以确保核为正值。在我们的镜头模糊 CUDA 层中,使用 β = 2 \beta = 2 β=2。我们采用了类似于(见古尔和沃尔夫 2019 年的研究)中的逐像素散射 - 求和卷积。通过我们的镜头模糊层,清晰图像可以被重新模糊为:

c ^ blur p = L ( c ^ sharp p , r p ) (3) \hat{c}{\text{blur}}^{\mathbf{p}} = \mathbb{L}(\hat{c}{\text{sharp}}^{\mathbf{p}}, \mathbf{r}^{\mathbf{p}}) \tag{3} c^blurp=L(c^sharpp,rp)(3)

为了简单高效,我们使用两层来构建估计的清晰图像。也可以选择使用多层,从后到前进行合成,以便更好地处理物体轮廓周围的遮挡区域。如图 4 所示,我们进行了一项对比分析,涉及我们的可微圆盘核、高斯核、不可微圆盘核,以及(格沃斯德克等人 2011 年的研究)和(布萨姆等人 2019 年的研究)中概述的方法。我们的圆盘核呈现出逼真的衰减边界,并且更接近真实的点扩散函数(PSF)。为了证明我们提出的圆盘核的优势,我们对一张清晰图像(真实清晰图像 GT sharp)进行重新模糊处理,并将结果与其他核进行比较。正如预期的那样,高斯核无法产生散景光斑,而不可微圆盘核以及(见格沃斯德克等人 2011 年的研究)和(见布萨姆等人 2019 年的研究)中的方法产生了相似的重新模糊结果。相比之下,我们的核重现了微妙的肥皂泡效果,与捕捉到的真实散景光斑(真实模糊图像 GT blur)非常相似。此外,我们在图 4 的最后两行分别展示了不同核半径r的效果以及参数 β \beta β的效果。

  • 图 4 我们的可微圆盘核。在前两行中,我们将其与高斯核、一个不可微的圆盘核,以及(格沃斯德克等人 2011 年研究中提出的方法)和(布萨姆等人 2019 年研究中提出的方法)进行比较。我们展示了真实的清晰图像和模糊图像(真实清晰图像 GT sharp 和真实模糊图像 GT blur),以及使用这些核重新模糊后的图像版本。在第三行中,我们改变了我们的可微圆盘核的半径 r r r,而在最后一行中,我们展示了由参数 β \beta β 控制的衰减效果。
COC Map Estimation

我们的镜头模糊 CUDA 层需要每个像素的弥散圆(COC)半径作为输入。通常情况下,会使用物理薄透镜模型从深度信息计算 COC,这在拍摄特定视频时依赖于相机特定参数,如光圈大小、焦距和对焦距离。获取深度信息和此类元数据会极大地限制我们方法的适用性。在我们的流程中,我们通过训练一个网络C来应对这一挑战,该网络可直接从每一帧以像素为单位估计 COC 半径 r p = C ( c ^ blur p ) r_p = \mathbb{C}(\hat{c}_{\text{blur}}^p) rp=C(c^blurp)。为此,我们采用迁移学习的概念,并借鉴现有散焦去模糊网络中编码的散焦知识。具体而言,我们训练了一个与(阮等人 2023 年的研究)结构类似的散焦图估计网络,因为其设计轻量且高效,符合我们的要求。我们固定其编码器的权重,该编码器在经过大型数据集训练后可编码丰富的散焦信息,然后专门训练修改后的解码器来估计散焦图,而非清晰图像。我们在 4.2 节中展示了这一策略的有效性,并且它在真实图像散焦估计中具有良好的泛化能力。为了监督网络训练,我们创建了一个大型散焦图估计数据集,其中包括渲染的散焦图像和相应的真实 COC 图。我们从 Blender 开源电影(见 Blender 2024)中选取了 22 部动画,并为每一帧渲染 25 种不同的散焦变化,涵盖 5 种不同的散焦级别(光圈大小)和 5 种对焦距离。我们总共准备了一个包含 27000 对散焦图和 COC 图的数据集,其中 COC 图是根据焦距、光圈数和深度图得到的。

Loss

在训练我们的网络时,我们采用了原始分层神经图谱方法中的一部分损失函数。这些函数包括 L r i g i d \mathcal{L}{rigid} Lrigid,它通过雅可比矩阵确保对图谱的刚性映射,以便于直观编辑; L l o w \mathcal{L}{low} Llow,它最小化视频中对应点之间的差异,以确保一致性;以及 L s p a r s i t y \mathcal{L}_{sparsity} Lsparsity,它可防止前景和背景图谱中出现冗余表示。我们将这些损失函数组合如下:

L = ∑ i = 1 n ( λ 1 L r e c o + λ 2 L f l o w + λ 3 L s p a r s i t y + λ 4 L r i g i d ) (4) \mathcal{L} = \sum_{i = 1}^{n} (\lambda_1 \mathcal{L}{reco} + \lambda_2 \mathcal{L}{flow} + \lambda_3 \mathcal{L}{sparsity} + \lambda_4 \mathcal{L}{rigid}) \tag{4} L=i=1∑n(λ1Lreco+λ2Lflow+λ3Lsparsity+λ4Lrigid)(4)

Experiments

我们使用分辨率为 512×288 的视频来评估我们的流程,每个视频大约包含 60 帧。训练过程在 NVIDIA Quadro RTX 8000 上进行,使用 Adam 优化器,学习率为 1 × 1 0 − 4 1\times10^{-4} 1×10−4,共进行 50000 次迭代。为了控制损失函数,我们将权重 λ 1 \lambda_1 λ1 到 λ 4 \lambda_4 λ4 分别设置为 0.3、1.5、100 和 0.5 。我们将图谱分辨率设置为 640×360,输入噪声的维度比图谱的维度小八倍。

按照原始分层神经图谱方法,我们使用 RAFT 对光流进行初步估计,对于第一帧,使用 SAM 生成掩码,对于后续帧则使用 XMem 生成掩码。训练时长在 6 到 8 小时之间。在训练 COC 图估计网络时,我们先以 3 × 1 0 − 4 3\times10^{-4} 3×10−4的学习率进行 300000 次迭代,然后在接下来的 300000 次迭代中线性衰减至 1 × 1 0 − 6 1\times10^{-6} 1×10−6 。

为了评估我们流程的有效性,我们对两种类型的视频进行了评估:渲染视频和真实视频。对于渲染视频,我们修改了从 Blender 开源电影中选取的四个片段(与我们的 COC 训练数据集不同),以模拟相机对焦不准的情况。对于真实视频,我们使用了五个片段,其中两个是用佳能 6D II 相机拍摄的,其余三个来自网络资源。

  • 图 5 在我们的半合成图像和 BLB 数据集上对弥散圆(COC)图估计的定性比较
相关推荐
轻松Ai享生活4 分钟前
使用 Python 将工作流程自动化
人工智能·python
神马行空24 分钟前
一文解读DeepSeek的安全风险、挑战与应对策略
网络·人工智能·安全·大模型·deepseek
KangkangLoveNLP30 分钟前
从概率到梯度:理解分类问题中交叉熵的优越性
人工智能·深度学习·算法·机器学习·分类·lstm·transformer
李昊哲小课36 分钟前
垃圾短信分类
人工智能·python·机器学习·自然语言处理·分类·数据挖掘·中文分词
机器之心39 分钟前
视频生成的测试时Scaling时刻!清华开源Video-T1,无需重新训练让性能飙升
人工智能
涡能增压发动积1 小时前
10分钟让你用SpringAI接入百度地图MCP服务
人工智能·后端
神马行空1 小时前
一文解读DeepSeek在工业制造领域的应用
人工智能·工业制造·行业应用·deepseek
于齐龙1 小时前
RAG核心概念
人工智能
测试工程师成长之路1 小时前
Playwright + MCP:用AI对话重新定义浏览器自动化,效率提升300%!
自动化测试·人工智能·playwright