Monodepth2-基于自监督学习的单目深度估计模型


Monodepth2是ICCV2019发表的自监督单目深度估计方法,为Monodepth升级版。其结合双目图像与单目序列自监督方法,含深度预测和位姿变换预测网络,引入多种优化策略获当时SOTA。本文介绍其复现过程,用KITTI数据集,经640x192训练及1024x320微调,abs_rel达0.104,还含数据集、代码结构等信息。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

1. 简介

Monodepth2是通过自监督学习进行单目深度估计的一种方法,发表于ICCV2019,是发表于CVPR2017的Monodepth的升级版。Monodepth基于标定过的双目图像,通过预测中间变量disparity(视差)来对一侧图像进行变换重构另一侧图像,并以重构损失进行训练,有关Monodepth的复现可以参考我的另一个项目。

Monodepth2在此基础上加入了比较流行的单目序列自监督方法,即通过预测单目相邻帧之间的位姿变换与深度图来重构相邻帧。Monodepth2将两种训练方式统一到了基于一个位姿变换的框架下,上图为其的框架结构及针对部分问题的改进。框架中包含两个网络,一个是深度预测网络,给定一张图片,预测深度图,这个也是我们最后想得到的网络;另一个是位姿变换预测网络,给定一对图片,预测两者之间的位姿变换,一般给定的是相邻的前后两帧,此网络用于辅助训练;训练时选取左相机某一帧作为基准,计算深度图,其前后两帧及右相机同帧图像进行作为参考,计算位姿变换(右相机位姿变换为常数,不需要进行预测),利用预测得到的深度图将基准图像变换为点云、进行位姿变换、再重投影得到重构图像计算重构损失。

除此之外,Monodepth2引入了一些新trick来提升性能:

  • 使用resnet预训练模型,极为显著地提升性能。
  • 对于每个像素点,计算由不同视角进行重构所产生误差的最小值作为loss,使得loss对于受遮挡的物体更加鲁棒。
  • 将不同尺度的视差图resize到原始尺寸对原图进行,显著降低了深度图中不合理的纹理特性。
  • 自动mask掉会动的物体,使得收到监督的像素都满足静态场景的假设。

综合这些trick,Monodepth2得到了当时自监督深度估计的SOTA效果,但仍然与监督方法有着一定差距。

以下为本项目模型在KITTI测试图像上的预测结果:

论文: Digging Into Self-Supervised Monocular Depth Estimation

参考repo: monodepth2

2. 数据集

KITTI是一个自动驾驶领域常用的数据集,其由配置了传感器的汽车于德国卡尔斯鲁厄采集,数据中包含了双目彩色图像、深度图像、雷达点云等传感数据,并提供目标检测、实例分割等常见CV任务的标签。本项目使用AI Studio上的KITTI压缩数据集,全部数据可从此处下载。在训练过程中只需要双目图像,所以只解压jpg_images.tar.*即可。

KITTI数据集存在两种划分,一种是官方标准划分,称为KITTI划分,另一种是Eigen et. al.提出的Eigen划分方式。领域内更常用Eigen划分进行评估。由于在评估时需要点云数据来计算深度图的groundtruth,解压全部点云数据集占用硬盘空间过大,我们对Eigen划分的测试集进行了单独的打包,可在此处下载。

3. 复现精度

首先训练输入分辨率为640x192的模型:加载resnet18预训练模型,batch size 12,epoch 20,优化器Adam,初始学习率1e-4,15个epoch后减小为1e-5。原文和仓库并没有提供最优模型的选择方法,我们保存验证集loss最低的模型为最优模型。此时得到的最优模型abs_rel为0.109,未达到验收精度。

之后将以640x192为输入分辨率的最优模型在1024x320的输入分辨率上进行finetune,batch size 4,epoch 2,优化器Adam,学习率5e-5。得到的模型abs_rel为0.104,达到验收标准。

注意:为了固定数据增强的随机性,项目中使用setup_seed对Dataloader中的所有worker进行了初始化,这就导致了结果是和worker的数量相关的,想要完全复现项目中的结果,第一部分训练的num_workers=16,第二部分训练的num_workers=4。


abs_rel sq_rel rms log_rms a1 a2 a3
640 x 192 原文精度 0.106 0.818 4.750 0.196 0.874 0.957 0.979
1024 x 320 原文精度 0.106 0.806 4.630 0.193 0.876 0.958 0.980
640 x 192 复现精度 0.109 0.880 4.903 0.200 0.868 0.955 0.979
1024 x 320 复现精度 0.104 0.798 4.619 0.192 0.879 0.958 0.980

训练日志链接:640x192 train log, 1024x320 finetune log, 640x192 test log, 1024x320 test log

权重文件链接:pytorch resent18 pretrained weight, our best 640x192 weights, our best 1024x320 weights

4. 快速开始

Step 1:准备数据

In [1]
!cat ~/data/data15348/jpg_images.tar.* | tar -x -C ~/data/
!rm ~/data/data15348/jpg_images.tar.*
In [2]
!tar -xzf ~/data/data124124009/eigen_test.tgz -C ~/data

Step 2:配置环境

In [3]
%cd /home/aistudio/work/monodepth2-paddle
!pip install -r requirements.txt

Step 3:训练

In [ ]
    # train the model at resolution of 640 x 192
    !python train.py --model_name mono+stereo_model_640x192 --frame_ids 0 -1 1 --use_stereo --data_path ~/data/kitti \
        --log_dir logs --num_workers 4 --weights_init weights/resnet18-pytorch
In [7]
# finetune the best 640 x 192 model at resolution of 1024 x 320!python train.py --model_name mono+stereo_model_1024x320 --frame_ids 0 -1 1 --use_stereo --data_path ~/data/kitti \
    --height 320 --width 1024  --load_weights_folder weights/best_640x192/ \
    --log_dir logs --num_workers 4 --batch_size 4 --num_epochs 2 --learning_rate 5e-5
In [11]
!python evaluate_depth.py --load_weights_folder weights/best_1024x320/ --eval_stereo --data_path ~/data/eigen --num_workers 4
In [ ]
!python demo.py --image_path assets/test_image.jpg --load_weights_folder weights/best_1024x320/

5. 代码结构

├── assets # demo图像├── datasets # 数据集定义├── logs # 日志文件夹├── network # 网络定义├── splits # 数据集数据划分文件├── weights # 存放权重文件├── LICENSE
├── README.md
├── demo.py # 单张图像深度估计脚本├── evalute_depth.py # 测试脚本├── export_gt_depth.py # 计算groundtruth├── kitti_utils.py # 与KITTI数据集相关的功能函数├── layers.py # 基础模块定义├── options.py # 超参数定义├── trainer.py # 训练方式定义├── train.py # 训练入口脚本├── requirements.txt # 依赖包└── utils.py # 功能函数

6. 复现心得

  • paddle.grid_sample的反向传播存在Bug,当grid.stop_gradient=False时,x.stop_gradient必须为False,否则会报错,已提交PaddlePaddle issue。
  • Paddle Hub中的Resnet预训练参数与PyTorch Hub的不同,使用Paddle的预训练参数在640x192上训练最好只能达到0.113,加载PyTorch的预训练模型可达到0.109。


# 最优  # 不需要  # 加载  # 是一个  # 的是  # 进行了  # 升级版  # 发表于  # 两种  # python  # issue  # bug  # 重构  # 传感器  # paddlepaddle  # pytorch  # batch  # ai 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化91478 】 【 技术知识72672 】 【 云计算0 】 【 GEO优化84317 】 【 优选文章0 】 【 营销推广36048 】 【 网络运营41350 】 【 案例网站102563 】 【 AI智能45237


相关推荐: Tune AI: 革新音乐创作,AI音乐平台深度测评  批改网AI检测工具怎样设置检测维度_批改网AI检测工具维度勾选与权重调整【技巧】  百度ai助手悬浮球怎么关 百度ai助手悬浮窗去除方法  Semrush Summary Generator: 高效总结长篇文章的终极指南  AI客服工具:24/7全天候支持业务增长的秘密武器  ChatGPT 处理超长 PDF 文件的核心步骤  韵律分析:为什么理解音乐歌词的韵式至关重要?  CanvaAI抠图怎样调整色彩_CanvaAI色彩校正与滤镜叠加方法【攻略】  3步教你用AI帮你把菜谱转换成详细的烹饪步骤视频脚本  可灵ai怎么生成招聘JD文案_可灵aiJD生成要素与岗位描述优化【技巧】  留学文书PS怎么写?教你用AI写出招生官眼前一亮的个人陈述  Telegram与n8n集成教程:自动化AI助手构建指南  美食ASMR:感官盛宴与解压体验  2025年生成式AI发展蓝图:娱乐、医疗及创意产业的革新  教你用AI快速制作思维导图,3步理清所有工作思路  Semrush AI标题生成器:免费提升SEO和内容创作效率  AI聊天机器人引发伦理思考:泰国老人在Facebook上遭遇情感欺骗悲剧  Tenorshare PDNob:免费AI图像翻译器,即时转换图像为文本  豆包AI里的智能体有什么用_不同类型智能体使用场景介绍  微信AI数字人怎样切换形象风格_微信AI数字人形象更换与风格选择【技巧】  普通人如何用豆包AI月入过万?2026最新内容创作变现全攻略!  雷小兔ai智能写作怎么设置写作风格_雷小兔ai智能写作风格选择方法【指南】  秀米AI智能排版怎样生成节日专题模板_秀米AI智能排版节日模板调用【技巧】  DeepSeek写简历怎么用_DeepSeek写简历使用方法详细指南【教程】  ChatGPT助力QA测试:提升效率与质量的终极指南  Excel Copilot:AI驱动的数据分析革命,提升效率秘籍  百度AI助手入口在哪 怎么找到聊天入口  通义万相IP形象设计怎么用_通义万相IP形象设计使用方法详细指南【教程】  AI简历生成器:提升求职效率的智能工具  DesignGen: 5个AI模型革新服装设计,快速实现创意  Google Gemini 辅助进行 Android Studio 代码开发  Google Gemini 处理结构化 XML 数据转换教程  GitHub Copilot终极指南:提升代码效率与质量  千问怎样调整回答语气_千问语气设置亲切专业等【指南】  文心一言如何做本地生活探店文案 文心一言内容种草指南  Claude官网在线对话地址 Claude官方网站直接使用  识别脱水警告信号:专家解读与健康指南  AI Notebooks: 知识工作者的未来?赋能理解与洞察的工具  淋巴按摩终极指南:在家打造紧致透亮肌肤  深度学习姿态估计:技术、应用与未来趋势全解析  AI如何革新心理健康诊断:从症状检查到大脑分析  ChatGPT 处理非结构化数据并转换为 JSON 格式  AI赋能副业:五大掘金机会,轻松开启智能创收时代  AI 时代高效开发:版本控制与 AI 协同工作流  Depseek能否生成领导汇报版总结_Depseek汇报版结构调整与精简技巧【教程】  探索Roblox:虚拟角色定制与互动乐园  宝可梦化石精灵大揭秘:晶灿钻石视角下的精灵演化  AI动画制作教程:Adobe Express一键语音转动画  tofai网页版官方入口 tofai官网登录网址  7个简单高效的面部肌肉锻炼,改善面部不对称,塑造完美脸型 

 2025-07-22

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

南京市珐之弘网络技术有限公司


南京市珐之弘网络技术有限公司

南京市珐之弘网络技术有限公司专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 87067657

 13565296790

 87067657@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.