Skip to content

Commit 45c00fa

Browse files
committed
feat(streampetr): add base nuScenes and T4 j6gen2 configurations
Signed-off-by: vividf <yihsiang.fang@tier4.jp>
1 parent b942752 commit 45c00fa

5 files changed

Lines changed: 488 additions & 9 deletions

File tree

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
# @package _global_
2+
defaults:
3+
- /defaults/default_runtime
4+
- _self_
5+
6+
dataset: ???
7+
8+
point_cloud_range: ???
9+
post_center_range: ???
10+
11+
# RGB channel order, matching the RGB output of the image loading transform.
12+
img_norm_cfg:
13+
mean: [123.675, 116.280, 103.530]
14+
std: [58.395, 57.120, 57.375]
15+
to_rgb: false
16+
17+
datamodule:
18+
collation_map:
19+
img: list
20+
camera_intrinsics: list
21+
lidar2cam: list
22+
lidar2img: list
23+
timestamp: list
24+
prev_exists: list
25+
ego_pose: list
26+
ego_pose_inv: list
27+
gt_boxes: list
28+
gt_labels: list
29+
model:
30+
_target_: autoware_ml.models.detection3d.streampetr.StreamPETRDetectionModel
31+
metrics: ${dataset.detection3d.metrics}
32+
img_backbone:
33+
_target_: autoware_ml.models.common.backbones.resnet.ResNet50MultiScale
34+
img_neck:
35+
_target_: autoware_ml.models.common.necks.lss_fpn.GeneralizedLSSFPN
36+
in_channels: [512, 1024, 2048]
37+
out_channels: 256
38+
use_grid_mask: true
39+
bbox_head:
40+
_target_: autoware_ml.models.detection3d.heads.streampetr.StreamPETRHead
41+
num_classes: ${dataset.detection3d.num_classes}
42+
in_channels: 256
43+
hidden_dim: 256
44+
num_queries: ???
45+
num_decoder_layers: 6
46+
num_heads: 8
47+
feedforward_channels: 2048
48+
memory_len: 1024
49+
topk_proposals: 256
50+
num_propagated: 256
51+
with_ego_pos: true
52+
with_dn: true
53+
loss_cls_weight: 2.0
54+
loss_bbox_weight: 0.25
55+
depth_num: 64
56+
LID: true
57+
position_range: ${post_center_range}
58+
scalar: 10
59+
noise_scale: 1.0
60+
dn_weight: 1.0
61+
split: 0.75
62+
use_bottom_center: true
63+
bbox_coder:
64+
_target_: autoware_ml.models.detection3d.task_modules.bbox_coders.NMSFreeBBoxCoder3D
65+
pc_range: ${point_cloud_range}
66+
post_center_range: ${post_center_range}
67+
score_threshold: 0.0
68+
max_num: 300
69+
assigner:
70+
_target_: autoware_ml.models.detection3d.task_modules.assigners.HungarianAssigner3D
71+
cls_cost:
72+
_target_: autoware_ml.models.detection3d.task_modules.match_costs.ClassificationCost
73+
weight: 2.0
74+
reg_cost:
75+
_target_: autoware_ml.models.detection3d.task_modules.match_costs.BBox3DL1Cost
76+
weight: 0.25
77+
# Velocity channels are excluded from matching (match_with_velo=False
78+
# in the reference recipe).
79+
code_weights: [2.0, 2.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0]
80+
iou_cost:
81+
_target_: autoware_ml.models.detection3d.task_modules.match_costs.IoU3DCost
82+
weight: 0.0
83+
point_cloud_range: ${point_cloud_range}
84+
code_weights: [2.0, 2.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
85+
optimizer:
86+
_target_: torch.optim.AdamW
87+
_partial_: true
88+
lr: 5.0e-5
89+
weight_decay: 0.01
90+
optimizer_group_overrides:
91+
img_backbone:
92+
lr: 5.0e-6
93+
scheduler:
94+
_target_: autoware_ml.utils.schedulers.cyclic_cosine_annealing.CyclicCosineAnnealingLR
95+
_partial_: true
96+
warmup_epochs: 1
97+
decay_epochs: 34
98+
max_lr_factor: 1.0
99+
min_lr_factor: 0.0001
100+
101+
trainer:
102+
max_epochs: 35
103+
precision: bf16-mixed
104+
# GroupStreamingSampler shards scenes by rank itself.
105+
use_distributed_sampler: false
106+
gradient_clip_val: 1.0
107+
gradient_clip_algorithm: norm
108+
109+
deploy:
110+
onnx:
111+
dynamo: false
112+
opset_version: 17
113+
do_constant_folding: true
114+
modules:
115+
extract_img_feat:
116+
output_names: [img_feats]
117+
position_embedding:
118+
output_names: [pos_embed, cone]
119+
pts_head_memory:
120+
output_names:
121+
[
122+
all_cls_scores,
123+
all_bbox_preds,
124+
post_memory_embedding,
125+
post_memory_reference_point,
126+
post_memory_timestamp,
127+
post_memory_egopose,
128+
post_memory_velo,
129+
reference_points,
130+
tgt,
131+
temp_memory,
132+
temp_pos,
133+
query_pos,
134+
query_pos_in,
135+
outs_dec,
136+
]
137+
tensorrt:
138+
enabled: false
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
# @package _global_
2+
defaults:
3+
- /tasks/detection3d/streampetr/base
4+
- /datasets/nuscenes/detection3d
5+
- /datasets/nuscenes/camera
6+
- _self_
7+
8+
batch_size: 8
9+
num_workers: 16
10+
11+
dataset: ${nuscenes}
12+
13+
point_cloud_range: [-54.0, -54.0, -5.0, 54.0, 54.0, 3.0]
14+
post_center_range: [-61.2, -61.2, -10.0, 61.2, 61.2, 10.0]
15+
16+
datamodule:
17+
_target_: autoware_ml.datamodule.nuscenes.multiview_detection3d.NuscenesMultiviewDetection3DDataModule
18+
data_root: ${dataset.data_root}
19+
train_ann_file: nuscenes_infos_train.pkl
20+
val_ann_file: nuscenes_infos_val.pkl
21+
test_ann_file: nuscenes_infos_test.pkl
22+
class_names: ${dataset.detection3d.class_names}
23+
camera_order: ${dataset.camera.camera_order}
24+
streaming: true
25+
train_dataloader_cfg:
26+
batch_size: ${batch_size}
27+
num_workers: ${num_workers}
28+
shuffle: false
29+
# Streaming evaluation runs one lane per rank so every frame is scored;
30+
# wider eval batches would trim lanes to the shortest one.
31+
val_dataloader_cfg:
32+
batch_size: 1
33+
num_workers: ${num_workers}
34+
test_dataloader_cfg:
35+
batch_size: 1
36+
num_workers: ${num_workers}
37+
train_transforms:
38+
_target_: autoware_ml.transforms.base.TransformsCompose
39+
pipeline:
40+
- _target_: autoware_ml.transforms.boxes3d.loading.LoadAnnotations3D
41+
name_mapping: ${dataset.detection3d.name_mapping}
42+
- _target_: autoware_ml.transforms.camera.loading.LoadMultiViewImagesFromFiles
43+
- _target_: autoware_ml.transforms.boxes3d.filters.ObjectRangeFilter
44+
point_cloud_range: ${point_cloud_range}
45+
- _target_: autoware_ml.transforms.camera.resize.ResizeCropFlipRotImage
46+
data_aug_conf:
47+
resize_lim: [0.47, 0.625]
48+
final_dim: [320, 800]
49+
bot_pct_lim: [0.0, 0.0]
50+
rot_lim: [0.0, 0.0]
51+
rand_flip: false
52+
training: true
53+
- _target_: autoware_ml.transforms.camera.geometry.GlobalRotScaleTrans
54+
rot_range: [0.0, 0.0]
55+
scale_ratio_range: [1.0, 1.0]
56+
- _target_: autoware_ml.transforms.camera.resize.PadMultiViewImage
57+
size_divisor: 32
58+
- _target_: autoware_ml.transforms.camera.normalize.NormalizeMultiviewImage
59+
mean: ${img_norm_cfg.mean}
60+
std: ${img_norm_cfg.std}
61+
to_rgb: ${img_norm_cfg.to_rgb}
62+
val_transforms:
63+
_target_: autoware_ml.transforms.base.TransformsCompose
64+
pipeline:
65+
- _target_: autoware_ml.transforms.boxes3d.loading.LoadAnnotations3D
66+
name_mapping: ${dataset.detection3d.name_mapping}
67+
- _target_: autoware_ml.transforms.camera.loading.LoadMultiViewImagesFromFiles
68+
- _target_: autoware_ml.transforms.camera.resize.ResizeCropFlipRotImage
69+
data_aug_conf:
70+
resize_lim: [0.47, 0.625]
71+
final_dim: [320, 800]
72+
bot_pct_lim: [0.0, 0.0]
73+
rot_lim: [0.0, 0.0]
74+
rand_flip: false
75+
training: false
76+
- _target_: autoware_ml.transforms.camera.resize.PadMultiViewImage
77+
size_divisor: 32
78+
- _target_: autoware_ml.transforms.camera.normalize.NormalizeMultiviewImage
79+
mean: ${img_norm_cfg.mean}
80+
std: ${img_norm_cfg.std}
81+
to_rgb: ${img_norm_cfg.to_rgb}
82+
- _target_: autoware_ml.transforms.boxes3d.filters.ObjectRangeFilter
83+
point_cloud_range: ${point_cloud_range}
84+
test_transforms: ${datamodule.val_transforms}
85+
predict_transforms:
86+
_target_: autoware_ml.transforms.base.TransformsCompose
87+
pipeline:
88+
- _target_: autoware_ml.transforms.camera.loading.LoadMultiViewImagesFromFiles
89+
- _target_: autoware_ml.transforms.camera.resize.ResizeCropFlipRotImage
90+
data_aug_conf:
91+
resize_lim: [0.47, 0.625]
92+
final_dim: [320, 800]
93+
bot_pct_lim: [0.0, 0.0]
94+
rot_lim: [0.0, 0.0]
95+
rand_flip: false
96+
training: false
97+
- _target_: autoware_ml.transforms.camera.resize.PadMultiViewImage
98+
size_divisor: 32
99+
- _target_: autoware_ml.transforms.camera.normalize.NormalizeMultiviewImage
100+
mean: ${img_norm_cfg.mean}
101+
std: ${img_norm_cfg.std}
102+
to_rgb: ${img_norm_cfg.to_rgb}
103+
104+
model:
105+
img_backbone:
106+
_target_: autoware_ml.models.common.backbones.vovnet.VoVNet99MultiScale
107+
input_ch: 3
108+
out_features: [stage4, stage5]
109+
frozen_stages: -1
110+
norm_eval: true
111+
img_neck:
112+
_target_: autoware_ml.models.common.necks.lss_fpn.GeneralizedLSSFPN
113+
in_channels: [768, 1024]
114+
out_channels: 256
115+
bbox_head:
116+
num_queries: 644
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
# @package _global_
2+
defaults:
3+
- /tasks/detection3d/streampetr/base
4+
- /datasets/t4dataset/detection3d
5+
- /datasets/t4dataset/camera
6+
- _self_
7+
8+
batch_size: 8
9+
num_workers: 16
10+
11+
dataset: ${t4dataset}
12+
13+
point_cloud_range: [-54.0, -54.0, -5.0, 54.0, 54.0, 3.0]
14+
post_center_range: [-61.2, -61.2, -10.0, 61.2, 61.2, 10.0]
15+
16+
t4dataset:
17+
detection3d:
18+
eval_class_range:
19+
car: 54.0
20+
truck: 54.0
21+
bus: 54.0
22+
bicycle: 54.0
23+
pedestrian: 54.0
24+
traffic_cone: 54.0
25+
barrier: 54.0
26+
metric_ranges:
27+
- { _target_: autoware_ml.metrics.base.MetricRange, name: 0-50m, min_distance: 0.0, max_distance: 50.0 }
28+
- { _target_: autoware_ml.metrics.base.MetricRange, name: 0-54m, min_distance: 0.0, max_distance: 54.0 }
29+
30+
datamodule:
31+
_target_: autoware_ml.datamodule.t4dataset.multiview_detection3d.T4MultiviewDetection3DDataModule
32+
data_root: ${dataset.data_root}
33+
train_ann_file: info/detection3d/t4dataset_j6gen2_base_infos_train.pkl
34+
val_ann_file: info/detection3d/t4dataset_j6gen2_base_infos_val.pkl
35+
test_ann_file: info/detection3d/t4dataset_j6gen2_base_infos_val.pkl
36+
class_names: ${dataset.detection3d.class_names}
37+
camera_order: ${dataset.camera.camera_order}
38+
name_mapping: ${dataset.detection3d.name_mapping}
39+
streaming: true
40+
train_dataloader_cfg:
41+
batch_size: ${batch_size}
42+
num_workers: ${num_workers}
43+
shuffle: false
44+
# Streaming evaluation runs one lane per rank so every frame is scored;
45+
# wider eval batches would trim lanes to the shortest one.
46+
val_dataloader_cfg:
47+
batch_size: 1
48+
num_workers: ${num_workers}
49+
test_dataloader_cfg:
50+
batch_size: 1
51+
num_workers: ${num_workers}
52+
train_transforms:
53+
_target_: autoware_ml.transforms.base.TransformsCompose
54+
pipeline:
55+
- _target_: autoware_ml.transforms.boxes3d.merge.MergeObjects3D
56+
merge_objects: ${dataset.detection3d.merge_objects}
57+
name_mapping: ${dataset.detection3d.name_mapping}
58+
- _target_: autoware_ml.transforms.boxes3d.loading.LoadAnnotations3D
59+
name_mapping: ${dataset.detection3d.name_mapping}
60+
filter_attributes: ${dataset.detection3d.filter_attributes}
61+
use_valid_flag: ${dataset.detection3d.use_valid_flag}
62+
- _target_: autoware_ml.transforms.camera.loading.LoadMultiViewImagesFromFiles
63+
- _target_: autoware_ml.transforms.camera.resize.ResizeCropFlipRotImage
64+
data_aug_conf:
65+
resize_lim: 0.02
66+
final_dim: [480, 640]
67+
bot_pct_lim: [0.0, 0.0]
68+
rot_lim: [0.0, 0.0]
69+
rand_flip: false
70+
training: true
71+
- _target_: autoware_ml.transforms.camera.geometry.GlobalRotScaleTrans
72+
rot_range: [0.0, 0.0]
73+
scale_ratio_range: [1.0, 1.0]
74+
- _target_: autoware_ml.transforms.camera.resize.PadMultiViewImage
75+
size_divisor: 32
76+
- _target_: autoware_ml.transforms.camera.normalize.NormalizeMultiviewImage
77+
mean: ${img_norm_cfg.mean}
78+
std: ${img_norm_cfg.std}
79+
to_rgb: ${img_norm_cfg.to_rgb}
80+
- _target_: autoware_ml.transforms.boxes3d.filters.ObjectRangeFilter
81+
point_cloud_range: ${point_cloud_range}
82+
val_transforms:
83+
_target_: autoware_ml.transforms.base.TransformsCompose
84+
pipeline:
85+
- _target_: autoware_ml.transforms.boxes3d.merge.MergeObjects3D
86+
merge_objects: ${dataset.detection3d.merge_objects}
87+
name_mapping: ${dataset.detection3d.name_mapping}
88+
- _target_: autoware_ml.transforms.boxes3d.loading.LoadAnnotations3D
89+
name_mapping: ${dataset.detection3d.name_mapping}
90+
filter_attributes: ${dataset.detection3d.filter_attributes}
91+
use_valid_flag: ${dataset.detection3d.use_valid_flag}
92+
- _target_: autoware_ml.transforms.camera.loading.LoadMultiViewImagesFromFiles
93+
- _target_: autoware_ml.transforms.camera.resize.ResizeCropFlipRotImage
94+
data_aug_conf:
95+
resize_lim: 0.02
96+
final_dim: [480, 640]
97+
bot_pct_lim: [0.0, 0.0]
98+
rot_lim: [0.0, 0.0]
99+
rand_flip: false
100+
training: false
101+
- _target_: autoware_ml.transforms.camera.resize.PadMultiViewImage
102+
size_divisor: 32
103+
- _target_: autoware_ml.transforms.camera.normalize.NormalizeMultiviewImage
104+
mean: ${img_norm_cfg.mean}
105+
std: ${img_norm_cfg.std}
106+
to_rgb: ${img_norm_cfg.to_rgb}
107+
- _target_: autoware_ml.transforms.boxes3d.filters.ObjectRangeFilter
108+
point_cloud_range: ${point_cloud_range}
109+
test_transforms: ${datamodule.val_transforms}
110+
predict_transforms:
111+
_target_: autoware_ml.transforms.base.TransformsCompose
112+
pipeline:
113+
- _target_: autoware_ml.transforms.camera.loading.LoadMultiViewImagesFromFiles
114+
- _target_: autoware_ml.transforms.camera.resize.ResizeCropFlipRotImage
115+
data_aug_conf:
116+
resize_lim: 0.02
117+
final_dim: [480, 640]
118+
bot_pct_lim: [0.0, 0.0]
119+
rot_lim: [0.0, 0.0]
120+
rand_flip: false
121+
training: false
122+
- _target_: autoware_ml.transforms.camera.resize.PadMultiViewImage
123+
size_divisor: 32
124+
- _target_: autoware_ml.transforms.camera.normalize.NormalizeMultiviewImage
125+
mean: ${img_norm_cfg.mean}
126+
std: ${img_norm_cfg.std}
127+
to_rgb: ${img_norm_cfg.to_rgb}
128+
129+
model:
130+
img_backbone:
131+
_target_: autoware_ml.models.common.backbones.vovnet.VoVNet99MultiScale
132+
input_ch: 3
133+
out_features: [stage4, stage5]
134+
frozen_stages: -1
135+
norm_eval: true
136+
img_neck:
137+
_target_: autoware_ml.models.common.necks.lss_fpn.GeneralizedLSSFPN
138+
in_channels: [768, 1024]
139+
out_channels: 256
140+
bbox_head:
141+
num_queries: 644

0 commit comments

Comments
 (0)