基于深度学习的单目深度估计(学习笔记自用)

学习地址:

1 数据集

KITTI数据集:检测、分割、3D场景,使用非常广

2 输入输出(encoder-decoder结构)

输入为一张图象,编码后为特征图,特征图解码输出想要的结果

3 模型整体架构

3.1 层级

(1)backbone(骨干网络):特征提取作用得到特征图

选择:考虑速度使用简易网络mobilenet、resnet;不考虑可以使用efficientnet

(2)多层特征:

浅层和多层关注的特征不同,表现出特征的多样性;浅层为局部,深层为全局

先在backbone中选择不同层次的特征(4-5个)尺度大小各不相同,然后使用pre-trained modle: Resnext(resnet改进)

3.2 差异

(1)边界信息(类似局部特征):提取多尺度的差异

对输入做上下采样,然后相同层级的两个特征图做减法来提取差异特征,各个层级都做提取不同尺度的差异(做法类似Unet,下采样卷积池化,然后卷积上采样)

3.3 SPP(空间金字塔池化)

目的:得到更丰富的特征,保证特征数量和多样性;不用要求输入大小固定,resize会丢失信息

方法:做几种不同的池化,筛选出不同数量的特征,然后拼在一起

3.4 空洞卷积

感受野:特征图上的一个点相当于原图的一个区域,一般单层的感受野就是一个卷积核大小

空洞卷积:保持计算量不变,增大感受野;设置空洞倍率改变感受野

但提取特征的时候会丢失部分信息,需要设置多组空洞卷积然后把不同的结果汇总得到更丰富特征

3.5 ASPP(SPP+空洞卷积)

两者集成,只在backbone最后特征图做ASPP

3.6 叠加

(1)拼接:特征图预测结果、差异结果、中间特征进行拼接;

         逐层提取特征拼接再不断加入到下一层的输出中

(2)coarse-to-fine:由粗到细,先由最后一个特征图得到大致结果再不断优化,轮廓细节会越来越突出

3.7 权重参数预处理

传统套路为CONV+BN+RELU

数据预处理分布更均匀,之后每一层卷积做完就用BN标准化,分布更均匀最后再用RELU

加上WS权重参数标准化

pre-activation:先做RELU还是后做的差异

3.8 损失函数

预测值和真实值是否接近,差值加上一个正则化惩罚项

4 代码讲解部分

4.1 项目环境配置

demo.py演示:对一张图像进行深度估计并输出一张深度图像

4.2 数据与标签定义方法

4.3 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值