深度估计 DenseDepth 笔记
参考代码:DenseDepth
论文名称:High Quality Monocular Depth Estimation via Transfer Learning
1. 概述
导读:这篇文章是使用深度监督的方式进行训练的,文章使用在ImageNet上训练过的DenseNet-169作为编码器,之后使用shortcut链接和上采样模块(上采样操作+2个卷积层)作为解码器,从而构建一个U型的网络结构。在此基础上使用输入的深度GT作为回归目标,从而实现网络的训练。
在下图中可以将文章的方法与DRON方法(分段回归)进行比较,文章的方法更加自然和实际。
2. 方法设计
2.1 网络结构
文章的网络结构比较简单,是一个带shortcut链接的U型网络结构:
编码器是DenseNet-169(pretrained on ImageNet),解码器由上采样模块(2x上采样+2个不带BN的卷积)构成,之后在解码器的最后一个上采样模块上预测对应的深度图。
2.2 损失函数
预测得到的深度图表示为y^\hat{y}y^,对应的标注GT表示为yyy,那么预测与回归之间的监督关系被描述为:
L(y,y^)=λLdepth(y,y^)+Lgrad(y,y^)+LSSIM((y,y^))L(y,\hat{y})=\lambda L_{depth}(y,\hat{y})+L_{grad}(y,\hat{y})+L_{SSIM}((y,\hat{y}))L(y,y^)=λLdepth(y,y^)+Lgrad(y,y^)+LSSIM((y,y^))
其中,λ=0.1\lambda=0.1λ=0.1。对于深度本身的监督使用L1损失:
Ldepth(y,y^)=1n∑pn∣yp−y^p∣L_{depth}(y,\hat{y})=\frac{1}{n}\sum_{p}^n|y_p-\hat{y}_p|Ldepth(y,y^)=n1p∑n∣yp−y^p∣
在此基础上引入梯度损失:
Lgrad(y,y^)=1n∑pn∣gx(yp,y^p)∣+∣gy(yp,y^p)∣L_{grad}(y,\hat{y})=\frac{1}{n}\sum_p^n|g_x(y_p,\hat{y}_p)|+|g_y(y_p,\hat{y}_p)|Lgrad(y,y^)=n1p∑n∣gx(yp,y^p)∣+∣gy(yp,y^p)∣
边界平滑损失:
LSSIM(y,y^)=1−SSIM(y,y^)2L_{SSIM}(y,\hat{y})=\frac{1-SSIM(y,\hat{y})}{2}LSSIM(y,y^)=21−SSIM(y,y^)
使用上面的损失函数在深度很大的时候会带来整体损失函数增大很多,因此文章使用场景的最大深度mmm对需要回归的深度信息进行归一化操作,从而训练的GT被描述为:
y=myy=\frac{m}{y}y=ym
对应部分的损失实现为:
# https://github.com/ialhashim/DenseDepth/blob/master/loss.py
def depth_loss_function(y_true, y_pred, theta=0.1, maxDepthVal=1000.0/10.0):# Point-wise depthl_depth = K.mean(K.abs(y_pred - y_true), axis=-1)# Edgesdy_true, dx_true = tf.image.image_gradients(y_true)dy_pred, dx_pred = tf.image.image_gradients(y_pred)l_edges = K.mean(K.abs(dy_pred - dy_true) + K.abs(dx_pred - dx_true), axis=-1)# Structural similarity (SSIM) indexl_ssim = K.clip((1 - tf.image.ssim(y_true, y_pred, maxDepthVal)) * 0.5, 0, 1)# Weightsw1 = 1.0w2 = 1.0w3 = thetareturn (w1 * l_ssim) + (w2 * K.mean(l_edges)) + (w3 * K.mean(l_depth))
文章方法得到的结果对比:
深度估计 DenseDepth 笔记相关推荐
- 单目深度估计学习笔记
GYDepth 没开源: CVPR2021单目深度估计:腾讯光影研究室优势夺冠,成果落地应用 竞赛结果及相关论文可见:https://arxiv.org/pdf/2105.08630.pd 比赛的最终 ...
- 分水岭算法java,OpenCV 学习笔记 04 深度估计与分割——GrabCut算法与分水岭算法...
1 使用普通摄像头进行深度估计 1.1 深度估计原理 这里会用到几何学中的极几何(Epipolar Geometry),它属于立体视觉(stereo vision)几何学,立体视觉是计算机视觉的一个分 ...
- 第4章 深度估计与分割(SGBM、GrabCut、分水岭) 个人笔记
文章目录 1. 前言 2. 极几何计算视差图 2.1 StereoSGBM算法代码 2.2 StereoSGBM算法思路解析 2.3 个人疑惑 3. GrabCut算法代码 4. 分水岭算法 4.1 ...
- 《增强现实:原理、算法与应用》读书笔记(7)稠密深度估计
<增强现实:原理.算法与应用>读书笔记(7)稠密深度估计 增强现实技术除了要恢复相机参数和场景的稀疏结构,有时候为了更好地处理遮挡关系和合成阴影,还需要恢复出场景的稠密三维结构.因此,稠密 ...
- Deep Ordinal Regression Network for Monocular Depth Estimation 单目深度估计,论文阅读,DORN;视频笔记
tags: 单目深度估计,论文阅读,DORN 原始论文是: Deep Ordinal Regression Network for Monocular Depth Estimation Huan Fu ...
- 学习笔记17--场景流之深度估计
本系列博客包括6个专栏,分别为:<自动驾驶技术概览>.<自动驾驶汽车平台技术基础>.<自动驾驶汽车定位技术>.<自动驾驶汽车环境感知>.<自动驾驶 ...
- 单目深度估计 | Real-Time Monocular Depth Estimation using Synthetic Data 学习笔记
文章目录 1. 摘要 2. 创新点和局限性 3 研究 3.1 阶段1-单目深度估计模型. 3.1.1 损失函数 3.1.2 训练细节 3.2 阶段2-通过风格迁移的域自适应 3.2.1 损失函数 3. ...
- 单目深度估计 | Learning Depth from Monocular Videos using Direct Methods 学习笔记
文章目录 摘要 1. 论文主要贡献: 2. 从视频中学习预测深度 2.1 尺度模糊 2.2 建模姿态估计预测器 3. 可微分直接视觉测距法 3.1 直接视觉测距法(DVO) 3.2 可微分的实现 4 ...
- 机器学习笔记 - 基于Torch Hub的深度估计模型MiDaS
1.MiDaS 图像的深度估计从 2D 图像本身预测对象的顺序(如果图像以 3D 格式扩展).这无疑是一项艰巨的任务,因为获取专门用于该领域的注释数据和数据集本身就是一项艰巨的任务.深度估计的使用范围 ...
最新文章
- jquery实现点击a链接,跳转之后,该a链接处显示背景色
- 我的世界服务器显示不出地图,为什么我的世界服务器地图加载不了
- [你必须知道的.NET]第三十回:.NET十年(下)
- MySQL 函数积累
- Django常用命令
- 反激变换器matlab仿真变压器demo,反激变换器建模Matlab仿真
- XP不能访问WIN7资源
- 联想l430主板图纸_【有图】Thinkpad L430升级内存,点亮,成功实现双通道!附详细教程及评测!!!...
- 调用有道智云api做翻译器遇到播放音频的问题
- angular7.0+ngx-weui公众号开发,开发及框架搭建(一)
- 免费网页设计学习课程,视频以及设计工具大全,网页设计不过如此!!!
- 关于canvas生成图片的方法
- //5. 有若干本图书,图书信息包括图书书名、作者、出版社和价格。要求输出图书价格(const成员函数), //显示图书书名、作者、出版社(非const成员函数)、根据图书书名查找图书并显示相关信息等
- 黑莓硌手的Passport变圆了
- 微信小程序 实现拨打电话
- Python函数的应用--汇率转换函数示例(第九章)
- catia v5r20破解版 32位64位 安装说明方法
- web百度离线地图开发(详细教程)2019
- 每日方法分享:手机怎么录屏?
- Vue最常见的面试题以及答案