张晓艺,余岸竹,曹雪峰,李振琦,权雨君
(信息工程大学 地理空间信息学院,郑州 450000)
从立体像对中估计视差是摄影测量和计算机视觉中的基本问题之一,其关键任务是寻找同名特征点的像素对应关系,通常称为立体匹配或立体密集匹配。立体匹配的原理是通过寻找立体像对之间像素级的匹配关系构建视差图,恢复场景的深度信息,在无人驾驶、三维重建、航空测绘等领域应用广泛。立体像对分为左、右视图,通过计算左图每个像素点(x,y)在右图上对应像素的位置(x-d,y),可以得到每个像素点的视差d,进一步通过式(1)得到对应的深度图。
depth=baseline×focallength/d
(1)
式中:focallength是相机焦距;baseline是相机光心之间的距离(即基线长度)。
在传统立体匹配算法中,Scharstein等[1]将传统立体匹配方法分为4步,即匹配代价计算、匹配代价聚合、视差计算和视差精化。匹配代价计算通过在左右影像上计算相似性测度确定匹配代价,描述像素之间的匹配关系;匹配代价聚合对邻接区域的匹配代价进行聚合,提高匹配代价的鲁棒性和精确性;视差计算一般采用赢者通吃(winner take all,WTA)策略,将匹配代价最小时对应的视差值作为该像素的初始视差;视差精化则利用左右一致性检测、亚像素插值等后处理操作对初始视差进行优化,旨在得到精确、完整、光滑的视差图。然而,传统匹配代价计算基于图像亮度信息衡量图像匹配程度,难以实现无纹理、弱纹理等病态区域的视差估计,且存在计算效率低、误匹配率高的缺点。
随着深度学习方法的不断发展,研究人员开始将深度学习方法引入立体匹配问题中,用于提升立体匹配精度、提高立体匹配效率和简化立体匹配流程。2015年后,卷积神经网络被引入立体匹配中解决匹配代价计算问题,MC-CNN[2]、DRR[3]通过有监督学习来计算匹配代价,在双目数据集上取得了匹配速度和精度的提升,为深度学习在立体匹配的应用奠定了基础。随后,DispNet[4]等利用卷积神经网络直接实现像素级的视差输出,构建端到端的立体匹配网络进行有监督的学习训练。自此,端对端立体匹配网络成为主流,其输入端是经过核线校正的立体像对,输出端是左影像对应的视差图。2017年,GC-Net[5]通过构建代价体,并利用3D卷积处理代价体,获得更多的几何和上下文信息,创新性地提出了立体匹配专用网络。目前,已经出现了多种立体匹配专用网络结构,并取得了优异的结果。
由于深度学习方法在立体匹配中表现出巨大应用潜力,基于深度学习的立体匹配算法相继涌现,梳理和评价立体匹配网络的工作也相继展开。Poggi等[6]按照端对端和非端对端的分类梳理了2016-2019年间的立体匹配算法。Laga等[7]介绍了2014-2019年主流算法的发展与优化,对主要算法模型进行了比较。季顺平等[8]利用航空数据集对2017-2019年间典型的网络模型进行了定量的实验比较与分析。然而,2019年至今出现了新的模型设计思路,网络的精度表现、跨域性能都有明显提升。因此,客观评价立体匹配网络的性能对于现有算法优化和新算法提出具有重要的指导意义。
跨域(cross-domain)是指源域和目标域在特征空间、边缘分布等方面存在差异[9]。虽然以上方法在计算机视觉领域取得了不错的结果,但是在摄影测量与遥感中,受到成像平台、成像视角、光照条件等因素的制约,遥感影像在颜色、光照、对比度和纹理方面有较大的差异,普遍存在明显的跨域现象[10],严重影响了现有立体匹配网络的精度和性能。基于此,本文主要研究在相同训练条件和误差指标下不同立体匹配网络性能的实验与比较,主要工作如下。
1)梳理了2016-2022年出现的立体匹配网络(表1),选择了5种代表性的端对端网络进行分析。
表1 2016-2022年间立体匹配网络
2)定量评估了5种代表性网络模型在不同遥感数据集中的精度表现,评价了网络模型在遥感影像中的场景适用性和跨域泛化性。
3)综合实验结果,提出了立体匹配网络在无人机影像和航空航天影像的潜力和挑战。
基于深度学习的端对端立体匹配专用网络可以划分为特征提取、代价体构建与正则化、视差计算3个阶段(图1)。在特征提取中,大多使用共享权重的孪生卷积网络提取左右图像的特征。在代价体部分,采用计算相关层或串联特征的方式进行构建,基于相关层的方式计算左右图像的匹配相似度,基于串联特征的方式将左右图像特征拼接实现代价体构建。在视差计算中,网络通过将立体匹配转化为回归问题,实现精细化视差输出。
图1 端对端立体匹配网络的一般流程
当前,特征提取阶段大多使用孪生卷积网络提取左右图像的特征信息。在此基础上,残差网络被用于提高网络深度、加强特征提取能力;跳层连接被用于优化网络特征提取结果,空间金字塔池化能够提取多级特征,增强图像的全局信息。如表1所示,自2018年PSMNet以来,后续的网络多使用空间金字塔池化这一策略增强网络对于全局信息的捕获能力。目前,主要有两种代价体的构建方式:采用的左右特征内积构建3D代价体和左右特征串联构建4D代价体。前者利用点积记录特征相似性,计算量较少但是丢失了大量图像特征信息,后者一般在后续处理中采用3D卷积进行归一化,需要学习大量网络参数。因此,对于3D代价体的优化策略包括语义掩膜引导聚合、边缘信息引导聚合、半全局聚合等;对于4D代价体,大多数网络一般通过堆积漏斗结构、体积金字塔池化、引导聚合层等策略,使代价体对更具鲁棒性和全局性。2021年,RAFT-Stereo将门控循环单元(gate recurrent unit,GRU)用于视差估计,STTR提出使用Transformer代替传统代价体的创建和归一化,获得了良好的效果,说明了自然语言处理中的算法模块经过调整之后可以在立体匹配任务中发挥有益影响,为设计新算法提供了思路。
在基于深度学习的立体匹配算法发展过程中,PSMNet提出的空间金字塔池化、代价体构建与正则化策略开创了立体匹配专用网络的先河,是立体匹配网络的经典算法;DSMNet和CFNet分别通过优化算法流程中的特征提取和代价体构建模块使得算法更具有鲁棒性、更适合跨域视差估计,可以很好地反映网络中模块优化的跨域精度提升效果;RAFT-Stereo和STTR分别将自然语言处理中的GRU和Transformer引入立体匹配网络,代替原有的视差回归和代价体构建模块,从而提高视差估计效率和精确度,在立体匹配网络新模块设计中具有代表性。因此,本文选择PSMNet、DSMNet、CFNet、RAFT-Stereo和STTR作为代表性算法进行精度实验和网络分析。
PSMNet是端对端立体匹配的经典网络。该网络在特征提取阶段使用空间金字塔池化策略扩大卷积网络的感受野,增强图像对全局信息的提取能力,以聚合不同尺度和不同位置的特征。随后,将左右图像特征串联,构建维度是1/4H×1/4W×1/4D×64的4D代价体,使用堆叠沙漏(stacked hourglass)3D卷积进行代价体正则化。堆叠沙漏由3个编码器-解码器结构串联而成,结构内部与中间监督相结合,有效引导代价体正则化。最后,网络采用回归的方式得到稠密视差输出。
为了增强网络模型的跨域泛化能力,DSMNet使用基于图的非局部滤波层(non-local graph-based filter,NLF)提取图像鲁棒特征和几何表示,同时用域归一化(domain normalization,DN)代替批归一化(batch normalization,BN),实现特征在空间维度和通道维度上分布的归一化,保持特征的域不变性。DSMNet的代价体维度为1/3H×1/3W×1/3D×32,代价聚合通过半全局聚合层(semi-global aggregation layer,SGA)和NLF层实现,SGA层通过在图像4个方向上聚合匹配代价,NLF层则用于实现匹配代价的长距离传播,增强网络对全局信息的利用,最终回归得到视差。
同样是为了解决算法的域适应性问题,CFNet认为数据集之间的图像场景差异和视差分布不均衡限制了网络模型的泛化能力,提出以级联融合代价体(cascade and fused cost volume)增强立体匹配算法的跨域鲁棒性。其中,融合代价体(fused cost volume)将多个低分辨率代价体进行融合从而扩大感受野,级联代价体(cascade cost volume)使用基于方差的不确定性估计确定视差搜索范围,减少视差分布对立体匹配精度的影响。在得到初始视差之后,网络按照由粗到精的方式精化初始视差,通过计算像素的不确定度调整视差搜索范围,实现视差图的迭代精化。
RAFT-Stereo将自然语言处理中的GRU模块引入立体匹配算法,代替3D卷积进行代价体的正则化,减少内存和算力消耗。该网络的特征提取模块使用图像特征编码器和上下文编码器,前者用于提取左右视图的图像特征,后者提取左视图的上下文信息用于GRU更新。RAFT-Stereo没有采用特征串联融合的方式构造4D代价体,而是计算特征向量的点积构建3D代价体,并对代价体的最后一个维度平均池化得到相关金字塔,扩大网络感受野。除此之外,网络剔除相关查找算子建立视差与相关特征的联系,实现查找相关特征的目的。在视差计算中使用多级卷积GRU传播图像的全局信息,迭代精化获得精确视差。
STTR从序列到序列的角度重新审视了立体匹配问题,提出利用Transformer代替以往方法中的代价体构建。STTR使用编码器-解码器获取图像特征,将左右特征图输入Transformer模块中,交替计算自注意和交叉注意,自注意计算同一图像上沿核线像素的注意力,交叉注意计算左右图像之间沿极线像素的注意力,注意力计算中使用相对位置编码提供特征的空间信息。估计视差时,STTR采用改进WTA方法估计初始视差,并利用语义信息提供跨核线信息,精化初始视差。
为了对比研究5种立体匹配网络的性能,本文在Sceneflow、KITTI Stereo 2015[26]、UAVStereo[27]和WHU[28]的立体子集等多个场景公开数据集上进行实验验证。
Sceneflow数据集利用Blender合成了大规模复杂场景的立体匹配模拟数据。该数据集广泛用于端对端立体匹配网络的训练,包括FlyingThing3D、Driving和Monkaa 3个子集,对应有不同的图像场景类型和视差分布。
KITTI数据集是一个面向自动驾驶场景的室外真实数据集。其中包含了大量的道路、汽车、建筑等数据,视差数据由车载激光雷达结果反算得到,有效视差像素较为稀疏,约占全部像素的1/3。
UAVStereo数据集是一个多分辨率的无人机低空场景数据集,其中包含居民地、林地和矿区共3种代表性场景的合成数据和真实数据,可被用于验证网络对低空获取的地表数据的处理能力以及在合成域和真实域之间的泛化能力。由于网络的计算性能和机器内存限制和当前网络处理要求,本文主要采用其中960像素×540像素的低分辨率数据进行测评(后文中的UAVStereo指UAVStereo的低分辨率子集)。
WHU数据集是用于大规模地表重建的航空合成数据集,包含五视影像子集和立体匹配子集(后文中的WHU指WHU的立体匹配子集)。数据集中的航空图像和视差真值由软件生成的3D模型渲染得到,涵盖建筑、工厂、山地、裸露地表等。本文实验采用WHU数据集中的立体匹配子集,含有8 316对训练数据和2 663对测试数据,分辨率为768像素×384像素。
由于相机基线、焦距和场景深度的差异,不同数据集的视差有较大差异。4个场景数据集视差在0~384像素之间的视差值分布情况如图2所示。就视差范围来讲,如图2所示,Sceneflow、KITTI Stereo 2015和WHU数据集的视差分布在150像素之内,UAVStereo视差在50~350像素之间,这是由于无人机影像基线大,根据式(2),其视差值和范围分布也较大。
图2 4个场景数据集视差分布情况
disparity=baseline×focallength/depth
(2)
就影像内容来讲,Sceneflow包含随机场景和动画场景的多种合成影像,KITTI Stereo 2015是真实街景影像,UAVStereo和WHU是对地观测影像。
综上,Sceneflow、KITTI Stereo 2015、UAVStereo和WHU这4个数据集的图像场景信息、特征属性和视差分布存在较大差异,为综合评价不同的端对端立体匹配网络提供了数据支撑。本文按照7∶1∶2数据集的比例将数据集划分为训练数据、精化数据和测试数据(表2),用于测试当前立体匹配网络的性能,从而比较算法在不同场景的表现。
表2 实验数据集
本文设计了同域实验、跨域实验和精化实验3种实验,在4个场景的数据集上进行实验,综合对比研究5种代表性网络的性能。①同域实验采用表4中的4组训练数据对5种网络进行预训练,在对应的测试数据上进行视差估计。同域实验结果可说明不同网络在不同场景数据上的精度表现,从而推测视差估计网络的场景适应性。②跨域实验直接将Sceneflow数据集的网络模型应用于其他3个测试数据上,从而在图像特征和视差分布均不同的数据集上实验和统计网络性能。这种直接迁移的方式可以用于分析网络模型的跨域泛化能力。③精化测试中,先使用Sceneflow数据集进行预训练,然后用3种样本量较少的精化数据分别对模型进行微调精化,对比微调前后各个网络的视差估计误差指标,从而评估精化策略对视差估计的影响,评价不同网络的适应能力。
本实验测试环境使用NVIDIA GTX 3090显卡,显存为24 GB,配置CUDA 11.2、Pytorch 1.8.0。由于显存限制,实验训练阶段将图像裁剪为256像素×512像素大小输入网络(STTR训练过程除了左右图像与对应视差外,还需附加遮挡信息,因此只在Sceneflow和KITTI Stereo 2015上训练)。由于数据集视差范围的差异,在Sceneflow、KITTI Stereo 2015和WHU数据集上设定网络最大视差搜索范围为192像素(STTR无需设置),由于UAVStereo数据集视差搜索范围更大,实验中设置最大视差搜索范围为384像素。训练和测试阶段批处理大小均为4。过程中始终将学习率设置为1E-3(STTR模型的学习率过高会导致训练中断,所以将其设置为1E-4)。实验中不设置训练循环次数,在模型损失函数曲线无明显变化时结束训练,使用最后一轮训练模型验证测试集上的表现。
立体匹配算法通常采用端点误差(end point error,EPE)和3像素误差(3-pixel error,3PE)作为评价模型精度的指标。EPE是指估计视差与真实视差之间差值的绝对值均值,单位为像素,该指标反映了整幅图像全部像素的视差估计误差信息;3PE是指当一个像素的视差误差大于3时,将其视为错误像素,统计错误像素占有效像素的百分比作为实验指标,该指标反映误差超过阈值的像素数量。
按照以上实验设置与数据集划分对网络进行同域训练和测试,实验结果如表3所示。
表3 5种模型在4个数据集上的同域误差统计
作为代表性算法,PSMNet的表现如下。①在Sceneflow、KITTI Stereo 2015和WHU数据集上精度结果并不理想,定量误差统计结果显示该网络视差估计误差和误差像素占比都比较大,作为立体匹配的经典网络,PSMNet提出了使用全局信息的策略,但其网络结构仍然较为简单,不能同时运用细节和全局信息,导致精度效果不够理想。②该网络在UAVStereo数据集上结果比其他网络好。由于无人机影像具有视差搜索范围大、影像中包含的无纹理和重复纹理等病态区域较多的特点,其立体匹配难度较大,PSMNet中的空间金字塔池化和堆叠沙漏3D卷积能够有效捕捉全局信息进行匹配,从而提高了无人机影像立体匹配的精度。综合图2中视差分布情况,本文推测PSMNet在较大视差范围的视差估计中有优势。③尽管无人机场景中该网络表现不错,但精度(EPE为3.44像素,3PE为11.63%)与Sceneflow仍然有很大差距,网络性能仍然有待提高。在无人机场景中,PSMNet比其他网络的精度更高。但PSMNet在无人机数据集上的整体精度低于该网络在其他数据集上的精度。
STTR网络在Sceneflow数据集上取得较好精度(EPE为0.54像素,3PE为1.67%)。①这说明通过自然语言处理领域中的Transformer模块进行处理后引入立体匹配中,能够代替代价体的构建,实现精准的视差估计。②该网络需要视差遮挡图像作为训练数据,对数据集有较高要求,无法在UAVStereo和WHU中使用,且无法用于实时数据的处理。关于视觉Transformer的研究表明[29],Transformer缺少一些卷积神经网络的归纳偏置,例如平移不变性和局部关系,因此在规模不足的数据集上表现欠佳。通过在Sceneflow和KITTI Stereo 2015数据集上对比STTR和CFNet在数据集上的表现,可以初步验证该结论在立体匹配网络中的正确性。
RAFT-Stereo与DSMNet、CFNet和STTR相比,其误差结果EPE较大,但3PE较小。本文推测这是由于其网络结构中的视差更新模块可以有效索引视差范围,使得3PE较小,但由于其网络结构中使用的编码器结构简单,在特征提取时不能有效利用特征和全局信息,因此不能精准估计视差。
跨域实验将Sceneflow的训练结果直接迁移至其他3个数据集,得到误差统计结果如表4所示。
表4 5种模型在3个数据集上的跨域误差统计
在KITTI Stereo 2015数据集上,5个网络的EPE指标都有降低,DSMNet、CFNet和STTR网络的3PE指标也有所下降,这主要是因为Sceneflow中包含虚拟驾驶场景Driving子集,该子集提供了稠密的驾驶场景视差真值,场景的相似性使得误差降低。对比KITTI Stereo 2015上同域实验和跨域实验的误差结果,可以发现大多网络的跨域误差小于同域误差,因此本文认为视差稠密度直接影响了网络的表现,稠密的视差真值能够有效提升网络的视差推理能力。研究表明,影像包含的特征类型会影响网络特征的提取效果,视差的分布范围会影响网络中代价体构建与正则化的效果。由于不同场景数据集在影像特征类型和视差分布范围方面存在明显差异,当前网络泛化性能有限,不能直接进行跨域迁移。
UAVStereo和WHU数据集上的误差指标上升剧烈,这显示出网络在无人机低空场景和航天场景中跨域性能有限。其中,DSMNet和CFNet分别取得UAVStereo和WHU上的最小误差,说明其网络中的跨域泛化模块有一定的跨域泛化能力,然而性能有限。对比UAVStereo和WHU上的误差变化幅度,UAVStereo的误差变化幅度远大于WHU,本文认为虽然无人机场景和航空场景都是对地观测,然而由于无人机获取无纹理区域几率大、视差搜索范围大等原因,其视差估计更加困难。
在预训练结果上使用少量跨域样本数据进行精化,是提升模型跨域泛化的常用手段。因此,本实验在Sceneflow上预训练至收敛,然后用其他3个数据集的精化数据对预训练模型进行精化,对比不同网络模型在精化前后的误差指标,并评价不同网络模型的跨域适应能力。5个模型在精化实验中的误差统计结果如表5所示。
表5 5种模型在3个数据集上的精化误差统计
在KITTI Stereo 2015数据集上,网络整体精度不错,精化策略之后误差降低(3PE整体低于4%)。与同域验证中的误差指标相比,该数据集上的误差都有大幅降低。本文推断这种精度的升高一方面是因为训练数据的增多,使得网络得到充分训练;另一方面是因为Sceneflow中虚拟Driving场景为网络提供了相似的影像特征和稠密的真值视差。
在UAVStereo数据集中,误差指标都呈增加趋势,因此少量数据的精化策略在无人机低空场景数据集上并不奏效。这是由于UAVStereo和Sceneflow的场景信息、影像特征和视差分布的相似性较低,所以精化策略不如同域训练策略的精度表现。5种网络中,PSMNet取得最小误差,与同域验证中的结果相似。因此,本文认为在PSMNet基础上进行优化可以提高其在无人机场景上的精度表现。DSMNet和CFNet分别在特征提取、代价体构建的步骤中进行了跨域泛化性能的增强。但以上两种策略在无人机场景数据中的效果并不理想,在视差估计阶段增加约束和增强泛化能力的研究还没有得到足够的关注,理论上具有深入研究的价值。
WHU数据集的指标变化并不稳定。与Sceneflow和KITTI Stereo 2015数据集的结果相比,当前网络在航空影像上的视差估计精度仍有待提高。WHU数据集在视差范围上与Sceneflow和KITTI Stereo 2015数据集相差不大,但影像包含的特征类型明显不同。因此,本文认为当前网络对地物特征匹配的能力还有待加强。精化策略对WHU数据集的影像并不稳定,精化效果与网络本身有关。
本文使用3种实验方法在4个数据集上对5种代表性的基于深度学习的立体匹配网络进行了综合对比。实验结果表明:在运算资源有限、场景类型多样、影像特征和视差分布迥异的情况下,网络结构和训练策略对场景适用性有较大差异;PSMNet在仿真数据集、驾驶数据集和航空数据集上精度不高,但在无人机低空数据集上精度表现良好,在同域实验、精化实验中表现优于其他网络;DSMNet和CFNet使用不同的跨域泛化策略提升网络的泛化性能,其策略对于跨域视差估计具有一定提升,但效果不明显,误差仍然很大;RAFT-Stereo在同域实验和精化实验中表现不错,然而在跨域实验中精度下降验证,本文推测增加其网络中特征提取模块的鲁棒性能够有效提升网络性能;STTR也能够获取精度较高的视差结果,但是算法训练数据需要有人工标注的遮挡信息,在实际中应用较为困难。
本文将深度学习方法应用到不同类型航空影像的立体匹配中,分析了代表性的立体匹配网络在不同数据集上的精度表现,评估了不同网络的精度和泛化能力。实验结果表明:受视差分布、场景类型等因素的影响,当前代表性立体匹配网络在航空遥感数据集UAVStereo和WHU上精度不高;使用域归一化、多尺度代价体等增强跨域泛化能力的策略在航空影像上的适用性并不理想;利用自然语言处理Transformer模块代替代价体的设计能够在部分数据集上提高精度,但由于其对训练数据有更高的要求,难以直接应用于航空遥感影像。
结合本文实验结果分析,本文对基于深度学习的立体匹配算法展望如下。
首先,有监督的端对端立体匹配算法对于场景的适用性差异较大,精度表现受遥感影像场景类型、视差分布等因素的影响较大。随着通用特征表示在多任务学习中取得越来越好的精度,将相关方法引入到立体匹配中有望取得更鲁棒、更通用的特征表示,从而提高网络的场景适用性。
其次,当前立体匹配网络训练过程对算力和内存要求较高、算法收敛速度较慢,还不适应机载端实时处理等智能遥感计算的需要。随着深度学习中模型剪枝、知识蒸馏等轻量化措施的发展,将相关优化措施引入立体匹配网络将对运行性能、遥感影像实时处理相关应用前景有重要提升。
最后,当前应对遥感影像跨域问题的方法主要采取少样本(few-shot)数据进行参数微调。然而,这种策略得到的精度效果并不稳定。随着元学习(meta-learning)方法在计算机视觉中的研究,将其中少样本学习的方法引入立体匹配网络,能够充分利用不同域之间的有效监督信息,从而提高立体匹配网络对于目标场景的立体匹配精度。