bev-project/configs/nuscenes/three_tasks/default.yaml

250 lines
5.5 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 三任务基础配置
# 任务: 3D检测 + BEV分割 + 矢量地图
_base_:
- ../../det/transfusion/secfpn/camera+lidar/default.yaml
# 全局参数
voxel_size: [0.075, 0.075, 0.2]
point_cloud_range: [-54.0, -54.0, -5.0, 54.0, 54.0, 3.0]
bev_h: 180
bev_w: 180
# 图像参数
image_size: [256, 704]
# BEV范围用于矢量地图
bev_x_range: [-50, 50]
bev_y_range: [-50, 50]
# 矢量地图参数
num_vec_classes: 3 # divider, boundary, ped_crossing
max_num_vectors: 50
num_points_per_vec: 20
# nuScenes类别
object_classes:
- car
- truck
- construction_vehicle
- bus
- trailer
- barrier
- motorcycle
- bicycle
- pedestrian
- traffic_cone
map_classes:
- drivable_area
- ped_crossing
- walkway
- stop_line
- carpark_area
- divider
# 数据增强参数
augment2d:
resize: [[0.38, 0.55], [0.48, 0.48]]
rotate: [-5.4, 5.4]
gridmask:
prob: 0.0
fixed_prob: true
augment3d:
scale: [0.9, 1.1]
rotate: [-0.78539816, 0.78539816]
translate: 0.5
# 优化器参数
optimizer:
type: AdamW
lr: 2.0e-4
weight_decay: 0.01
optimizer_config:
grad_clip:
max_norm: 35
norm_type: 2
lr_config:
policy: cyclic
target_ratio: 5.0
cyclic_times: 1
step_ratio_up: 0.4
momentum_config:
policy: cyclic
target_ratio: 0.8 / 0.95
cyclic_times: 1
step_ratio_up: 0.4
# 训练参数
max_epochs: 20
batch_size_per_gpu: 1
num_workers_per_gpu: 4
checkpoint_interval: 1
# 数据集
data:
samples_per_gpu: ${batch_size_per_gpu}
workers_per_gpu: ${num_workers_per_gpu}
train:
type: NuScenesDataset
dataset_root: data/nuscenes
ann_file: data/nuscenes/nuscenes_infos_train.pkl
pipeline: ${train_pipeline}
object_classes: ${object_classes}
map_classes: ${map_classes}
modality:
use_camera: true
use_lidar: true
use_radar: false
use_map: false
use_external: false
val:
type: NuScenesDataset
dataset_root: data/nuscenes
ann_file: data/nuscenes/nuscenes_infos_val.pkl
pipeline: ${val_pipeline}
object_classes: ${object_classes}
map_classes: ${map_classes}
modality:
use_camera: true
use_lidar: true
use_radar: false
use_map: false
use_external: false
# 训练pipeline
train_pipeline:
- type: LoadMultiViewImageFromFiles
to_float32: true
- type: LoadPointsFromFile
coord_type: LIDAR
load_dim: ${load_dim}
use_dim: ${use_dim}
- type: LoadPointsFromMultiSweeps
sweeps_num: 9
use_dim: [0, 1, 2, 3, 4]
pad_empty_sweeps: true
remove_close: true
- type: LoadAnnotations3D
with_bbox_3d: true
with_label_3d: true
with_attr_label: false
- type: LoadBEVSegmentation
dataset_root: data/nuscenes
xbound: [-50.0, 50.0, 0.5]
ybound: [-50.0, 50.0, 0.5]
classes: ${map_classes}
- type: LoadVectorMap # 🆕 矢量地图加载
vector_map_file: data/nuscenes/vector_maps_bevfusion.pkl
num_vec_classes: ${num_vec_classes}
max_num_vectors: ${max_num_vectors}
num_points_per_vec: ${num_points_per_vec}
- type: ObjectRangeFilter
point_cloud_range: ${point_cloud_range}
- type: ObjectNameFilter
classes: ${object_classes}
- type: ImageAug3D
final_dim: ${image_size}
resize_lim: ${augment2d.resize[0]}
bot_pct_lim: [0.0, 0.0]
rot_lim: ${augment2d.rotate}
rand_flip: true
is_train: true
- type: GlobalRotScaleTrans
resize_lim: ${augment3d.scale}
rot_lim: ${augment3d.rotate}
trans_lim: ${augment3d.translate}
is_train: true
- type: PointsRangeFilter
point_cloud_range: ${point_cloud_range}
- type: PointShuffle
- type: DefaultFormatBundle3D
classes: ${object_classes}
- type: Collect3D
keys:
- img
- points
- gt_bboxes_3d
- gt_labels_3d
- gt_masks_bev
- gt_vectors_labels # 🆕
- gt_vectors_points # 🆕
meta_keys:
- camera_intrinsics
- camera2ego
- lidar2ego
- lidar2camera
- camera2lidar
- lidar2image
- img_aug_matrix
- lidar_aug_matrix
# 验证pipeline
val_pipeline:
- type: LoadMultiViewImageFromFiles
to_float32: true
- type: LoadPointsFromFile
coord_type: LIDAR
load_dim: ${load_dim}
use_dim: ${use_dim}
- type: LoadPointsFromMultiSweeps
sweeps_num: 9
use_dim: [0, 1, 2, 3, 4]
pad_empty_sweeps: true
remove_close: true
- type: LoadAnnotations3D
with_bbox_3d: true
with_label_3d: true
with_attr_label: false
- type: LoadBEVSegmentation
dataset_root: data/nuscenes
xbound: [-50.0, 50.0, 0.5]
ybound: [-50.0, 50.0, 0.5]
classes: ${map_classes}
- type: LoadVectorMap # 🆕
vector_map_file: data/nuscenes/vector_maps_bevfusion.pkl
num_vec_classes: ${num_vec_classes}
max_num_vectors: ${max_num_vectors}
num_points_per_vec: ${num_points_per_vec}
- type: ImageAug3D
final_dim: ${image_size}
resize_lim: ${augment2d.resize[1]}
bot_pct_lim: [0.0, 0.0]
rot_lim: [0.0, 0.0]
rand_flip: false
is_train: false
- type: GlobalRotScaleTrans
resize_lim: [1.0, 1.0]
rot_lim: [0.0, 0.0]
trans_lim: 0.0
is_train: false
- type: PointsRangeFilter
point_cloud_range: ${point_cloud_range}
- type: DefaultFormatBundle3D
classes: ${object_classes}
- type: Collect3D
keys:
- img
- points
- gt_bboxes_3d
- gt_labels_3d
- gt_masks_bev
- gt_vectors_labels # 🆕
- gt_vectors_points # 🆕
meta_keys:
- camera_intrinsics
- camera2ego
- lidar2ego
- lidar2camera
- camera2lidar
- lidar2image
- img_aug_matrix
- lidar_aug_matrix