YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
vkgs-sim
nuScenes ์ฑ๊ฐํฌ๋ฅด ๋งต ๊ธฐ๋ฐ Vulkan 3D Gaussian Splatting closed-loop ์๋ฎฌ๋ ์ดํฐ
VLM/VLA ์ฃผํ ๋ชจ๋ธ์ closed-loop ๋ก ์ํํ๊ธฐ ์ํ ์๋ฎฌ๋ ์ดํฐ๋ค. ๋ชจ๋ธ์ด 6-์นด๋ฉ๋ผ ์ด๋ฏธ์ง๋ฅผ ๋ณด๊ณ ์ ์ด๋ฅผ ๋ด๋ฉด, ๊ทธ ์ ์ด๋ก ์ฐจ๊ฐ ์์ง์ด๊ณ , ์ ์์ธ์์ 6์ฅ์ ๋ค์ ๋ ๋๋งํด ๋๋ ค์ค๋ค. ์๋ณธ ๋ก๊ทธ๋ฅผ ์ฌ์ํ๋ open-loop ํ๊ฐ์ ๋ฌ๋ฆฌ ๋ชจ๋ธ์ ํ๋์ด ๋ค์ ๊ด์ธก์ ๋ฐ๊พผ๋ค.
โโโโโโโโโโโโโโโโ 6 x (1600x900) โโโโโโโโโโโโโ
โ Vulkan 3DGS โ โโโโโโโโโโโโโโโโบ โ VLM/VLA โ
โ ๋ ๋๋ฌ โ โ ๋ชจ๋ธ โ
โ โ โโโโโโโโโโโโโโโโ โ โ
โโโโโโโโฌโโโโโโโโ ์กฐํฅ/๊ฐ์ โโโโโโโโโโโโโ
โ
ego ์ํ ์ ๋ถ (์์ ๊ฑฐ ๋ชจ๋ธ) + ์ฑ๊ฐํฌ๋ฅด ์ฐจ์ ๊ทธ๋ํ ์ ์ฝ
ํ์ฌ ์ํ
| ๋จ๊ณ | ๋ด์ฉ | ์ํ |
|---|---|---|
| 0 | ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ (CUDA + Vulkan + PyTorch, micromamba) | ์๋ฃ |
| 0 | nuScenes ๋ฐ์ดํฐ ๊ณ์ธต (์ฌ ์ธ๋ฑ์ค, ์นด๋ฉ๋ผ ๋ฆฌ๊ทธ) | ์๋ฃยท๊ฒ์ฆ๋จ |
| 1 | 3DGS ์ฌ๊ตฌ์ฑ (LiDAR ์ด๊ธฐํ โ gsplat ํ์ต) | ์ฃผ๊ฐ ๊ธฐ์ค์ ํต๊ณผ โ scene-0003 ์ ์ PSNR 25.62 dB. ์ผ๊ฐ+์ฐ์ฒ์ ๋ฏธํด๊ฒฐ |
| 2 | Vulkan ๋ ๋๋ฌ (๋น๋ณด๋ โ ์ปดํจํธ ํ์ผ) | ๋น๋ณด๋ ๊ฒฝ๋ก ์๋ฃ โ gsplat ๊ณผ PSNR 56 dB ์ผ์น, ๋งต ์ค๋ฒ๋ ์ด ๋ทฐ์ด |
| 3 | closed-loop ํ๊ฒฝ + VLA ๋ธ๋ฆฌ์ง | ๋ฏธ์ฐฉ์ |
์์ธํ ๊ณํ์ docs/roadmap.md, ์ค๊ณ ๊ทผ๊ฑฐ๋ docs/architecture.md ๋ฅผ ๋ณด๋ผ.
๋น ๋ฅธ ์์
Docker ์์ด ๋ก์ปฌ์์ ๊ฐ๋ฐํ๋ค. sudo ๋ถํ์ โ ์ ๋ถ $HOME ์๋(micromamba)์ ์ค์น๋๋ค.
์คํ์ docker/Dockerfile ๊ณผ ๊ฐ๋ค: CUDA 12.1 / PyTorch 2.4.1 / gsplat 1.4.0 / Vulkan.
# 1. ํ๊ฒฝ ๊ตฌ์ถ (์ต์ด 1ํ, ์ฌ์คํ ์์ )
bash scripts/local_setup.sh
# 2. ๋งค ์
ธ๋ง๋ค ํ์ฑํ
source scripts/local_env.sh
ํ์ฑํ๋ ์ ธ์์:
vkgs-doctor # CUDA / Vulkan / ๋ฐ์ดํฐ์
/ ์ธ๋ฑ์ค ํ ๋ฒ์ ์ ๊ฒ
nusim index build # ์ฌ ์ธ๋ฑ์ค ์์ฑ (์ฝ 40์ด, ์ต์ด 1ํ)
nusim index list --grep rain # ์ผ๊ฐยท์ฐ์ฒ ์ฌ ์ฐพ๊ธฐ
nusim scene show scene-0003 # ์ฌ ํ๋์ ์นด๋ฉ๋ผ ๊ตฌ์ฑ ํ์ธ
pytest tests/
cmake -S src/vkgs -B build -GNinja && cmake --build build
./build/vkgs_probe # Vulkan ๊ฒฝ๋ก ๋๊น์ง ๊ฒ์ฆ
Docker ๋ก ๋๋ฆฌ๊ณ ์ถ๋ค๋ฉด (์ ํ)
bash scripts/host_install_docker.sh # sudo ํ์
bash scripts/build.sh && bash scripts/run.sh && bash scripts/shell.sh
๋ฐ์ดํฐ
nuScenes v1.0-trainval ์ ์ฒด๊ฐ NAS ์ ์๊ณ , ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋ง์ดํธ๋๋ค.
/home/mm/nas2/nuscenes_original_junhan/nuscenes/original/full (ํธ์คํธ)
โ :ro
/data/nuscenes (์ปจํ
์ด๋)
์ฑ๊ฐํฌ๋ฅด ์ฌ๋ง ๋ค๋ฃฌ๋ค (boston-seaport 467๊ฐ๋ ๋ฒ์ ๋ฐ):
| ๋งต | ์ฌ | ์ฑ๊ฒฉ |
|---|---|---|
| singapore-onenorth | 183 | ์ ๋ฌด์ง๊ตฌยท์ฐ๊ตฌ๋จ์ง |
| singapore-queenstown | 115 | ์ฃผ๊ฑฐ์งยท์ฃผ์ฐจ์ฅ |
| singapore-hollandvillage | 85 | ์ผ๊ฐยท์ฐ์ฒ์ด ๋ชฐ๋ ค ์์ |
| ํฉ๊ณ | 383 | ์ด๋ฏธ์ง 532,157์ฅ (6์บ ร ์ฝ 12 Hz ร 20์ด) |
์ฌ ์ธ๋ฑ์ค
nuscenes-devkit ์ NuScenes() ๋ ๋ชจ๋ ํ
์ด๋ธ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฐ๋ค โ
trainval ๊ธฐ์ค 2~3๋ถ์ 10 GB ์ด์์ด๋ค. ์ฌ๊ตฌ์ฑยท์๋ฎฌ๋ ์ด์
๋ฃจํ๊ฐ ๋งค๋ฒ ๋ผ ๋น์ฉ์ด ์๋๊ณ ,
์๋ณธ์ด NFS ์์ ์์ด ๋ฐ๋ณต ์ ๊ทผ์ ํนํ ๋น์ธ๋ค.
๊ทธ๋์ ์๋ณธ ํ ์ด๋ธ์ ๋ฑ ํ ๋ฒ ์คํธ๋ฆฌ๋ฐ์ผ๋ก ํ์ด ์ฌ๋ณ๋ก ์๋ผ ์บ์์ ๊ตณํ๋ค.
nusim index build
โ cache/scene_index/catalog.json ์นดํ๋ก๊ทธ
โ cache/scene_index/scene-XXXX.json.gz ์ฌ๋ณ (6์บ ํ๋ ์ + ego ํฌ์ฆ + ์บ๋ฆฌ๋ธ)
์ค์ธก (RTX 3060 Ti ๋จธ์ , NFS):
| ๋น๋ ์๊ฐ | 35.8์ด (sample_data.json 1.35 GB + ego_pose.json 645 MB ํฌํจ) |
| ํผํฌ ๋ฉ๋ชจ๋ฆฌ | 0.51 GB |
| ์ธ๋ฑ์ค ํฌ๊ธฐ | 35 MB (383์ฌ ์ ์ฒด) |
| ์ฌ 1๊ฐ ๋ก๋ | 7 ms |
์คํธ๋ฆฌ๋ฐ ํ์(nusim.io.jsonstream)๊ฐ ์ด๊ฑธ ๊ฐ๋ฅํ๊ฒ ํ๋ค โ
263๋ง ํ์ง๋ฆฌ sample_data.json ์ ์ํํ๋ ๋ฐ ํผํฌ RSS 30 MB ๋ค.
์ ์ฅ์ ๊ตฌ์กฐ
docker/ Dockerfile, requirements, entrypoint
scripts/ ํธ์คํธ ์ค์น + ์ปจํ
์ด๋ ๋น๋/๊ธฐ๋/์ง์
config/ paths.yaml โ ๋ฐ์ดํฐ์
๊ฒฝ๋ก
src/nusim/ ํ์ด์ฌ: ๋ฐ์ดํฐ ยท ์ฌ๊ตฌ์ฑ ยท ๋งต ยท ์๋ฎฌ ๋ฃจํ
src/vkgs/ C++/Vulkan: 3DGS ๋ ๋๋ฌ (ํ์ฌ๋ ํ๋ก๋ธ๋ง)
tests/ pytest
cache/ ํ์๋ฌผ (์ฌ ์ธ๋ฑ์ค). git ์ ๋ฃ์ง ์๋๋ค
outputs/ ๋ ๋ ๊ฒฐ๊ณผ, ์ฒดํฌํฌ์ธํธ. git ์ ๋ฃ์ง ์๋๋ค
ํ๋์จ์ด ์ ์ฝ
RTX 3060 Ti 8 GB ๊ฐ ์ด ํ๋ก์ ํธ์ ๊ฐ์ฅ ๊ฐํ ์ ์ฝ์ด๋ค.
- ๊ฐ์ฐ์์ 1๊ฐ = fp32 ๊ธฐ์ค ์ฝ 236 B (์์น 12 + ์ค์ผ์ผ 12 + ํ์ 16 + ๋ถํฌ๋ช ๋ 4 + SH 192). ๋ ๋๋ง ์ ์ฉ์ผ๋ก ์ฐ๋ฉด 8 GB ์ ์ฝ 2,000๋ง ๊ฐ๊ฐ ์ํ์ด๋ค.
- ํ์ต ์ gradientยทAdam ์ํยทํ์ฑํ๊ฐ ๋ ๋ถ์ด ์ค์ง ์ํ์ด ํจ์ฌ ๋ฎ๋ค. ์ฌ๋น 100๋ง~200๋ง ๊ฐ, ์ด๋ฏธ์ง ๋ค์ด์ค์ผ์ผ 2๋ฐฐ๋ฅผ ๊ธฐ์ค์ ์ผ๋ก ์ก๋๋ค.
- 6๊ฐ ์นด๋ฉ๋ผ๋ฅผ ๋์์ 1600ร900 ์ผ๋ก ๋ ๋๋งํ๋ฉด ํ๋ ์๋น 8.6 Mpixel ์ด๋ค. ์ค์๊ฐ(10 Hz)์ ๋ ธ๋ฆฌ๋ ค๋ฉด ํ์ผ ๋์คํฐ๋ผ์ด์ ๊ฐ ํ์๊ณ , ๋น๋ณด๋ ๋ฐฉ์์ผ๋ก๋ ์ด๋ ต๋ค.
์ด ์์น๋ vkgs_probe ๊ฐ ์ค์ ์ฅ์น์์ ๋ค์ ํ์ธํด ์ค๋ค.