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
18 changes: 6 additions & 12 deletions projects/PTv3/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,9 @@ FROM ${AWML_BASE_IMAGE}
ENV FLASH_ATTN_CUDA_ARCHS="120"
ENV PYTHONPATH=/workspace/projects:/workspace/projects/PTv3

RUN python3 -m pip --no-cache-dir install \
addict \
open3d \
flash-attn --no-build-isolation \
regex \
sharedarray \
spconv-cu120 \
tensorboardx \
termcolor \
torch-scatter -f https://data.pyg.org/whl/torch-2.8.0+cu129.html \
tqdm \
yapf==0.40.1
RUN curl -LsSf https://astral.sh/uv/install.sh | sh \
&& . /root/.local/bin/env \
&& uv pip install --system --python /opt/conda/bin/python \
--upgrade pip setuptools wheel \
&& uv pip install --system --python /opt/conda/bin/python \
--no-build-isolation flash-attn /workspace/projects/PTv3
245 changes: 245 additions & 0 deletions projects/PTv3/configs/semseg-litept-small-v1m1-nuscenes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,245 @@
_base_ = ["./_base_/default_runtime.py"]

save_path = "work_dirs/litept"

# misc custom setting
batch_size = 12 # bs: total bs in all gpus
num_worker = 24
mix_prob = 0.8
empty_cache = False
enable_amp = True

# dataset settings
dataset_type = "NuScenesDataset"
data_root = "data/nuscenes"
ignore_index = -1
info_paths_train = ["info/nuscenes_infos_10sweeps_train.pkl"]
info_paths_val = ["info/nuscenes_infos_10sweeps_val.pkl"]
info_paths_test = ["info/nuscenes_infos_10sweeps_test.pkl"]
class_names = [
"barrier",
"bicycle",
"bus",
"car",
"construction_vehicle",
"motorcycle",
"pedestrian",
"traffic_cone",
"trailer",
"truck",
"driveable_surface",
"other_flat",
"sidewalk",
"terrain",
"manmade",
"vegetation",
]
class_mapping = {
0: 0,
1: 1,
2: 2,
3: 3,
4: 4,
5: 5,
6: 6,
7: 7,
8: 8,
9: 9,
10: 10,
11: 11,
12: 12,
13: 13,
14: 14,
15: 15,
}
num_classes = 16

# model settings
model = dict(
type="DefaultSegmentorV2",
num_classes=num_classes,
backbone_out_channels=72,
backbone=dict(
type="LitePT",
in_channels=4,
order=["z", "z-trans", "hilbert", "hilbert-trans"],
stride=(2, 2, 2, 2),
enc_depths=(2, 2, 2, 6, 2),
enc_channels=(36, 72, 144, 252, 504),
enc_num_head=(2, 4, 8, 14, 28),
enc_patch_size=(1024, 1024, 1024, 1024, 1024),
enc_conv=(True, True, True, False, False),
enc_attn=(False, False, False, True, True),
enc_rope_freq=(100.0, 100.0, 100.0, 100.0, 100.0),
dec_depths=(0, 0, 0, 0),
dec_channels=(72, 72, 144, 252),
dec_num_head=(4, 4, 8, 14),
dec_patch_size=(1024, 1024, 1024, 1024),
dec_conv=(False, False, False, False),
dec_attn=(False, False, False, False),
dec_rope_freq=(100.0, 100.0, 100.0, 100.0),
mlp_ratio=4,
qkv_bias=True,
qk_scale=None,
attn_drop=0.0,
proj_drop=0.0,
drop_path=0.3,
shuffle_orders=True,
pre_norm=True,
enc_mode=False,
),
criteria=[
dict(type="CrossEntropyLoss", loss_weight=1.0, ignore_index=ignore_index),
dict(type="LovaszLoss", mode="multiclass", loss_weight=1.0, ignore_index=ignore_index),
],
)

# scheduler settings
epoch = 50
eval_epoch = 50
optimizer = dict(type="AdamW", lr=0.002, weight_decay=0.005)
scheduler = dict(
type="OneCycleLR",
max_lr=[0.002, 0.0002],
pct_start=0.04,
anneal_strategy="cos",
div_factor=10.0,
final_div_factor=100.0,
)
param_dicts = [dict(keyword="block", lr=0.0002)]

# dataset settings
data = dict(
num_classes=num_classes,
ignore_index=ignore_index,
train=dict(
type=dataset_type,
split="train",
data_root=data_root,
info_paths=info_paths_train,
transform=[
# dict(type="RandomDropout", dropout_ratio=0.2, dropout_application_ratio=0.2),
# dict(type="RandomRotateTargetAngle", angle=(1/2, 1, 3/2), center=[0, 0, 0], axis="z", p=0.75),
dict(type="RandomRotate", angle=[-1, 1], axis="z", center=[0, 0, 0], p=0.5),
# dict(type="RandomRotate", angle=[-1/6, 1/6], axis="x", p=0.5),
# dict(type="RandomRotate", angle=[-1/6, 1/6], axis="y", p=0.5),
dict(type="RandomScale", scale=[0.9, 1.1]),
# dict(type="RandomShift", shift=[0.2, 0.2, 0.2]),
dict(type="RandomFlip", p=0.5),
dict(type="RandomJitter", sigma=0.005, clip=0.02),
# dict(type="ElasticDistortion", distortion_params=[[0.2, 0.4], [0.8, 1.6]]),
dict(
type="GridSample",
grid_size=0.05,
hash_type="fnv",
mode="train",
keys=("coord", "strength", "segment"),
return_grid_coord=True,
),
# dict(type="SphereCrop", point_max=1000000, mode="random"),
# dict(type="CenterShift", apply_z=False),
dict(type="ToTensor"),
dict(type="Update", keys_dict={"grid_size": 0.05}),
dict(
type="Collect",
keys=("coord", "grid_coord", "segment", "grid_size"),
feat_keys=("coord", "strength"),
),
],
test_mode=False,
ignore_index=ignore_index,
class_mapping=class_mapping,
),
val=dict(
type=dataset_type,
split="val",
data_root=data_root,
info_paths=info_paths_val,
transform=[
dict(type="Copy", keys_dict={"segment": "origin_segment"}),
# dict(type="PointClip", point_cloud_range=(-51.2, -51.2, -4, 51.2, 51.2, 2.4)),
dict(
type="GridSample",
grid_size=0.05,
hash_type="fnv",
mode="train",
keys=("coord", "strength", "segment"),
return_grid_coord=True,
return_inverse=True,
),
# dict(type="SphereCrop", point_max=1000000, mode='center'),
dict(type="ToTensor"),
dict(
type="Collect",
keys=("coord", "grid_coord", "segment", "origin_segment", "inverse"),
feat_keys=("coord", "strength"),
),
],
test_mode=False,
ignore_index=ignore_index,
class_mapping=class_mapping,
),
test=dict(
type=dataset_type,
split="val",
data_root=data_root,
info_paths=info_paths_test,
transform=[
dict(type="Copy", keys_dict={"segment": "origin_segment"}),
dict(
type="GridSample",
grid_size=0.025,
hash_type="fnv",
mode="train",
keys=("coord", "strength", "segment"),
return_inverse=True,
),
],
test_mode=True,
test_cfg=dict(
voxelize=dict(
type="GridSample",
grid_size=0.05,
hash_type="fnv",
mode="test",
keys=("coord", "strength", "segment"),
return_grid_coord=True,
),
crop=None,
post_transform=[
dict(type="ToTensor"),
dict(
type="Collect",
keys=("coord", "grid_coord", "index"),
feat_keys=("coord", "strength"),
),
],
aug_transform=[
[dict(type="RandomScale", scale=[0.9, 0.9])],
[dict(type="RandomScale", scale=[0.95, 0.95])],
[dict(type="RandomScale", scale=[1, 1])],
[dict(type="RandomScale", scale=[1.05, 1.05])],
[dict(type="RandomScale", scale=[1.1, 1.1])],
[
dict(type="RandomScale", scale=[0.9, 0.9]),
dict(type="RandomFlip", p=1),
],
[
dict(type="RandomScale", scale=[0.95, 0.95]),
dict(type="RandomFlip", p=1),
],
[dict(type="RandomScale", scale=[1, 1]), dict(type="RandomFlip", p=1)],
[
dict(type="RandomScale", scale=[1.05, 1.05]),
dict(type="RandomFlip", p=1),
],
[
dict(type="RandomScale", scale=[1.1, 1.1]),
dict(type="RandomFlip", p=1),
],
],
),
ignore_index=ignore_index,
class_mapping=class_mapping,
),
)
Loading