DetectoFreeSfM在服务器上的复现

疯狂吐槽+不知道对不对的爆改,以及:在GitHub上不更新配置和issue的都是坏人!

参考:GitHub:https://github.com/zju3dv/DetectorFreeSfM

全网根本就没人说这个啊!!!剧多的坑!!

一、配环境

1.cuda的问题:配置文件里面写的cuda11.7在我用的autodl上根本没有对应的镜像,自己安装错误百出!

2.环境配置依赖的问题:这里才是最大的坑啊啊啊啊啊!GitHub上面requirements文件的甚至都互相不兼容!!

所以下面是我的环境,在我的服务器上跑得还是可以的

镜像:

Miniconda  conda3

Python  3.10(ubuntu22.04)

Cuda  11.8

依赖:你就按照文件里面的装,但不要太相信版本号,做到相互之间兼容就行

这是我的pip list:里面由于我有其他用途,装了一些别的东西,可以参考需要用的。

Package                   Version      Editable project location
------------------------- ------------ -----------------------------------
absl-py                   2.1.0
addict                    2.4.0
aiohappyeyeballs          2.4.6
aiohttp                   3.11.12
aiosignal                 1.3.2
albucore                  0.0.23
albumentations            2.0.4
aliyun-python-sdk-core    2.16.0
aliyun-python-sdk-kms     2.16.5
annotated-types           0.7.0
antlr4-python3-runtime    4.9.3
astroid                   3.3.8
asttokens                 3.0.0
async-timeout             5.0.1
attrs                     25.1.0
av                        14.1.0
Brotli                    1.0.9
certifi                   2025.1.31
cffi                      1.17.1
charset-normalizer        3.3.2
click                     8.1.8
clip                      1.0          
colorama                  0.4.6
contourpy                 1.3.1
controlnet-aux            0.0.9
coverage                  6.5.0
crcmod                    1.7
cryptography              44.0.1
cycler                    0.11.0
decorator                 5.1.1
diffusers                 0.32.2
dill                      0.3.8
docker-pycreds            0.4.0
einops                    0.8.1
exceptiongroup            1.2.2
executing                 2.1.0
face-alignment            1.3.4
facexlib                  0.3.0
filelock                  3.14.0
filterpy                  1.4.5
flatbuffers               25.2.10
fonttools                 4.55.3
frozenlist                1.5.0
fsspec                    2025.2.0
ftfy                      6.3.1
gitdb                     4.0.12
GitPython                 3.1.44
gmpy2                     2.2.1
grpcio                    1.70.0
h5py                      3.12.1
huggingface-hub           0.28.1
hydra-core                1.3.2
idna                      3.7
imageio                   2.37.0
imageio-ffmpeg            0.4.4
importlib_metadata        8.6.1
iniconfig                 2.0.0
interrogate               1.7.0
ipdb                      0.13.13
ipython                   8.32.0
isort                     5.13.2
jax                       0.5.0
jaxlib                    0.5.0
jedi                      0.19.2
Jinja2                    3.1.5
jmespath                  0.10.0
joblib                    1.4.2
jsonschema                4.23.0
jsonschema-specifications 2024.10.1
kiwisolver                1.4.8
kornia                    0.8.0
kornia_rs                 0.1.8
lazy_loader               0.4
lightning                 2.5.0.post0
lightning-utilities       0.12.0
llvmlite                  0.44.0
lmdb                      1.6.2
loguru                    0.7.2
lpips                     0.1.4
Markdown                  3.7
markdown-it-py            3.0.0
MarkupSafe                3.0.2
matplotlib                3.10.0
matplotlib-inline         0.1.7
mccabe                    0.7.0
mdurl                     0.1.2
mediapipe                 0.10.21
mkl_fft                   1.3.11
mkl_random                1.2.8
mkl-service               2.4.0
ml_dtypes                 0.5.1
mmagic                    1.2.0.dev0   
mmcv                      2.1.0
mmcv-full                 1.7.2
mmdet                     3.3.0
mmedit                    0.16.1
mmengine                  0.10.6
model-index               0.1.11
mpmath                    1.3.0
msgpack                   1.1.0
multidict                 6.1.0
natsort                   8.4.0
networkx                  3.4.2
numba                     0.61.0
numpy                     1.26.4
nvidia-cublas-cu12        12.4.5.8
nvidia-cuda-cupti-cu12    12.4.127
nvidia-cuda-nvrtc-cu12    12.4.127
nvidia-cuda-runtime-cu12  12.4.127
nvidia-cudnn-cu12         9.1.0.70
nvidia-cufft-cu12         11.2.1.3
nvidia-curand-cu12        10.3.5.147
nvidia-cusolver-cu12      11.6.1.9
nvidia-cusparse-cu12      12.3.1.170
nvidia-cusparselt-cu12    0.6.2
nvidia-nccl-cu12          2.21.5
nvidia-nvjitlink-cu12     12.4.127
nvidia-nvtx-cu12          12.4.127
omegaconf                 2.3.0
open_clip_torch           2.30.0
opencv-contrib-python     4.11.0.86
opencv-python             4.11.0.86
opencv-python-headless    4.11.0.86
opendatalab               0.0.10
openmim                   0.3.9
openxlab                  0.1.2
opt_einsum                3.4.0
ordered-set               4.1.0
oss2                      2.17.0
packaging                 24.2
pandas                    2.2.3
parso                     0.8.4
pexpect                   4.9.0
pickle5                   0.0.11
pickleshare               0.7.5
pillow                    11.1.0
pip                       25.0
platformdirs              3.10.0
pluggy                    1.5.0
ply                       3.11
prompt_toolkit            3.0.50
propcache                 0.2.1
protobuf                  4.25.6
psutil                    7.0.0
ptyprocess                0.7.0
pure_eval                 0.2.3
py                        1.11.0
pycocotools               2.0.8
pycolmap                  0.6.1
pycparser                 2.22
pycryptodome              3.21.0
pydantic                  2.10.6
pydantic_core             2.27.2
Pygments                  2.19.1
pylint                    3.3.3
pyparsing                 3.2.0
PyQt5                     5.15.10
PyQt5_sip                 12.13.0
PySocks                   1.7.1
pytest                    8.3.4
python-dateutil           2.9.0.post0
pytorch-lightning         1.9.4
pytz                      2023.4
PyYAML                    6.0.2
ray                       2.42.1
referencing               0.36.2
regex                     2024.11.6
requests                  2.28.2
resize-right              0.0.2
rich                      13.4.2
roi_align                 0.0.2
rpds-py                   0.22.3
safetensors               0.5.2
scikit-image              0.25.1
scipy                     1.15.1
sentencepiece             0.2.0
sentry-sdk                2.21.0
setproctitle              1.3.4
setuptools                60.2.0
shapely                   2.0.7
simsimd                   6.2.1
sip                       6.7.12
six                       1.16.0
smmap                     5.0.2
sounddevice               0.5.1
stack_data                0.6.3
stringzilla               3.11.3
sympy                     1.13.1
tabulate                  0.9.0
tensorboard               2.19.0
tensorboard-data-server   0.7.2
termcolor                 2.5.0
terminaltables            3.1.10
tifffile                  2025.1.10
timm                      0.6.7
tokenizers                0.21.0
toml                      0.10.2
tomli                     2.0.1
tomlkit                   0.13.2
torch                     2.1.0+cu118
torchaudio                2.1.0+cu118
torchmetrics              1.6.1
torchvision               0.16.0+cu118
tornado                   6.4.2
tqdm                      4.65.2
traitlets                 5.14.3
transformers              4.48.3
triton                    2.1.0
typing_extensions         4.12.2
tzdata                    2025.1
unicodedata2              15.1.0
urllib3                   1.26.20
wandb                     0.19.6
wcwidth                   0.2.13
Werkzeug                  3.1.3
wheel                     0.45.1
yacs                      0.1.8
yapf                      0.43.0
yarl                      1.18.3
zipp                      3.21.0

二、数据集准备:这没什么说的,按照他的指示把所有数据集下载下来放到该放的位置即可

三、Modified COLMAP:最坑的来了!!!

1.首先此版本的colmap在官方colmap上是commit的#1607,他没改过的我都成功编译不了,更别提改过的了。

2.所以我采取的方法是把他所有对#1607的修改copy到一个我可以在我的环境上编译的colmap里面,就是colmap3.11.1,但是必然报很多版本不兼容的错误(主要集中在sfm.cc文件里面),接下来我就是一个个改错。

我把这里面的错误改到了可以成功编译,但是是不是对的我也不确定,因为目前来看它的训练效果并没有达到作者文章中所展示的程度(꒦_꒦) 。

这部分修改的代码由于不知道对不对所以先不放上来了,如果后续结果比较好我会二编放上来。

四、训练:这个部分我也折腾了很久,首先由于前面很多包为了符合我的环境和相互兼容,安的版本跟作者的都不一样了,所以首先改代码改了很久。

1.有许多直接会有下划线的报错就直接改,网上搜一下函数变更就行

2.最麻烦的是这个:pycolmap.verify_matches 函数的参数类型不匹配!!!我整了一个星期啊啊啊啊啊啊,全网搜一个回答都没有,GitHub上有人提了issue也不解答o(╥﹏╥)o,最后我只能用pdb打断点调试,一步一步找问题(感谢deepseek的倾情支持,要是少一点服务器繁忙就更好了)最后发现:

(1)verify_matches 函数不接受 max_num_trials 和 min_inlier_ratio 作为直接参数

(2)这些参数应该通过 TwoViewGeometryOptions 对象传递

更改方法,在triangulation.py文件中,找到verify_matches调用的位置,然后把代码改成:

from pycolmap import TwoViewGeometryOptions

# 创建 TwoViewGeometryOptions 对象并设置参数
options = TwoViewGeometryOptions()
options.max_num_trials = 20000
options.min_inlier_ratio = 0.1

# 调用 verify_matches
pycolmap.verify_matches(database_path, pairs_path, options)

3.最后是一些路径问题,这样运行是可以过编译的,即终端不会有错,但是训练不了,因为找不到colmap的结果。首先这个eval_dataset.py调用colmap就不成功,所以现阶段你可以手动调用:

colmap feature_extractor \
    --database_path /your/path/to/database.db \
--image_path /your/path/to/images
colmap exhaustive_matcher \
    --database_path /your/path/to/database.db \
colmap mapper \
    --database_path your/path/to/database.db \
--image_path /your/path/to/images
--output_path /your/path/to/sparse

调用后如果有结果至少说明你的colmap在运行上没有大问题,至于结果好不好只能看天了。

然后再运行的话如果还是报路径错误,这个时候就得去配置文件dfsfm.yaml里面看看了,是否每个需要修改的数据路径名字都改成现在需要运行的了。

这样运行就没啥问题了,但是我跑出来的结果可以说是惨不忍睹(꒦_꒦) ,不说了,改代码去了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值