三维视觉论文阅读:DeepPruner2019双目立体匹配
论文DeepPruner: Learning Efficient Stereo Matching via Differentiable PatchMatch摘要DeepPruner这篇文章,本人在2019年上半旬就大致读过一次,但是那时候
论文
DeepPruner: Learning Efficient Stereo Matching via Differentiable PatchMatch
摘要
DeepPruner这篇文章,本人在2019年上半旬就大致读过一次,但是那时候脑袋里一直在想PatchMatch Stereo,加上又对深度学习不太了解,所以并没有搞懂这篇文章到底写了啥。现在又看了一篇,终于了解了,DeepPruner的核心其实就是深度裁剪,和PatchMatch其实没啥关系。。。
方法
下图展示了DeepPruner的整个结构,首先就是利用SPP从影像上提取特征,这个已经没啥好继续说的了。除此之外,其他比较重要的模块就是可微PatchMatch、深度范围估计和cost volumn回归,后边逐个展开说明一下。注意,本人在看论文的时候,文章中只说了在什么地方用第一个阶段的可微PatchMatch,第二个没有介绍,这里需要看代码确认。
1. 可微PatchMatch
DeepPruner花费了大量的篇幅来讲这个模块,但是实际上和PatchMatch没啥关系。简单阐述这篇文章里是怎么做的(这里可能和论文有一点区别,个人感觉这样更容易理解,具体的可能还要看代码实现):
第一步,将视差范围分成kkk份,保证视差取值的均匀性;
第二步,随机选取iii个视差,每份视差中只选取一个;
第三步,基于随机生成的视差构建cost,计算方法就是左右特征的点积;
第四步,每个像素逐个利用附近的4个像素的iii视差值和自己的iii视差值计算cost,共计2∗i2*i2∗i个视差值,然后选出最大的iii个;
第五步,重复迭代步骤三、四一定次数;
第六步,使用soft max回归出最终的视差结果,计算公式如下:
以上所有步骤如下图所示,展示了可微PatchMatch的整个过程。
2. 深度范围估计
深度范围估计是DeepPruner中Pruner的核心,但是文章中只用了一小段介绍。。。大致思路就是利用特征和可微PatchMatch预估出来的深度,为每一个像素估计一个大致的深度范围R=[l,u]R=[l,u]R=[l,u]。
为啥DeepPruner比别的方法快,一个最重要的原因就是这里,提前裁剪掉大部分的深度值,保证后续进行代价聚合时,只需要在一个很小的范围里操作就可以了。
3. 代价聚合
基于前文估计的深度范围RRR,作者构建了一个cost volumn;然后再使用了老方法( 三维卷积和refine模块)得到最终的预测结果。
loss
DeepPruner的输出挺多的,所以loss也稍显复杂,其整个公式如下,其中ycosty_{cost}ycost是三维卷积后的结果,yrefiney_{refine}yrefine是优化的结果,lll是视差范围下限,uuu是视差范围的上限。
lsl_sls的计算,我们已经很熟悉了,公式也看了很多遍了,如下
llowerl_{lower}llower和lupperl_{upper}lupper让我想起了单目深度估计里的相对深度关系,公式如下,其中0<λ<0.50<\lambda<0.50<λ<0.5,鼓励l<gt,u>gtl<gt,u>gtl<gt,u>gt。
结果
总的来说,这篇文章还是非常棒的。但是我花了太久才看懂。。有空要跑跑代码。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)