【环境搭建】PointMVSNet实验配置及训练测试

202 阅读2分钟

环境配置

总体环境可以复用MVSNet的conda环境,激活MVSNet的conda环境后做如下修改

  1. install_dependencies.sh中选择当前没安装过的手动安装,不建议直接执行shell文件(比如cuda的版本可能出问题)

  2. pip install -r requirements.txt

    注意官方shell里最后一行少了后缀名

  3. 运行compile.sh进行编译

    PointMVSNet跟其他MVS方法有很大区别在于它的代码有C的部分,而且需要链接和编译,整体架构也离主脉络较远,但也要钦佩作者不循规蹈矩的勇气

【编译的一些问题】

  • 可能会报错TH_INDEX_BASE找不到,全剧搜索这个变量将其改为0即可
  • gather_knn_kernel.cu可能会报错AT_CHECK找不到,将CHECK开头所有宏函数的定义和使用都注释掉能成功编译

Train

  1. dtu_wde3.yaml中修改数据集路径

    其他参数可以不用动

  2. 推荐把CHECKPOINT_PERIOD改为1,默认4次才保存模型

  3. 如果想指定输出的位置,可以在第一行(DATA外面)指定OUTPUT_DIR

  4. 运行train.sh即可

  5. 需要查看tensorboard,修改tensorboard.sh里的位置运行该文件即可

Test / Eval

  1. 跟MVSNet很不一样,首先要下载DTU Rectified部分的数据集,有121G(sad...),然后新建Eval,把这个文件夹方金曲,最后再把Eval这个文件夹放到train/dtu/里,跟CamerasDepthsRectified并列,最终的文件结构如下:
.
├── Cameras
│   ├── train/
│   ├── 00000000_cam.txt
│   ├── pair.txt
│   └── ...
├── Depths
│   └── scan1_train/
│   └── ...
├── Eval
│   └── Rectified
│       ├── scan1/
│       │   ├── rect_001_0_r5000.png
│       │   └── ...
│       └── ...
└── Rectified
    └── scan1/
    └── ...
  1. 修改.yamlTEST.WEIGHT的位置,运行test.sh即可
  2. 注意运行test.py时必须指定只使用单GPUCUDA_VISIBLE_DEVICES=0,否则会报错TypeError: forward() missing 3 required positional arguments: 'data_batch', 'img_scales', and 'inter_scales'
  3. 最终的输出结果会在数据集Eval/

fusion

【报错:Error: no kernel image is available for execution on the device】