Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions point_transformer_v3/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Point Transformer V3 (PT-v3) - FVDB Implementation

This repository contains a minimal implementation of Point Transformer V3 using the FVDB library for scalable 3D point cloud processing.
This example trains and runs Point Transformer V3 with `fvdb.nn.PointTransformerV3` from fVDB, through Pointcept.

## Setup

Expand Down Expand Up @@ -40,8 +40,8 @@ python scripts/test/compute_difference.py --stats_path_1 data/scannet_samples_sm

## Project Structure

- `fvdb_extensions/models/ptv3_fvdb.py` - Core FVDB implementation
- `fvdb_extensions/models/point_transformer_v3m1_fvdb.py` - Pointcept framework adapter
- `fvdb_extensions/models/point_transformer_v3m1_fvdb.py` - Pointcept backbone (`PT-v3fvdb`) wrapping `fvdb.nn.PointTransformerV3`
- `fvdb_extensions/configs/` - Pointcept training configs for the fvdb backbone and the official PT-v3m1
- `scripts/data/` - Data download and preprocessing scripts
- `scripts/test/` - Inference and comparison scripts

Original file line number Diff line number Diff line change
Expand Up @@ -19,23 +19,34 @@
num_classes=20,
backbone_out_channels=64,
backbone=dict(
# fvdb.nn.PointTransformerV3; arguments follow Pointcept's PT-v3m1 (decoder lists shallow to deep).
type="PT-v3fvdb",
in_channels=6,
order=("z", "z-trans", "hilbert", "hilbert-trans"),
stride=(2, 2, 2, 2),
enc_depths=(2, 2, 2, 6, 2),
enc_channels=(32, 64, 128, 256, 512),
enc_num_heads=(2, 4, 8, 16, 32),
enc_num_head=(2, 4, 8, 16, 32),
enc_patch_size=(1024, 1024, 1024, 1024, 1024),
dec_depths=(2, 2, 2, 2),
dec_channels=(256, 128, 64, 64),
dec_num_heads=(16, 8, 4, 4),
patch_size=1024,
drop_path=0.3,
proj_drop=0.0,
no_conv_in_cpe=False,
order_type=("z", "z-trans", "hilbert", "hilbert-trans"),
enable_batch_norm=True,
dec_channels=(64, 64, 128, 256),
dec_num_head=(4, 4, 8, 16),
dec_patch_size=(1024, 1024, 1024, 1024),
mlp_ratio=4,
qkv_bias=True,
qk_scale=None,
proj_drop=0.0,
drop_path=0.3,
pre_norm=True,
shuffle_orders=True,
# Serialize the raw grid_coord, as Pointcept does. SphereCrop leaves samples whose
# coordinates do not start at zero, and the curve orders depend on the origin.
serialization_offset="none",
# The settings fvdb-examples has compared against Pointcept with: a linear stem,
# batch norm in the stem and pooling layers, and convolution in the position encoding.
embedding_mode="linear",
norm="batch",
cpe_conv=True,
),
criteria=[
dict(type="CrossEntropyLoss", loss_weight=1.0, ignore_index=-1),
Expand Down
5 changes: 2 additions & 3 deletions point_transformer_v3/fvdb_extensions/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,5 @@
# SPDX-License-Identifier: Apache-2.0


# Lazy imports - only import when explicitly requested
# This allows ptv3_fvdb to be imported without pulling in pointcept dependencies
__all__ = ["point_transformer_v3m1_fvdb", "ptv3_fvdb"]
# The Pointcept backbone is imported explicitly, so importing this package does not pull in Pointcept.
__all__ = ["point_transformer_v3m1_fvdb"]
324 changes: 0 additions & 324 deletions point_transformer_v3/fvdb_extensions/models/fvdb_utils.py

This file was deleted.

Loading
Loading