monodepth-pytorch代码实现学习笔记(二)

前言

接上一篇博文,本篇博文介绍3-5部分内容

三、模型建立

算法采用encoder-decoder实现深度估计,默认模型基础为resnet18。因此,我以resnet18为主,进行了模型分析。模型调用在‘utils.py’文件中的‘get_model’函数,而模型的实现为‘models_resnet.py’文件,代码内容较为简单,不需要过多注释。根据程序,绘制了各模块的结构图,如下所示:

1. Unet模型机构

在这里插入图片描述

2. conv模块

在这里插入图片描述

3. resblock_basic模块

在这里插入图片描述

4. resconv_basic模块

在这里插入图片描述

5. upconv模块

在这里插入图片描述

6. get_disp模块

在这里插入图片描述

上述内容是resnet18模型结构的分析框图,需要注意的是,模型的默认输入尺寸为(256, 512),这也是上述分析中采用的尺寸,模型的输出为4个尺度上的视差特征图,且视差特征图的均为2,即左图视差和右图视差。

四、loss函数

代码的loss函数是在‘loss.py’文件中实现的,在这个文件中,只定义了一个MonodepthLoss类,这个类中定义了所有需要用到的函数,从forward开始执行,调用各功能包,实现loss函数,最后返回总loss值。这部分代码可以参照论文中的公式进行阅读,实现的过程比较清晰,我也在程序中做了简单的标注,参考如下:

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

以上是loss的全部内容,如有问题,请批评指正。

五、main函数

基于以上各个模块的介绍,最后介绍一下主程序,即文件‘main_monodepth_pytorch.py’,训练和测试的执行入口就是这个文件中的main()函数:

在这里插入图片描述

具体执行过程,就是调用上几节中介绍的各个功能模块,最终实现模型的训练和测试。训练模式下,输入是训练数据集,输出是训练好的模型;测试模式下,输入是待测试的数据集和训练好的模型,结果为视差值,且保存为‘disparities.npy’和‘disparities_pp.npy’文件。注意这个程序中,最终的测试结果是视差,而且范围在(0, 1),而不是深度值,深度值的转换需要相机参数。具体程序可参照:

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

总结

这篇博文中程序的截图多了一些,但这不是简单的把程序贴出来,那样做其实没有意义。我是通过对代码的学习,把学习的所得在代码中注释出来,希望能够对大家有所帮助,如有问题也请大家批评指正,不胜感激。

代码原作者GitHub链接: https://github.com/OniroAI/MonoDepth-PyTorch

  • 11
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值