Siapa pun yang pernah berkutat dengan pipeline rekonstruksi 3D berbasis video panjang pasti paham betul mimpi buruk utamanya: memori yang terus membengkak sampai VRAM jebol. Kebanyakan arsitektur modern mencoba mengatasi masalah rekaman berdurasi panjang dengan menumpuk mekanisme memori jangka panjang yang rumit. Hasilnya, makin panjang videonya, komputasi per frame makin berat dan sistem perlahan mulai ngelag. Di sinilah ABot-Recon hadir membawa pendekatan yang sangat berani sekaligus pragmatis. Alih-alih mengingat seluruh riwayat visual dari awal sampai akhir, sistem ini justru membatasi pandangannya hanya pada local context 12 frame saja.
Idenya terdengar melawan arus utama industri computer vision. Bagaimana mungkin sebuah model bisa memetakan rute panjang tanpa ingatan global permanen? Kuncinya terletak pada cara model ini menyederhanakan masalah prediksi menjadi proses lokal yang terikat secara ketat pada setiap time step.
Memangkas Beban Memori dengan Pendekatan Lokal
Alih-alih mempertahankan state memori jangka panjang yang berat, ABot-Recon menyelesaikan tugas bounded prediction yang sama persis di setiap langkah waktu. Pipeline ini bekerja secara efisien melalui empat tahapan inti:
- Melakukan caching fitur KV (Key-Value) dari 11 frame sebelumnya untuk melengkapi jendela 12 frame lokal.
- Memprediksi point map $P_i$ langsung pada sistem koordinat kamera saat ini (current frame).
- Mengestimasi adjacent relative pose $T_{i-1\leftarrow i}$ antar frame yang bersebelahan.
- Memulihkan trajektori global dan point cloud melalui komposisi pose sekuensial (sequential pose composition).
Ibarat menyusun puzzle jalur kereta, Anda tidak perlu melihat stasiun awal yang berjarak puluhan kilometer di belakang. Anda hanya perlu memastikan sambungan rel antara gerbong saat ini dan bantalan rel persis di belakangnya terpasang presisi.
Tentu saja, menyambung pose secara sekuensial punya risiko akumulasi eror atau drift. Untuk mengatasi masalah tersebut, tim pengembang menyematkan motion-visual rotation refiner yang ringan serta menerapkan composition-aware pose loss. Kombinasi ini menjaga agar komputasi per frame dan penggunaan memori model tetap konstan, tidak peduli seberapa panjang urutan video yang diumpankan.
Data Benchmark dan Efisiensi Hardware
Klaim efisiensi tanpa angka hanyalah sekadar hype. Berdasarkan pengujian yang dirilis, ABot-Recon membuktikan bahwa pendekatan lokal ini bukan cuma hemat daya komputasi, tetapi juga sangat akurat di berbagai skenario real-world.
Berikut adalah ringkasan hasil evaluasi performa dan efisiensi ABot-Recon:
| Pengujian | Metrik / Hasil | Keterangan & Setup |
|---|---|---|
| Oxford Spires (Camera Pose) | ATE: 4.35 m, RPE-R: 0.12° | Streaming model only, murni tanpa loop closure |
| Oxford Spires (Dense Recon) | CD: 1.37 m, F1: 91.81% | Ambang batas F1 threshold $\tau=4$ m |
| KITTI-02 (Streaming Efficiency) | 24.45 FPS, 6.71 GiB | Resolusi 504×280 di NVIDIA H100 (tanpa input storage) |
Selain dataset di atas, riset ini mengevaluasi estimasi pose kamera pada KITTI, Oxford Spires, dan VBR, serta rekonstruksi padat (dense reconstruction) pada 7Scenes, TUM-Dynamic, dan Oxford Spires. Hasil 24.45 FPS dengan konsumsi VRAM 6.71 GiB pada resolusi 504×280 membuktikan arsitektur ini sangat siap untuk kebutuhan real-time streaming.
Setup Lingkungan dan Akselerasi Ekstra
ABot-Recon dibangun di atas fondasi Pi3 serta mengambil inspirasi dari proyek seperti CroCo, DUSt3R, DINOv2, SALAD, FlashInfer, LingBot-Map, HorizonStream, dan LongStream. Untuk menjalankannya, target environment standarnya adalah Linux dengan Python 3.10 atau lebih baru, PyTorch 2.5.1, dan CUDA 12.1. Validasi rilis dilakukan pada NVIDIA A100, sementara pengujian runtime menggunakan NVIDIA H100.
Bagi yang ingin langsung mencoba setup dasar, langkah instalasinya cukup ringkas:
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 kecepatannya makin maksimal, sangat disarankan memasang operator paged KV-cache dari FlashInfer dan mengompilasi cuRoPE untuk akselerasi rotary position encoding:
bashpip install flashinfer-python flashinfer show-config cd abot_recon/modeling/pi3/models/curope pip install ninja python setup.py build_ext --inplace cd -
Kerennya lagi, optimasi hardware tidak berhenti di GPU server kelas atas saja. Tim AXERA-TECH telah melakukan community port ABot-Recon ke NPU Axera AX650N. Porting ini mencakup dukungan PCIe inference berbasis AXCL maupun eksekusi on-device langsung di papan board AX650N lengkap dengan image Docker dan model precompiled.
Eksekusi Script dan Loop Closure Opsional
Penggunaan model dasarnya sangat bersih karena tidak memerlukan aset tambahan atau dependensi loop closure. Urutan file gambar cukup dinamai dengan format zero-padded seperti 000001.jpg, 000002.jpg, lalu jalankan causal pass sederhana lewat terminal:
bashpython demo.py \ --image-dir examples/images \ --output-dir outputs/demo \ --attention-backend auto \ --no-loop-closure
Jika Anda memproses video yang merekam rute melingkar dengan banyak area yang dikunjungi ulang (revisited regions), ABot-Recon menyediakan backend opsional. Fitur ini memanfaatkan deskriptor DINOv2-SALAD untuk mencari pasangan frame kandidat, menghitung relative-pose constraints, lalu memurnikan trajektori lewat sparse pose-graph optimization.
bashpip install -e ".[loop]" python scripts/download_loop_assets.py --output-dir checkpoints/loop python demo.py \ --image-dir examples/images \ --output-dir outputs/demo_loop \ --attention-backend auto \ --loop-closure
Setelah proses inferensi selesai, visualisasi point cloud format PLY dan trajektori Bird's-Eye View (BEV) dapat diekspor secara instan:
bashpython scripts/export_reconstruction_ply.py \ --poses outputs/demo/camera_poses.npy \ --points outputs/demo/local_points.pt \ --colors outputs/demo/colors.pt \ --output outputs/demo/reconstruction.ply \ --bev-output outputs/demo/trajectory_bev.png
Pengembang juga dapat mengintegrasikannya langsung ke dalam codebase Python lewat API yang ringkas:
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
Langkah tim peneliti yang juga mengembangkan proyek lain seperti ABot-Earth dan GS-Voxel ini patut diacungi jempol. Kode sumber ABot-Recon dirilis di bawah lisensi Apache License 2.0 dengan bobot model publik yang sudah tersedia di Hugging Face dan ModelScope. Ini adalah solusi segar bagi komunitas developer yang membutuhkan rekonstruksi 3D streaming tanpa harus tersandera kebutuhan VRAM tanpa batas.
