Pernah bayangkan melakukan rekonstruksi 3D dari video input berdurasi ribuan frame tanpa bikin VRAM GPU kamu jebol atau sistem ngelag parah? Masalah klasik di dunia computer vision saat menangani long-horizon video stream adalah akumulasi beban memori. Makin panjang durasi videonya, makin bengkak state memori yang harus disimpan. Di tengah tren arsitektur yang makin rakus hardware, hadir sebuah pendekatan pragmatis bernama ABot-Recon: Streaming 3D Reconstruction dari Video Input.
Model open-source ini tidak memaksakan diri menyimpan seluruh riwayat memori dari awal hingga akhir. Pendekatan yang diambil justru berlawanan dari kebiasaan arsitektur AI modern.
Kenapa Harus 12 Frame Local Context?
Ibarat mengemudi mobil di jalan tol pada malam hari, kamu tidak perlu mengingat bentuk setiap meter jalanan yang sudah dilalui sejauh 100 kilometer ke belakang hanya untuk tetap berada di jalur. Kamu cuma butuh fokus pada beberapa meter ruang di depan mata.
Prinsip itulah yang diterapkan pada arsitektur ini. Di setiap time step, sistem hanya menyelesaikan bounded prediction problem yang sama secara konsisten.
Model melakukan cache KV features dari 11 frame sebelumnya, memprediksi point map $P_i$ pada koordinat kamera saat ini, mengevaluasi adjacent relative pose $T_{i-1\leftarrow i}$, lalu menyusun trajectory global serta point cloud melalui sequential pose composition.
[Frame i-11 ... Frame i-1] -> Cache KV Features
↓
[Frame i] -> Predict Point Map & Relative Pose
↓
Sequential Pose Composition -> Global Trajectory & Point Cloud
Desain ini membuat penggunaan memori GPU dan beban komputasi per frame sama sekali tidak tergantung pada panjang durasi video yang diproses. Mau videonya cuma 100 frame atau sampai batas maksimum 22.000 frame, beban kerjanya tetap sama.
Lantas, bagaimana dengan masalah akumulasi drift (pergeseran eror) saat pose lokal digabungkan dalam skala waktu yang panjang? Pengembangnya menyematkan lightweight motion-visual rotation refiner serta composition-aware pose loss untuk menekan eror tersebut tetap di batas toleransi terendah.
Angka Bicara: Performanya Nggak Main-Main
Bicara soal klaim teknis tentu kurang afdal tanpa melihat data pengujian langsung. Pengujian dilakukan pada berbagai dataset populer seperti KITTI, Oxford Spires, VBR, 7Scenes, hingga TUM-Dynamic.
| Evaluasi / Benchmark | Hasil Utama | Setting & Catatan Teknolis |
|---|---|---|
| Oxford Spires Camera Pose | ATE: 4.35 m, RPE-R: 0.12° | Pure streaming model, tanpa loop closure |
| Oxford Spires Dense Reconstruction | CD: 1.37 m, F1: 91.81% | F1 threshold $\tau=4$ m |
| KITTI-02 Streaming Efficiency | 24.45 FPS, 6.71 GiB VRAM | Resolusi 504×280 di NVIDIA H100 |
Angka 24.45 FPS dengan konsumsi VRAM hanya 6.71 GiB di resolusi 504×280 membuktikan bahwa model ini bukan sekadar riset di atas kertas, melainkan sangat playable untuk kebutuhan produksi streaming secara real-time.
Loop Closure Opsional dan Dukungan NPU Lokal
Meskipun model dasarnya bisa berjalan mandiri tanpa butuh pemroses loop closure, pengembang tetap menyediakan opsi backend tersebut untuk menangani area yang dikunjungi kembali (revisited regions).
Ketika fitur loop closure diaktifkan, sistem mengambil pasangan candidate frame menggunakan deskriptor DINOv2-SALAD, memprediksi constraint relative pose via ABot-Recon, lalu memoles trajektori menggunakan sparse pose-graph optimization.
Hal menarik lainnya datang dari ekosistem komunitas. Tim AXERA-TECH sukses melakukan porting ABot-Recon ke NPU Axera AX650N. Adaptasi ini mencakup dukungan inference berbasis PCIe (AXCL) maupun on-device inference langsung di atas board AX650N lengkap dengan precompiled models, Docker image, dan web mapping service. Ini berita besar buat developer edge computing yang ingin menjalankan rekonstruksi 3D tanpa tergantung pada GPU kelas server yang mahal.
Setup Environment dan Eksekusi Pipeline
Untuk kamu yang ingin langsung menjajal codebase ini di environment lokal, persyaratannya cukup spesifik. System requirement resmi menargetkan OS Linux, Python 3.10 atau lebih baru, PyTorch 2.5.1, serta CUDA 12.1. Lingkungan ini divalidasi menggunakan NVIDIA A100 dan NVIDIA H100.
Proses instalasi dasar cukup mudah melalui terminal:
bashconda create -n abot-recon python=3.11 -y conda activate abot-recon pip install torch==2.5.1 torchvision==0.20.1 --index-url https://download.pytorch.org/whl/cu121 pip install -e .
Agar performa komputasinya maksimal, sangat disarankan memasang operator paged KV-cache dari FlashInfer dan melakukan kompilasi cuRoPE untuk mempercepat rotary position encoding:
bashpip install flashinfer-python cd abot_recon/modeling/pi3/models/curope pip install ninja python setup.py build_ext --inplace cd -
Untuk menjalankan eksekusi inferensi dasar tanpa loop closure, kamu hanya perlu mengeksekusi skrip CLI berikut:
bashpython demo.py \ --image-dir examples/images \ --output-dir outputs/demo \ --attention-backend auto \ --no-loop-closure
Jika kamu lebih nyaman menggunakan Python API langsung ke dalam skrip kustom milikmu, struktur pemanggilannya juga dibuat sangat simpel:
pythonfrom pathlib import Path from abot_recon import ABotRecon images = sorted(Path("examples/images").glob("*.jpg")) model = ABotRecon.from_pretrained( "acvlab/ABot-Recon", device="cuda", attention_backend="auto", loop_closure=False, ) result = model.infer(images) trajectory = result.camera_poses relative_poses = result.relative_poses local_points = result.local_points confidence = result.confidence
File bobot pretrained (abot_recon.safetensors) akan terunduh otomatis dari Hugging Face atau ModelScope. Output yang dihasilkan meliputi file koordinat trajektori kamera (camera_poses.npy), point map lokal (local_points.pt), hingga confidence map. Seluruh codebase ini dirilis di bawah lisensi terbuka Apache License 2.0, dibangun di atas fondasi Pi3, serta terinspirasi dari proyek-proyek ternama seperti CroCo, DUSt3R, DINOv2, SALAD, LingBot-Map, HorizonStream, hingga LongStream.
Apakah pendekatan efisiensi lokal ini akan jadi standar baru arsitektur 3D reconstruction di masa depan? Melihat kombinasi FPS yang kencang dan footprint VRAM yang sangat ramah GPU, jawabannya hampir pasti: ya.
Referensi
https://github.com/amap-cvlab/ABot-Recon
