双目深度估计CNN
双目深度算法——双目深度算法总结 双目深度算法——双目深度算法总结
双目深度算法——双目深度算法总结
之前在工作上有接触过一些双目深度算法,但是当时限于精力有限没有对这类算法进行一个总结,于是今年年初给自己列了个计划要将整理下这方面的工作,于是从《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》这篇Survey开始,将一些比较有代表性的文章都读了下,对这个方向有了个大概的了解,下面是我的一些总结,如果有什么不对的,还请读者指正。
首先我按照个人的理解对双目深度算法进行了一个分类:
双目深度算法从大类上可以分为基于规则的算法和基于学习的算法两类:
基于规则的算法我之前只接触过SGM算法,总结过一篇和动态优化原理相关的博文:
双目深度算法——SGM中的动态规划
其他算法原理感兴趣的同学可以参考李迎松~的博客。
基于学习的算法可以参考论文《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》,该论文中主要总结了2014年到2019年发表的一些基于学习的方法,文章中提到,基于学习的方法又可以分为两类:
(1)早期方法:这类方法在我的分类中命名为基于Regression的方法(可能不是很合理),这类方法的大概原理就是通过CNN从图像Patch中提取特征,然后计算特征间的相似度构建代价矩阵,然后使用全局/半全局优化器计算视差,这类方法并非端到端的计算,更多的是CNN刚起步时的一些尝试。
(2)经典方法:这类方法大概原理是传统双目立体匹配过程,只是将各个模块可微化,然后端到端训练。这类方法可以分为基于Correlation的方法和基于Cost Volume的方法,其中前者效率更高,后者精度更高,这两种方法在前几年几乎每年都会轮流迭代,就像进化比赛一样,这些算法可以参考:
双目深度算法——基于Correlation的方法(DispNet / iResNet / AANet)
双目深度算法——基于Cost Volume的方法(GC-Net / PSM-Net / GA-Net)
经过多年的发展,最终有一篇名为GwcNet的论文将两者结合,并且取得了较好的效果。
除了论文中的提到,这两年又有一些新的方法诞生,例如基于Transformer的方法STTR和基于二分类的方法Bi3D,都是非常有创新性的方法,这些方法可以参考:
双目深度算法——基于Transformer的方法(STTR)
以上只是我利用工作之余读到的一些论文的总结,肯定还有很多方法,甚至方法论我还没有接触到,欢迎读者补充,后面我自己也会继续关注这方面的工作。