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

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

    • 前言
    • 三、模型建立
      • 1. Unet模型机构
      • 2. conv模块
      • 3. resblock_basic模块
      • 4. resconv_basic模块
      • 5. upconv模块
      • 6. get_disp模块
    • 四、loss函数
    • 五、main函数
    • 总结

前言

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

三、模型建立

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

1. Unet模型机构

monodepth-pytorch代码实现学习笔记(二)_第1张图片

2. conv模块

monodepth-pytorch代码实现学习笔记(二)_第2张图片

3. resblock_basic模块

monodepth-pytorch代码实现学习笔记(二)_第3张图片

4. resconv_basic模块

monodepth-pytorch代码实现学习笔记(二)_第4张图片

5. upconv模块

monodepth-pytorch代码实现学习笔记(二)_第5张图片

6. get_disp模块

在这里插入图片描述

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

四、loss函数

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

monodepth-pytorch代码实现学习笔记(二)_第6张图片monodepth-pytorch代码实现学习笔记(二)_第7张图片monodepth-pytorch代码实现学习笔记(二)_第8张图片monodepth-pytorch代码实现学习笔记(二)_第9张图片monodepth-pytorch代码实现学习笔记(二)_第10张图片monodepth-pytorch代码实现学习笔记(二)_第11张图片monodepth-pytorch代码实现学习笔记(二)_第12张图片monodepth-pytorch代码实现学习笔记(二)_第13张图片monodepth-pytorch代码实现学习笔记(二)_第14张图片monodepth-pytorch代码实现学习笔记(二)_第15张图片monodepth-pytorch代码实现学习笔记(二)_第16张图片

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

五、main函数

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

monodepth-pytorch代码实现学习笔记(二)_第17张图片

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

monodepth-pytorch代码实现学习笔记(二)_第18张图片monodepth-pytorch代码实现学习笔记(二)_第19张图片monodepth-pytorch代码实现学习笔记(二)_第20张图片monodepth-pytorch代码实现学习笔记(二)_第21张图片monodepth-pytorch代码实现学习笔记(二)_第22张图片monodepth-pytorch代码实现学习笔记(二)_第23张图片monodepth-pytorch代码实现学习笔记(二)_第24张图片monodepth-pytorch代码实现学习笔记(二)_第25张图片monodepth-pytorch代码实现学习笔记(二)_第26张图片monodepth-pytorch代码实现学习笔记(二)_第27张图片monodepth-pytorch代码实现学习笔记(二)_第28张图片monodepth-pytorch代码实现学习笔记(二)_第29张图片

总结

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

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

你可能感兴趣的:(monodepth-pytorch代码实现学习笔记(二))