From 6b425f6f7557ffdb3e7146757b0706fb54b6573b Mon Sep 17 00:00:00 2001 From: Chung Min Kim Date: Tue, 23 Jan 2024 16:33:01 -0800 Subject: [PATCH 1/3] Use packaging.version for colmap version --- nerfstudio/process_data/colmap_utils.py | 10 ++++++---- pyproject.toml | 3 ++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/nerfstudio/process_data/colmap_utils.py b/nerfstudio/process_data/colmap_utils.py index 2f2ac3021a..8201aab9c9 100644 --- a/nerfstudio/process_data/colmap_utils.py +++ b/nerfstudio/process_data/colmap_utils.py @@ -19,6 +19,7 @@ import json from pathlib import Path from typing import Any, Dict, Literal, Optional, Union +from packaging.version import Version import appdirs import cv2 @@ -42,7 +43,7 @@ from nerfstudio.utils.scripts import run_command -def get_colmap_version(colmap_cmd: str, default_version=3.8) -> float: +def get_colmap_version(colmap_cmd: str, default_version=3.8) -> Version: """Returns the version of COLMAP. This code assumes that colmap returns a version string of the form "COLMAP 3.8 ..." which may not be true for all versions of COLMAP. @@ -57,9 +58,10 @@ def get_colmap_version(colmap_cmd: str, default_version=3.8) -> float: for line in output.split("\n"): if line.startswith("COLMAP"): version = line.split(" ")[1] - version = "".join([c for c in version if c.isdigit() or c == "."]) - return float(version) + version = Version(version) + return version CONSOLE.print(f"[bold red]Could not find COLMAP version. Using default {default_version}") + default_version = Version(str(default_version)) return default_version @@ -158,7 +160,7 @@ def run_colmap( f"--image_path {image_dir}", f"--output_path {sparse_dir}", ] - if colmap_version >= 3.7: + if colmap_version >= Version("3.7"): mapper_cmd.append("--Mapper.ba_global_function_tolerance=1e-6") mapper_cmd = " ".join(mapper_cmd) diff --git a/pyproject.toml b/pyproject.toml index 46602a4eff..6ee1f42d06 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,7 +65,8 @@ dependencies = [ "timm==0.6.7", "gsplat==0.1.2.1", "pytorch-msssim", - "pathos" + "pathos", + "packaging" ] [project.urls] From 8fecdbcf0342256bb1e74bd33e6d0fda64d666cc Mon Sep 17 00:00:00 2001 From: Chung Min Kim Date: Tue, 23 Jan 2024 16:52:35 -0800 Subject: [PATCH 2/3] Run ruff --- nerfstudio/process_data/colmap_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nerfstudio/process_data/colmap_utils.py b/nerfstudio/process_data/colmap_utils.py index 8201aab9c9..c8cb225b5e 100644 --- a/nerfstudio/process_data/colmap_utils.py +++ b/nerfstudio/process_data/colmap_utils.py @@ -19,13 +19,13 @@ import json from pathlib import Path from typing import Any, Dict, Literal, Optional, Union -from packaging.version import Version import appdirs import cv2 import numpy as np import requests import torch +from packaging.version import Version from rich.progress import track # TODO(1480) use pycolmap instead of colmap_parsing_utils From 65372f6b15255ed1e81e2a34ef06d9513d5343e2 Mon Sep 17 00:00:00 2001 From: Chung Min Kim Date: Wed, 24 Jan 2024 14:17:06 -0800 Subject: [PATCH 3/3] Change default_version to str type --- nerfstudio/process_data/colmap_utils.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/nerfstudio/process_data/colmap_utils.py b/nerfstudio/process_data/colmap_utils.py index c8cb225b5e..7860d10503 100644 --- a/nerfstudio/process_data/colmap_utils.py +++ b/nerfstudio/process_data/colmap_utils.py @@ -43,7 +43,7 @@ from nerfstudio.utils.scripts import run_command -def get_colmap_version(colmap_cmd: str, default_version=3.8) -> Version: +def get_colmap_version(colmap_cmd: str, default_version: str = "3.8") -> Version: """Returns the version of COLMAP. This code assumes that colmap returns a version string of the form "COLMAP 3.8 ..." which may not be true for all versions of COLMAP. @@ -61,8 +61,7 @@ def get_colmap_version(colmap_cmd: str, default_version=3.8) -> Version: version = Version(version) return version CONSOLE.print(f"[bold red]Could not find COLMAP version. Using default {default_version}") - default_version = Version(str(default_version)) - return default_version + return Version(default_version) def get_vocab_tree() -> Path: