双目网络中的预训练技巧与数据增强

理论说明

预训练

参考文章: Rethinking Training Strategy in Stereo Matching

我们知道在基于深度学习的双目深度估计中,为了获得一个有着良好表现的模型,研究人员往往会采用两阶段的训练技巧:即预训练和微调。
往往预训练模型会先训练足够的轮次。 Sceneflow数据集是一个相对来说比较庞大的数据集,其中有着35,454张影像。
通常看来,模型在大的数据集上面训练后,会有着相对于其在小数据集上训练更好的表现。
而KITTI、MB、ETC3D 都是一些很小的数据集,他们总共只有436张影像。
因此在其上训练的模型的表现会在一定程度上依赖于预训练的模型。
为了得到一个优异的预训练模型,我们通常有两种选择:

  1. 第1种是改变网络的结构,使其有着更明确的物理意义。这样的好处是网络能够从一些合成数据集上真正的学会匹配。几种比较典型的网络是GC net还有GA net。
  2. 那么第2种选择就是延长预训练模型的轮次,使得它能够在新flow数据集上面完全的收敛。

这篇重新思考双目网络训练技巧的文章指出,从前的方法,只会考虑从网络结构上面去进行调整,进而使得网络能够在新的、小的数据集上面有着更好的表现,却忽略了数据对于匹配网络效果的影响。

文章发现,我们完全可以通过更好的提升预训练模型的性能,进而使得其有着更好的泛化能力。

数据增强

数据增强,其实是提升网络性能的至关重要的因素之一。
但许多的研究人员并没有意识到数据增强能够这样大幅度的影响小数据集。往往他们只会采用随机裁剪。
这篇文章总结了所有适用于立体匹配网络的数据增强的方法。
具体为:
(1) 随机裁剪。示意图为:

在这里插入图片描述
(2) 色彩变换(Chromatic Transformations, CTs):具体指我们随机的对影像在亮度、伽马值以及对比度上面进行变换。示意图为:
在这里插入图片描述
(3) 随机平移变换(Random Translation Transformations,简称RTTs)。会以30%的概率随机的将右图的裁剪块在更向右1~20的像素距离上进行平移。同时左图的视差将会加上对应的平移量。示意图为:
在这里插入图片描述
(4)数据集平衡(Datasets Balance,简称DB)。
为了平衡不同数据集中不同视差分布的比例,我们将这些数据集进行重复堆叠。具体地,在每一个训练的轮次中,KITTI、ETH3D、Middlebury三者的比例分别为:(394:27 * 10: 15 * 10)。

实验结果

在这里主要贴出文章在预训练与数据增强上面的消融实验结果。
第1个令人震惊的发现是:仅仅是延长了预训练的时间,就可以使得一些比较经典的网络结构,比如说GCNet和PSMNet,再次达到了几乎最SOTA的结果。
这样的结果使得我们非常的好奇。但是以往似乎没有文献去严格的分析立体匹配的效果与预训练和数据增强之间的关系。
据文章作者所知,这篇文章应该是第1篇对这几个因素进行分析的文章。
为了更好的去分析预训练和数据增强对立体匹配网络表现的影响,文章作者重新训练了一些经典的和前沿的网络。

预训练

在预训练模型上面,以训练的轮次作为变量,网络训练所得到的结果如下表所示:
在这里插入图片描述
在对这个表进行分析之前,首先对网络的实现进行一些必要的说明:

  • GCNet与NLCA-Net由Tensorflow实现;
  • 对GCNet中的cost volume进行了下采样,其原因是考虑到输入影像的尺寸,原GC-Net不能够在GTX 1080Ti上进行训练;

现在我们对这个表的结果进行分析,有以下几个结论:

  1. 预训练模型可以增强网络在小数据集上的泛化能力;
  2. 一个好的网络可以加快预训练的收敛速度。

接下来对这两个结论进行进一步的说明和解释。

我们很容易发现,随着预训练模型的轮次增加,模型在小数据集上的表现有着非常可观的提升。尤其是在一些比较经典的网络结构上(GCNet和PSMNet)。换句话说,以往的网络结构已然可以达到非常好的效果,之前没有被发现,很有可能是因为没有一个足够好的预训练技巧,使得他们在预训练的Sceneflow数据上并没有真正的收敛。
对于这些模型,文章作者根据新的预训练技巧重新进行了训练,不出所料的得到了优于这些网络结构所提出时paper中的发表结果,二者的对比见下表:
在这里插入图片描述
关于第2个结论,也就是更好的网络能够促进预训练的收敛。所做的补充说明是,更好的网络或者说是更有利于学习到物理意义的网络,由于其明确的意义,使得网络相对于那些没有明确意义的网络,更快的实现匹配能力的成功学习。

小数据集上的Finetune

在这一小节中主要研究了不同的微调策略与网络性能之间的关系。
我们得到了以下的几个结论:
(1) 模型更容易在小数据集上过拟合
和应用于其他任务的深度学习网络一样,基于深度学习的立体匹配网络,一样会更容易在小数据集上面过拟合。过拟合的示意图见下图:
在这里插入图片描述
也因此在微调的过程中不适宜有太多的轮次。
同时我们也发现了以下几个有趣的现象:

  • 在更高的学习率的情况下,物理意义更明确的网络很可能会在过拟合的情况上面有着相对于物理意义不明确的网络更好的表现。
  • 当使用更低的学习率的时候,所有网络的精度表现的浮动值都较小,换句话说,精度表现更稳定。
  • 不同的网络收敛的点并不一样。这种微调的策略未必适宜所有的网络框架。
  • 其实就三像素误差这个指标来说,变化并不显著。但是微小的变化却会引起排名榜上名次的浮动。这也是为什么这篇文章的作者呼吁研究人员们不要太过于关注针对于小型数据集的排名榜上的名次。

(2)不同的策略将会引起不同的收敛点。
这里所指的不同的策略指的是批处理的大小,以及数据增强的方式等。这些区别将会导致网络的收敛点,不同于其文章中示意的收敛点。我们发现收敛点要落后于经典网络出处文章中所示意的收敛点。我们猜测这种现象的原因,可能是网络出处文章中并未使用类似的数据增强方式。具体的内容将在下一节数据增强中进行介绍。

数据增强

以NLCA-Net v2为验证网络,探究不同数据增强方式对网络结果的影响。
具体的实验结果见下表:
在这里插入图片描述

同时定性的结果见下图:
在这里插入图片描述
由结果所见:
(1) 对于随机裁剪来说,这无疑是立即匹配网络预处理中的标准步骤。随机裁剪的好处是,大大的提高了网络的性能和样本的随机性。同时它减少了输入影像的尺寸,这也意味着减少了GPU的显存需求。
(2)对于色彩变换来说,提高了网络对不同数据集之间亮度和颜色的鲁棒性。更有,这尽可能地帮助网络避免在小数据集上过拟合,如下图左图所示:
在这里插入图片描述
然而这样的策略对于提升在单一数据集上的性能,并不是10分的有帮助。
(3)对于随机平移变换,我们发现这一个预训练的策略对于提升网络性能是非常有效的。可以见上一张图的右图。同时也可以提升网络在跨数据集上的鲁棒性。
(4) 对于数据集平衡,提升了小数据集上样本的出现概率。也就是说这帮助网络避免偏心于大数据集上的数据分布。
(5)然而过多的数据增强会使得学习这个过程变得更难,进而推迟了网络的收敛点。同时也避免网络过早地陷入过拟合。
总的来看,在我们有着比较大的预训练数据集和比较小的微调数据集的情况下,训练策略可以极大的影响网络在目标数据集上的表现。同时我们发现延长预训练轮次所带来的收益是非常可观的,而相较之下,对于网络结构的常规改变时常不能够取得训练策略改变所带来的收益程度。也因此,我们呼吁研究人员在评价某一算法的性能的时候,不仅仅只考虑其在某一单一的小的数据集上的精度表现。而是综合地将速度、cross-domain表现以及自适应表现纳入算法评价指标。

其他

关于数据增强的代码实现,我们可以参照该github进行编码:
https://github.com/gengshan-y/high-res-stereo/blob/master/dataloader/MiddleburyLoader.py

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FLOWVERSE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值