multimodalart's picture
multimodalart HF Staff
Upload folder using huggingface_hub
9550667 verified
|
Raw
History Blame Contribute Delete
2.68 kB
metadata
title: AQ3D 3D Instance Segmentation
emoji: 🪑
colorFrom: purple
colorTo: blue
sdk: gradio
sdk_version: 6.26.0
app_file: app.py
short_description: Segment indoor 3D scans into object instances
python_version: '3.12'
startup_duration_timeout: 30m

AQ3D — Adaptive Query Transformer for 3D Instance Segmentation

Upload an indoor surface mesh (.ply / .obj / .glb) and AQ3D labels every object in it with one of the 198 ScanNet200 instance classes.

This Space runs the aq3d_scannet200_volt checkpoint (Volt-B point transformer backbone + AQTD adaptive-query decoder, 44.1 mAP on ScanNet200 val).

How the pipeline is reproduced

The upstream inference stack depends on several compiled extensions that have no wheels for the Space's Blackwell GPU (segmentator, torch_scatter, torch_geometric, flash-attn). They are replaced here by exact, dependency-free equivalents:

upstream here
segmentator.segment_mesh (C++/libtorch Felzenszwalb–Huttenlocher) Numba port in superpoints.py (same edge order, weights, two-pass union–find)
torch_scatter / torch_geometric.nn.pool.fps nnutils.py (scatter_* via scatter_add_/scatter_reduce_, greedy FPS)
flash_attn_varlen_qkvpacked_func F.scaled_dot_product_attention per sequence (identical for batch size 1)
timm blocks inlined (Mlp, identity LayerScale/DropPath at eval)

Everything else — MeanCoordNormalizeColor(-1, 1)GridSample(0.02) with FNV hashing, superpoint attention pooling, superpoint NMS (0.8), adaptive top-k, mask scoring, and the point-count threshold — follows the official ScanNet200 validation configuration verbatim.

Example scans

The bundled examples are CC BY 4.0 photogrammetry / LiDAR room scans from Objaverse, redistributed via Zenodo:

Caveats

AQ3D is trained on ScanNet200, i.e. RGB-D reconstructions of real rooms in metres with Z up. Meshes far outside that domain (synthetic scenes, single objects, non-metric units) will still run but the labels will be unreliable. Use the Scene orientation & scale accordion if the automatic guess is wrong.