APP下载

基于生成对抗网络的极坐标域自监督径向畸变校正算法

2022-02-03赵珂瑶林春雨

北京交通大学学报 2022年5期
关键词:鱼眼光流极坐标

薛 松 ,赵珂瑶 ,林春雨

(1.中车青岛四方车辆研究所有限公司,山东 青岛 266000;2.北京交通大学 信息科学研究所,北京 100044)

鱼眼相机由于其大视场的特点被广泛应用于自动驾驶[1]、全向监控[2]、虚拟现实[3]等领域.然而,鱼眼相机也给图像带来了严重的径向畸变.由于非线性投影严重破坏了物体的原始几何分布,因此对鱼眼图像进行径向畸变校正至关重要.

传统的鱼眼图像校正方法[4-6]严重依赖手工特征的检测,并对不同的鱼眼相机使用不同的校正算法.这一局限性使得该方法无法广泛应用于各种场景和各种鱼眼相机.

随着近年来深度学习的发展,基于卷积神经网络的图像畸变校正方法已显示出良好的效果.Rong 等[7]首次提出了利用卷积神经网络估计鱼眼图像畸变参数的方法.Yin 等[8]在语义分割图的指导下预测畸变参数,对鱼眼图像进行校正.Xue 等[9]使用边缘估计网络提取输入图像中的畸变线,专注于将弯曲的弧线转换为直线.Li 等[10]对鱼眼图像和无畸变图像之间的光流进行回归,进而实现畸变校正.这些方法和大多数现有的基于学习的图像校正方法都需要标签进行监督,如畸变参数、分割图、线段、真值光流、配对的无畸变图像等.然而,真实鱼眼镜头拍摄的照片是没有对应标签的,在为真实世界的应用训练深度学习模型时,上述的要求可能并不实际.此外,所有这些工作都假设只有一种鱼眼畸变模型,然而,在现实生活场景中,可能没有关于鱼眼畸变图像模型的先验知识.使用单一相机模型进行图像畸变校正可能是不够的.

为了克服上述问题,本文作者提出了一个基于生成对抗网络的极坐标自监督深度学习框架.网络在训练过程中不需要畸变参数、对应的无失真图像等进行监督.通过利用极坐标图像畸变大小水平一致性和极坐标图像内部畸变平滑性,预测极坐标畸变图像的一维光流,实现单幅图像的自监督鱼眼校正.通过在自监督径向畸变校正网络中引入自注意力模块,得到全局依赖关系,有利于更准确地预测极坐标域下畸变图像和校正图像之间的一维光流.由于不需要预测畸变参数,同时使用多项式模型和除法模型合成大范围的畸变数据集,使模型获得较好的泛化能力.实验结果表明,本文方法在视觉外观和客观指标方面均优于对比的自监督和传统方法.

1 算法介绍

1.1 方法流程概述

整体网络结构如图1 所示.首先将畸变图像由直角坐标域转换到极坐标域,然后竖直对半切成两张图像,分别输入到自监督网络中.使用自监督畸变校正网络从极坐标图像中提取特征,采用矩形最大池化以保证行数不变,结合自注意力机制,最后为每一行学习到一个对应光流值.由于输入的两张图像是原始畸变图像的一半,它们每一行的畸变大小是相同的,因此约束预测的光流值大小相同.另外,利用预测到的光流对原始畸变图像进行warp 得到校正后的结果,同理约束得到的校正图像应该是相同的.然后将原始畸变图像、校正后的图像以及非配对的无畸变图像分别输入判别器中,用来判别校正图像的真伪和是否含畸变.

图1 本文提出的网络结构Fig.1 Architecture of the proposed network

1.2 网络结构

由径向畸变的对称性可知,极坐标畸变图像每一行的畸变大小相同,对极坐标图像而不是直角坐标图像预测光流更为合理[11].因此在生成器方面,本文设计了一个基于VGG 网络[12]的自监督畸变校正网络,用于预测极坐标畸变图像的一维光流.

图像由直角坐标域转换到极坐标域过程中,假设点(x,y)位于直角坐标系中,点(ρ,θ)位于极坐标系中.首先,选择光学中心O=(x0,y0)作为极点,也就是坐标原点,以与O点竖直的Q点为起点,逆时针建立一个极坐标系,坐标变换关系可以表示为

式中:ρ表示像素到光心的距离;θ是对应的角度.纵轴表示像素点,横轴表示各像素点对应的角度.直角坐标中以原点为中心的圆环线,在极坐标中被映射为一条横线.因此,极坐标畸变图像每条横线上的像素失真程度是一样的.每一行只需要预测一个畸变大小值.使用卷积核从输入图像中提取畸变特征.卷积提取特征后,网络使用1×2 的矩形最大池化Or,而不是经典的2×2 正方形最大池化Os.最大池化的公式如下

式中:X表示每个池化区域内的神经元,下标表示坐标.遵循极坐标图像中的畸变分布,1×2 的矩形最大池化Or操作可以使行数保持不变,从而为每一行预测一个光流值.然后连接四个膨胀卷积-卷积-池化操作,其中使用倍率为2 的膨胀卷积来扩大感受野,在后两个膨胀卷积-卷积-池化结构中增加自注意力模块,以获取图像的全局特征.

其中图2 展示了自注意力的基本结构,从最左侧的特征图x出发,使用f(x)=Wfx,g(x)=Wgx获得两个特征空间以计算注意力.

图2 自注意力模块的基本结构Fig.2 Architecture of self-attention module

假设输入特征图x大小为B×C×W×H,Wf先通过1×1 的卷积输出B××W×H的特征,然后改变特征的维度,对单张特征图而言,就是将W×H拉直融合到一起,变为1×(W×H)大小;对批量大小来说,输出变成B×C/8×(W×H).通过对矩阵进行转置,使矩阵的行数变为特征图的像素数目N,而列的数目变为通道数目C.这样,矩阵的尺寸就是N×C.这个矩阵中的每一行表示一个像素位置上全部通道的数值,而每个列表示某通道中的全部像素数值.

除了取消转置操作外,Wg操作是相似的.所得的矩阵行数是通道数C,列是像素数N,矩阵的尺寸为C×N.矩阵中每行表示一个通道内的全部像素值,每列表示在一个像素位置上全部通道的值.

将得到的矩阵相乘,即:sij=f(xi)Tg(xj).如图3 所示,已知f(x)T维度是N×C,g(x)的维度是C×N,因此s的维度是N×N.

图3 f(x)T与g(x)相乘Fig.3 Product of f(x)T and g(x)

s是自注意力的核心,其中第i行第j列的元素,是由f(x)T第i行,和g(x)第j列向量点乘而来.而f(x)T第中第i行代表特征图上第i个像素位置上所有通道的值,即第i个像素位置的全部信息.而g(x)中第j列代表特征图上第j个像素位置上的所有通道值,即第j个像素位置的全部信息.这两个相乘,就是第j个像素对第i个像素的影响,由此可以建立全局上下文任意两个元素的依赖关系.

然后将s进行softmax 归一化

归一化后的矩阵每一行的和为1.由于s中第i行元素表示了特征图上各个点的像素对第i个像素的影响,这个影响可以理解为权重,所以它们的相加应为1,故把它们按照行进行归一化.得到的注意力图的尺寸也是N×N.

同时,h(x)=Whx,Wh同样对特征图做卷积映射,改变特征的维度,输入为B×C×W×H,输出为B×C×N,其中C为通道数,N为特征图的像素数.

再把h(x)矩阵与注意力图的转置相乘,如图4所示,得到输出的自注意力特征图为

图4 h(x)与注意力图的转置相乘Fig.4 Product of h(x) and the transpose of the attention map

对注意力图进行转置,是由于注意力图中每行之和是1,代表权重,需要转置后变为每列的总和是1,施加在h(x)的行上,作为该行的加权平均.h(x)中第i行表示第i个通道的全部像素值,注意力图中第j列表示所有像素对第j个像素的影响.

这样,自注意力特征图O中第i行包含了输出的第i个通道的全部像素,第j列表示所有像素中的第j个像素,第i行第j列的元素代表经过注意力图加权后的第i个通道的第j个像素的像素值.再通过v运算将O还原成B×C×W×H的结构.

最后,做一个类似残差的运算得出最终的输出值:yi=γoi+xi.其中,γ表示整体施加了注意力图之后的特征图的权重,并且通过反向传播进行更新.x表示输入的特征图.

在γ初始值为0 的情况下,自注意力模块将原特征图直接输出.在学习过程中,此模块逐步学会了向原特征图添加权重的属性,并在特征图中任意两个点之间建立全局依赖性.通过这种方法,可以对任意两个像素的依赖性进行学习,并获得全局特征.

最后使用两个全连接层以输出预测的一维光流.使用预测的光流对原始畸变图像进行warp 双线性插值操作,得到校正后的图像.

在得到校正图像后,需要输入判别器中进行真伪和是否含畸变的判别,因此判别器会有两个输出.网络结构如图1 所示,图像输入判别器网络中会先经过一个共享模块.共享模块由一个卷积-激活层和三个卷积-归一化-激活层组成.在共享层后,判断图像真伪的分支由卷积-归一化-激活操作和卷积操作构成,将输入映射成一个实数,代表输入图像为真的概率.

而判断是否含有畸变的分支则参考了Patch-GAN[13]的判别器,使用两个卷积-归一化-激活-自注意力和卷积操作将输入图像映射为矩阵.而结果矩阵实际上就是卷积层输出的特征图,通过它可以追溯到原图上的某个点,从而判断出该点对最后的输出有多大的影响.这样可以让模型更加注意图像的细节,以及每个部分是否存在畸变.该矩阵中的每个数值都表示了每一块包含畸变的可能性,对该概率进行平均,即得到最终输出.

1.3 自监督机制

由于自监督在训练过程中不需要任何标签数据如畸变参数、真实光流或配对的无畸变图像等,因此本文引入了两个独特的性质,即极坐标图像畸变大小水平一致性和极坐标图像内部畸变平滑性,从而实现单幅图像的自监督鱼眼校正.

由于鱼眼图像畸变是径向对称的,转换到极坐标下的畸变图像每一行的畸变大小是相同的,本文称之为极坐标畸变大小水平一致性.因此将极坐标切分成的两张图像x1、x2的每一行的畸变大小也是相同的.网络对两张图像分别预测得到的一维光流应该保持一致,即:

使用两张图像预测得到的光流对原始畸变图像做warp 操作,得到的校正图像也应该具有不变性,因此进一步计算了以下损失

上述极坐标畸变大小水平一致性利用自监督恢复一维光流和输出校正图像,而不需要任何标签数据.同时,本文也利用鱼眼图像内在属性即畸变平滑性,加强自监督学习的约束.由于极坐标鱼眼图像竖直方向的相邻像素畸变大小的差异较小,即光流的差异较小,可以对光流内部计算损失

1.4 损失函数

由1.3 自监督机制可知,生成器的损失函数可总结为

式中:Ls1为图像x1预测的光流的平滑损失;Ls2为图像x2预测的光流的平滑损失.

对于判别器的输入畸变图像x1,校正图像G(x1),非配对的无畸变图像y1,判别器的损失函数为

式中:D(·)1表示判别器对输入图像的真假判别结果;D(·)2表示判别器对输入图像是否含有畸变的判别结果.判别器使用MSE 损失判别真伪,将校正图像G(x1)判别为假,将非配对的无畸变图像y1判别为真.判别器使用BCEwithlogits 损失判别是否存在畸变,将畸变图像x和校正图像G(x1)判别为含有畸变,而将非配对的无畸变图像y1判别为无畸变.

同理,对于判别器的输入畸变图像x2,校正图像G(x2),非配对的无畸变图像y2,判别器的损失函数为

因此判别器的损失函数可总结为

2 鱼眼相机模型

为了训练本文提出的极坐标域自监督鱼眼图像校正网络,建立了一个大规模的畸变数据集.多项式模型和除法模型都是常用的用于拟合径向畸变的鱼眼畸变模型.

假设原始图像中一个点的坐标为(xu,yu),而鱼眼图像中相应点的坐标为(xd,yd).这种对应关系可以表示为

式中:Dx、Dy分别是x和y方向的失真偏移.

在多项式模型中,透视图像和鱼眼畸变图像之间的变换关系可以表示为

式中:n是多项式系数的数量,一般取为4[8-9];rd与光心有关,即畸变点(xd,yd)与畸变图像光心的欧几里得距离.鱼眼图像的光心表示为(xo,yo),则=(xd-xo)2+(yd-yo)2.

而除法模型将畸变关系表示为

式中:rd表示畸变点(xd,yd)与畸变图像中心的欧几里得距离.由于除法模型使用单参数即可描述大多数鱼眼相机[14-15],所以当鱼眼图像的畸变中心在(x0,y0)时,可以将单参数除法模型写出以下形式

由于先前工作都假设只有一种鱼眼畸变模型,然而,在现实生活场景中,使用单一相机模型进行图像畸变校正可能是不够的.因此,本文同时使用多项式模型和除法模型,生成一个大范围的径向失真图像数据集,使网络学习更加多样化.

3 实验结果与分析

3.1 实验设置

本文使用MS-COCO 数据集[16]生成包含各种场景的256×256 大小的径向畸变图像数据集,数据集由30 000 个训练图像和3 000 个测试图像组成,其中一半图像使用多项式模型进行拟合,另一半使用除法模型进行拟合.由于本方法使用自监督机制,因此不需要对应的真值数据集.

在实验中,对式(8)中的参数进行赋值:λ1=2,λ2=1,λ3=2.网络使用Adam 优化器[17],批量大小为4.由于GAN 的训练中存在容易模式崩塌的问题,生成器的训练效果远不如判别器.这是因为判别器训练得快,短时间内拥有识别能力,让生成器产生的图像和真实图像的差距越来越大.因此,传统的判别器正则化也是用来减缓判别器的学习速度.

由于判别器加上了正则化,所以整个GAN 的训练速度都变得缓慢.判别器更新许多次,生成器才能更新一次.针对这种情况,在判别器和生成器中使用不同的学习速率,从而使判别器与生成器的学习保持同步.本文将判别器的学习率设置为0.000 4,生成器学习率设置为0.000 1.

3.2 对比实验结果与分析

3.2.1 定量结果对比

在对比实验中,除了与畸变校正任务中的自监督算法FEGAN[18]比较之外,本文也使用Cycle-GAN[19]这个无监督模型在畸变校正任务上进行实验,并且对比了传统方法中单参数校正算法[4]的效果.本文使用峰值信噪比(Peak Signal to Noise Ratio,PSNR)和结构相似度指数(Structural Similarity Index,SSIM)对校正结果进行客观对比.在表1 中,展示了多项式模型和除法模型合成的测试数据集的校正结果的峰值信噪比和结构相似度指数.Cycle-GAN[19]最先是被提出应用于风格迁移任务的无监督模型,使用循环一致性损失减少生成图像和目标图像之间的差异.虽然有研究表明CycleGAN[19]可拓展适用于其它图像任务[20-21],但是在畸变校正任务上,CycleGAN 很难从非配对的畸变和无畸变图像中同时学习纹理和结构的变化,因此PSNR 和SSIM 的结果较低.而FEGAN[18]利用旋转一致性实现自监督,预测二维光流以校正图像,但是准确预测直角坐标中二维光流的大小和方向是较困难的.单参数校正算法OnePara[4]假设并使用单参数畸变模型进行校正,很难预测准确的非线性模型参数.而本文方法使用极坐标下的自监督学习策略,在所有指标上都表现得最好.

表1 不同方法的定量评价Tab.1 Quantitative evaluation of different methods

此外,利用Harris 算法[22]将整体测试数据集按照检测到的特征点数量分为三类,以衡量各种方法在不同复杂程度场景中的表现.如表2 所示,N是每张图像检测到的特征点数量,N的大小代表了图像场景的复杂程度.并且N的值越大,畸变图像越复杂,每种方法的处理性能也会随之有所下降.由于本文方法使用多项式模型和除法模型共同合成的大范围畸变数据集进行训练,所以对于不同复杂程度的测试图像,本方法的校正结果在PSNR 和SSIM上都取得了最佳性能,证明了本文方法的优越性.

表2 对不同复杂程度图像的定量评价Tab.2 Quantitative comparison on different image complexity

3.2.2 视觉效果对比

除了定量结果,本节还对各方法的视觉效果进行了对比.图5 和图6 分别是在多项式模型和除法模型合成的测试数据集上的对比结果.CycleGAN[19]很难单纯依靠非配对的畸变和无畸变图像学到畸变校正,校正效果很微小,校正后的图像仍存在明显的径向畸变.FEGAN[18]利用旋转一致性自监督学习二维光流,由于二维光流需要预测x和y两个方向的光流大小,校正结果边缘混乱.而传统单参数校正算法OnePara[4]需要手动设置调整canny 阈值,畸变参数范围,最大边缘等,因此有时校正效果也不理想.本文方法的校正结果在对比之下是表现最好的.

图5 在多项式模型数据集上的视觉效果对比Fig.5 Visual comparison on polynomial model dataset

图6 在除法模型数据集上的视觉效果对比Fig.6 Visual comparison on the division model dataset

除了在合成鱼眼数据集上对比之外,本节也在真实鱼眼数据集上进行了对比测试,结果如图7所示.虽然合成鱼眼数据集和真实鱼眼数据集仍有一定的差别,但本方法在真实鱼眼数据集上的校正效果也达到最优,证明了本文方案的泛化能力.

图7 在真实鱼眼图像上的对比结果Fig.7 Comparisons on real distorted image

3.3 消融实验结果与分析

本节进行消融实验来验证提出的自监督学习策略的有效性.如表3 所示,本节在多项式模型测试集上去除了网络的自注意力模块进行实验,并且分别去掉损失函数中的Lf、Lg、Ls进行了对比.表格结果证明了网络损失函数中的每一个都是必不可少的,并且自注意力模块也可以帮助得到特征图中任意两个位置的全局依赖关系,进一步帮助预测一维光流,并且提升校正效果.在多项式模型测试集上的主观对比结果显示在图8 中,可以直观地观察到缺失任一部分都会对校正效果造成影响,进而证明了本文提出的自监督架构的有效性.

图8 消融实验的对比结果Fig.8 Comparison results of ablation experiments

表3 消融实验的定量评价Tab.3 Ablation study to evaluate the output image quality

4 结论

1)提出了一种基于生成对抗网络的极坐标域自监督学习模型,用于单幅鱼眼图像径向畸变校正.提出的校正算法主要利用极坐标图像畸变大小水平一致性和极坐标图像内部畸变平滑性,预测极坐标畸变图像的一维光流.

2)在训练过程中,只使用非配对的图像,不需要任何畸变参数、真值光流或配对的无失真图像等标签进行监督.

3)实验证明,本工作在合成数据集和真实数据集上的主观、客观结果都优于对比方法.因此,该模型的有效性和泛化性得到了成功的验证.同时,虽然无监督方案的性能会弱于有监督方法,但是无监督畸变校正不需要对应真值图像,减少了对标签的需求.

未来考虑将真实鱼眼图像加到训练数据集中并且研究利用畸变自身的特性,进一步提升网络的性能.

猜你喜欢

鱼眼光流极坐标
利用掩膜和单应矩阵提高LK光流追踪效果
面向鱼眼图像的人群密度估计
巧用极坐标解决圆锥曲线的一类定值问题
微信扫一扫马上看视频鱼眼视频 小程序每天带你看最有意思的摄影视频
极坐标视角下的圆锥曲线
鱼眼明目鱼头补脑是真的吗?
一种改进的基于全局最小能量泛函光流算法
融合光流速度场与背景差分的自适应背景更新方法
利用PSO估算Lucas-Kanade光流模型的参数
鱼眼里的爱情