《PackNet:3D Packing for Self-Supervised Monocular Depth Estimation》论文笔记

Posted m_buddy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《PackNet:3D Packing for Self-Supervised Monocular Depth Estimation》论文笔记相关的知识,希望对你有一定的参考价值。

参考代码:packnet-sfm

1. 概述

导读:这篇文章提出了一种自监督的深度估计方法,其使用视频序列与运动信息作为输入,用网络去估计深度信息/相机位姿,并用最小重构误差去约束整个训练的过程从而实现自监督。文章的创新点主要体现为:使用3D卷机作为深度编解码网络,在相机位姿的6d信息基础上对平移分量进行约束,提出了一个新的数据集DDAD(Dense Depth for Automated Driving)。

单目情况下的自监督深度估计问题一般是使用几个相邻的视频帧去相互映射,其中完成映射所需要的参数是通过网络估计出来的。在这篇文章之前monodepth是一个较为成功的案例,文章的方法在很多环节的设计上与之类似,整体下来文章的主要工作可以归纳为:

  • 1)提出了一种新的编解码网络去预测深度信息,其中使用3D卷积替换了传统使用的pooling和线性upsample操作,从而使得图片中的目标细节能够更好的保留下来;
  • 2)在monodepth中直接使用pose-net去估计相机的位姿但是这个相机位姿是没有一个准确的scale去约束的,好在可以使用加速度传感器等得到瞬时速度信息,从而可以与估计出来的相机位姿中的平移分量进行约束;
  • 3)文章针对自动驾驶的场景提出了新的DDAD数据集;

文章方法的效果见下图例子所示:
在这里插入图片描述
可以看到上图的深度估计结果要比monodepth的结果边缘上更加锐利一些。

2. 方法设计

2.1 文章pipline

文章的整体pipeline结构见下图所示:
在这里插入图片描述
可以看到该pipeline与monodepth的类似,一个深度估计网络用于估计目标图像逐像素点的深度信息,一个姿态估计网络去估计相机旋转和平移的几个分量,之后通过几个关系建立起自监督关系,从而实现训练与收敛。与monodepth不同的一点是其对相机的位姿平移分量进行了约束,从而使得网络有了较为准确的scale信息,从而避免了monodepth中存在的scale不清晰的问题。

2.2 深度自监督部分

深度的自监督与monodepth中使用的方法类似,其损失函数为:
L ( I t , I t ^ ) = L p ( I t , I s ) ⊙ M p ⊙ M t + λ 1 L s ( D t ^ ) L(I_t,\\hat{I_t})=L_p(I_t,I_s)\\odot M_p\\odot M_t+\\lambda_1L_s(\\hat{D_t}) L(It,It^)=Lp(It,Is)MpMt+λ1Ls(Dt^)
其中, M t M_t Mt代表的是那些未被匹配到的像素掩膜。其中对于重建误差的描述形式为:
L p ( I t , I t ^ ) = α 1 − S S I M ( I t , I t ^ ) 2 + ( 1 − α ) ∣ ∣ I t − I t ^ ∣ ∣ L_p(I_t,\\hat{I_t})=\\alpha\\frac{1-SSIM(I_t,\\hat{I_t})}{2}+(1-\\alpha)||I_t-\\hat{I_t}|| Lp(It,It^)=α21SSIM(It,It^)+(1α)ItIt^
之后,在源图像和目标图像之间通过取最小误差作为后的损失:
L p ( I t , I S ) = min ⁡ I S L p ( I t , I t ^ ) L_p(I_t,I_S)=\\min_{I_S}L_p(I_t,\\hat{I_t}) Lp(It,IS)=ISminLp(It,It^)
此外为了增加训练的稳定性与对视频中目标移动的适应,增加了一个automask掩膜机制,其取值描述为:
M p = min ⁡ I S L p ( I t , I S ) > min ⁡ I S L p ( I t , I t ^ ) M_p=\\min_{I_S}L_p(I_t,I_S)\\gt\\min_{I_S}L_p(I_t,\\hat{I_t}) Mp=ISminLp(It,IS)>ISminLp(It,It^)
上述损失中的最后一项是边界平滑损失,描述为:
L s ( D t ^ ) = ∣ ∂ x D t ^ ∣ e − ∣ ∂ x I t ∣ + ∣ ∂ y D t ^ ∣ e − | ∂ y I t | L_s(\\hat{D_t})=|\\partial_x\\hat{D_t}|e^{-|\\partial_xI_t|}+|\\partial_y\\hat{D_t}|e^{-|\\partial_yI_t|} Ls(Dt^)=xDt^exIt+yDt^eyIt

2.3 引入scale属性

在monodepth中(也就是上节内容)是对相机位姿没有一个准确的scale去做约束的,这就导致了最后估计出来的深度并补准确,对此文章使用加速度计对估计出来的相机位姿中的平移分量进行约束,从而使其引入了scale的属性,从而使得估计出来的深度信息更加准确。这里使用到了帧间的时间差 Δ T t → s \\Delta T_{t\\rightarrow s} ΔTts,加速度计得到的瞬时速度 v v v,网络估计出来的平移参数 t ^ t → s \\hat{t}_{t\\rightarrow s} t^ts,则文章中将scale属性的损失定义为:
L v ( t ^ t → s , v ) = ∣ ∣ ∣ t ^ t → s ∣ ∣ − ∣ ∣ v Δ T t → s ∣ L_v(\\hat{t}_{t\\rightarrow s},v)=|||\\hat{t}_{t\\rightarrow s}||-||v\\Delta T_{t\\rightarrow s}| Lv(t^ts,v)=t^tsvΔT以上是关于《PackNet:3D Packing for Self-Supervised Monocular Depth Estimation》论文笔记的主要内容,如果未能解决你的问题,请参考以下文章

UVa 1149 Bin Packing 题解

903C. Boxes Packing#俄罗斯套娃问题(map使用)

ABC214 E - Packing Under Range Regulations(堆,贪心)

GeometryWorks 3D Features for SolidWorks 2014 Win32_64 2CD

人脸三维建模A Morphable Model For The Synthesis Of 3D Faces(三维人脸合成的变形模型)

子集枚举