-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
new file: projects/configs/datasets/custom_lyft-3d.py
new file: projects/configs/datasets/custom_nus-3d.py new file: projects/configs/datasets/custom_waymo-3d.py
- Loading branch information
Showing
3 changed files
with
389 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,136 @@ | ||
# If point cloud range is changed, the models should also change their point | ||
# cloud range accordingly | ||
point_cloud_range = [-80, -80, -5, 80, 80, 3] | ||
# For Lyft we usually do 9-class detection | ||
class_names = [ | ||
'car', 'truck', 'bus', 'emergency_vehicle', 'other_vehicle', 'motorcycle', | ||
'bicycle', 'pedestrian', 'animal' | ||
] | ||
dataset_type = 'CustomLyftDataset' | ||
data_root = 'data/lyft/' | ||
# Input modality for Lyft dataset, this is consistent with the submission | ||
# format which requires the information in input_modality. | ||
input_modality = dict( | ||
use_lidar=True, | ||
use_camera=False, | ||
use_radar=False, | ||
use_map=False, | ||
use_external=True) | ||
file_client_args = dict(backend='disk') | ||
# Uncomment the following if use ceph or other file clients. | ||
# See https://mmcv.readthedocs.io/en/latest/api.html#mmcv.fileio.FileClient | ||
# for more details. | ||
# file_client_args = dict( | ||
# backend='petrel', | ||
# path_mapping=dict({ | ||
# './data/lyft/': 's3://lyft/lyft/', | ||
# 'data/lyft/': 's3://lyft/lyft/' | ||
# })) | ||
train_pipeline = [ | ||
dict( | ||
type='LoadPointsFromFile', | ||
coord_type='LIDAR', | ||
load_dim=5, | ||
use_dim=5, | ||
file_client_args=file_client_args), | ||
dict( | ||
type='LoadPointsFromMultiSweeps', | ||
sweeps_num=10, | ||
file_client_args=file_client_args), | ||
dict(type='LoadAnnotations3D', with_bbox_3d=True, with_label_3d=True), | ||
dict( | ||
type='GlobalRotScaleTrans', | ||
rot_range=[-0.3925, 0.3925], | ||
scale_ratio_range=[0.95, 1.05], | ||
translation_std=[0, 0, 0]), | ||
dict(type='RandomFlip3D', flip_ratio_bev_horizontal=0.5), | ||
dict(type='PointsRangeFilter', point_cloud_range=point_cloud_range), | ||
dict(type='ObjectRangeFilter', point_cloud_range=point_cloud_range), | ||
dict(type='PointShuffle'), | ||
dict(type='DefaultFormatBundle3D', class_names=class_names), | ||
dict(type='Collect3D', keys=['points', 'gt_bboxes_3d', 'gt_labels_3d']) | ||
] | ||
test_pipeline = [ | ||
dict( | ||
type='LoadPointsFromFile', | ||
coord_type='LIDAR', | ||
load_dim=5, | ||
use_dim=5, | ||
file_client_args=file_client_args), | ||
dict( | ||
type='LoadPointsFromMultiSweeps', | ||
sweeps_num=10, | ||
file_client_args=file_client_args), | ||
dict( | ||
type='MultiScaleFlipAug3D', | ||
img_scale=(1333, 800), | ||
pts_scale_ratio=1, | ||
flip=False, | ||
transforms=[ | ||
dict( | ||
type='GlobalRotScaleTrans', | ||
rot_range=[0, 0], | ||
scale_ratio_range=[1., 1.], | ||
translation_std=[0, 0, 0]), | ||
dict(type='RandomFlip3D'), | ||
dict( | ||
type='PointsRangeFilter', point_cloud_range=point_cloud_range), | ||
dict( | ||
type='DefaultFormatBundle3D', | ||
class_names=class_names, | ||
with_label=False), | ||
dict(type='Collect3D', keys=['points']) | ||
]) | ||
] | ||
# construct a pipeline for data and gt loading in show function | ||
# please keep its loading function consistent with test_pipeline (e.g. client) | ||
eval_pipeline = [ | ||
dict( | ||
type='LoadPointsFromFile', | ||
coord_type='LIDAR', | ||
load_dim=5, | ||
use_dim=5, | ||
file_client_args=file_client_args), | ||
dict( | ||
type='LoadPointsFromMultiSweeps', | ||
sweeps_num=10, | ||
file_client_args=file_client_args), | ||
dict( | ||
type='DefaultFormatBundle3D', | ||
class_names=class_names, | ||
with_label=False), | ||
dict(type='Collect3D', keys=['points']) | ||
] | ||
|
||
data = dict( | ||
samples_per_gpu=2, | ||
workers_per_gpu=2, | ||
train=dict( | ||
type=dataset_type, | ||
data_root=data_root, | ||
ann_file=data_root + 'lyft_infos_train.pkl', | ||
pipeline=train_pipeline, | ||
classes=class_names, | ||
modality=input_modality, | ||
test_mode=False), | ||
val=dict( | ||
type=dataset_type, | ||
data_root=data_root, | ||
ann_file=data_root + 'lyft_infos_val.pkl', | ||
pipeline=test_pipeline, | ||
classes=class_names, | ||
modality=input_modality, | ||
test_mode=True), | ||
test=dict( | ||
type=dataset_type, | ||
data_root=data_root, | ||
ann_file=data_root + 'lyft_infos_val.pkl', | ||
pipeline=test_pipeline, | ||
classes=class_names, | ||
modality=input_modality, | ||
test_mode=True)) | ||
# For Lyft dataset, we usually evaluate the model at the end of training. | ||
# Since the models are trained by 24 epochs by default, we set evaluation | ||
# interval to be 24. Please change the interval accordingly if you do not | ||
# use a default schedule. | ||
evaluation = dict(interval=24, pipeline=eval_pipeline) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
# If point cloud range is changed, the models should also change their point | ||
# cloud range accordingly | ||
point_cloud_range = [-50, -50, -5, 50, 50, 3] | ||
# For nuScenes we usually do 10-class detection | ||
class_names = [ | ||
'car', 'truck', 'trailer', 'bus', 'construction_vehicle', 'bicycle', | ||
'motorcycle', 'pedestrian', 'traffic_cone', 'barrier' | ||
] | ||
dataset_type = 'NuScenesDataset_eval_modified' | ||
data_root = 'data/nuscenes/' | ||
# Input modality for nuScenes dataset, this is consistent with the submission | ||
# format which requires the information in input_modality. | ||
input_modality = dict( | ||
use_lidar=True, | ||
use_camera=False, | ||
use_radar=False, | ||
use_map=False, | ||
use_external=False) | ||
file_client_args = dict(backend='disk') | ||
# Uncomment the following if use ceph or other file clients. | ||
# See https://mmcv.readthedocs.io/en/latest/api.html#mmcv.fileio.FileClient | ||
# for more details. | ||
# file_client_args = dict( | ||
# backend='petrel', | ||
# path_mapping=dict({ | ||
# './data/nuscenes/': 's3://nuscenes/nuscenes/', | ||
# 'data/nuscenes/': 's3://nuscenes/nuscenes/' | ||
# })) | ||
train_pipeline = [ | ||
dict( | ||
type='LoadPointsFromFile', | ||
coord_type='LIDAR', | ||
load_dim=5, | ||
use_dim=5, | ||
file_client_args=file_client_args), | ||
dict( | ||
type='LoadPointsFromMultiSweeps', | ||
sweeps_num=10, | ||
file_client_args=file_client_args), | ||
dict(type='LoadAnnotations3D', with_bbox_3d=True, with_label_3d=True), | ||
dict( | ||
type='GlobalRotScaleTrans', | ||
rot_range=[-0.3925, 0.3925], | ||
scale_ratio_range=[0.95, 1.05], | ||
translation_std=[0, 0, 0]), | ||
dict(type='RandomFlip3D', flip_ratio_bev_horizontal=0.5), | ||
dict(type='PointsRangeFilter', point_cloud_range=point_cloud_range), | ||
dict(type='ObjectRangeFilter', point_cloud_range=point_cloud_range), | ||
dict(type='ObjectNameFilter', classes=class_names), | ||
dict(type='PointShuffle'), | ||
dict(type='DefaultFormatBundle3D', class_names=class_names), | ||
dict(type='Collect3D', keys=['points', 'gt_bboxes_3d', 'gt_labels_3d']) | ||
] | ||
test_pipeline = [ | ||
dict( | ||
type='LoadPointsFromFile', | ||
coord_type='LIDAR', | ||
load_dim=5, | ||
use_dim=5, | ||
file_client_args=file_client_args), | ||
dict( | ||
type='LoadPointsFromMultiSweeps', | ||
sweeps_num=10, | ||
file_client_args=file_client_args), | ||
dict( | ||
type='MultiScaleFlipAug3D', | ||
img_scale=(1333, 800), | ||
pts_scale_ratio=1, | ||
flip=False, | ||
transforms=[ | ||
dict( | ||
type='GlobalRotScaleTrans', | ||
rot_range=[0, 0], | ||
scale_ratio_range=[1., 1.], | ||
translation_std=[0, 0, 0]), | ||
dict(type='RandomFlip3D'), | ||
dict( | ||
type='PointsRangeFilter', point_cloud_range=point_cloud_range), | ||
dict( | ||
type='DefaultFormatBundle3D', | ||
class_names=class_names, | ||
with_label=False), | ||
dict(type='Collect3D', keys=['points']) | ||
]) | ||
] | ||
# construct a pipeline for data and gt loading in show function | ||
# please keep its loading function consistent with test_pipeline (e.g. client) | ||
eval_pipeline = [ | ||
dict( | ||
type='LoadPointsFromFile', | ||
coord_type='LIDAR', | ||
load_dim=5, | ||
use_dim=5, | ||
file_client_args=file_client_args), | ||
dict( | ||
type='LoadPointsFromMultiSweeps', | ||
sweeps_num=10, | ||
file_client_args=file_client_args), | ||
dict( | ||
type='DefaultFormatBundle3D', | ||
class_names=class_names, | ||
with_label=False), | ||
dict(type='Collect3D', keys=['points']) | ||
] | ||
|
||
data = dict( | ||
samples_per_gpu=4, | ||
workers_per_gpu=4, | ||
train=dict( | ||
type=dataset_type, | ||
data_root=data_root, | ||
ann_file=data_root + 'nuscenes_infos_train.pkl', | ||
pipeline=train_pipeline, | ||
classes=class_names, | ||
modality=input_modality, | ||
test_mode=False, | ||
# we use box_type_3d='LiDAR' in kitti and nuscenes dataset | ||
# and box_type_3d='Depth' in sunrgbd and scannet dataset. | ||
box_type_3d='LiDAR'), | ||
val=dict( | ||
type=dataset_type, | ||
ann_file=data_root + 'nuscenes_infos_val.pkl', | ||
pipeline=test_pipeline, | ||
classes=class_names, | ||
modality=input_modality, | ||
test_mode=True, | ||
box_type_3d='LiDAR'), | ||
test=dict( | ||
type=dataset_type, | ||
data_root=data_root, | ||
ann_file=data_root + 'nuscenes_infos_val.pkl', | ||
pipeline=test_pipeline, | ||
classes=class_names, | ||
modality=input_modality, | ||
test_mode=True, | ||
box_type_3d='LiDAR')) | ||
# For nuScenes dataset, we usually evaluate the model at the end of training. | ||
# Since the models are trained by 24 epochs by default, we set evaluation | ||
# interval to be 24. Please change the interval accordingly if you do not | ||
# use a default schedule. | ||
evaluation = dict(interval=24, pipeline=eval_pipeline) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
# dataset settings | ||
# D5 in the config name means the whole dataset is divided into 5 folds | ||
# We only use one fold for efficient experiments | ||
dataset_type = 'CustomWaymoDataset' | ||
data_root = 'data/waymo/kitti_format/' | ||
file_client_args = dict(backend='disk') | ||
# Uncomment the following if use ceph or other file clients. | ||
# See https://mmcv.readthedocs.io/en/latest/api.html#mmcv.fileio.FileClient | ||
# for more details. | ||
# file_client_args = dict( | ||
# backend='petrel', path_mapping=dict(data='s3://waymo_data/')) | ||
|
||
img_norm_cfg = dict( | ||
mean=[103.530, 116.280, 123.675], std=[1.0, 1.0, 1.0], to_rgb=False) | ||
class_names = ['Car', 'Pedestrian', 'Cyclist'] | ||
point_cloud_range = [-74.88, -74.88, -2, 74.88, 74.88, 4] | ||
input_modality = dict(use_lidar=False, use_camera=True) | ||
db_sampler = dict( | ||
data_root=data_root, | ||
info_path=data_root + 'waymo_dbinfos_train.pkl', | ||
rate=1.0, | ||
prepare=dict( | ||
filter_by_difficulty=[-1], | ||
filter_by_min_points=dict(Car=5, Pedestrian=10, Cyclist=10)), | ||
classes=class_names, | ||
sample_groups=dict(Car=15, Pedestrian=10, Cyclist=10), | ||
points_loader=dict( | ||
type='LoadPointsFromFile', | ||
coord_type='LIDAR', | ||
load_dim=5, | ||
use_dim=[0, 1, 2, 3, 4], | ||
file_client_args=file_client_args)) | ||
|
||
|
||
|
||
train_pipeline = [ | ||
dict(type='LoadMultiViewImageFromFiles', to_float32=True), | ||
dict(type='PhotoMetricDistortionMultiViewImage'), | ||
dict(type='LoadAnnotations3D', with_bbox_3d=True, with_label_3d=True, with_attr_label=False), | ||
dict(type='ObjectRangeFilter', point_cloud_range=point_cloud_range), | ||
dict(type='ObjectNameFilter', classes=class_names), | ||
dict(type='NormalizeMultiviewImage', **img_norm_cfg), | ||
dict(type='PadMultiViewImage', size_divisor=32), | ||
dict(type='DefaultFormatBundle3D', class_names=class_names), | ||
dict(type='CustomCollect3D', keys=['gt_bboxes_3d', 'gt_labels_3d', 'img']) | ||
] | ||
|
||
|
||
test_pipeline = [ | ||
dict(type='LoadMultiViewImageFromFiles', to_float32=True), | ||
dict(type='NormalizeMultiviewImage', **img_norm_cfg), | ||
dict(type='PadMultiViewImage', size_divisor=32), | ||
dict( | ||
type='MultiScaleFlipAug3D', | ||
img_scale=(1920, 1280), | ||
pts_scale_ratio=1, | ||
flip=False, | ||
transforms=[ | ||
dict( | ||
type='DefaultFormatBundle3D', | ||
class_names=class_names, | ||
with_label=False), | ||
dict(type='CustomCollect3D', keys=['img']) | ||
]) | ||
] | ||
|
||
|
||
# construct a pipeline for data and gt loading in show function | ||
# please keep its loading function consistent with test_pipeline (e.g. client) | ||
|
||
data = dict( | ||
samples_per_gpu=2, | ||
workers_per_gpu=4, | ||
train=dict( | ||
type='RepeatDataset', | ||
times=2, | ||
dataset=dict( | ||
type=dataset_type, | ||
data_root=data_root, | ||
ann_file=data_root + 'waymo_infos_train.pkl', | ||
split='training', | ||
pipeline=train_pipeline, | ||
modality=input_modality, | ||
classes=class_names, | ||
test_mode=False, | ||
# we use box_type_3d='LiDAR' in kitti and nuscenes dataset | ||
# and box_type_3d='Depth' in sunrgbd and scannet dataset. | ||
box_type_3d='LiDAR', | ||
# load one frame every five frames | ||
load_interval=5)), | ||
val=dict( | ||
type=dataset_type, | ||
data_root=data_root, | ||
ann_file=data_root + 'waymo_infos_val.pkl', | ||
split='training', | ||
pipeline=test_pipeline, | ||
modality=input_modality, | ||
classes=class_names, | ||
test_mode=True, | ||
box_type_3d='LiDAR'), | ||
test=dict( | ||
type=dataset_type, | ||
data_root=data_root, | ||
ann_file=data_root + 'waymo_infos_val.pkl', | ||
split='training', | ||
pipeline=test_pipeline, | ||
modality=input_modality, | ||
classes=class_names, | ||
test_mode=True, | ||
box_type_3d='LiDAR')) | ||
|
||
evaluation = dict(interval=24, pipeline=test_pipeline) |