最强无监督单目深度估计Baseline--MonoViT--简介与代码复现

这篇具有很好参考价值的文章主要介绍了最强无监督单目深度估计Baseline--MonoViT--简介与代码复现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 无监督单目深度估计

   单目深度估计是指,借助于深度神经网络,从单张输入视图中推理场景的稠密深度信息;该技术可以广泛用于自动驾驶、虚拟现实、增强现实等依赖于三维场景感知理解的领域,同时也可以为其他视觉任务提供多模态深度信息,辅助其他任务感知的精确性。

  由于不需要标签信息而仅依据单目视频序列 or 双目立体图像对 即可训练的这一巨大优势,无监督单目深度估计框架收到了越来越多的关注,并且当前的性能已经能比肩早期有监督训练方法。

  随着monodepth2框架在网络预训练、损失函数设计等方面的创新,无监督训练得到的单目深度估计模型在对场景中几何细节方面的深度感知方面表现出了令人满意的性能和精度。

最强无监督单目深度估计Baseline--MonoViT--简介与代码复现

 本文以及自监督单目深度估计的榜单,MDEB,对当前基于单目图像序列的自监督单目深度估计的SOTA/最优方案,MonoViT,进行介绍,并对其开源代码进行复现,开源代码地址:GitHub - zxcqlf/MonoViT: Self-supervised monocular depth estimation with a vision transformerSelf-supervised monocular depth estimation with a vision transformer - GitHub - zxcqlf/MonoViT: Self-supervised monocular depth estimation with a vision transformerhttps://github.com/zxcqlf/MonoViT

2. MonoViT

MonoViT 发表于2022年三维视觉国际会议 3DV, 凭借其出色的精确性和泛化性,一经发表便得到了大量的关注,并有望成为新的基线方法!

和monodepth2相比, MonoViT的创新点主要在于深度估计网络框架的设计,简单来说,采用CNN+Transformer的网络结构替代了之前常用的resnet网络结构,凭借CNN局部细节感知能力与Transformer全局长程特征提取能力的结合,实现在KITTI数据集上的SOTA性能!

其编码器采用了发表于2022 CVPR的MPVIT结构,主要特点是该编码器将CNN和Transformer框架的有机融合,实现了十分有效的图像特征提取能力;解码器部分,主要源自HR-Depth方法中设计的多尺度特征融合解码,促进不同尺度特征的有效融合。

该方案在KITTI 数据集上的精确性表现十分惊讶,首次将Abs_Rel 误差指标打到了0.1以下,同时精确性指标σ1达到了0.9以上。

最强无监督单目深度估计Baseline--MonoViT--简介与代码复现

同时,凭借Transformer+CNN在前景背景关系,尺度变化感知等方向的有效性,其在不同天气状况下的泛化性同样表现惊人,与同期最优方法相比,优势明显!同时,在最新的针对单目深度估计方法的泛化性榜单RoboDepth上,MonoViT的泛化性结果同样是一骑绝尘!

最强无监督单目深度估计Baseline--MonoViT--简介与代码复现

 3. 复现

 虽然MonoViT开源了相关代码以及模型,但是由于版权限制,其github上的代码并不完整,有些重要地方没有被作者公开,从而使得在复现过程中可能会有碰到复现结果和论文结果性能存在差异性的问题。

3.1 环境配置

在环境配置上,依照官方建议版本设定按照相关依赖,这一般不会有问题,注意一点的是mmcv-full需要多等待一会,有些耐心,安装相对较慢!

conda create -n monovit python=3.8
pip3 install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0
pip install dominate==2.4.0 Pillow==6.1.0 visdom==0.1.8
pip install tensorboardX==1.4 opencv-python  matplotlib scikit-image
pip3 install mmcv-full==1.3.0 mmsegmentation==0.11.0  
pip install timm einops IPython

3.2 代码完善

首先下载monodepth2这一最基础代码库,参照官方给的readme.md文件以及trainer,py文件,对trainer.py文件进行修改:

将monodepth2/trainer.py文件中深度模型定义部分(54-62行)修改为:

       # self.models["encoder"] = networks.ResnetEncoder(
        #    self.opt.num_layers, self.opt.weights_init == "pretrained")
        self.models["encoder"] = networks.mpvit_small()
        self.models["encoder"].num_ch_enc = [64,128,216,288,288]
        self.models["encoder"].to(self.device)
        #self.parameters_to_train += list(self.models["encoder"].parameters())

        self.models["depth"] = networks.DepthDecoder(
            self.models["encoder"].num_ch_enc, self.opt.scales)
        self.models["depth"].to(self.device)
        self.parameters_to_train += list(self.models["depth"].parameters())

将优化器部分(102-104行)修改为:

        self.params = [ {
            "params":self.parameters_to_train, 
            "lr": self.opt.learning_rate
            #"weight_decay": 0.01
            },
            {
            "params": list(self.models["encoder"].parameters()), 
           "lr": self.opt.learning_rate/2
            #"weight_decay": 0.01
            } ]
        self.model_optimizer = optim.AdamW(self.params)
        self.model_lr_scheduler = optim.lr_scheduler.ExponentialLR(
		self.model_optimizer,0.9)

这两步改完,基本就可以了,但是训练后会发现,得到的模型Abs_Rel指标基本都在0.102左右,其实这是因为pytorch版本不同导致function中部分参数发生变化导致的,这一点似乎被作者忽略了,所以使得复现的结果总是不令人满意!所以还需要进一步将一个函数进行修改:

F.grid_sample(inputs[("color", frame_id, source_scale)],
                    outputs[("sample", frame_id, scale)],
                    padding_mode="border", align_corners=True)

至此,就可以很轻松的复现出原文的结果了!!!文章来源地址https://www.toymoban.com/news/detail-435208.html

到了这里,关于最强无监督单目深度估计Baseline--MonoViT--简介与代码复现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 最新!!单目深度估计方向文献综述--Monocular Depth Estimation: A Thorough Review

    论文链接:https://ieeexplore.ieee.org/abstract/document/10313067 一个是考虑人类深度感知的机制,另一个是包括各种深度学习方法。 这篇论文是关于单目深度估计(Monocular Depth Estimation)的全面综述,由Vasileios Arampatzakis等人撰写。单目深度估计是指从二维图像中恢复三维场景的深度信

    2024年04月28日
    浏览(103)
  • 文献学习-37-动态场景中任意形状针的单目 3D 位姿估计:一种高效的视觉学习和几何建模方法

    Authors: Bin Li,† , Student Member, IEEE, Bo Lu,† , Member, IEEE, Hongbin Lin, Yaxiang Wang, Fangxun Zhong, Member, IEEE, Qi Dou, Member, IEEE and Yun-Hui Liu, Fellow, IEEE Source: IEEE TRANSACTIONS ON MEDICAL ROBOTICS AND BIONICS Keywords: Surgical Robotics, Pose Estimation, Geometry Modeling, Vision-based Manipulation Abstract: 导向图像的针具姿

    2024年04月17日
    浏览(40)
  • Reid strong baseline 代码详解

    本项目是对Reid strong baseline代码的详解。项目暂未加入目标检测部分,后期会不定时更新,请持续关注。 本相比Reid所用数据集为Markt1501,支持Resnet系列作为训练的baseline网络。训练采用表征学习+度量学习的方式。 目录 训练参数 训练代码 create_supervised_trainer(创建训练函数)

    2024年02月05日
    浏览(36)
  • 图像融合论文阅读:CS2Fusion: 通过估计特征补偿图谱实现自监督红外和可见光图像融合的对比学习

    @article{wang2024cs2fusion, title={CS2Fusion: Contrastive learning for Self-Supervised infrared and visible image fusion by estimating feature compensation map}, author={Wang, Xue and Guan, Zheng and Qian, Wenhua and Cao, Jinde and Liang, Shu and Yan, Jin}, journal={Information Fusion}, volume={102}, pages={102039}, year={2024}, publisher={Elsevier} } 论文级

    2024年01月22日
    浏览(56)
  • 深度学习中有监督,无监督, 自监督学习

    有监督学习的特点,是数据集通常带有人工标签的数据集。 监督学习提供了一组输入输出对,这样我们就可以学习一个将输入映射到正确输出的中间系统。 监督学习的一个简单示例是根据图像数据集及其相应类别(我们将其称为标签)确定图像的类别(即,狗/猫等)。 对于

    2024年02月09日
    浏览(38)
  • 【零基础学机器学习 3】机器学习类型简介:监督学习 - 无监督学习 - 强化学习

    👨‍💻 作者简介:程序员半夏 , 一名全栈程序员,擅长使用各种编程语言和框架,如JavaScript、React、Node.js、Java、Python、Django、MySQL等.专注于大前端与后端的硬核干货分享,同时是一个随缘更新的UP主. 你可以在各个平台找到我! 🏆 本文收录于专栏: 零基础学机器学习 🔥 专栏

    2024年02月06日
    浏览(43)
  • Reid strong baseline知识蒸馏【附代码】

    本项目是在Reid strong baseline基础上进行的更新,实现的知识蒸馏。项目暂未加入目标检测部分,后期会不定时更新,请持续关注。 本项目Reid所用数据集为Markt1501,支持Resnet系列作为训练的baseline网络。训练采用 表征学习+度量学习 的方式,蒸馏 特征蒸馏 【暂未更新逻辑蒸馏

    2024年02月07日
    浏览(73)
  • 【状态估计】深度传感器与深度估计算法(1/3)

    获得空间中目标位置或距离的传感器,按接收的媒介波来源可分为主动式和被动式两大范畴,主动式包括激光雷达、雷达、超声波传感器等,被动式主要为单目、多目相机等,同时两大类可组合为混合类型传感器,深度(即距离)测量机制可分为基于(被动)视差原理的机制

    2024年02月22日
    浏览(33)
  • 非参数检验方法,核密度估计简介

    在20世纪,统计学还处于起步阶段计算机还不是那么流行的时候,假设正态分布是生成数据的标准。这主要是因为在那个所有结果都是手工计算的时代,正态分布可以使计算不那么繁琐。 但在这个大数据时代,随着计算能力的提高,数据的可用性使得统计学家采用了更现代的

    2024年02月07日
    浏览(41)
  • 自监督深度学习技术

    自监督学习(SSL)是机器学习的一种范式,用于处理未标记数据以获取有用的表示,以帮助下游学习任务。SSL方法最显著的特点是它们不需要人类标注的标签,这意味着它的训练完全基于由未标记的数据样本组成的数据集。典型的SSL流程包括在第一阶段学习监督信号(自动生

    2024年01月24日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包