标题:Towards Zero-Shot Scale-Aware Monocular Depth Estimation
作者:Vitor Guizilini, Igor Vasiljevic, Dian Chen, Rares Ambrus, Adrien Gaidon
机构:丰田研究所 (TRI)
原文链接:https://arxiv.org/abs/2306.17253
代码链接:https://github.com/tri-ml/vidar
官方主页:https://sites.google.com/t...
一、获取代码:
git clone --recurse-submodules https://github.com/TRI-ML/vidar.git
cd vidar
二、build,这里没有docker会报错,未报错的 跳过这一步骤即可:
make docker-build
#检查docker版本
docker --version
#安装docker
sudo apt update
sudo apt install docker.io
#启动Docker服务并使其在启动时自动运行
sudo systemctl start docker
sudo systemctl enable docker
尝试重新构建:make docker-build ,可能会开始构建docker镜像。
三、运行脚本:
make docker-interactive
如果报错,尝试修改cuda镜像:寻找合适的cuda镜像 ,(我的cuda为11.6)
#查询gpu相关信息,查询cuda信息
nvidia-smi
复制选择的镜像的命令:
#拉取镜像
docker pull nvidia/cuda:11.6.1-base-ubuntu20.04
#测试
docker run --rm --gpus all nvidia/cuda:11.6.1-base-ubuntu20.04 nvidia-smi
依然报错,要正确安装nvidia docker支持:安装nvidia docker支持 ,重启docker
#重启docker
sudo systemctl restart docker
#测试nvidia docker是否工作正常
docker run --rm --gpus all nvidia/cuda:11.6.1-base nvidia-smi
四、验证环境是否设置正确,可以运行简单的过拟合测试:
# Download a tiny subset of KITTI
mkdir /data/datasets
curl -s https://tri-ml-public.s3.amazonaws.com/github/vidar/datasets/KITTI_tiny.tar | tar xv -C /data/datasets/
# Inside docker
python scripts/launch.py configs/overfit/kitti/selfsup_resnet18.yaml
运行报错:
Traceback (most recent call last):
File "scripts/launch.py", line 8, in <module>
from vidar.core.trainer import Trainer
File "/workspace/vidar_release/vidar/core/trainer.py", line 10, in <module>
from vidar.core.logger import WandbLogger
File "/workspace/vidar_release/vidar/core/logger.py", line 14, in <module>
from vidar.utils.viz import viz_depth, viz_inv_depth, viz_normals, viz_optical_flow, viz_camera
File "/workspace/vidar_release/vidar/utils/viz.py", line 9, in <module>
from vidar.utils.depth import depth2inv
File "/workspace/vidar_release/vidar/utils/depth.py", line 7, in <module>
from vidar.geometry.camera import Camera
File "/workspace/vidar_release/vidar/geometry/camera.py", line 3, in <module>
from vidar.geometry.cameras.pinhole import CameraPinhole
File "/workspace/vidar_release/vidar/geometry/cameras/pinhole.py", line 4, in <module>
from torch_scatter import scatter_min
File "/usr/local/lib/python3.8/dist-packages/torch_scatter/__init__.py", line 16, in <module>
torch.ops.load_library(spec.origin)
File "/usr/local/lib/python3.8/dist-packages/torch/_ops.py", line 933, in load_library
ctypes.CDLL(path)
File "/usr/lib/python3.8/ctypes/__init__.py", line 373, in __init__
self._handle = _dlopen(self._name, mode)
OSError: /usr/local/lib/python3.8/dist-packages/torch_scatter/_version_cuda.so: undefined symbol: _ZN3c1017RegisterOperatorsD1Ev
检查环境兼容性
确保您的PyTorch版本和torch_scatter
版本是兼容的。在Dockerfile中设置的PyTorch版本为1.12.1(对应CUDA 11.3),而安装的是torch_scatter==2.0.9
。您需要查看torch_scatter
的文档或其GitHub仓库,确定这个版本是否与PyTorch版本兼容。
重新安装torch_scatter
pip uninstall torch_scatter
pip install torch_scatter
发现环境适配的torch-scatter版本是2.1.2
修改docker/Dockerfile文件
我这边即使修改版本后也会报错,仍需重新执行重新安装部分。
之后就正常了。
附链接: