【论文学习笔记-9】ACFNet:Adaptive Unimodal Cost Volume Filtering for Deep Stereo Matching(2020AAAI)
立体匹配算法一般包括四个部分:代价计算,代价聚合,视差计算,视差优化。其中代价计算部分经常会计算出一个Cost Volume,而现有的SOTA算法一般会通过argmin或者soft argmin来计算出整数/亚像素级别的视差,这些算法通过设计端到端网络,获取一个完全可微的模型,并让网络直接除数视差图,使用smooth L1 loss直接进行端到端训练。但是,这些算法并没有对Cost Volume做出直接的限制,而事实上有无数种可能的CostVolume分布能让CostVolume输出正确的结果。这是一种值得警惕的现象,因为不加约束的训练可能导致模型发生过拟合问题。因此作者考虑对CostVolume施加约束以提高立体匹配的效果。
整体网络结构如图:
作者以SOTA模型 PSM-Net为BackBone计算Cost Volume,添加了一个自适应单峰CostVolume滤波器,并设置了一个额外的Loss(Stereo Focal Loss)让CostVolume的分布朝向理想的分布(单峰分布)改变。
回归到CostVolume的本质,它是一个H*W*D的矩阵,它被用于反应候选像素对之间的匹配相似度,正确匹配的像素应该有最低的cost,而随着距离离正确视差值越远,匹配的cost应该越高,呈现一个单峰状的分布,在正确的视差值处达到顶峰。已知正确的视差值
d
g
t
d^{gt}
dgt,单峰状分布定义为:
其中
σ代表分布的方差,用于控制分布的尖锐程度。然而在不同像素点位置的σ应该是不一样的,比如桌角处的分布就应该很尖锐。为了达到这种效果,作者使用了一个置信度评估网络来自适应的预测每个像素的σ。
置信度评估网络接受Cost Volume作为输入,用很少的网络来确定每个像素的匹配置信度,方法是利用卷积层为基础来检测每个像素周围一些像素的匹配状态。
网络结构是33卷积 → \to → BN层 → \to → ReLu → \to → 11卷积 → \to → sigmoid输出 一个维度为H*W的置信度矩阵(值域(0,1))置信度大代表在这个像素能找到特别的匹配点的可信度很高,置信度小代表匹配可能有问题(Matching ambiguities),方差和置信度的转换函数为:
s是尺度因子,ε是方差的下界,有
Stereo Focal Loss: 获得估计的cost分布和ground truth的分布之后,本文采用Focal Loss来解决Sample Imbalance problem(正负样本比例严重失衡)而不是交叉熵,公式为:
总损失函数:
Experiment