Download docs/presentation/new_blocks.py from kimjunhan/vkgs-sim: direct link, hf CLI and curl.
- Browser
- Download file 17 kB
-
https://huggingface.co/kimjunhan/vkgs-sim/resolve/main/docs/presentation/new_blocks.py
- Command line
-
hf download hf://kimjunhan/vkgs-sim/docs/presentation/new_blocks.py
-
curl -L -o new_blocks.py https://huggingface.co/kimjunhan/vkgs-sim/resolve/main/docs/presentation/new_blocks.py
17 kB
| # ================================================================== โ ก. ์๋ฎฌ๋ ์ด์ ์์ง ์ํคํ ์ฒ | |
| divider(slides[6], "์๋ฎฌ๋ ์ด์ ์์ง ์ํคํ ์ฒ", "Vulkan ๊ธฐ๋ฐ ์๋ฎฌ๋ ์ด์ ์์ง์ ์ ์ฒด ๊ตฌ์กฐ, ํ ํ๋ ์์ ๋ ๋ ๊ทธ๋ํ, ์๋ฎฌ๋ ์ด์ ๋ฃจํ, Python ๊ณผ์ ๋ฐ์ดํฐ ์ธํฐํ์ด์ค๋ฅผ ์ค๋ช ํ๋ค.") | |
| def module(sl, x, y, w, h, title, desc, fill=WHITE, line=LIGHT, tcolor=NAVY, dcolor=GRAY, size=10): | |
| box(sl, x, y, w, h, "", fill=fill, line=line) | |
| tb(sl, x + 0.06, y + 0.04, w - 0.12, 0.26, title, size=size + 1, bold=True, color=tcolor) | |
| tb(sl, x + 0.06, y + 0.3, w - 0.12, h - 0.32, desc, size=size, color=dcolor) | |
| def figure(sl, path, y, w=11.8, h=4.4, x=0.85): | |
| im = Image.open(path) | |
| s_ = min(w / im.width, h / im.height) | |
| ww, hh = im.width * s_, im.height * s_ | |
| return sl.shapes.add_picture(path, Inches(x + (w - ww) / 2), Inches(y), Inches(ww), Inches(hh)) | |
| def down_arrow(sl, x, y, w=0.26, h=0.26, color=BLUE): | |
| s_ = sl.shapes.add_shape(MSO_SHAPE.DOWN_ARROW, Inches(x), Inches(y), Inches(w), Inches(h)) | |
| s_.fill.solid() | |
| s_.fill.fore_color.rgb = color | |
| s_.line.fill.background() | |
| s_.shadow.inherit = False | |
| # ------------------------------------------------------------------ 8 ์์ง ์ ์ฒด ๊ตฌ์กฐ๋ | |
| s = slides[7] | |
| y = body(s, "์์ง ๊ตฌ์กฐ", "์๋ฎฌ๋ ์ด์ ์์ง ์ ์ฒด ๊ตฌ์กฐ๋", [ | |
| "(a) CPU ์๋ฎฌ๋ ์ด์ ๋ฃจํ๊ฐ ๋งค ํ๋ ์ ์ ์ด ยท ์์ฐจ ๋์ญํ ยท ์ถฉ๋ ยท ๊ตฌ๊ฐ ์คํธ๋ฆฌ๋ฐ ยท ์ผ์ ยท ๊ธฐ๋ก์ ์ฒ๋ฆฌํ๊ณ , (b) GPU ๋ ๋ ๊ทธ๋ํ๊ฐ ๊ฐ์ฐ์์ โ ์ ๋ ฌ โ ๋์คํฐ โ ํ์ฒ๋ฆฌ๋ก ์์์ ๋ง๋ฆ (๊ทธ๋ฆผ์ ๊ฐ ๋จ๊ณ๋ scene-0402 ์ค์ ๋ฐ์ดํฐ)", | |
| ]) | |
| figure(s, "/home/mm/Downloads/vkgs-sim/docs/presentation/figures/out/fig_engine_pipeline.png", y + 0.02, h=6.98 - (y + 0.02)) | |
| notes(s, "์ฐธ๊ณ ํ ๋์ ํ์: 3DGS (Kerbl 2023) ์ต์ ํ ํ์ดํ๋ผ์ธ, HUGSIM ยท OmniRe ๊ฐ์๋ โ ๋จ๊ณ๋ง๋ค ์ค์ ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ ์ค๋ค. (a) ์ ์ฅ์ ๋ฌผ ์ง๋ ยท ๊ตฌ๊ฐ ยท ๋ผ์ด๋ค ยท ์๋ ๊ธฐ๋ก, (b) ์ ๊ฐ์ฐ์์ ยท ํ๋ฉด ํ์ ยท ์ ๋ ฌ ์์ ยท ํ๋ ยท ์ ยท ๊ฑฐ๋ฆฌ๋ ๋ชจ๋ scene-0402 ๊ตฌ๊ฐ 1 ๋ชจ๋ธ๊ณผ ์ค์ ์ฃผํ ๋ก๊ทธ์์ ๋ง๋ ๊ทธ๋ฆผ์ด๋ค. ์์ง์ ํ๋์ ์คํ ํ์ผ(vkgs_viewer)์ด๊ณ , ์ฐฝ ๋ชจ๋(์๋ฎฌ๋ ์ดํฐ)์ ์คํ์คํฌ๋ฆฐ ๋ชจ๋(๋ฐ์ดํฐ ๋ ๋ ยท ์ฆ๊ฐ)๊ฐ ๊ฐ์ ๋ ๋๋ฌ๋ฅผ ์ด๋ค.") | |
| # ------------------------------------------------------------------ 9 ๋ ๋ ๊ทธ๋ํ ํ์ดํ๋ผ์ธ | |
| s = slides[8] | |
| y = body(s, "์์ง ๊ตฌ์กฐ", "๋ ๋ ๊ทธ๋ํ โ ํ ํ๋ ์์ ํจ์ค ํ์ดํ๋ผ์ธ", [ | |
| "ํ๋ ์ ๊ตฌ์ฑ์ configs/render_graph.json ์ด ์ ํจ โ ํจ์ค๋ง๋ค ์ฐ๋ ์์๊ณผ ์ฉ๋ (uses) ๋ฅผ ์ ์ธํ๋ฉด ๊ทธ๋ํ๊ฐ ๋ฐฐ๋ฆฌ์ด ยท ๋ ์ด์์ ์ ํ์ ์๋์ผ๋ก ์ฝ์ ํจ", | |
| "๊ฐ์ฐ์์ SSBO โ preprocess (ํฌ์ ยท SH ยท ๋ณด์ด๋ ๊ฒ๋ง ์์ถ) โ GPU radix ์ ๋ ฌ โ ํ๋ ๋ฐฐ๊ฒฝ โ ์คํ๋ซ ๋์คํฐ (RGBA16F ์ + r32f ๊ฑฐ๋ฆฌ) โ ํ์ฒ๋ฆฌ โ 800ร450 ์ฅ๋น ์ฝ 6.8 ms", | |
| ]) | |
| figure(s, "/home/mm/Downloads/vkgs-sim/docs/presentation/figures/out/fig_engine_pipeline_b.png", y + 0.1, h=6.95 - (y + 0.1)) | |
| notes(s, "์ค์ ํจ์ค ์์: clear_draw_args โ preprocess โ sort โ readback_count โ background โ scene โ precip โ weather โ fxaa โ fxaa_resolve โ to_present (camera_isp ๊บผ์ง). ์ธก์ (800ร450): preprocess 2.02 ms, sort 0.44 ms (์ด์ bitonic 31~35 ms ๋๋น 13๋ฐฐ), scene 4.38 ms. preprocess ๊ฐ 200๋ง ๊ฐ ์ค ๋ณด์ด๋ ์ฝ 25~46๋ง ๊ฐ๋ง ์์ถํด ์ ๋ ฌ ๋์์ ์ค์ธ๋ค. RGBA16F ๋ธ๋ ๋ฉ์ 32๋นํธ ๋๋น 64 dB, ๊ฑฐ๋ฆฌ ๋์ ์ ์ผ์ ยท ๋ ์จ ยท ๋ฐ์ฌ์ ์ด๋ค.") | |
| # ------------------------------------------------------------------ 10 ์๋ฎฌ๋ ์ด์ ๋ฃจํ | |
| s = slides[9] | |
| y = body(s, "์์ง ๊ตฌ์กฐ", "์๋ฎฌ๋ ์ด์ ๋ฃจํ โ ํ ํ๋ ์์ ์ผ์ด๋๋ ์ผ", [ | |
| "์ ์ด ์ ๋ ฅ โ ์์ฐจ ์ ๋ถ ยท ์ถฉ๋ โ ๊ตฌ๊ฐ ์ ํ โ ์ผ์ โ ๋ ๋ โ ๊ธฐ๋ก์ ์์๋ก ๋งค ํ๋ ์์ ์ฒ๋ฆฌํ๋ฉฐ, ์คํฌ๋ฆฝํธ ์ ์ด๋ 50 ms ๊ณ ์ ์คํ ์ด๋ผ ์ฌํ ๊ฐ๋ฅํจ", | |
| "VLA ๋ชจ๋ธ์ '์ ์ด ์ ๋ ฅ' ์๋ฆฌ์ ๋ค์ด์ 6์บ (+ ์ผ์) ๊ด์ธก์ ๋ฐ๊ณ ์กฐํฅ ยท ๊ฐ์์ ๋๋ ค์ฃผ๋ ๊ตฌ์กฐ โ ๊ธฐ๋ก๋ ์ ์ด๋ drive_log.csv ๋ก ๋จ์ (์ค๋ฅธ์ชฝ: ์ค์ ์ํ ์ฃผํ์ ์๋)", | |
| ]) | |
| pic = figure(s, "/home/mm/Downloads/vkgs-sim/docs/presentation/figures/out/fig_engine_pipeline_a.png", y + 0.05, h=2.75) | |
| yy = y + 0.2 + pic.height / 914400 | |
| table(s, 0.85, yy, 11.8, [["๋จ๊ณ", "ํต์ฌ ์ฒ๋ฆฌ"], | |
| ["โข ์ถฉ๋", "์ฐจ์ฒด ์ํ 0.1 m ๊ฒฉ์ ยท ๊น์ด = ๋ฟ์ ์ โ ์ค์นจ (2) ยท ๊ฐ์ ๋ฐฉํฅ 0.3 m ์์ด ๋ ๊น์ง ์์ผ๋ฉด ํ์ฉ (๊ฐํ ๋ฐฉ์ง)"], | |
| ["โฃ ๊ตฌ๊ฐ", "๋ด๋น ๊ถค์ ์ด ๊ฐ์ฅ ๊ฐ๊น์ด ๊ตฌ๊ฐ ยท 3 m ํ์คํ ๋ฆฌ์์ค ยท ๊ฐ๊น์ด 3๊ตฌ๊ฐ ๋น๋๊ธฐ ๋ก๋ ยท ๊ต์ฒด 0.19์ด"], | |
| ["โค ์ผ์", "๋ค ๋ฐํด ์๋ฆฌ ์ง๋ฉด ๋์ด๋ก z ยท pitch ยท roll โ ๋ผ์ด๋ค 32 ร 1,091 ๊ด์ DDA 4 ms ยท ๋ ์ด๋ 5๋ ๋ํ๋ฌ"]], | |
| [0.1, 0.9], size=10, rowh=0.29) | |
| notes(s, "โข ์ฅ์ ๋ฌผ ์ง๋์ ์ธํจ์ด ์นธ์ด๋ ํ๋จ ๊ฐ์ฅ์๋ฆฌ ํ ์นธ์ ์ฐจ์ฒด ์์ด ์ค์น๊ธฐ๋ง ํด๋ ๋งํ ๊ฐํ๋ ๋ฌธ์ ๋ฅผ ์ค์นจ ํ์ฉ๊ณผ ํ์ถ ํ์ ์ผ๋ก ํด๊ฒฐํ๋ค. โค ๊ธฐ์ธ์ด์ง ๊ธธ์ ๋ฌด์ํ๋ฉด ๋ฎ์ ๋น์ ๋ ธ๋ฉด ๊ฑฐ๋ฆฌ๊ฐ 20% ๋๊ฒ ์งง์์ ธ ๋ ธ๋ฉด์ ์ํ๋ค.") | |
| # ------------------------------------------------------------------ 11 ๋ฐ์ดํฐ ์ธํฐํ์ด์ค | |
| s = slides[10] | |
| y = body(s, "์์ง ๊ตฌ์กฐ", "Python โ ์์ง ๋ฐ์ดํฐ ์ธํฐํ์ด์ค", [ | |
| "์์ง๊ณผ Python ์ ์ฌ๋์ด ์ฝ์ ์ ์๋ ํ์ผ๋ก๋ง ์ฐ๊ฒฐ๋จ โ ๊ฐ ํ์ผ์ ๋ฌด์์ผ๋ก ๋ง๋ค์๋์ง export.json ์ ๋จ๊ธฐ๊ณ , ๋ชจ๋ธ ยท ์๊ณ ๋ฆฌ์ฆ์ด ๋ฐ๋๋ฉด ์๋์ผ๋ก ๋ค์ ๋ง๋ฆ", | |
| ]) | |
| table(s, 0.85, y + 0.15, 11.8, [ | |
| ["ํ์ผ", "๋ง๋๋ ๊ณณ (Python)", "๋ด์ฉ", "์์ง์์ ์ฐ๋ ๊ณณ"], | |
| ["point_cloud.ply (๊ตฌ๊ฐ๋ง๋ค)", "recon train", "๊ฐ์ฐ์์ + ์์ ์ฃผ์ (nusim_origin)", "๋ ๋๋ฌ ยท SegmentStreamer"], | |
| ["segments.txt", "render/segmap.py", "๊ตฌ๊ฐ ์์ ์ฐจ ยท ๋ด๋น ๊ถค์ ์ ", "SegmentMap (๊ตฌ๊ฐ ์ ํ)"], | |
| ["rig.txt", "render/export.py", "ํ๋ ์๋ณ 6์บ w2c ยท ์์ฐจ ํฌ์ฆ ยท ๊ฐ์ฒด ๋ฐ์ค", "์ฌ์ ยท ์ด์ ์นด๋ฉ๋ผ ยท ์ฆ๊ฐ"], | |
| ["map.txt ยท drivable.txt", "render/export.py", "๋งต ์ ยท ์ฃผํ๊ฐ๋ฅ์์ญ ํด๋ฆฌ๊ณค", "์ค๋ฒ๋ ์ด ยท ์ฐ์ ํ์ "], | |
| ["obstacles.pgm", "sim/obstacles.py", "0.2 m ์ฅ์ ๋ฌผ ๊ฒฉ์ (์ ์ ๋ผ์ด๋ค)", "์ถฉ๋ ํ์ "], | |
| ["world.vox", "sim/voxels.py + vkgs_voxcarve", "0.2 m ๋ณต์ + 0.5 m ์ง๋ฉด ๋์ด ์ง๋", "๋ผ์ด๋ค ยท ๋ ์ด๋ ยท ๋ ธ๋ฉด ์ ์ฐฉ"], | |
| ["sky.ktx2 ยท IBL", "recon/sky.py ยท render/ibl.py", "ํ์ต ํ๋ ํ๋ธ๋งต ยท ํ๊ฒฝ๊ด (BC6H)", "background ยท glTF ์กฐ๋ช "], | |
| ["sim.json ยท render_graph.json", "configs/", "๋ ์จ ยท ์ผ์ ยท ์ถฉ๋ ยท ์นด๋ฉ๋ผ ยท ํจ์ค ๊ตฌ์ฑ", "์์ง ์ ์ฒด ์ค์ "], | |
| ], [0.22, 0.24, 0.32, 0.22], size=10, rowh=0.42) | |
| notes(s, "ํ๋์ฝ๋ฉ์ ์ค์ด๊ธฐ ์ํด ์กฐ์ ๊ฐ์ ๋ชจ๋ configs/ ์ ์๋ค. ์ขํ๊ณ๋ nusim/data/rig.py ์ docstring ์ด ์ ์ผํ ์ถ์ฒ๋ค. ๋ชจ๋ ํ์ผ์ ๊ทธ ๋ชจ๋ธ์ ์์ ๊ธฐ์ค ์ขํ๋ฅผ ์ด๋ค.") | |
| # ================================================================== โ ข. ๋ฉํฐ๋ทฐ ์์ ๋ณํ ๋ชจ๋ธ ์ํคํ ์ฒ | |
| divider(slides[12], "๋ฉํฐ๋ทฐ ์์ ๋ณํ ๋ชจ๋ธ ์ํคํ ์ฒ", "6์บ ๋ฉํฐ๋ทฐ ์์์ ์๋ก์ด ์นด๋ฉ๋ผ ๋ฐฐ์น๋ก ๋ณํํ๋ ๋ชจ๋ธ โ ๊ตฌ๊ฐ๋ณ 3DGS ์ฌ๊ตฌ์ฑ ๋ชจ๋ธ์ ๊ตฌ์กฐ, ๋ชจ๋, ์์ค ํจ์, ๋ฆฌ๊ทธ ๋ณํ์ ์ค๋ช ํ๋ค.") | |
| # ------------------------------------------------------------------ 14 ๋ชจ๋ธ ์ ์ฒด ๊ตฌ์กฐ๋ | |
| s = slides[13] | |
| y = body(s, "๋ชจ๋ธ ๊ตฌ์กฐ", "๋ฉํฐ๋ทฐ ์์ ๋ณํ ๋ชจ๋ธ ์ ์ฒด ๊ตฌ์กฐ๋", [ | |
| "๊ตฌ๊ฐ๋ง๋ค ๋ฉํฐ๋ทฐ ์ฌ์ง ยท ๋ผ์ด๋ค๋ก 3DGS ์ฅ๋ฉด์ ํ์ต: ๋ผ์ด๋ค ์ด๊ธฐํ โ 3D ๊ฐ์ฐ์์ โ ๋ฏธ๋ถ ๋์คํฐ๋ผ์ด์ โ ๋ ๋ (์ ยท ๊น์ด) โ ์ฌ์ง ยท ๋ผ์ด๋ค ยท ๋ง์คํฌ ๊ฐ๋ โ ์ญ์ ํ", | |
| "ํ์ต๋ ์ฅ๋ฉด์ ๋ฆฌ๊ทธ ๋ณํ T ๋ฅผ ์ค 6์บ ์ผ๋ก ๋ค์ ๋ ๋๋งํด ์ ์์ ๋ฐ์ดํฐ๋ฅผ ์์ฑ (๊ทธ๋ฆผ์ ๊ฐ ๋จ๊ณ๋ scene-0402 ์ค์ ๋ฐ์ดํฐ)", | |
| ]) | |
| figure(s, "/home/mm/Downloads/vkgs-sim/docs/presentation/figures/out/fig_viewpoint_model_a.png", y + 0.15, h=6.9 - (y + 0.15)) | |
| notes(s, "์ฐธ๊ณ ํ ๋์ ํ์: 3DGS (Kerbl 2023) Fig. 2 ์ต์ ํ ํ์ดํ๋ผ์ธ โ ์ด๊ธฐ ์ โ 3D ๊ฐ์ฐ์์ โ ํฌ์ ยท ํ์ผ ๋์คํฐ โ ์ด๋ฏธ์ง, ๊ทธ๋ฆฌ๊ณ gradient ๋๋๋ฆผ. ์ฌ๊ธฐ์๋ SfM ์ ๋์ ๋ผ์ด๋ค ๋์ ์ผ๋ก ์ด๊ธฐํํ๊ณ , ์ฌ์ง ์์ค์ ๋ผ์ด๋ค ๊น์ด ยท ํ๋ ยท ์ ๊ทํ๋ฅผ ๋ํ๋ค. (b) ๋ ์์ ๋ณํ์ด ํ์ต์ด ์๋๋ผ '์ ์นด๋ฉ๋ผ ๋ฐฐ์น๋ก ๋ค์ ์ฐ๊ธฐ' ์์ ๋ณด์ธ๋ค. ์ค๋ฅธ์ชฝ 9์ฅ์ ๊ฐ์ ์๊ฐ์ ์ ์นด๋ฉ๋ผ ๋ณํ 9์ข ์ด๋ค.") | |
| # ------------------------------------------------------------------ 15 ์ฅ๋ฉด ํํ ยท ๋ฏธ๋ถ ๋ ๋๋ฌ | |
| s = slides[14] | |
| y = body(s, "๋ชจ๋ธ ๊ตฌ์กฐ", "๋ชจ๋ โ ์ฅ๋ฉด ํํ ๋ฐ ๋ฏธ๋ถ ๋์คํฐ๋ผ์ด์ ", [ | |
| "์ฅ๋ฉด ๋ชจ๋ธ์ ์ ๊ฒฝ๋ง์ด ์๋ ๋ช ์์ ๊ฐ์ฐ์์ ์งํฉ์ด๋ฉฐ, ๋ผ์ด๋ค๋ก ์ด๊ธฐํํ๊ณ 3DGS-MCMC ๋ก ๊ฐ์ (์ต๋ 200๋ง) ๋ฅผ ์ ์งํ๋ฉฐ ์์น๋ฅผ ์ฌ๋ฐฐ์นํจ", | |
| "๋ฏธ๋ถ ๋์คํฐ๋ผ์ด์ (gsplat 1.4.0) ๊ฐ ์ ยท ๋ถํฌ๋ช ๋ ยท ๊น์ด๋ฅผ ํจ๊ป ๋ ๋๋งํ๊ณ , ๊ทธ gradient ๋ก ๋ชจ๋ ๊ฐ์ฐ์์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐฑ์ ํจ", | |
| ]) | |
| box(s, 0.85, y + 0.15, 5.75, 3.55, "", fill=PALE, line=BLUE) | |
| tb(s, 0.95, y + 0.2, 5.5, 0.3, "๊ฐ์ฐ์์ ์ฅ๋ฉด G", size=13, bold=True, color=NAVY) | |
| table(s, 1.0, y + 0.58, 5.45, [["ํญ๋ชฉ", "์ค์ "], ["์ด๊ธฐํ", "์ ์ ๋ผ์ด๋ค ๋์ (์ฝ 400 sweep) โ ๋ณต์ โ ์ฌ์ง ํฌ์ ์"], | |
| ["ํ๋ผ๋ฏธํฐ", "ฮผ ยท ์ค์ผ์ผ ยท ์ฟผํฐ๋์ธ ยท ฮฑ ยท SH (3์ฐจ, 1,000 ์คํ ๋ง๋ค ์ฐจ์ ์ฆ๊ฐ)"], | |
| ["๋ฐ๋ ์ ์ด", "MCMC: ์ํ 200๋ง, ๋ฎ์ ฮฑ ์ฌ๋ฐฐ์น, ์์น ์ก์ (lr 5e5)"], | |
| ["์ ๊ทํ", "๋ถํฌ๋ช ๋ ยท ์ค์ผ์ผ ํ๊ท ๊ฐ 0.01 (๋ณด์ด๋ ๊ฒ๋ง ์ต์ )"], | |
| ["๊ฐ๋ฆผ", "์ฐจ๋ ยท ์ฌ๋ 3D ๋ฐ์ค โ ์ฌ์ง ยท ๋ผ์ด๋ค์์ ์ ์ธ"]], [0.25, 0.75], size=10, rowh=0.44) | |
| box(s, 6.9, y + 0.15, 5.75, 3.55, "", fill=PALE, line=BLUE) | |
| tb(s, 7.0, y + 0.2, 5.5, 0.3, "๋ฏธ๋ถ ๋์คํฐ๋ผ์ด์ (gsplat)", size=13, bold=True, color=NAVY) | |
| rs = [("ํฌ์", "ฮฃโฒ = J W ฮฃ Wแต Jแต, ๋ณด๋ ๋ฐฉํฅ์ผ๋ก SH ์ ๊ณ์ฐ"), ("ํ์ผ ์ ๋ ฌ", "16ร16 ํ์ผ๋ง๋ค ๊ฒน์น๋ ๊ฐ์ฐ์์์ ๊น์ด์ ์ ๋ ฌ"), | |
| ("์ํ ๋ธ๋ ๋ฉ", "C = ฮฃ cแตข ฮฑแตข ฮ (1 โ ฮฑโฑผ), ฮฑ ๋์ ยท ๊ธฐ๋ ๊น์ด D"), ("์ญ์ ํ", "ฮผ ยท ฮฃ ยท ฮฑ ยท SH ๋ก gradient (packed ๋ชจ๋)"), | |
| ("์นด๋ฉ๋ผ ํ๋ ฌ", "view gradient ๋ (2.2๋ฐฐ ๋๋ ค์ง) โ ฮ ๋ ๋ณ๋ ๋ชจ๋")] | |
| for k, (t, d) in enumerate(rs): | |
| box(s, 7.05, y + 0.6 + k * 0.6, 1.5, 0.5, t, fill=NAVY, color=WHITE, size=10, bold=True) | |
| tb(s, 8.62, y + 0.62 + k * 0.6, 3.95, 0.48, d, size=10, color=GRAY, anchor=MSO_ANCHOR.MIDDLE) | |
| notes(s, "Vulkan ๋ ๋๋ฌ๋ ์ด ๋์คํฐ๋ผ์ด์ ์ ๊ฐ์ ์์(gs_common.glsl)์ ์ฐ๊ณ , ํ์ต๊ธฐ ๋ ๋์ PSNR 56 dB ๋ก ์ผ์นํ๋ค. ํ์ต์ 2๋ฐฐ ๋ค์ด์ค์ผ์ผ(800ร450)์์ ํ๋ค.") | |
| # ------------------------------------------------------------------ 16 ๋ณด์ ยท ํ๋ | |
| s = slides[15] | |
| y = body(s, "๋ชจ๋ธ ๊ตฌ์กฐ", "๋ชจ๋ โก ์นด๋ฉ๋ผ ๋ณด์ ๋ฐ ํ๋ ๋ชจ๋ธ", [ | |
| "6๋ ์นด๋ฉ๋ผ์ ์ ยท ์ฅ์ฐฉ ์ค์ฐจ์ ํ๋์ ๋ณ๋ ๋ชจ๋๋ก ๋ถ๋ฆฌํ์ฌ, ๊ฐ์ฐ์์์ด ์นด๋ฉ๋ผ ์ฐจ์ด๋ ํ๋์ ํก์ํด ์๊ธฐ๋ floater ๋ฅผ ๋ง์", | |
| ]) | |
| cards = [("์ ๋ณด์ (ColorCorrection)", "์นด๋ฉ๋ผ๋ณ 3ร4 ์ํ + ํ๋ ์๋ณ RGB log ๊ฒ์ธ\n\naffine_c = [I|0] + d_c โ mean(d)\nlog_gain_v = g_v โ mean(g)\n\n์ค์ฌํ โ ๋ณด์ ์์ด ๊ทธ๋ฆฐ ply ๊ฐ ๊ณง\nํ๊ท ์นด๋ฉ๋ผ ์ (์ฆ๊ฐ ์์์ ์ ๊ธฐ์ค)"), | |
| ("์ธ๋ถ ํ๋ผ๋ฏธํฐ ๋ณด์ (CameraAdjust)", "์นด๋ฉ๋ผ๋ณ SE(3) ฮ (ํ์ ๋ฒกํฐ 3 + ์ด๋ 3)\n\nw2cโฒ = ฮ ยท w2c\ncamโegoโฒ = camโego ยท ฮโปยน\n\nlr 1e-4, 4 ์คํ ๋ง๋ค, 3๋ง ์คํ ๊น์ง\n์ฌ์ ์ ๊ทํ 5e-4\n๊ฒฐ๊ณผ: ํ์ 0.1~0.4ยฐ, ์ด๋ ์ฝ 1 cm"), | |
| ("ํ๋ ๋ชจ๋ธ (SkyCube)", "ํ์ต ํ๋ธ๋งต 256ยฒ (lr 0.01)\n\nร_final = ร + (1 โ ฮฑ) ยท S(๊ด์ ๋ฐฉํฅ)\n\nBCE: ํ๋ ํฝ์ ฮฑ โ 0,\n๋ผ์ด๋ค ํ๋ฉด ํฝ์ ฮฑ โ 1 (ฮป 0.05)\n\n์ ์ฅ: sky.ktx2 (RGBA16F ์ ํ)\nโ Vulkan background ํจ์ค")] | |
| for k, (t, d) in enumerate(cards): | |
| box(s, 0.85 + k * 4.0, y + 0.2, 3.8, 2.45, d, title=t, fill=PALE, line=BLUE, size=11, align=PP_ALIGN.LEFT) | |
| why = [("๋ถ๋ฆฌํ์ง ์์ผ๋ฉด", "์นด๋ฉ๋ผ๋ง๋ค ๋ค๋ฅธ ์ ยท ๋ ธ์ถ์ ๊ฐ์ฐ์์ ์์ด ํก์ โ ์ ์์ ์์ ์ผ๋ฃฉ"), | |
| ("๋ถ๋ฆฌํ์ง ์์ผ๋ฉด", "์ฅ์ฐฉ ์ค์ฐจ (0.1~0.4ยฐ) ๋งํผ ๊ฐ์ ๋ฌผ์ฒด๊ฐ ๊ฒน์ณ ํ๋ ค์ง"), | |
| ("๋ถ๋ฆฌํ์ง ์์ผ๋ฉด", "ํ๋์ด 9 m ๊ฑฐ๋ฆฌ์ ๋ฐ์ ๊ฐ์ฐ์์ ๋ฉ์ด๋ฆฌ๋ก ๊ตฌ์์ ธ floater ๊ฐ ๋จ")] | |
| for k, (t, d) in enumerate(why): | |
| x = 0.85 + k * 4.0 | |
| down_arrow(s, x + 1.77, y + 2.72, h=0.24, color=ORANGE) | |
| box(s, x, y + 3.02, 3.8, 0.85, d, title=t, fill=WHITE, line=ORANGE, size=10) | |
| notes(s, "ํ๋์ ๋ถ๋ฆฌํ์ง ์์ผ๋ฉด ํ๋ ์ผ๋ถ๊ฐ ๊ฐ๊น์ด ๋ถํฌ๋ช ๊ฐ์ฐ์์์ผ๋ก ๊ตฌ์์ ธ(9 m ๊ฑฐ๋ฆฌ์ ๋ฐ์ ๋ฉ์ด๋ฆฌ) ์ ์์ ์์ ๋ ๋ค๋๋ค. 'ํ๋ ์๋' ์ ์ฒด์ ฮฑโ1 ์ ๊ฑธ๋ฉด ๋๋ญ์ ์ฌ์ด๋ก floater ๊ฐ ์๊ฒจ ๋ผ์ด๋ค๊ฐ ํ๋ฉด์ ํ์ธํ ํฝ์ ์๋ง ๊ฑด๋ค.") | |
| # ------------------------------------------------------------------ 17 ์์ค ยท ํ์ต ์ค์ | |
| s = slides[16] | |
| y = body(s, "๋ชจ๋ธ ๊ตฌ์กฐ", "์์ค ํจ์ ๋ฐ ํ์ต ์ค์ ", [ | |
| "์ฌ์ง ์ฌ๊ตฌ์ฑ ์์ค์ ๋ผ์ด๋ค ๊น์ด ยท ํ๋ ๋ถ๋ฆฌ ยท MCMC ์ ๊ทํ ยท ์นด๋ฉ๋ผ ๋ณด์ ์ฌ์ ์ ๋ํด ํ์ตํจ โ ์ฌ์ง ์์ค์ ์ฐจ๋ ยท ์ฌ๋ ๋ง์คํฌ ๋ฐ ํฝ์ ์์๋ง ๊ณ์ฐ", | |
| ]) | |
| box(s, 0.85, y + 0.15, 11.8, 0.62, "L = 0.8 ยท L1 + 0.2 ยท (1 โ SSIM) + 0.1 ยท L_depth + 0.05 ยท (L_sky + L_surf) + 0.01 ยท mean(ฮฑ) + 0.01 ยท mean(s) + 5ยท10โปโด ยท R(ฮ)", | |
| fill=NAVY, color=WHITE, size=14, bold=True) | |
| table(s, 0.85, y + 0.95, 6.3, [["ํญ", "์ ์"], ["L1 ยท D-SSIM", "๋ ๋ ร ์ ์ค์ ์ฌ์ง, ๊ฐ์ฒด ๋ง์คํฌ ๋ฐ ํฝ์ (SSIM ฮป 0.2)"], | |
| ["L_depth", "|D โ D_lidar| / D_lidar, 1/4 ํด์๋, ์ฐจ๋ ํฝ์ ์ ์ธ"], | |
| ["L_sky ยท L_surf", "ํ๋ ํฝ์ โlog(1โฮฑ), ๋ผ์ด๋ค ํ๋ฉด ํฝ์ โlog ฮฑ"], | |
| ["mean(ฮฑ) ยท mean(s)", "MCMC ๋ถํฌ๋ช ๋ ยท ์ค์ผ์ผ ์ ๊ทํ"], | |
| ["R(ฮ)", "์นด๋ฉ๋ผ ์ธ๋ถ ํ๋ผ๋ฏธํฐ ๋ณด์ ์ ํฌ๊ธฐ ์ฌ์ "]], [0.3, 0.7], size=10, rowh=0.44) | |
| table(s, 7.4, y + 0.95, 5.25, [["ํ์ต ์ค์ (day_map)", "๊ฐ"], ["์คํ / ๊ตฌ๊ฐ", "15,000 (์ฝ 20๋ถ)"], ["ํด์๋", "800ร450 (2๋ฐฐ ์ถ์)"], | |
| ["๊ฐ์ฐ์์ ์ํ", "2,000,000"], ["lr ์์น / ์ค์ผ์ผ", "1.6e-4 (โ ร0.01) / 5e-3"], | |
| ["lr ํ์ / ๋ถํฌ๋ช ๋ / ์", "1e-3 / 5e-2 / 1e-3"], ["์ฌ๋ฐฐ์น ๊ตฌ๊ฐ", "500 ~ 15,000 ์คํ "]], | |
| [0.55, 0.45], size=10, rowh=0.37) | |
| notes(s, "L_depth ๋ ๊ฐ์ ์ ์ ๋ผ์ด๋ค๋ฅผ ๊ทธ ์นด๋ฉ๋ผ์ ํฌ์ํ ๊น์ด ์ง๋์์ ์๋ ์ค์ฐจ๋ค. ์ฐจ๋ ํฝ์ ์ ๋ผ์ด๋ค ๊น์ด๋ ์ฐจ ๋ค ๋ฐฐ๊ฒฝ์ด๋ผ ๋บ๋ค. GPU ํ ์ ๊ฐ์ ํ์ด์ฌ if ๋ก ๊ฒ์ฌํ๋ฉด ๋งค ์คํ ๋๊ธฐํ๊ฐ ๊ฑธ๋ ค ํ์ต ๋ฃจํ์์ ํผํ๋ค.") | |
| # ------------------------------------------------------------------ 18 ๋ฆฌ๊ทธ ๋ณํ | |
| s = slides[17] | |
| y = body(s, "๋ชจ๋ธ ๊ตฌ์กฐ", "๋ชจ๋ โข ๋ฉํฐ๋ทฐ ๋ฆฌ๊ทธ ๋ณํ ๋ฐ ๋ ๋๋ง", [ | |
| "6๋ ์นด๋ฉ๋ผ ์ ์ฒด์ ๊ฐ์ ๋ณํ T ๋ฅผ ์ฃผ์ด ๋ฆฌ๊ทธ ๊ธฐํ๋ฅผ ์ ์งํ ์ฑ '๋ค๋ฅธ ์ฐจ์ ๋จ ์นด๋ฉ๋ผ' ๋ฅผ ๋ง๋ฆ โ ์์ฐจ ๊ถค์ ยท ์๊ฐ์ ์๋ณธ ๊ทธ๋๋ก", | |
| "ํ๋ ์๋ง๋ค ๊ทธ ์๊ฐ์ ๋งก์ ๊ตฌ๊ฐ ๋ชจ๋ธ๋ก ๋ ๋๋งํ์ฌ ๊ตฌ๊ฐ ๊ฒฝ๊ณ์์๋ ์ ยท ๊ธฐํ ์ด์๋งค ์์ด ์ด์ด์ง (scene-0402: ๊ตฌ๊ฐ 5๊ฐ)", | |
| ]) | |
| pic = figure(s, "/home/mm/Downloads/vkgs-sim/docs/presentation/figures/out/fig_viewpoint_model_b.png", y + 0.1, h=2.9) | |
| yy = y + 0.2 + pic.height / 914400 | |
| table(s, 0.85, yy, 11.8, [["๋จ๊ณ", "๋ด์ฉ"], | |
| ["1 ยท ๋ณํ ์ ์", "shift [x ์, y ์ผ์ชฝ, z ์] m ยท rot [roll, pitch, yaw]ยฐ โ configs/aug/rig_variants.json (9์ข )"], | |
| ["2 ยท ์บ๋ฆฌ๋ธ ๋ณํ", "Rโฒ = Rz(yaw) ยท R ยท Rx(โpitch) ยท Rz(roll), tโฒ = t + shift โ w2cโฒ = (ego โ world ยท cam โ egoโฒ)โปยน ยท ฮ"], | |
| ["3 ยท ๋ด๋น ๊ตฌ๊ฐ", "CAM_FRONT ์๊ฐ โ [own0, own1) ์ธ ๊ตฌ๊ฐ ๋ชจ๋ธ (๊ฒน์นจ 10 m ์ ๊ฐ์ด๋ฐ์์ ์๋ฆ)"], | |
| ["4 ยท ๋ ๋ ยท ์ถ๋ ฅ", "๊ตฌ๊ฐ๋ง๋ค rig.txt โ ์คํ์คํฌ๋ฆฐ 6์บ (FXAA ๋, ํ๋ ํ๋ธ๋งต) โ <variant>/<CAM>/*.jpg + meta.json"]], | |
| [0.16, 0.84], size=10, rowh=0.31) | |
| notes(s, "๋ณํ ๊ณต์์ nusim/aug/rig_aug.py transform_calib ๊ทธ๋๋ก๋ค. pitch + ๋ ์นด๋ฉ๋ผ๊ฐ ์๋๋ก ์์ด๋ ๋ฐฉํฅ, yaw + ๋ ์ผ์ชฝ์ผ๋ก ๋๋ฆฌ๋ ๋ฐฉํฅ. ๋ฆฌ๊ทธ ์ ์ฒด์ ๊ฐ์ T ๋ฅผ ์ฃผ๋ฏ๋ก 6์บ ์ฌ์ด์ ์๋ ๊ธฐํ๊ฐ ์ค์ ์ฐจ๋์ฒ๋ผ ์ผ๊ด๋๋ค.") | |