[Mesh] SuGaR coarse mesh & refined mesh extraction
Coarse Mesh Extraction (coarse_mesh.py
)์ Refined Mesh Extraction (refined_mesh.py
)์ ์ฐจ์ด์
๋ ์คํฌ๋ฆฝํธ๋ Gaussian Splatting ๊ธฐ๋ฐ์ 3D ์ฌ๊ตฌ์ฑ ์์คํ ์์ ๋ฉ์๋ฅผ ์ถ์ถํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ ์คํฌ๋ฆฝํธ๋ ๋ค๋ฅด๊ฒ ์ ๊ทผํ๋ฉฐ, ๊ฐ๊ฐ์ ๋ชฉ์ ๊ณผ ์ธ๋ถ ์์ ์ด ๋ค๋ฆ ๋๋ค. ์๋์์ ์ฃผ์ ์ฐจ์ด์ ๊ณผ ํต์ฌ ์์๋ฅผ ์ค๋ช ํฉ๋๋ค.
์ฃผ์ ์ฐจ์ด์
- ๋ชจ๋ธ์ ๋จ๊ณ:
- Coarse Mesh Extraction (
coarse_mesh.py
): ์ด ์คํฌ๋ฆฝํธ๋ ์ด๊ธฐ ๋ชจ๋ธ(Coarse Model)์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ์ ์ธ 3D ๋ฉ์๋ฅผ ์ถ์ถํฉ๋๋ค. ์ฃผ๋ก ์ ํด์๋์ ์ด๊ธฐ ์ฌ๊ตฌ์ฑ์ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. - Refined Mesh Extraction (
refined_mesh.py
): ์ด ์คํฌ๋ฆฝํธ๋ ์ ์ ๋ ๋ชจ๋ธ(Refined Model)์ ์ฌ์ฉํ์ฌ ๊ณ ํด์๋์ ์ธ๋ฐํ 3D ๋ฉ์์ ํ ์ค์ฒ๋ฅผ ์ถ์ถํฉ๋๋ค. ์ฃผ๋ก ์ต์ข ์ ์ธ ์ธ๋ฐํ ์ฌ๊ตฌ์ฑ์ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
- Coarse Mesh Extraction (
- ํ
์ค์ฒ ์ฒ๋ฆฌ:
- Coarse Mesh Extraction: ํ ์ค์ฒ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ๋ช ์์ ์ผ๋ก ๋ค๋ฃจ์ง ์์ต๋๋ค.
- Refined Mesh Extraction: ํ ์ค์ฒ๋ฅผ ์ถ์ถํ๊ณ ์ด๋ฅผ ๋ฉ์์ ์ ์ฉํฉ๋๋ค. ํ ์ค์ฒ ๋งต๊ณผ UV ๋งต์ ์์ฑํ์ฌ ๋ณด๋ค ํ์ค๊ฐ ์๋ 3D ๋ชจ๋ธ์ ๋ง๋ญ๋๋ค.
- ํ์ฒ๋ฆฌ ๊ณผ์ :
- Coarse Mesh Extraction: ๋ฉ์๋ฅผ ์ถ์ถํ ํ, ์ ํด์๋์ ๋ฉ์์ ๋ํด ๋ค์ํ ์ ๋ฆฌ ์์ (์: ์ ๋ฐ๋ ๋ฒํ ์ค ์ ๊ฑฐ, ๋ฉ์ ์ ๋ฆฌ)์ ์ํํฉ๋๋ค.
- Refined Mesh Extraction: ๋ฉ์์ ํ์ฒ๋ฆฌ๋ฅผ ํตํด ๊ฒฝ๊ณ๋ฉด์ ์ ๋ฐ๋ ๊ฐ์ฐ์์์ ์ ๊ฑฐํ๊ณ ๋ฉ์๋ฅผ ๋ ๊น๋ํ๊ฒ ๋ง๋ญ๋๋ค.
ํต์ฌ ์์ ์์ฝ
coarse_mesh.py
- ๋ชจ๋ธ ๋ฐ ๋ฐ์ดํฐ ๋ก๋:
- Gaussian Splatting Wrapper์ ์ด๊ธฐ Coarse Model์ ๋ก๋ํฉ๋๋ค.
- ๊ฐ์ฐ์์ ํํฐ๋ง ๋ฐ ๋ฉ์ ์์ฑ:
- ์ ํด์๋์ ๊ฐ์ฐ์์ ํฌ์ธํธ ํด๋ผ์ฐ๋์์ ์ผ๊ฐํ ๋ฉ์๋ฅผ ์์ฑํฉ๋๋ค.
- ์ ๋ฐ๋ ๊ฐ์ฐ์์์ ์ ๊ฑฐํ์ฌ ๋ฉ์๋ฅผ ์ ๋ฆฌํฉ๋๋ค.
- ๋ฉ์ ์ ๋ฆฌ ๋ฐ ์ ์ฅ:
- Poisson surface reconstruction์ ํตํด ํฌ์ธํธ ํด๋ผ์ฐ๋๋ก๋ถํฐ ์ผ๊ฐํ ๋ฉ์๋ฅผ ์์ฑํฉ๋๋ค.
- ๋ฉ์๋ฅผ ์ ๋ฆฌํ๊ณ , ๋์๋ฉ์ด์ (decimation)์ ํตํด ๊ฐ์ํํ ํ ์ ์ฅํฉ๋๋ค.
refined_mesh.py
- ๋ชจ๋ธ ๋ฐ ๋ฐ์ดํฐ ๋ก๋:
- refined model์ ๋ก๋ํฉ๋๋ค.
- ์ด์ ์ ์ถ์ถ๋ Coarse Mesh๋ฅผ ๋ก๋ํฉ๋๋ค.
- ํ
์ค์ฒ ์ถ์ถ:
- refined model์์ ํ ์ค์ฒ์ UV ๋งต์ ์ถ์ถํฉ๋๋ค.
- ํ ์ค์ฒ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ๋ฉ์์ ์ ์ฉํฉ๋๋ค.
- ๋ฉ์ ํ์ฒ๋ฆฌ ๋ฐ ์ ์ฅ:
- ๊ฒฝ๊ณ๋ฉด์ ์ ๋ฐ๋ ๊ฐ์ฐ์์์ ์ ๊ฑฐํ์ฌ ๋ฉ์๋ฅผ ์ ๋ฆฌํฉ๋๋ค.
- ํ ์ค์ฒ๊ฐ ์ ์ฉ๋ ๋ฉ์๋ฅผ ์ ์ฅํฉ๋๋ค.
์ข ํฉ ๋น๊ต
- Coarse Mesh Extraction:
- ๋ชฉํ: ์ด๊ธฐ 3D ๋ฉ์๋ฅผ ์์ฑํ๊ณ , ์ ๋ฐ๋ ๊ฐ์ฐ์์์ ์ ๊ฑฐํ์ฌ ์ ๋ฆฌ๋ ์ ํด์๋ ๋ฉ์๋ฅผ ์ป๋ ๊ฒ.
- ํน์ง: ํฌ์ธํธ ํด๋ผ์ฐ๋์ Poisson Surface Reconstruction์ ์ฌ์ฉ.
- Refined Mesh Extraction:
- ๋ชฉํ: ๊ณ ํด์๋์ ์ธ๋ฐํ 3D ๋ฉ์์ ํ ์ค์ฒ๋ฅผ ์ถ์ถํ์ฌ ์ต์ข ๋ชจ๋ธ์ ์์ฑํ๋ ๊ฒ.
- ํน์ง: ํ ์ค์ฒ ๋งต๊ณผ UV ๋งต์ ์์ฑํ์ฌ ๋ณด๋ค ํ์ค๊ฐ ์๋ ๋ชจ๋ธ์ ๊ตฌ์ฑ.
์ด ๋ ์คํฌ๋ฆฝํธ๋ 3D ๋ชจ๋ธ๋ง์ ์๋ก ๋ค๋ฅธ ๋จ๊ณ์์ ์ฌ์ฉ๋๋ฉฐ, ๊ฐ๊ฐ์ ์คํฌ๋ฆฝํธ๋ ํด๋น ๋จ๊ณ์ ๋ชฉํ์ ๋ง์ถ์ด ์ต์ ํ๋์ด ์์ต๋๋ค. coarse_mesh.py
๋ ์ด๊ธฐ ์ฌ๊ตฌ์ฑ ๋จ๊ณ์์ ์ฌ์ฉ๋๊ณ , refined_mesh.py
๋ ์ต์ข
๋จ๊ณ์ ์ธ๋ฐํ ์ฌ๊ตฌ์ฑ ๋ฐ ํ
์ค์ฒ๋ง์ ์ฌ์ฉ๋ฉ๋๋ค.
์ฝ๋ ๋ถ์
๊ธฐ๋ณธ logging ํด (CONSOLE)
CONSOLE์ rich ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ Console ๊ฐ์ฒด๋ก, ํฐ๋ฏธ๋์์ ๋ ๋์ ์ถ๋ ฅ์ ์ ๊ณตํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. rich ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํฐ๋ฏธ๋์์ ์ปฌ๋ฌ ํ ์คํธ, ํ, ํธ๋ฆฌ, ๋ก๊น ๋ฑ์ ์ฝ๊ฒ ์ถ๋ ฅํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
-
CONSOLE ๊ฐ์ฒด๋ ์คํฌ๋ฆฝํธ ์คํ ์ค ์ฃผ์ ์ ๋ณด๋ฅผ ์ฝ์์ ์ถ๋ ฅํ๊ณ , ํ ์คํธ๋ฅผ ์ปฌ๋ฌ๋ก ์ถ๋ ฅํ๊ฑฐ๋ ํน์ ๋๋น๋ฅผ ๊ฐ์ง๋ ํ์์ผ๋ก ์ถ๋ ฅํ ์ ์๊ฒ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Console(width=120)๋ ์ถ๋ ฅ ๋๋น๋ฅผ 120 ๊ธ์๋ก ์ค์ ํ์ฌ ๊ฐ๋ ์ฑ์ ๋์ ๋๋ค. ์ด๋ฅผ ํตํด ๋ชจ๋ธ ๋ก๋ ์ํ, ๋ฉ์ ์์ฑ ์ํ, ํ ์ค์ฒ ์ถ์ถ ์ํ ๋ฑ์ ์ฌ์ฉ์์๊ฒ ์๋ฆฝ๋๋ค.
# coarse_sdf.py from rich.console import Console def coarse_training_with_sdf_regularization(args): CONSOLE = Console(width=120) ... CONSOLE.print("-----Parsed parameters-----") CONSOLE.print("Source path:", source_path) CONSOLE.print(" > Content:", len(os.listdir(source_path))) CONSOLE.print("Gaussian Splatting checkpoint path:", gs_checkpoint_path) CONSOLE.print(" > Content:", len(os.listdir(gs_checkpoint_path))) CONSOLE.print("SUGAR checkpoint path:", sugar_checkpoint_path) CONSOLE.print("Iteration to load:", iteration_to_load) CONSOLE.print("Output directory:", args.output_dir) CONSOLE.print("SDF estimation factor:", sdf_estimation_factor) CONSOLE.print("SDF better normal factor:", sdf_better_normal_factor) CONSOLE.print("Eval split:", use_eval_split) CONSOLE.print("White background:", use_white_background) CONSOLE.print("---------------------------") ...
์ถ๋ ฅ ๊ฒฐ๊ณผ
Leave a comment