CVPR2020----商汤和北大, 视觉里程计, 如何让深度模型自监督情况下, 做在线学习, 在线域适应

    技术2022-07-12  77

    背景: 视觉里程计

    给两张图或者多张图, 去估计它们的相对位姿.

    给一张图估计这张图的单目深度.

     

    如果有一张图的深度, 两张图的相对位姿, 可以用一张图插值另一张图.

    本质:通过深度学习的方法提取两图之间对应点(深度特征), 然后做两帧之间的位姿变换.

    然后得到两帧之间的光流, 通过光流和位姿变换的关系得到深度图.

    得到深度图, 光流, 位姿变换三者之间的耦合关系, 就可以构建自监督的约束关系.

     

     

    自监督原理: 

    D(p_t): 第t张图的单目深度.

    T: 和下一张图的位姿变换

     

    然后去想象出来, 另外一张图, 想象出来的图, 和真实的图可以做光度误差(像素级别的相减), 进而可以做位姿和深度估计的问题.

    问题是: 1. 单目的深度估计是通过网络得到的    2.相对位姿估计(位姿变换)也是通过网络得到

                  但是, 把预训练好的模型放到白天或者晚上不同,  或者有三维运动的场景, 往往是不work的.

                  即把预训练的模型, 放到未知的场景下, 往往是不work的.

     

    所以, 文章的主题就是, 如何让任何一个深度模型, 在自监督的情况下, 做在线学习, 在线的适应.

             即把模型放到不同的数据集下, 也有很好的效果.

     

     

     

     

     

     

     

     

    三个挑战:

    1.泛化: 如何用已知的模型去适应场景

    2.在线学习思想, 在线学习很难得到有标注的数据(真值数据): 把每一张图片都作为一个数据集.

    3.在线学习有收敛很慢的问题(灾难性遗忘:  在这个场景好不容易学习到的(或通过学习好不容易适应到这个场景) , 换到另一个场景还是需要很长时间).  我们希望模型在不断变换的过程中, 能够越来越块地收敛. 

     

     

    提出方法:

    基于元学习的在线自监督学习.

    (1)自监督: 一张图片的单目深度估计, 两张图片的位姿变换, 做自监督训练, 是一个已有方法 (网络: )

    (2)在线学习: 第一个时刻进行训练之后, 如何把之前的经验迁移到下一个时刻(迁移:)

    (3)元学习: 维护学习更加本质的任务

                     (和场景无关, 或者能够解耦场景特性的任务的分布)

                     (虽然场景不同, 但是做的任务都一样)

    单纯的深度学习是对一个数据集进行梯度下降, 元学习是对两个数据集进行梯度下降. 目标函数的自变量是前一个时刻的网络参数

       

     

    符号定义:

    : 在滑行窗口中, 采集到的一张图片

    : 元学习的损失函数

            解释: 在即前一个时刻做梯度下降, 得到更新之后的模型, 再把这个模型用到新一个时刻上.

                     即优化 , 希望在第i个时刻, 和i+1时刻都能达到最小值.  这样就能让元学习的目标有一个预测的性质.

                     能够天然地泛化, 能够在前一个时刻, 更好地猜测到下一个时刻.  以这种方式更好地在线自监督学习.

                     其实是对两个数据集, 和做梯度下降.     并且目标函数的自变量是前一个时刻的网络参数. 

                     ??原来的时间感受野是一, 现在是二. 即 在不同的时间有相同的表现.

     

               

    卖点:

    卖点一(在梯度上对齐): 梯度内积:  梯度方向做一致性约束, 让内积最大化

    让内积最大化就有可能避免遗忘问题.

    传统在线的遗忘问题就是, 它的梯度方向是随机的, 即面临不同时刻数据, 其调整方向是毫无规律的. 内积就可以把前一个时刻的梯度信息迁移到下一个时刻. 

     

    如果把前一个时刻的梯度和后一个时刻的梯度对齐, 或者做最大化相似度. 就相当于把前一个时刻的信息迁移到下一个时刻. 

     

    将目标函数进行泰勒展开, 发现一共有四项. 

    第一项:

    第二项: 两个时刻梯度的内积, 在一阶优化的空间中提供最优方向. 

    第三项: 海森矩阵: 一般是0, 以Relu为主的CNN当中, Relu的二阶导一般是零. 所以,                                 高阶项是零.

    第四项: 高阶项

     

     

     

     

    卖点二(在时空上对齐): 将长短时序网络嵌入在CNN中:

    对一个模型来说, 如果只用当前的东西做当前的预测可能比较难,  比如给一张图: 告诉其深度. 但是, 如果给一个视频, 或者做得比较好的估计, 去做多张图片的识别就容易许多. 

    所以, 将长短时序的网络嵌入在CNN的几层中, 做时空时序整合能够更好地预测当前的情况. 

     

     

    卖点三: 在线特征对齐(Online Feature Alignment)

    在一个时刻抽取一个图片的多个feature(每一层都有几百维甚至更多维的feature), 

     

    一个batch中, 几张图, 某个维度的特征有统计特性(均值方差), 这些统计特性其实代表较为本质的东西. (比如: styleGAN, 本质就是通过均值方差, 把握最本质的东西, 进行人脸的变换), 

     

     

    实验: 

    (红线是本文的, 虚线是原本的, 可以看到效果较其他算法都好)

    (这个实验由上千帧的位姿估计, 即每一个时刻的误差都可以累计到下一个时刻)

     

    (本文误差, online很小)

     

     

    (在室外的场景预训练, 直接迁移到室内的, 运动方式不一样的场景中.  虽然domain的gap非常大, 但是轨迹还是相对准确的)

    Processed: 0.012, SQL: 9