单目深度估计学习 第一周
学习论文:Monocular_Depth_Estimation_Using_Laplacian_Pyramid-Based_Depth_Residuals
论文内容
论文主要内容如下:
1 目标图像分层
将目标图像分为不同尺度的图像,每一层的图像包含不同频率的细节信息,使目标图像在不同的分辨率下分别处理图像信息,从而更精确地捕捉图像中包含的深度信息。
2 针对边界轮廓信息提取
在目标图像深度估计当中,图像轮廓的信息提取是重要环节,针对图像轮廓的识别与提取,论文基于拉普拉斯金字塔的使用,将目标图像分层做差异处理,保留图像在多个尺度上的边界信息和细节信息。
3 使用ASPP
ASPP(Atrous Spatial Pyramid Pooling,空洞空间金字塔池化),是一种将空洞卷积与SPP(空间金字塔池化)结合的技术。
在论文中,对Layer3应用了ASPP,利用空洞卷积扩展感受野的能力,在深层卷积层中丰富的信息获取多尺度的特征,能够有效整合更多的上下文信息。
只对Layer3使用ASPP,是因为在分辨率高的层级使用该技术,会增加计算成本,不利于模型的效率和实时性。
4 叠加
对于Layer3,将输出应用ASPP之后,进行五次连续的conv block处理,进一步提取和增强特征,捕捉更多的图像细节和模式。
对于Layer2,叠加的过程分为以下步骤:
4.1 对前一层上采样
将应用ASPP之后的Layer3输出进行上采样,增加特征图的空间分辨率。
4.2 结合
将Layer3的上采样特征图与Layer2的特征图L4结合并卷积处理,获得新的特征图x4。
4.3 串联
将Layer3处理后的特征图R5双线性上采样,再与x4,L4串联,通过三张图像的串联,形成一个多通道的特征图,再进行四次卷积,进一步提取和融合特征。
4.4 相加
将四次卷积之后的特征图与L4相加,得到最终的特征图R4。
通过上述的处理方式,利用了coarse-to-fine思想,从较粗的低分辨率特征图开始,逐层添加更高分辨率的深度残差信息,从而逐步细化深度图,在初步捕捉全局深度布局的基础上,逐渐细化边界和细节信息,最终生成高精度的深度图。
5 权重参数预处理
使用WS正则化技术标准化权重参数,保证模型训练过程对不同数据分布的适应性,减少过拟合,提高预测的精度。
6 损失函数的设计
数据损失函数Ld
L
d
(
y
,
y
∗
)
=
1
n
(
∑
i
∈
V
d
i
2
−
λ
(
1
n
∑
i
∈
V
d
i
)
2
)
L_d(y, y^*) = \sqrt{\frac{1}{n} \left( \sum_{i \in V} d_i^2 - \lambda \left( \frac{1}{n} \sum_{i \in V} d_i \right)^2 \right)}
Ld(y,y∗)=n1
i∈V∑di2−λ(n1i∈V∑di)2
梯度损失函数Lg
L
g
(
y
,
y
∗
)
=
1
N
∑
i
=
1
N
(
∣
y
h
,
i
−
m
(
y
∗
)
h
,
i
∣
+
∣
y
v
,
i
−
m
(
y
∗
)
v
,
i
∣
)
L_g(y, y^*) = \frac{1}{N} \sum_{i=1}^{N} \left( |y_{h,i} - m(y^*)_{h,i}| + |y_{v,i} - m(y^*)_{v,i}| \right)
Lg(y,y∗)=N1i=1∑N(∣yh,i−m(y∗)h,i∣+∣yv,i−m(y∗)v,i∣)
总体顺势函数Lt
L
t
=
{
α
L
d
(
y
,
y
∗
)
if epoch
<
30
α
L
d
(
y
,
y
∗
)
+
β
L
g
(
y
,
y
∗
)
otherwise
L_t = \begin{cases} \alpha L_d(y, y^*) & \text{if epoch} < 30 \\ \alpha L_d(y, y^*) + \beta L_g(y, y^*) & \text{otherwise} \end{cases}
Lt={αLd(y,y∗)αLd(y,y∗)+βLg(y,y∗)if epoch<30otherwise
源码运行
截至2024/7/29,源码没有跑通。
源码的运行遇到了如下的问题:
1.项目环境配置 (已解决)
2.KITTI数据集的下载 (已解决)
3.源码调用的fcntl.py只在linux可用 (已解决)
4.源码调用的curses在win系统下的安装 (已解决)
5.源码尝试访问module属性,但是对象中没有这个属性。
的fcntl.py只在linux可用 (已解决)
4.源码调用的curses在win系统下的安装 (已解决)
5.源码尝试访问module属性,但是对象中没有这个属性。