Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
mmdetection3d
Commits
2c136730
Unverified
Commit
2c136730
authored
Jun 19, 2023
by
Jingwei Zhang
Committed by
GitHub
Jun 19, 2023
Browse files
[Feature] Support new config type (#2608)
* support new configs * support new configs * verify configs
parent
aea26ac7
Changes
52
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
2993 additions
and
0 deletions
+2993
-0
mmdet3d/configs/_base_/__init__.py
mmdet3d/configs/_base_/__init__.py
+1
-0
mmdet3d/configs/_base_/datasets/__init__.py
mmdet3d/configs/_base_/datasets/__init__.py
+1
-0
mmdet3d/configs/_base_/datasets/kitti_3d_3class.py
mmdet3d/configs/_base_/datasets/kitti_3d_3class.py
+181
-0
mmdet3d/configs/_base_/datasets/kitti_3d_car.py
mmdet3d/configs/_base_/datasets/kitti_3d_car.py
+179
-0
mmdet3d/configs/_base_/datasets/kitti_mono3d.py
mmdet3d/configs/_base_/datasets/kitti_mono3d.py
+113
-0
mmdet3d/configs/_base_/datasets/lyft_3d.py
mmdet3d/configs/_base_/datasets/lyft_3d.py
+176
-0
mmdet3d/configs/_base_/datasets/lyft_3d_range100.py
mmdet3d/configs/_base_/datasets/lyft_3d_range100.py
+166
-0
mmdet3d/configs/_base_/datasets/nuim_instance.py
mmdet3d/configs/_base_/datasets/nuim_instance.py
+74
-0
mmdet3d/configs/_base_/datasets/nus_3d.py
mmdet3d/configs/_base_/datasets/nus_3d.py
+183
-0
mmdet3d/configs/_base_/datasets/nus_mono3d.py
mmdet3d/configs/_base_/datasets/nus_mono3d.py
+132
-0
mmdet3d/configs/_base_/datasets/s3dis_3d.py
mmdet3d/configs/_base_/datasets/s3dis_3d.py
+150
-0
mmdet3d/configs/_base_/datasets/s3dis_seg.py
mmdet3d/configs/_base_/datasets/s3dis_seg.py
+186
-0
mmdet3d/configs/_base_/datasets/scannet_3d.py
mmdet3d/configs/_base_/datasets/scannet_3d.py
+159
-0
mmdet3d/configs/_base_/datasets/scannet_seg.py
mmdet3d/configs/_base_/datasets/scannet_seg.py
+181
-0
mmdet3d/configs/_base_/datasets/semantickitti.py
mmdet3d/configs/_base_/datasets/semantickitti.py
+240
-0
mmdet3d/configs/_base_/datasets/sunrgbd_3d.py
mmdet3d/configs/_base_/datasets/sunrgbd_3d.py
+141
-0
mmdet3d/configs/_base_/datasets/waymoD5_3d_3class.py
mmdet3d/configs/_base_/datasets/waymoD5_3d_3class.py
+191
-0
mmdet3d/configs/_base_/datasets/waymoD5_3d_car.py
mmdet3d/configs/_base_/datasets/waymoD5_3d_car.py
+188
-0
mmdet3d/configs/_base_/datasets/waymoD5_fov_mono3d_3class.py
mmdet3d/configs/_base_/datasets/waymoD5_fov_mono3d_3class.py
+174
-0
mmdet3d/configs/_base_/datasets/waymoD5_mv3d_3class.py
mmdet3d/configs/_base_/datasets/waymoD5_mv3d_3class.py
+177
-0
No files found.
mmdet3d/configs/_base_/__init__.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
mmdet3d/configs/_base_/datasets/__init__.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
mmdet3d/configs/_base_/datasets/kitti_3d_3class.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
from
mmengine.dataset.dataset_wrapper
import
RepeatDataset
from
mmengine.dataset.sampler
import
DefaultSampler
from
mmengine.visualization.vis_backend
import
LocalVisBackend
from
mmdet3d.datasets.kitti_dataset
import
KittiDataset
from
mmdet3d.datasets.transforms.formating
import
Pack3DDetInputs
from
mmdet3d.datasets.transforms.loading
import
(
LoadAnnotations3D
,
LoadPointsFromFile
)
from
mmdet3d.datasets.transforms.test_time_aug
import
MultiScaleFlipAug3D
from
mmdet3d.datasets.transforms.transforms_3d
import
(
# noqa
GlobalRotScaleTrans
,
ObjectNoise
,
ObjectRangeFilter
,
ObjectSample
,
PointShuffle
,
PointsRangeFilter
,
RandomFlip3D
)
from
mmdet3d.evaluation.metrics.kitti_metric
import
KittiMetric
from
mmdet3d.visualization.local_visualizer
import
Det3DLocalVisualizer
# dataset settings
dataset_type
=
'KittiDataset'
data_root
=
'data/kitti/'
class_names
=
[
'Pedestrian'
,
'Cyclist'
,
'Car'
]
point_cloud_range
=
[
0
,
-
40
,
-
3
,
70.4
,
40
,
1
]
input_modality
=
dict
(
use_lidar
=
True
,
use_camera
=
False
)
metainfo
=
dict
(
classes
=
class_names
)
# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)
# data_root = 's3://openmmlab/datasets/detection3d/kitti/'
# Method 2: Use backend_args, file_client_args in versions before 1.1.0
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# './data/': 's3://openmmlab/datasets/detection3d/',
# 'data/': 's3://openmmlab/datasets/detection3d/'
# }))
backend_args
=
None
db_sampler
=
dict
(
data_root
=
data_root
,
info_path
=
data_root
+
'kitti_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
=
12
,
Pedestrian
=
6
,
Cyclist
=
6
),
points_loader
=
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
4
,
use_dim
=
4
,
backend_args
=
backend_args
),
backend_args
=
backend_args
)
train_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
4
,
# x, y, z, intensity
use_dim
=
4
,
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox_3d
=
True
,
with_label_3d
=
True
),
dict
(
type
=
ObjectSample
,
db_sampler
=
db_sampler
),
dict
(
type
=
ObjectNoise
,
num_try
=
100
,
translation_std
=
[
1.0
,
1.0
,
0.5
],
global_rot_range
=
[
0.0
,
0.0
],
rot_range
=
[
-
0.78539816
,
0.78539816
]),
dict
(
type
=
RandomFlip3D
,
flip_ratio_bev_horizontal
=
0.5
),
dict
(
type
=
GlobalRotScaleTrans
,
rot_range
=
[
-
0.78539816
,
0.78539816
],
scale_ratio_range
=
[
0.95
,
1.05
]),
dict
(
type
=
PointsRangeFilter
,
point_cloud_range
=
point_cloud_range
),
dict
(
type
=
ObjectRangeFilter
,
point_cloud_range
=
point_cloud_range
),
dict
(
type
=
PointShuffle
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
,
'gt_bboxes_3d'
,
'gt_labels_3d'
])
]
test_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
4
,
use_dim
=
4
,
backend_args
=
backend_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
=
Pack3DDetInputs
,
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
=
4
,
use_dim
=
4
,
backend_args
=
backend_args
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
])
]
train_dataloader
=
dict
(
batch_size
=
6
,
num_workers
=
4
,
persistent_workers
=
True
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
True
),
dataset
=
dict
(
type
=
RepeatDataset
,
times
=
2
,
dataset
=
dict
(
type
=
KittiDataset
,
data_root
=
data_root
,
ann_file
=
'kitti_infos_train.pkl'
,
data_prefix
=
dict
(
pts
=
'training/velodyne_reduced'
),
pipeline
=
train_pipeline
,
modality
=
input_modality
,
test_mode
=
False
,
metainfo
=
metainfo
,
# 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'
,
backend_args
=
backend_args
)))
val_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
KittiDataset
,
data_root
=
data_root
,
data_prefix
=
dict
(
pts
=
'training/velodyne_reduced'
),
ann_file
=
'kitti_infos_val.pkl'
,
pipeline
=
test_pipeline
,
modality
=
input_modality
,
test_mode
=
True
,
metainfo
=
metainfo
,
box_type_3d
=
'LiDAR'
,
backend_args
=
backend_args
))
test_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
KittiDataset
,
data_root
=
data_root
,
data_prefix
=
dict
(
pts
=
'training/velodyne_reduced'
),
ann_file
=
'kitti_infos_val.pkl'
,
pipeline
=
test_pipeline
,
modality
=
input_modality
,
test_mode
=
True
,
metainfo
=
metainfo
,
box_type_3d
=
'LiDAR'
,
backend_args
=
backend_args
))
val_evaluator
=
dict
(
type
=
KittiMetric
,
ann_file
=
data_root
+
'kitti_infos_val.pkl'
,
metric
=
'bbox'
,
backend_args
=
backend_args
)
test_evaluator
=
val_evaluator
vis_backends
=
[
dict
(
type
=
LocalVisBackend
)]
visualizer
=
dict
(
type
=
Det3DLocalVisualizer
,
vis_backends
=
vis_backends
,
name
=
'visualizer'
)
mmdet3d/configs/_base_/datasets/kitti_3d_car.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
from
mmengine.dataset.dataset_wrapper
import
RepeatDataset
from
mmengine.dataset.sampler
import
DefaultSampler
from
mmengine.visualization.vis_backend
import
LocalVisBackend
from
mmdet3d.datasets.kitti_dataset
import
KittiDataset
from
mmdet3d.datasets.transforms.formating
import
Pack3DDetInputs
from
mmdet3d.datasets.transforms.loading
import
(
LoadAnnotations3D
,
LoadPointsFromFile
)
from
mmdet3d.datasets.transforms.test_time_aug
import
MultiScaleFlipAug3D
from
mmdet3d.datasets.transforms.transforms_3d
import
(
# noqa
GlobalRotScaleTrans
,
ObjectNoise
,
ObjectRangeFilter
,
ObjectSample
,
PointShuffle
,
PointsRangeFilter
,
RandomFlip3D
)
from
mmdet3d.evaluation.metrics.kitti_metric
import
KittiMetric
from
mmdet3d.visualization.local_visualizer
import
Det3DLocalVisualizer
# dataset settings
dataset_type
=
'KittiDataset'
data_root
=
'data/kitti/'
class_names
=
[
'Car'
]
point_cloud_range
=
[
0
,
-
40
,
-
3
,
70.4
,
40
,
1
]
input_modality
=
dict
(
use_lidar
=
True
,
use_camera
=
False
)
metainfo
=
dict
(
classes
=
class_names
)
# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)
# data_root = 's3://openmmlab/datasets/detection3d/kitti/'
# Method 2: Use backend_args, file_client_args in versions before 1.1.0
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# './data/': 's3://openmmlab/datasets/detection3d/',
# 'data/': 's3://openmmlab/datasets/detection3d/'
# }))
backend_args
=
None
db_sampler
=
dict
(
data_root
=
data_root
,
info_path
=
data_root
+
'kitti_dbinfos_train.pkl'
,
rate
=
1.0
,
prepare
=
dict
(
filter_by_difficulty
=
[
-
1
],
filter_by_min_points
=
dict
(
Car
=
5
)),
classes
=
class_names
,
sample_groups
=
dict
(
Car
=
15
),
points_loader
=
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
4
,
use_dim
=
4
,
backend_args
=
backend_args
),
backend_args
=
backend_args
)
train_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
4
,
# x, y, z, intensity
use_dim
=
4
,
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox_3d
=
True
,
with_label_3d
=
True
),
dict
(
type
=
ObjectSample
,
db_sampler
=
db_sampler
),
dict
(
type
=
ObjectNoise
,
num_try
=
100
,
translation_std
=
[
1.0
,
1.0
,
0.5
],
global_rot_range
=
[
0.0
,
0.0
],
rot_range
=
[
-
0.78539816
,
0.78539816
]),
dict
(
type
=
RandomFlip3D
,
flip_ratio_bev_horizontal
=
0.5
),
dict
(
type
=
GlobalRotScaleTrans
,
rot_range
=
[
-
0.78539816
,
0.78539816
],
scale_ratio_range
=
[
0.95
,
1.05
]),
dict
(
type
=
PointsRangeFilter
,
point_cloud_range
=
point_cloud_range
),
dict
(
type
=
ObjectRangeFilter
,
point_cloud_range
=
point_cloud_range
),
dict
(
type
=
PointShuffle
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
,
'gt_bboxes_3d'
,
'gt_labels_3d'
])
]
test_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
4
,
use_dim
=
4
,
backend_args
=
backend_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
=
Pack3DDetInputs
,
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
=
4
,
use_dim
=
4
,
backend_args
=
backend_args
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
])
]
train_dataloader
=
dict
(
batch_size
=
6
,
num_workers
=
4
,
persistent_workers
=
True
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
True
),
dataset
=
dict
(
type
=
RepeatDataset
,
times
=
2
,
dataset
=
dict
(
type
=
KittiDataset
,
data_root
=
data_root
,
ann_file
=
'kitti_infos_train.pkl'
,
data_prefix
=
dict
(
pts
=
'training/velodyne_reduced'
),
pipeline
=
train_pipeline
,
modality
=
input_modality
,
test_mode
=
False
,
metainfo
=
metainfo
,
# 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'
,
backend_args
=
backend_args
)))
val_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
KittiDataset
,
data_root
=
data_root
,
data_prefix
=
dict
(
pts
=
'training/velodyne_reduced'
),
ann_file
=
'kitti_infos_val.pkl'
,
pipeline
=
test_pipeline
,
modality
=
input_modality
,
test_mode
=
True
,
metainfo
=
metainfo
,
box_type_3d
=
'LiDAR'
,
backend_args
=
backend_args
))
test_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
KittiDataset
,
data_root
=
data_root
,
data_prefix
=
dict
(
pts
=
'training/velodyne_reduced'
),
ann_file
=
'kitti_infos_val.pkl'
,
pipeline
=
test_pipeline
,
modality
=
input_modality
,
test_mode
=
True
,
metainfo
=
metainfo
,
box_type_3d
=
'LiDAR'
,
backend_args
=
backend_args
))
val_evaluator
=
dict
(
type
=
KittiMetric
,
ann_file
=
data_root
+
'kitti_infos_val.pkl'
,
metric
=
'bbox'
,
backend_args
=
backend_args
)
test_evaluator
=
val_evaluator
vis_backends
=
[
dict
(
type
=
LocalVisBackend
)]
visualizer
=
dict
(
type
=
Det3DLocalVisualizer
,
vis_backends
=
vis_backends
,
name
=
'visualizer'
)
mmdet3d/configs/_base_/datasets/kitti_mono3d.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
from
mmcv.transforms.processing
import
Resize
from
mmengine.dataset.sampler
import
DefaultSampler
from
mmengine.visualization.vis_backend
import
LocalVisBackend
from
mmdet3d.datasets.kitti_dataset
import
KittiDataset
from
mmdet3d.datasets.transforms.formating
import
Pack3DDetInputs
from
mmdet3d.datasets.transforms.loading
import
(
LoadAnnotations3D
,
LoadImageFromFileMono3D
)
from
mmdet3d.datasets.transforms.transforms_3d
import
RandomFlip3D
from
mmdet3d.evaluation.metrics.kitti_metric
import
KittiMetric
from
mmdet3d.visualization.local_visualizer
import
Det3DLocalVisualizer
dataset_type
=
'KittiDataset'
data_root
=
'data/kitti/'
class_names
=
[
'Pedestrian'
,
'Cyclist'
,
'Car'
]
input_modality
=
dict
(
use_lidar
=
False
,
use_camera
=
True
)
metainfo
=
dict
(
classes
=
class_names
)
# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)
# data_root = 's3://openmmlab/datasets/detection3d/kitti/'
# Method 2: Use backend_args, file_client_args in versions before 1.1.0
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# './data/': 's3://openmmlab/datasets/detection3d/',
# 'data/': 's3://openmmlab/datasets/detection3d/'
# }))
backend_args
=
None
train_pipeline
=
[
dict
(
type
=
LoadImageFromFileMono3D
,
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox
=
True
,
with_label
=
True
,
with_attr_label
=
False
,
with_bbox_3d
=
True
,
with_label_3d
=
True
,
with_bbox_depth
=
True
),
dict
(
type
=
Resize
,
scale
=
(
1242
,
375
),
keep_ratio
=
True
),
dict
(
type
=
RandomFlip3D
,
flip_ratio_bev_horizontal
=
0.5
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'img'
,
'gt_bboxes'
,
'gt_bboxes_labels'
,
'gt_bboxes_3d'
,
'gt_labels_3d'
,
'centers_2d'
,
'depths'
]),
]
test_pipeline
=
[
dict
(
type
=
LoadImageFromFileMono3D
,
backend_args
=
backend_args
),
dict
(
type
=
Resize
,
scale
=
(
1242
,
375
),
keep_ratio
=
True
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'img'
])
]
eval_pipeline
=
[
dict
(
type
=
LoadImageFromFileMono3D
,
backend_args
=
backend_args
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'img'
])
]
train_dataloader
=
dict
(
batch_size
=
2
,
num_workers
=
2
,
persistent_workers
=
True
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
True
),
dataset
=
dict
(
type
=
KittiDataset
,
data_root
=
data_root
,
ann_file
=
'kitti_infos_train.pkl'
,
data_prefix
=
dict
(
img
=
'training/image_2'
),
pipeline
=
train_pipeline
,
modality
=
input_modality
,
load_type
=
'fov_image_based'
,
test_mode
=
False
,
metainfo
=
metainfo
,
# we use box_type_3d='Camera' in monocular 3d
# detection task
box_type_3d
=
'Camera'
,
backend_args
=
backend_args
))
val_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
2
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
KittiDataset
,
data_root
=
data_root
,
data_prefix
=
dict
(
img
=
'training/image_2'
),
ann_file
=
'kitti_infos_val.pkl'
,
pipeline
=
test_pipeline
,
modality
=
input_modality
,
load_type
=
'fov_image_based'
,
metainfo
=
metainfo
,
test_mode
=
True
,
box_type_3d
=
'Camera'
,
backend_args
=
backend_args
))
test_dataloader
=
val_dataloader
val_evaluator
=
dict
(
type
=
KittiMetric
,
ann_file
=
data_root
+
'kitti_infos_val.pkl'
,
metric
=
'bbox'
,
backend_args
=
backend_args
)
test_evaluator
=
val_evaluator
vis_backends
=
[
dict
(
type
=
LocalVisBackend
)]
visualizer
=
dict
(
type
=
Det3DLocalVisualizer
,
vis_backends
=
vis_backends
,
name
=
'visualizer'
)
mmdet3d/configs/_base_/datasets/lyft_3d.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
from
mmengine.dataset.sampler
import
DefaultSampler
from
mmengine.visualization.vis_backend
import
LocalVisBackend
from
mmdet3d.datasets.lyft_dataset
import
LyftDataset
from
mmdet3d.datasets.transforms.formating
import
Pack3DDetInputs
from
mmdet3d.datasets.transforms.loading
import
(
LoadAnnotations3D
,
LoadPointsFromFile
,
LoadPointsFromMultiSweeps
)
from
mmdet3d.datasets.transforms.test_time_aug
import
MultiScaleFlipAug3D
from
mmdet3d.datasets.transforms.transforms_3d
import
(
GlobalRotScaleTrans
,
ObjectRangeFilter
,
PointShuffle
,
PointsRangeFilter
,
RandomFlip3D
)
from
mmdet3d.evaluation.metrics.lyft_metric
import
LyftMetric
from
mmdet3d.visualization.local_visualizer
import
Det3DLocalVisualizer
# 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
=
'LyftDataset'
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
)
data_prefix
=
dict
(
pts
=
'v1.01-train/lidar'
,
img
=
''
,
sweeps
=
'v1.01-train/lidar'
)
# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)
# data_root = 's3://openmmlab/datasets/detection3d/lyft/'
# Method 2: Use backend_args, file_client_args in versions before 1.1.0
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# './data/': 's3://openmmlab/datasets/detection3d/',
# 'data/': 's3://openmmlab/datasets/detection3d/'
# }))
backend_args
=
None
train_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
5
,
use_dim
=
5
,
backend_args
=
backend_args
),
dict
(
type
=
LoadPointsFromMultiSweeps
,
sweeps_num
=
10
,
backend_args
=
backend_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
=
Pack3DDetInputs
,
keys
=
[
'points'
,
'gt_bboxes_3d'
,
'gt_labels_3d'
])
]
test_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
5
,
use_dim
=
5
,
backend_args
=
backend_args
),
dict
(
type
=
LoadPointsFromMultiSweeps
,
sweeps_num
=
10
,
backend_args
=
backend_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
=
Pack3DDetInputs
,
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
,
backend_args
=
backend_args
),
dict
(
type
=
LoadPointsFromMultiSweeps
,
sweeps_num
=
10
,
backend_args
=
backend_args
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
])
]
train_dataloader
=
dict
(
batch_size
=
2
,
num_workers
=
2
,
persistent_workers
=
True
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
True
),
dataset
=
dict
(
type
=
LyftDataset
,
data_root
=
data_root
,
ann_file
=
'lyft_infos_train.pkl'
,
pipeline
=
train_pipeline
,
metainfo
=
dict
(
classes
=
class_names
),
modality
=
input_modality
,
data_prefix
=
data_prefix
,
test_mode
=
False
,
box_type_3d
=
'LiDAR'
,
backend_args
=
backend_args
))
test_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
LyftDataset
,
data_root
=
data_root
,
ann_file
=
'lyft_infos_val.pkl'
,
pipeline
=
test_pipeline
,
metainfo
=
dict
(
classes
=
class_names
),
modality
=
input_modality
,
data_prefix
=
data_prefix
,
test_mode
=
True
,
box_type_3d
=
'LiDAR'
,
backend_args
=
backend_args
))
val_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
LyftDataset
,
data_root
=
data_root
,
ann_file
=
'lyft_infos_val.pkl'
,
pipeline
=
test_pipeline
,
metainfo
=
dict
(
classes
=
class_names
),
modality
=
input_modality
,
test_mode
=
True
,
data_prefix
=
data_prefix
,
box_type_3d
=
'LiDAR'
,
backend_args
=
backend_args
))
val_evaluator
=
dict
(
type
=
LyftMetric
,
data_root
=
data_root
,
ann_file
=
'lyft_infos_val.pkl'
,
metric
=
'bbox'
,
backend_args
=
backend_args
)
test_evaluator
=
val_evaluator
vis_backends
=
[
dict
(
type
=
LocalVisBackend
)]
visualizer
=
dict
(
type
=
Det3DLocalVisualizer
,
vis_backends
=
vis_backends
,
name
=
'visualizer'
)
mmdet3d/configs/_base_/datasets/lyft_3d_range100.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
from
mmengine.dataset.sampler
import
DefaultSampler
from
mmengine.visualization.vis_backend
import
LocalVisBackend
from
mmdet3d.datasets.lyft_dataset
import
LyftDataset
from
mmdet3d.datasets.transforms.formating
import
Pack3DDetInputs
from
mmdet3d.datasets.transforms.loading
import
(
LoadAnnotations3D
,
LoadPointsFromFile
,
LoadPointsFromMultiSweeps
)
from
mmdet3d.datasets.transforms.test_time_aug
import
MultiScaleFlipAug3D
from
mmdet3d.datasets.transforms.transforms_3d
import
(
GlobalRotScaleTrans
,
ObjectRangeFilter
,
PointShuffle
,
PointsRangeFilter
,
RandomFlip3D
)
from
mmdet3d.evaluation.metrics.lyft_metric
import
LyftMetric
from
mmdet3d.visualization.local_visualizer
import
Det3DLocalVisualizer
# If point cloud range is changed, the models should also change their point
# cloud range accordingly
point_cloud_range
=
[
-
100
,
-
100
,
-
5
,
100
,
100
,
3
]
# For Lyft we usually do 9-class detection
class_names
=
[
'car'
,
'truck'
,
'bus'
,
'emergency_vehicle'
,
'other_vehicle'
,
'motorcycle'
,
'bicycle'
,
'pedestrian'
,
'animal'
]
dataset_type
=
'LyftDataset'
data_root
=
'data/lyft/'
data_prefix
=
dict
(
pts
=
'v1.01-train/lidar'
,
img
=
''
,
sweeps
=
'v1.01-train/lidar'
)
# 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
=
False
)
# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)
# data_root = 's3://openmmlab/datasets/detection3d/lyft/'
# Method 2: Use backend_args, file_client_args in versions before 1.1.0
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# './data/': 's3://openmmlab/datasets/detection3d/',
# 'data/': 's3://openmmlab/datasets/detection3d/'
# }))
backend_args
=
None
train_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
5
,
use_dim
=
5
,
backend_args
=
backend_args
),
dict
(
type
=
LoadPointsFromMultiSweeps
,
sweeps_num
=
10
,
backend_args
=
backend_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
=
Pack3DDetInputs
,
keys
=
[
'points'
,
'gt_bboxes_3d'
,
'gt_labels_3d'
])
]
test_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
5
,
use_dim
=
5
,
backend_args
=
backend_args
),
dict
(
type
=
LoadPointsFromMultiSweeps
,
sweeps_num
=
10
,
backend_args
=
backend_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
=
Pack3DDetInputs
,
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
,
backend_args
=
backend_args
),
dict
(
type
=
LoadPointsFromMultiSweeps
,
sweeps_num
=
10
,
backend_args
=
backend_args
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
])
]
train_dataloader
=
dict
(
batch_size
=
2
,
num_workers
=
2
,
persistent_workers
=
True
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
True
),
dataset
=
dict
(
type
=
LyftDataset
,
data_root
=
data_root
,
ann_file
=
'lyft_infos_train.pkl'
,
pipeline
=
train_pipeline
,
metainfo
=
dict
(
classes
=
class_names
),
modality
=
input_modality
,
data_prefix
=
data_prefix
,
test_mode
=
False
,
box_type_3d
=
'LiDAR'
,
backend_args
=
backend_args
))
val_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
LyftDataset
,
data_root
=
data_root
,
ann_file
=
'lyft_infos_val.pkl'
,
pipeline
=
test_pipeline
,
metainfo
=
dict
(
classes
=
class_names
),
modality
=
input_modality
,
test_mode
=
True
,
data_prefix
=
data_prefix
,
box_type_3d
=
'LiDAR'
,
backend_args
=
backend_args
))
test_dataloader
=
val_dataloader
val_evaluator
=
dict
(
type
=
LyftMetric
,
data_root
=
data_root
,
ann_file
=
'lyft_infos_val.pkl'
,
metric
=
'bbox'
,
backend_args
=
backend_args
)
test_evaluator
=
val_evaluator
vis_backends
=
[
dict
(
type
=
LocalVisBackend
)]
visualizer
=
dict
(
type
=
Det3DLocalVisualizer
,
vis_backends
=
vis_backends
,
name
=
'visualizer'
)
mmdet3d/configs/_base_/datasets/nuim_instance.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
from
mmcv.transforms.loading
import
LoadAnnotations
,
LoadImageFromFile
from
mmcv.transforms.processing
import
MultiScaleFlipAug
,
RandomFlip
,
Resize
dataset_type
=
'CocoDataset'
data_root
=
'data/nuimages/'
class_names
=
[
'car'
,
'truck'
,
'trailer'
,
'bus'
,
'construction_vehicle'
,
'bicycle'
,
'motorcycle'
,
'pedestrian'
,
'traffic_cone'
,
'barrier'
]
# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)
# data_root = 's3://openmmlab/datasets/detection3d/nuimages/'
# Method 2: Use backend_args, file_client_args in versions before 1.1.0
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# './data/': 's3://openmmlab/datasets/detection3d/',
# 'data/': 's3://openmmlab/datasets/detection3d/'
# }))
backend_args
=
None
train_pipeline
=
[
dict
(
type
=
LoadImageFromFile
,
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations
,
with_bbox
=
True
,
with_mask
=
True
),
dict
(
type
=
Resize
,
img_scale
=
[(
1280
,
720
),
(
1920
,
1080
)],
multiscale_mode
=
'range'
,
keep_ratio
=
True
),
dict
(
type
=
RandomFlip
,
flip_ratio
=
0.5
),
dict
(
type
=
'PackDetInputs'
),
]
test_pipeline
=
[
dict
(
type
=
LoadImageFromFile
,
backend_args
=
backend_args
),
dict
(
type
=
MultiScaleFlipAug
,
img_scale
=
(
1600
,
900
),
flip
=
False
,
transforms
=
[
dict
(
type
=
Resize
,
keep_ratio
=
True
),
dict
(
type
=
RandomFlip
),
]),
dict
(
type
=
'PackDetInputs'
,
meta_keys
=
(
'img_id'
,
'img_path'
,
'ori_shape'
,
'img_shape'
,
'scale_factor'
)),
]
data
=
dict
(
samples_per_gpu
=
2
,
workers_per_gpu
=
2
,
train
=
dict
(
type
=
dataset_type
,
ann_file
=
data_root
+
'annotations/nuimages_v1.0-train.json'
,
img_prefix
=
data_root
,
classes
=
class_names
,
pipeline
=
train_pipeline
),
val
=
dict
(
type
=
dataset_type
,
ann_file
=
data_root
+
'annotations/nuimages_v1.0-val.json'
,
img_prefix
=
data_root
,
classes
=
class_names
,
pipeline
=
test_pipeline
),
test
=
dict
(
type
=
dataset_type
,
ann_file
=
data_root
+
'annotations/nuimages_v1.0-val.json'
,
img_prefix
=
data_root
,
classes
=
class_names
,
pipeline
=
test_pipeline
))
evaluation
=
dict
(
metric
=
[
'bbox'
,
'segm'
])
mmdet3d/configs/_base_/datasets/nus_3d.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
from
mmengine.dataset.sampler
import
DefaultSampler
from
mmengine.visualization.vis_backend
import
LocalVisBackend
from
mmdet3d.datasets.nuscenes_dataset
import
NuScenesDataset
from
mmdet3d.datasets.transforms.formating
import
Pack3DDetInputs
from
mmdet3d.datasets.transforms.loading
import
(
LoadAnnotations3D
,
LoadPointsFromFile
,
LoadPointsFromMultiSweeps
)
from
mmdet3d.datasets.transforms.test_time_aug
import
MultiScaleFlipAug3D
from
mmdet3d.datasets.transforms.transforms_3d
import
(
# noqa
GlobalRotScaleTrans
,
ObjectNameFilter
,
ObjectRangeFilter
,
PointShuffle
,
PointsRangeFilter
,
RandomFlip3D
)
from
mmdet3d.evaluation.metrics.nuscenes_metric
import
NuScenesMetric
from
mmdet3d.visualization.local_visualizer
import
Det3DLocalVisualizer
# 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
]
# Using calibration info convert the Lidar-coordinate point cloud range to the
# ego-coordinate point cloud range could bring a little promotion in nuScenes.
# point_cloud_range = [-50, -50.8, -5, 50, 49.2, 3]
# For nuScenes we usually do 10-class detection
class_names
=
[
'car'
,
'truck'
,
'trailer'
,
'bus'
,
'construction_vehicle'
,
'bicycle'
,
'motorcycle'
,
'pedestrian'
,
'traffic_cone'
,
'barrier'
]
metainfo
=
dict
(
classes
=
class_names
)
dataset_type
=
'NuScenesDataset'
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
)
data_prefix
=
dict
(
pts
=
'samples/LIDAR_TOP'
,
img
=
''
,
sweeps
=
'sweeps/LIDAR_TOP'
)
# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)
# data_root = 's3://openmmlab/datasets/detection3d/nuscenes/'
# Method 2: Use backend_args, file_client_args in versions before 1.1.0
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# './data/': 's3://openmmlab/datasets/detection3d/',
# 'data/': 's3://openmmlab/datasets/detection3d/'
# }))
backend_args
=
None
train_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
5
,
use_dim
=
5
,
backend_args
=
backend_args
),
dict
(
type
=
LoadPointsFromMultiSweeps
,
sweeps_num
=
10
,
backend_args
=
backend_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
=
Pack3DDetInputs
,
keys
=
[
'points'
,
'gt_bboxes_3d'
,
'gt_labels_3d'
])
]
test_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
5
,
use_dim
=
5
,
backend_args
=
backend_args
),
dict
(
type
=
LoadPointsFromMultiSweeps
,
sweeps_num
=
10
,
test_mode
=
True
,
backend_args
=
backend_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
=
Pack3DDetInputs
,
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
,
backend_args
=
backend_args
),
dict
(
type
=
LoadPointsFromMultiSweeps
,
sweeps_num
=
10
,
test_mode
=
True
,
backend_args
=
backend_args
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
])
]
train_dataloader
=
dict
(
batch_size
=
4
,
num_workers
=
4
,
persistent_workers
=
True
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
True
),
dataset
=
dict
(
type
=
NuScenesDataset
,
data_root
=
data_root
,
ann_file
=
'nuscenes_infos_train.pkl'
,
pipeline
=
train_pipeline
,
metainfo
=
metainfo
,
modality
=
input_modality
,
test_mode
=
False
,
data_prefix
=
data_prefix
,
# 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'
,
backend_args
=
backend_args
))
test_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
NuScenesDataset
,
data_root
=
data_root
,
ann_file
=
'nuscenes_infos_val.pkl'
,
pipeline
=
test_pipeline
,
metainfo
=
metainfo
,
modality
=
input_modality
,
data_prefix
=
data_prefix
,
test_mode
=
True
,
box_type_3d
=
'LiDAR'
,
backend_args
=
backend_args
))
val_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
NuScenesDataset
,
data_root
=
data_root
,
ann_file
=
'nuscenes_infos_val.pkl'
,
pipeline
=
test_pipeline
,
metainfo
=
metainfo
,
modality
=
input_modality
,
test_mode
=
True
,
data_prefix
=
data_prefix
,
box_type_3d
=
'LiDAR'
,
backend_args
=
backend_args
))
val_evaluator
=
dict
(
type
=
NuScenesMetric
,
data_root
=
data_root
,
ann_file
=
data_root
+
'nuscenes_infos_val.pkl'
,
metric
=
'bbox'
,
backend_args
=
backend_args
)
test_evaluator
=
val_evaluator
vis_backends
=
[
dict
(
type
=
LocalVisBackend
)]
visualizer
=
dict
(
type
=
Det3DLocalVisualizer
,
vis_backends
=
vis_backends
,
name
=
'visualizer'
)
mmdet3d/configs/_base_/datasets/nus_mono3d.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
from
mmcv.transforms.processing
import
Resize
from
mmengine.dataset.sampler
import
DefaultSampler
from
mmengine.visualization.vis_backend
import
LocalVisBackend
from
mmdet3d.datasets.nuscenes_dataset
import
NuScenesDataset
from
mmdet3d.datasets.transforms.formating
import
Pack3DDetInputs
from
mmdet3d.datasets.transforms.loading
import
(
LoadAnnotations3D
,
LoadImageFromFileMono3D
)
from
mmdet3d.datasets.transforms.transforms_3d
import
RandomFlip3D
from
mmdet3d.evaluation.metrics.nuscenes_metric
import
NuScenesMetric
from
mmdet3d.visualization.local_visualizer
import
Det3DLocalVisualizer
dataset_type
=
'NuScenesDataset'
data_root
=
'data/nuscenes/'
class_names
=
[
'car'
,
'truck'
,
'trailer'
,
'bus'
,
'construction_vehicle'
,
'bicycle'
,
'motorcycle'
,
'pedestrian'
,
'traffic_cone'
,
'barrier'
]
metainfo
=
dict
(
classes
=
class_names
)
# Input modality for nuScenes dataset, this is consistent with the submission
# format which requires the information in input_modality.
input_modality
=
dict
(
use_lidar
=
False
,
use_camera
=
True
)
# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)
# data_root = 's3://openmmlab/datasets/detection3d/nuscenes/'
# Method 2: Use backend_args, file_client_args in versions before 1.1.0
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# './data/': 's3://openmmlab/datasets/detection3d/',
# 'data/': 's3://openmmlab/datasets/detection3d/'
# }))
backend_args
=
None
train_pipeline
=
[
dict
(
type
=
LoadImageFromFileMono3D
,
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox
=
True
,
with_label
=
True
,
with_attr_label
=
True
,
with_bbox_3d
=
True
,
with_label_3d
=
True
,
with_bbox_depth
=
True
),
dict
(
type
=
Resize
,
scale
=
(
1600
,
900
),
keep_ratio
=
True
),
dict
(
type
=
RandomFlip3D
,
flip_ratio_bev_horizontal
=
0.5
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'img'
,
'gt_bboxes'
,
'gt_bboxes_labels'
,
'attr_labels'
,
'gt_bboxes_3d'
,
'gt_labels_3d'
,
'centers_2d'
,
'depths'
]),
]
test_pipeline
=
[
dict
(
type
=
LoadImageFromFileMono3D
,
backend_args
=
backend_args
),
dict
(
type
=
Resize
,
scale
=
(
1600
,
900
),
keep_ratio
=
True
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'img'
])
]
train_dataloader
=
dict
(
batch_size
=
2
,
num_workers
=
2
,
persistent_workers
=
True
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
True
),
dataset
=
dict
(
type
=
NuScenesDataset
,
data_root
=
data_root
,
data_prefix
=
dict
(
pts
=
''
,
CAM_FRONT
=
'samples/CAM_FRONT'
,
CAM_FRONT_LEFT
=
'samples/CAM_FRONT_LEFT'
,
CAM_FRONT_RIGHT
=
'samples/CAM_FRONT_RIGHT'
,
CAM_BACK
=
'samples/CAM_BACK'
,
CAM_BACK_RIGHT
=
'samples/CAM_BACK_RIGHT'
,
CAM_BACK_LEFT
=
'samples/CAM_BACK_LEFT'
),
ann_file
=
'nuscenes_infos_train.pkl'
,
load_type
=
'mv_image_based'
,
pipeline
=
train_pipeline
,
metainfo
=
metainfo
,
modality
=
input_modality
,
test_mode
=
False
,
# we use box_type_3d='Camera' in monocular 3d
# detection task
box_type_3d
=
'Camera'
,
use_valid_flag
=
True
,
backend_args
=
backend_args
))
val_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
2
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
NuScenesDataset
,
data_root
=
data_root
,
data_prefix
=
dict
(
pts
=
''
,
CAM_FRONT
=
'samples/CAM_FRONT'
,
CAM_FRONT_LEFT
=
'samples/CAM_FRONT_LEFT'
,
CAM_FRONT_RIGHT
=
'samples/CAM_FRONT_RIGHT'
,
CAM_BACK
=
'samples/CAM_BACK'
,
CAM_BACK_RIGHT
=
'samples/CAM_BACK_RIGHT'
,
CAM_BACK_LEFT
=
'samples/CAM_BACK_LEFT'
),
ann_file
=
'nuscenes_infos_val.pkl'
,
load_type
=
'mv_image_based'
,
pipeline
=
test_pipeline
,
modality
=
input_modality
,
metainfo
=
metainfo
,
test_mode
=
True
,
box_type_3d
=
'Camera'
,
use_valid_flag
=
True
,
backend_args
=
backend_args
))
test_dataloader
=
val_dataloader
val_evaluator
=
dict
(
type
=
NuScenesMetric
,
data_root
=
data_root
,
ann_file
=
data_root
+
'nuscenes_infos_val.pkl'
,
metric
=
'bbox'
,
backend_args
=
backend_args
)
test_evaluator
=
val_evaluator
vis_backends
=
[
dict
(
type
=
LocalVisBackend
)]
visualizer
=
dict
(
type
=
Det3DLocalVisualizer
,
vis_backends
=
vis_backends
,
name
=
'visualizer'
)
mmdet3d/configs/_base_/datasets/s3dis_3d.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
from
mmengine.dataset.dataset_wrapper
import
ConcatDataset
,
RepeatDataset
from
mmengine.dataset.sampler
import
DefaultSampler
from
mmengine.visualization.vis_backend
import
LocalVisBackend
from
mmdet3d.datasets.s3dis_dataset
import
S3DISDataset
from
mmdet3d.datasets.transforms.formating
import
Pack3DDetInputs
from
mmdet3d.datasets.transforms.loading
import
(
LoadAnnotations3D
,
LoadPointsFromFile
,
NormalizePointsColor
)
from
mmdet3d.datasets.transforms.test_time_aug
import
MultiScaleFlipAug3D
from
mmdet3d.datasets.transforms.transforms_3d
import
(
GlobalRotScaleTrans
,
PointSample
,
RandomFlip3D
)
from
mmdet3d.evaluation.metrics.indoor_metric
import
IndoorMetric
from
mmdet3d.visualization.local_visualizer
import
Det3DLocalVisualizer
# dataset settings
dataset_type
=
'S3DISDataset'
data_root
=
'data/s3dis/'
# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)
# data_root = 's3://openmmlab/datasets/detection3d/s3dis/'
# Method 2: Use backend_args, file_client_args in versions before 1.1.0
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# './data/': 's3://openmmlab/datasets/detection3d/',
# 'data/': 's3://openmmlab/datasets/detection3d/'
# }))
backend_args
=
None
metainfo
=
dict
(
classes
=
(
'table'
,
'chair'
,
'sofa'
,
'bookcase'
,
'board'
))
train_area
=
[
1
,
2
,
3
,
4
,
6
]
test_area
=
5
train_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'DEPTH'
,
shift_height
=
False
,
use_color
=
True
,
load_dim
=
6
,
use_dim
=
[
0
,
1
,
2
,
3
,
4
,
5
],
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox_3d
=
True
,
with_label_3d
=
True
),
dict
(
type
=
PointSample
,
num_points
=
100000
),
dict
(
type
=
RandomFlip3D
,
sync_2d
=
False
,
flip_ratio_bev_horizontal
=
0.5
,
flip_ratio_bev_vertical
=
0.5
),
dict
(
type
=
GlobalRotScaleTrans
,
rot_range
=
[
-
0.087266
,
0.087266
],
scale_ratio_range
=
[
0.9
,
1.1
],
translation_std
=
[.
1
,
.
1
,
.
1
],
shift_height
=
False
),
dict
(
type
=
NormalizePointsColor
,
color_mean
=
None
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
,
'gt_bboxes_3d'
,
'gt_labels_3d'
])
]
test_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'DEPTH'
,
shift_height
=
False
,
use_color
=
True
,
load_dim
=
6
,
use_dim
=
[
0
,
1
,
2
,
3
,
4
,
5
],
backend_args
=
backend_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
,
sync_2d
=
False
,
flip_ratio_bev_horizontal
=
0.5
,
flip_ratio_bev_vertical
=
0.5
),
dict
(
type
=
PointSample
,
num_points
=
100000
),
dict
(
type
=
NormalizePointsColor
,
color_mean
=
None
),
]),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
])
]
train_dataloader
=
dict
(
batch_size
=
8
,
num_workers
=
4
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
True
),
dataset
=
dict
(
type
=
RepeatDataset
,
times
=
13
,
dataset
=
dict
(
type
=
ConcatDataset
,
datasets
=
[
dict
(
type
=
S3DISDataset
,
data_root
=
data_root
,
ann_file
=
f
's3dis_infos_Area_
{
i
}
.pkl'
,
pipeline
=
train_pipeline
,
filter_empty_gt
=
True
,
metainfo
=
metainfo
,
box_type_3d
=
'Depth'
,
backend_args
=
backend_args
)
for
i
in
train_area
])))
val_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
S3DISDataset
,
data_root
=
data_root
,
ann_file
=
f
's3dis_infos_Area_
{
test_area
}
.pkl'
,
pipeline
=
test_pipeline
,
metainfo
=
metainfo
,
test_mode
=
True
,
box_type_3d
=
'Depth'
,
backend_args
=
backend_args
))
test_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
S3DISDataset
,
data_root
=
data_root
,
ann_file
=
f
's3dis_infos_Area_
{
test_area
}
.pkl'
,
pipeline
=
test_pipeline
,
metainfo
=
metainfo
,
test_mode
=
True
,
box_type_3d
=
'Depth'
,
backend_args
=
backend_args
))
val_evaluator
=
dict
(
type
=
IndoorMetric
)
test_evaluator
=
val_evaluator
vis_backends
=
[
dict
(
type
=
LocalVisBackend
)]
visualizer
=
dict
(
type
=
Det3DLocalVisualizer
,
vis_backends
=
vis_backends
,
name
=
'visualizer'
)
mmdet3d/configs/_base_/datasets/s3dis_seg.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
from
mmcv.transforms.processing
import
TestTimeAug
from
mmengine.dataset.sampler
import
DefaultSampler
from
mmengine.visualization.vis_backend
import
LocalVisBackend
from
mmdet3d.datasets.s3dis_dataset
import
S3DISSegDataset
from
mmdet3d.datasets.transforms.formating
import
Pack3DDetInputs
from
mmdet3d.datasets.transforms.loading
import
(
LoadAnnotations3D
,
LoadPointsFromFile
,
NormalizePointsColor
,
PointSegClassMapping
)
from
mmdet3d.datasets.transforms.transforms_3d
import
(
IndoorPatchPointSample
,
RandomFlip3D
)
from
mmdet3d.evaluation.metrics.seg_metric
import
SegMetric
from
mmdet3d.models.segmentors.seg3d_tta
import
Seg3DTTAModel
from
mmdet3d.visualization.local_visualizer
import
Det3DLocalVisualizer
# For S3DIS seg we usually do 13-class segmentation
class_names
=
(
'ceiling'
,
'floor'
,
'wall'
,
'beam'
,
'column'
,
'window'
,
'door'
,
'table'
,
'chair'
,
'sofa'
,
'bookcase'
,
'board'
,
'clutter'
)
metainfo
=
dict
(
classes
=
class_names
)
dataset_type
=
'S3DISSegDataset'
data_root
=
'data/s3dis/'
input_modality
=
dict
(
use_lidar
=
True
,
use_camera
=
False
)
data_prefix
=
dict
(
pts
=
'points'
,
pts_instance_mask
=
'instance_mask'
,
pts_semantic_mask
=
'semantic_mask'
)
# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)
# data_root = 's3://openmmlab/datasets/detection3d/s3dis/'
# Method 2: Use backend_args, file_client_args in versions before 1.1.0
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# './data/': 's3://openmmlab/datasets/detection3d/',
# 'data/': 's3://openmmlab/datasets/detection3d/'
# }))
backend_args
=
None
num_points
=
4096
train_area
=
[
1
,
2
,
3
,
4
,
6
]
test_area
=
5
train_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'DEPTH'
,
shift_height
=
False
,
use_color
=
True
,
load_dim
=
6
,
use_dim
=
[
0
,
1
,
2
,
3
,
4
,
5
],
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox_3d
=
False
,
with_label_3d
=
False
,
with_mask_3d
=
False
,
with_seg_3d
=
True
,
backend_args
=
backend_args
),
dict
(
type
=
PointSegClassMapping
),
dict
(
type
=
IndoorPatchPointSample
,
num_points
=
num_points
,
block_size
=
1.0
,
ignore_index
=
len
(
class_names
),
use_normalized_coord
=
True
,
enlarge_size
=
0.2
,
min_unique_num
=
None
),
dict
(
type
=
NormalizePointsColor
,
color_mean
=
None
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
,
'pts_semantic_mask'
])
]
test_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'DEPTH'
,
shift_height
=
False
,
use_color
=
True
,
load_dim
=
6
,
use_dim
=
[
0
,
1
,
2
,
3
,
4
,
5
],
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox_3d
=
False
,
with_label_3d
=
False
,
with_mask_3d
=
False
,
with_seg_3d
=
True
,
backend_args
=
backend_args
),
dict
(
type
=
NormalizePointsColor
,
color_mean
=
None
),
dict
(
type
=
Pack3DDetInputs
,
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)
# we need to load gt seg_mask!
eval_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'DEPTH'
,
shift_height
=
False
,
use_color
=
True
,
load_dim
=
6
,
use_dim
=
[
0
,
1
,
2
,
3
,
4
,
5
],
backend_args
=
backend_args
),
dict
(
type
=
NormalizePointsColor
,
color_mean
=
None
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
])
]
tta_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'DEPTH'
,
shift_height
=
False
,
use_color
=
True
,
load_dim
=
6
,
use_dim
=
[
0
,
1
,
2
,
3
,
4
,
5
],
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox_3d
=
False
,
with_label_3d
=
False
,
with_mask_3d
=
False
,
with_seg_3d
=
True
,
backend_args
=
backend_args
),
dict
(
type
=
NormalizePointsColor
,
color_mean
=
None
),
dict
(
type
=
TestTimeAug
,
transforms
=
[[
dict
(
type
=
RandomFlip3D
,
sync_2d
=
False
,
flip_ratio_bev_horizontal
=
0.
,
flip_ratio_bev_vertical
=
0.
)
],
[
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
])]])
]
# train on area 1, 2, 3, 4, 6
# test on area 5
train_dataloader
=
dict
(
batch_size
=
8
,
num_workers
=
4
,
persistent_workers
=
True
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
True
),
dataset
=
dict
(
type
=
S3DISSegDataset
,
data_root
=
data_root
,
ann_files
=
[
f
's3dis_infos_Area_
{
i
}
.pkl'
for
i
in
train_area
],
metainfo
=
metainfo
,
data_prefix
=
data_prefix
,
pipeline
=
train_pipeline
,
modality
=
input_modality
,
ignore_index
=
len
(
class_names
),
scene_idxs
=
[
f
'seg_info/Area_
{
i
}
_resampled_scene_idxs.npy'
for
i
in
train_area
],
test_mode
=
False
,
backend_args
=
backend_args
))
test_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
S3DISSegDataset
,
data_root
=
data_root
,
ann_files
=
f
's3dis_infos_Area_
{
test_area
}
.pkl'
,
metainfo
=
metainfo
,
data_prefix
=
data_prefix
,
pipeline
=
test_pipeline
,
modality
=
input_modality
,
ignore_index
=
len
(
class_names
),
scene_idxs
=
f
'seg_info/Area_
{
test_area
}
_resampled_scene_idxs.npy'
,
test_mode
=
True
,
backend_args
=
backend_args
))
val_dataloader
=
test_dataloader
val_evaluator
=
dict
(
type
=
SegMetric
)
test_evaluator
=
val_evaluator
vis_backends
=
[
dict
(
type
=
LocalVisBackend
)]
visualizer
=
dict
(
type
=
Det3DLocalVisualizer
,
vis_backends
=
vis_backends
,
name
=
'visualizer'
)
tta_model
=
dict
(
type
=
Seg3DTTAModel
)
mmdet3d/configs/_base_/datasets/scannet_3d.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
from
mmengine.dataset.dataset_wrapper
import
RepeatDataset
from
mmengine.dataset.sampler
import
DefaultSampler
from
mmengine.visualization.vis_backend
import
LocalVisBackend
from
mmdet3d.datasets.scannet_dataset
import
ScanNetDataset
from
mmdet3d.datasets.transforms.formating
import
Pack3DDetInputs
from
mmdet3d.datasets.transforms.loading
import
(
LoadAnnotations3D
,
LoadPointsFromFile
,
PointSegClassMapping
)
from
mmdet3d.datasets.transforms.test_time_aug
import
MultiScaleFlipAug3D
from
mmdet3d.datasets.transforms.transforms_3d
import
(
GlobalAlignment
,
GlobalRotScaleTrans
,
PointSample
,
RandomFlip3D
)
from
mmdet3d.evaluation.metrics.indoor_metric
import
IndoorMetric
from
mmdet3d.visualization.local_visualizer
import
Det3DLocalVisualizer
# dataset settings
dataset_type
=
'ScanNetDataset'
data_root
=
'data/scannet/'
metainfo
=
dict
(
classes
=
(
'cabinet'
,
'bed'
,
'chair'
,
'sofa'
,
'table'
,
'door'
,
'window'
,
'bookshelf'
,
'picture'
,
'counter'
,
'desk'
,
'curtain'
,
'refrigerator'
,
'showercurtrain'
,
'toilet'
,
'sink'
,
'bathtub'
,
'garbagebin'
))
# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)
# data_root = 's3://openmmlab/datasets/detection3d/scannet/'
# Method 2: Use backend_args, file_client_args in versions before 1.1.0
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# './data/': 's3://openmmlab/datasets/detection3d/',
# 'data/': 's3://openmmlab/datasets/detection3d/'
# }))
backend_args
=
None
train_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'DEPTH'
,
shift_height
=
True
,
load_dim
=
6
,
use_dim
=
[
0
,
1
,
2
],
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox_3d
=
True
,
with_label_3d
=
True
,
with_mask_3d
=
True
,
with_seg_3d
=
True
,
backend_args
=
backend_args
),
dict
(
type
=
GlobalAlignment
,
rotation_axis
=
2
),
dict
(
type
=
PointSegClassMapping
),
dict
(
type
=
PointSample
,
num_points
=
40000
),
dict
(
type
=
RandomFlip3D
,
sync_2d
=
False
,
flip_ratio_bev_horizontal
=
0.5
,
flip_ratio_bev_vertical
=
0.5
),
dict
(
type
=
GlobalRotScaleTrans
,
rot_range
=
[
-
0.087266
,
0.087266
],
scale_ratio_range
=
[
1.0
,
1.0
],
shift_height
=
True
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
,
'gt_bboxes_3d'
,
'gt_labels_3d'
,
'pts_semantic_mask'
,
'pts_instance_mask'
])
]
test_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'DEPTH'
,
shift_height
=
True
,
load_dim
=
6
,
use_dim
=
[
0
,
1
,
2
],
backend_args
=
backend_args
),
dict
(
type
=
GlobalAlignment
,
rotation_axis
=
2
),
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
,
sync_2d
=
False
,
flip_ratio_bev_horizontal
=
0.5
,
flip_ratio_bev_vertical
=
0.5
),
dict
(
type
=
PointSample
,
num_points
=
40000
),
]),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
])
]
train_dataloader
=
dict
(
batch_size
=
8
,
num_workers
=
4
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
True
),
dataset
=
dict
(
type
=
RepeatDataset
,
times
=
5
,
dataset
=
dict
(
type
=
ScanNetDataset
,
data_root
=
data_root
,
ann_file
=
'scannet_infos_train.pkl'
,
pipeline
=
train_pipeline
,
filter_empty_gt
=
False
,
metainfo
=
metainfo
,
# we use box_type_3d='LiDAR' in kitti and nuscenes dataset
# and box_type_3d='Depth' in sunrgbd and scannet dataset.
box_type_3d
=
'Depth'
,
backend_args
=
backend_args
)))
val_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
ScanNetDataset
,
data_root
=
data_root
,
ann_file
=
'scannet_infos_val.pkl'
,
pipeline
=
test_pipeline
,
metainfo
=
metainfo
,
test_mode
=
True
,
box_type_3d
=
'Depth'
,
backend_args
=
backend_args
))
test_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
ScanNetDataset
,
data_root
=
data_root
,
ann_file
=
'scannet_infos_val.pkl'
,
pipeline
=
test_pipeline
,
metainfo
=
metainfo
,
test_mode
=
True
,
box_type_3d
=
'Depth'
,
backend_args
=
backend_args
))
val_evaluator
=
dict
(
type
=
IndoorMetric
)
test_evaluator
=
val_evaluator
vis_backends
=
[
dict
(
type
=
LocalVisBackend
)]
visualizer
=
dict
(
type
=
Det3DLocalVisualizer
,
vis_backends
=
vis_backends
,
name
=
'visualizer'
)
mmdet3d/configs/_base_/datasets/scannet_seg.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
from
mmcv.transforms.processing
import
TestTimeAug
from
mmengine.dataset.sampler
import
DefaultSampler
from
mmengine.visualization.vis_backend
import
LocalVisBackend
from
mmdet3d.datasets.scannet_dataset
import
ScanNetSegDataset
from
mmdet3d.datasets.transforms.formating
import
Pack3DDetInputs
from
mmdet3d.datasets.transforms.loading
import
(
LoadAnnotations3D
,
LoadPointsFromFile
,
NormalizePointsColor
,
PointSegClassMapping
)
from
mmdet3d.datasets.transforms.transforms_3d
import
(
IndoorPatchPointSample
,
RandomFlip3D
)
from
mmdet3d.evaluation.metrics.seg_metric
import
SegMetric
from
mmdet3d.models.segmentors.seg3d_tta
import
Seg3DTTAModel
from
mmdet3d.visualization.local_visualizer
import
Det3DLocalVisualizer
# For ScanNet seg we usually do 20-class segmentation
class_names
=
(
'wall'
,
'floor'
,
'cabinet'
,
'bed'
,
'chair'
,
'sofa'
,
'table'
,
'door'
,
'window'
,
'bookshelf'
,
'picture'
,
'counter'
,
'desk'
,
'curtain'
,
'refrigerator'
,
'showercurtrain'
,
'toilet'
,
'sink'
,
'bathtub'
,
'otherfurniture'
)
metainfo
=
dict
(
classes
=
class_names
)
dataset_type
=
'ScanNetSegDataset'
data_root
=
'data/scannet/'
input_modality
=
dict
(
use_lidar
=
True
,
use_camera
=
False
)
data_prefix
=
dict
(
pts
=
'points'
,
pts_instance_mask
=
'instance_mask'
,
pts_semantic_mask
=
'semantic_mask'
)
# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)
# data_root = 's3://openmmlab/datasets/detection3d/scannet/'
# Method 2: Use backend_args, file_client_args in versions before 1.1.0
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# './data/': 's3://openmmlab/datasets/detection3d/',
# 'data/': 's3://openmmlab/datasets/detection3d/'
# }))
backend_args
=
None
num_points
=
8192
train_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'DEPTH'
,
shift_height
=
False
,
use_color
=
True
,
load_dim
=
6
,
use_dim
=
[
0
,
1
,
2
,
3
,
4
,
5
],
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox_3d
=
False
,
with_label_3d
=
False
,
with_mask_3d
=
False
,
with_seg_3d
=
True
,
backend_args
=
backend_args
),
dict
(
type
=
PointSegClassMapping
),
dict
(
type
=
IndoorPatchPointSample
,
num_points
=
num_points
,
block_size
=
1.5
,
ignore_index
=
len
(
class_names
),
use_normalized_coord
=
False
,
enlarge_size
=
0.2
,
min_unique_num
=
None
),
dict
(
type
=
NormalizePointsColor
,
color_mean
=
None
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
,
'pts_semantic_mask'
])
]
test_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'DEPTH'
,
shift_height
=
False
,
use_color
=
True
,
load_dim
=
6
,
use_dim
=
[
0
,
1
,
2
,
3
,
4
,
5
],
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox_3d
=
False
,
with_label_3d
=
False
,
with_mask_3d
=
False
,
with_seg_3d
=
True
,
backend_args
=
backend_args
),
dict
(
type
=
NormalizePointsColor
,
color_mean
=
None
),
dict
(
type
=
Pack3DDetInputs
,
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)
# we need to load gt seg_mask!
eval_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'DEPTH'
,
shift_height
=
False
,
use_color
=
True
,
load_dim
=
6
,
use_dim
=
[
0
,
1
,
2
,
3
,
4
,
5
],
backend_args
=
backend_args
),
dict
(
type
=
NormalizePointsColor
,
color_mean
=
None
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
])
]
tta_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'DEPTH'
,
shift_height
=
False
,
use_color
=
True
,
load_dim
=
6
,
use_dim
=
[
0
,
1
,
2
,
3
,
4
,
5
],
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox_3d
=
False
,
with_label_3d
=
False
,
with_mask_3d
=
False
,
with_seg_3d
=
True
,
backend_args
=
backend_args
),
dict
(
type
=
NormalizePointsColor
,
color_mean
=
None
),
dict
(
type
=
TestTimeAug
,
transforms
=
[[
dict
(
type
=
RandomFlip3D
,
sync_2d
=
False
,
flip_ratio_bev_horizontal
=
0.
,
flip_ratio_bev_vertical
=
0.
)
],
[
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
])]])
]
train_dataloader
=
dict
(
batch_size
=
8
,
num_workers
=
4
,
persistent_workers
=
True
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
True
),
dataset
=
dict
(
type
=
ScanNetSegDataset
,
data_root
=
data_root
,
ann_file
=
'scannet_infos_train.pkl'
,
metainfo
=
metainfo
,
data_prefix
=
data_prefix
,
pipeline
=
train_pipeline
,
modality
=
input_modality
,
ignore_index
=
len
(
class_names
),
scene_idxs
=
data_root
+
'seg_info/train_resampled_scene_idxs.npy'
,
test_mode
=
False
,
backend_args
=
backend_args
))
test_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
ScanNetSegDataset
,
data_root
=
data_root
,
ann_file
=
'scannet_infos_val.pkl'
,
metainfo
=
metainfo
,
data_prefix
=
data_prefix
,
pipeline
=
test_pipeline
,
modality
=
input_modality
,
ignore_index
=
len
(
class_names
),
test_mode
=
True
,
backend_args
=
backend_args
))
val_dataloader
=
test_dataloader
val_evaluator
=
dict
(
type
=
SegMetric
)
test_evaluator
=
val_evaluator
vis_backends
=
[
dict
(
type
=
LocalVisBackend
)]
visualizer
=
dict
(
type
=
Det3DLocalVisualizer
,
vis_backends
=
vis_backends
,
name
=
'visualizer'
)
tta_model
=
dict
(
type
=
Seg3DTTAModel
)
mmdet3d/configs/_base_/datasets/semantickitti.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
from
mmcv.transforms.processing
import
TestTimeAug
from
mmengine.dataset.sampler
import
DefaultSampler
from
mmengine.visualization.vis_backend
import
LocalVisBackend
from
mmdet3d.datasets.semantickitti_dataset
import
SemanticKittiDataset
from
mmdet3d.datasets.transforms.formating
import
Pack3DDetInputs
from
mmdet3d.datasets.transforms.loading
import
(
LoadAnnotations3D
,
LoadPointsFromFile
,
PointSegClassMapping
)
from
mmdet3d.datasets.transforms.transforms_3d
import
(
GlobalRotScaleTrans
,
RandomFlip3D
)
from
mmdet3d.evaluation.metrics.seg_metric
import
SegMetric
from
mmdet3d.models.segmentors.seg3d_tta
import
Seg3DTTAModel
from
mmdet3d.visualization.local_visualizer
import
Det3DLocalVisualizer
# For SemanticKitti we usually do 19-class segmentation.
# For labels_map we follow the uniform format of MMDetection & MMSegmentation
# i.e. we consider the unlabeled class as the last one, which is different
# from the original implementation of some methods e.g. Cylinder3D.
dataset_type
=
'SemanticKittiDataset'
data_root
=
'data/semantickitti/'
class_names
=
[
'car'
,
'bicycle'
,
'motorcycle'
,
'truck'
,
'bus'
,
'person'
,
'bicyclist'
,
'motorcyclist'
,
'road'
,
'parking'
,
'sidewalk'
,
'other-ground'
,
'building'
,
'fence'
,
'vegetation'
,
'trunck'
,
'terrian'
,
'pole'
,
'traffic-sign'
]
labels_map
=
{
0
:
19
,
# "unlabeled"
1
:
19
,
# "outlier" mapped to "unlabeled" --------------mapped
10
:
0
,
# "car"
11
:
1
,
# "bicycle"
13
:
4
,
# "bus" mapped to "other-vehicle" --------------mapped
15
:
2
,
# "motorcycle"
16
:
4
,
# "on-rails" mapped to "other-vehicle" ---------mapped
18
:
3
,
# "truck"
20
:
4
,
# "other-vehicle"
30
:
5
,
# "person"
31
:
6
,
# "bicyclist"
32
:
7
,
# "motorcyclist"
40
:
8
,
# "road"
44
:
9
,
# "parking"
48
:
10
,
# "sidewalk"
49
:
11
,
# "other-ground"
50
:
12
,
# "building"
51
:
13
,
# "fence"
52
:
19
,
# "other-structure" mapped to "unlabeled" ------mapped
60
:
8
,
# "lane-marking" to "road" ---------------------mapped
70
:
14
,
# "vegetation"
71
:
15
,
# "trunk"
72
:
16
,
# "terrain"
80
:
17
,
# "pole"
81
:
18
,
# "traffic-sign"
99
:
19
,
# "other-object" to "unlabeled" ----------------mapped
252
:
0
,
# "moving-car" to "car" ------------------------mapped
253
:
6
,
# "moving-bicyclist" to "bicyclist" ------------mapped
254
:
5
,
# "moving-person" to "person" ------------------mapped
255
:
7
,
# "moving-motorcyclist" to "motorcyclist" ------mapped
256
:
4
,
# "moving-on-rails" mapped to "other-vehic------mapped
257
:
4
,
# "moving-bus" mapped to "other-vehicle" -------mapped
258
:
3
,
# "moving-truck" to "truck" --------------------mapped
259
:
4
# "moving-other"-vehicle to "other-vehicle"-----mapped
}
metainfo
=
dict
(
classes
=
class_names
,
seg_label_mapping
=
labels_map
,
max_label
=
259
)
input_modality
=
dict
(
use_lidar
=
True
,
use_camera
=
False
)
# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)
# data_root = 's3://openmmlab/datasets/detection3d/semantickitti/'
# Method 2: Use backend_args, file_client_args in versions before 1.1.0
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# './data/': 's3://openmmlab/datasets/detection3d/',
# 'data/': 's3://openmmlab/datasets/detection3d/'
# }))
backend_args
=
None
train_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
4
,
use_dim
=
4
,
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox_3d
=
False
,
with_label_3d
=
False
,
with_seg_3d
=
True
,
seg_3d_dtype
=
'np.int32'
,
seg_offset
=
2
**
16
,
dataset_type
=
'semantickitti'
,
backend_args
=
backend_args
),
dict
(
type
=
PointSegClassMapping
),
dict
(
type
=
RandomFlip3D
,
sync_2d
=
False
,
flip_ratio_bev_horizontal
=
0.5
,
flip_ratio_bev_vertical
=
0.5
),
dict
(
type
=
GlobalRotScaleTrans
,
rot_range
=
[
-
0.78539816
,
0.78539816
],
scale_ratio_range
=
[
0.95
,
1.05
],
translation_std
=
[
0.1
,
0.1
,
0.1
],
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
,
'pts_semantic_mask'
])
]
test_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
4
,
use_dim
=
4
,
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox_3d
=
False
,
with_label_3d
=
False
,
with_seg_3d
=
True
,
seg_3d_dtype
=
'np.int32'
,
seg_offset
=
2
**
16
,
dataset_type
=
'semantickitti'
,
backend_args
=
backend_args
),
dict
(
type
=
PointSegClassMapping
),
dict
(
type
=
Pack3DDetInputs
,
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
=
4
,
use_dim
=
4
,
backend_args
=
backend_args
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
])
]
tta_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
4
,
use_dim
=
4
,
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox_3d
=
False
,
with_label_3d
=
False
,
with_seg_3d
=
True
,
seg_3d_dtype
=
'np.int32'
,
seg_offset
=
2
**
16
,
dataset_type
=
'semantickitti'
,
backend_args
=
backend_args
),
dict
(
type
=
PointSegClassMapping
),
dict
(
type
=
TestTimeAug
,
transforms
=
[[
dict
(
type
=
RandomFlip3D
,
sync_2d
=
False
,
flip_ratio_bev_horizontal
=
0.
,
flip_ratio_bev_vertical
=
0.
),
dict
(
type
=
RandomFlip3D
,
sync_2d
=
False
,
flip_ratio_bev_horizontal
=
0.
,
flip_ratio_bev_vertical
=
1.
),
dict
(
type
=
RandomFlip3D
,
sync_2d
=
False
,
flip_ratio_bev_horizontal
=
1.
,
flip_ratio_bev_vertical
=
0.
),
dict
(
type
=
RandomFlip3D
,
sync_2d
=
False
,
flip_ratio_bev_horizontal
=
1.
,
flip_ratio_bev_vertical
=
1.
)
],
[
dict
(
type
=
GlobalRotScaleTrans
,
rot_range
=
[
pcd_rotate_range
,
pcd_rotate_range
],
scale_ratio_range
=
[
pcd_scale_factor
,
pcd_scale_factor
],
translation_std
=
[
0
,
0
,
0
])
for
pcd_rotate_range
in
[
-
0.78539816
,
0.0
,
0.78539816
]
for
pcd_scale_factor
in
[
0.95
,
1.0
,
1.05
]
],
[
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
])]])
]
train_dataloader
=
dict
(
batch_size
=
2
,
num_workers
=
4
,
persistent_workers
=
True
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
True
),
dataset
=
dict
(
type
=
SemanticKittiDataset
,
data_root
=
data_root
,
ann_file
=
'semantickitti_infos_train.pkl'
,
pipeline
=
train_pipeline
,
metainfo
=
metainfo
,
modality
=
input_modality
,
ignore_index
=
19
,
backend_args
=
backend_args
))
test_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
SemanticKittiDataset
,
data_root
=
data_root
,
ann_file
=
'semantickitti_infos_val.pkl'
,
pipeline
=
test_pipeline
,
metainfo
=
metainfo
,
modality
=
input_modality
,
ignore_index
=
19
,
test_mode
=
True
,
backend_args
=
backend_args
))
val_dataloader
=
test_dataloader
val_evaluator
=
dict
(
type
=
SegMetric
)
test_evaluator
=
val_evaluator
vis_backends
=
[
dict
(
type
=
LocalVisBackend
)]
visualizer
=
dict
(
type
=
Det3DLocalVisualizer
,
vis_backends
=
vis_backends
,
name
=
'visualizer'
)
tta_model
=
dict
(
type
=
Seg3DTTAModel
)
mmdet3d/configs/_base_/datasets/sunrgbd_3d.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
from
mmengine.dataset.dataset_wrapper
import
RepeatDataset
from
mmengine.dataset.sampler
import
DefaultSampler
from
mmengine.visualization.vis_backend
import
LocalVisBackend
from
mmdet3d.datasets.sunrgbd_dataset
import
SUNRGBDDataset
from
mmdet3d.datasets.transforms.formating
import
Pack3DDetInputs
from
mmdet3d.datasets.transforms.loading
import
(
LoadAnnotations3D
,
LoadPointsFromFile
)
from
mmdet3d.datasets.transforms.test_time_aug
import
MultiScaleFlipAug3D
from
mmdet3d.datasets.transforms.transforms_3d
import
(
GlobalRotScaleTrans
,
PointSample
,
RandomFlip3D
)
from
mmdet3d.evaluation.metrics.indoor_metric
import
IndoorMetric
from
mmdet3d.visualization.local_visualizer
import
Det3DLocalVisualizer
dataset_type
=
'SUNRGBDDataset'
data_root
=
'data/sunrgbd/'
class_names
=
(
'bed'
,
'table'
,
'sofa'
,
'chair'
,
'toilet'
,
'desk'
,
'dresser'
,
'night_stand'
,
'bookshelf'
,
'bathtub'
)
metainfo
=
dict
(
classes
=
class_names
)
# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)
# data_root = 's3://openmmlab/datasets/detection3d/sunrgbd/'
# Method 2: Use backend_args, file_client_args in versions before 1.1.0
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# './data/': 's3://openmmlab/datasets/detection3d/',
# 'data/': 's3://openmmlab/datasets/detection3d/'
# }))
backend_args
=
None
train_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'DEPTH'
,
shift_height
=
True
,
load_dim
=
6
,
use_dim
=
[
0
,
1
,
2
],
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
),
dict
(
type
=
RandomFlip3D
,
sync_2d
=
False
,
flip_ratio_bev_horizontal
=
0.5
,
),
dict
(
type
=
GlobalRotScaleTrans
,
rot_range
=
[
-
0.523599
,
0.523599
],
scale_ratio_range
=
[
0.85
,
1.15
],
shift_height
=
True
),
dict
(
type
=
PointSample
,
num_points
=
20000
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
,
'gt_bboxes_3d'
,
'gt_labels_3d'
])
]
test_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'DEPTH'
,
shift_height
=
True
,
load_dim
=
6
,
use_dim
=
[
0
,
1
,
2
],
backend_args
=
backend_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
,
sync_2d
=
False
,
flip_ratio_bev_horizontal
=
0.5
,
),
dict
(
type
=
PointSample
,
num_points
=
20000
)
]),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
])
]
train_dataloader
=
dict
(
batch_size
=
16
,
num_workers
=
4
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
True
),
dataset
=
dict
(
type
=
RepeatDataset
,
times
=
5
,
dataset
=
dict
(
type
=
SUNRGBDDataset
,
data_root
=
data_root
,
ann_file
=
'sunrgbd_infos_train.pkl'
,
pipeline
=
train_pipeline
,
filter_empty_gt
=
False
,
metainfo
=
metainfo
,
# we use box_type_3d='LiDAR' in kitti and nuscenes dataset
# and box_type_3d='Depth' in sunrgbd and scannet dataset.
box_type_3d
=
'Depth'
,
backend_args
=
backend_args
)))
val_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
SUNRGBDDataset
,
data_root
=
data_root
,
ann_file
=
'sunrgbd_infos_val.pkl'
,
pipeline
=
test_pipeline
,
metainfo
=
metainfo
,
test_mode
=
True
,
box_type_3d
=
'Depth'
,
backend_args
=
backend_args
))
test_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
SUNRGBDDataset
,
data_root
=
data_root
,
ann_file
=
'sunrgbd_infos_val.pkl'
,
pipeline
=
test_pipeline
,
metainfo
=
metainfo
,
test_mode
=
True
,
box_type_3d
=
'Depth'
,
backend_args
=
backend_args
))
val_evaluator
=
dict
(
type
=
IndoorMetric
)
test_evaluator
=
val_evaluator
vis_backends
=
[
dict
(
type
=
LocalVisBackend
)]
visualizer
=
dict
(
type
=
Det3DLocalVisualizer
,
vis_backends
=
vis_backends
,
name
=
'visualizer'
)
mmdet3d/configs/_base_/datasets/waymoD5_3d_3class.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
from
mmengine.dataset.dataset_wrapper
import
RepeatDataset
from
mmengine.dataset.sampler
import
DefaultSampler
from
mmengine.visualization.vis_backend
import
LocalVisBackend
from
mmdet3d.datasets.transforms.formating
import
Pack3DDetInputs
from
mmdet3d.datasets.transforms.loading
import
(
LoadAnnotations3D
,
LoadPointsFromFile
)
from
mmdet3d.datasets.transforms.test_time_aug
import
MultiScaleFlipAug3D
from
mmdet3d.datasets.transforms.transforms_3d
import
(
# noqa
GlobalRotScaleTrans
,
ObjectRangeFilter
,
ObjectSample
,
PointShuffle
,
PointsRangeFilter
,
RandomFlip3D
)
from
mmdet3d.datasets.waymo_dataset
import
WaymoDataset
from
mmdet3d.evaluation.metrics.waymo_metric
import
WaymoMetric
from
mmdet3d.visualization.local_visualizer
import
Det3DLocalVisualizer
# 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
=
'WaymoDataset'
# data_root = 's3://openmmlab/datasets/detection3d/waymo/kitti_format/'
data_root
=
'data/waymo/kitti_format/'
# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)
# data_root = 's3://openmmlab/datasets/detection3d/waymo/kitti_format/'
# Method 2: Use backend_args, file_client_args in versions before 1.1.0
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# './data/': 's3://openmmlab/datasets/detection3d/',
# 'data/': 's3://openmmlab/datasets/detection3d/'
# }))
backend_args
=
None
class_names
=
[
'Car'
,
'Pedestrian'
,
'Cyclist'
]
metainfo
=
dict
(
classes
=
class_names
)
point_cloud_range
=
[
-
74.88
,
-
74.88
,
-
2
,
74.88
,
74.88
,
4
]
input_modality
=
dict
(
use_lidar
=
True
,
use_camera
=
False
)
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
=
6
,
use_dim
=
[
0
,
1
,
2
,
3
,
4
],
backend_args
=
backend_args
),
backend_args
=
backend_args
)
train_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
6
,
use_dim
=
5
,
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox_3d
=
True
,
with_label_3d
=
True
),
# dict(type=ObjectSample, db_sampler=db_sampler),
dict
(
type
=
RandomFlip3D
,
sync_2d
=
False
,
flip_ratio_bev_horizontal
=
0.5
,
flip_ratio_bev_vertical
=
0.5
),
dict
(
type
=
GlobalRotScaleTrans
,
rot_range
=
[
-
0.78539816
,
0.78539816
],
scale_ratio_range
=
[
0.95
,
1.05
]),
dict
(
type
=
PointsRangeFilter
,
point_cloud_range
=
point_cloud_range
),
dict
(
type
=
ObjectRangeFilter
,
point_cloud_range
=
point_cloud_range
),
dict
(
type
=
PointShuffle
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
,
'gt_bboxes_3d'
,
'gt_labels_3d'
])
]
test_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
6
,
use_dim
=
5
,
backend_args
=
backend_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
=
Pack3DDetInputs
,
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
=
6
,
use_dim
=
5
,
backend_args
=
backend_args
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
]),
]
train_dataloader
=
dict
(
batch_size
=
2
,
num_workers
=
2
,
persistent_workers
=
True
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
True
),
dataset
=
dict
(
type
=
RepeatDataset
,
times
=
2
,
dataset
=
dict
(
type
=
WaymoDataset
,
data_root
=
data_root
,
ann_file
=
'waymo_infos_train.pkl'
,
data_prefix
=
dict
(
pts
=
'training/velodyne'
,
sweeps
=
'training/velodyne'
),
pipeline
=
train_pipeline
,
modality
=
input_modality
,
test_mode
=
False
,
metainfo
=
metainfo
,
# 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
,
backend_args
=
backend_args
)))
val_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
WaymoDataset
,
data_root
=
data_root
,
data_prefix
=
dict
(
pts
=
'training/velodyne'
,
sweeps
=
'training/velodyne'
),
ann_file
=
'waymo_infos_val.pkl'
,
pipeline
=
eval_pipeline
,
modality
=
input_modality
,
test_mode
=
True
,
metainfo
=
metainfo
,
box_type_3d
=
'LiDAR'
,
backend_args
=
backend_args
))
test_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
WaymoDataset
,
data_root
=
data_root
,
data_prefix
=
dict
(
pts
=
'training/velodyne'
,
sweeps
=
'training/velodyne'
),
ann_file
=
'waymo_infos_val.pkl'
,
pipeline
=
eval_pipeline
,
modality
=
input_modality
,
test_mode
=
True
,
metainfo
=
metainfo
,
box_type_3d
=
'LiDAR'
,
backend_args
=
backend_args
))
val_evaluator
=
dict
(
type
=
WaymoMetric
,
ann_file
=
'./data/waymo/kitti_format/waymo_infos_val.pkl'
,
waymo_bin_file
=
'./data/waymo/waymo_format/gt.bin'
,
data_root
=
'./data/waymo/waymo_format'
,
backend_args
=
backend_args
,
convert_kitti_format
=
False
)
test_evaluator
=
val_evaluator
vis_backends
=
[
dict
(
type
=
LocalVisBackend
)]
visualizer
=
dict
(
type
=
Det3DLocalVisualizer
,
vis_backends
=
vis_backends
,
name
=
'visualizer'
)
mmdet3d/configs/_base_/datasets/waymoD5_3d_car.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
from
mmengine.dataset.dataset_wrapper
import
RepeatDataset
from
mmengine.dataset.sampler
import
DefaultSampler
from
mmengine.visualization.vis_backend
import
LocalVisBackend
from
mmdet3d.datasets.transforms.formating
import
Pack3DDetInputs
from
mmdet3d.datasets.transforms.loading
import
(
LoadAnnotations3D
,
LoadPointsFromFile
)
from
mmdet3d.datasets.transforms.test_time_aug
import
MultiScaleFlipAug3D
from
mmdet3d.datasets.transforms.transforms_3d
import
(
# noqa
GlobalRotScaleTrans
,
ObjectRangeFilter
,
ObjectSample
,
PointShuffle
,
PointsRangeFilter
,
RandomFlip3D
)
from
mmdet3d.datasets.waymo_dataset
import
WaymoDataset
from
mmdet3d.evaluation.metrics.waymo_metric
import
WaymoMetric
from
mmdet3d.visualization.local_visualizer
import
Det3DLocalVisualizer
# 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
=
'WaymoDataset'
data_root
=
'data/waymo/kitti_format/'
# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)
# data_root = 's3://openmmlab/datasets/detection3d/waymo/kitti_format/'
# Method 2: Use backend_args, file_client_args in versions before 1.1.0
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# './data/': 's3://openmmlab/datasets/detection3d/',
# 'data/': 's3://openmmlab/datasets/detection3d/'
# }))
backend_args
=
None
class_names
=
[
'Car'
]
metainfo
=
dict
(
classes
=
class_names
)
point_cloud_range
=
[
-
74.88
,
-
74.88
,
-
2
,
74.88
,
74.88
,
4
]
input_modality
=
dict
(
use_lidar
=
True
,
use_camera
=
False
)
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
)),
classes
=
class_names
,
sample_groups
=
dict
(
Car
=
15
),
points_loader
=
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
6
,
use_dim
=
[
0
,
1
,
2
,
3
,
4
],
backend_args
=
backend_args
),
backend_args
=
backend_args
)
train_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
6
,
use_dim
=
5
,
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox_3d
=
True
,
with_label_3d
=
True
),
dict
(
type
=
ObjectSample
,
db_sampler
=
db_sampler
),
dict
(
type
=
RandomFlip3D
,
sync_2d
=
False
,
flip_ratio_bev_horizontal
=
0.5
,
flip_ratio_bev_vertical
=
0.5
),
dict
(
type
=
GlobalRotScaleTrans
,
rot_range
=
[
-
0.78539816
,
0.78539816
],
scale_ratio_range
=
[
0.95
,
1.05
]),
dict
(
type
=
PointsRangeFilter
,
point_cloud_range
=
point_cloud_range
),
dict
(
type
=
ObjectRangeFilter
,
point_cloud_range
=
point_cloud_range
),
dict
(
type
=
PointShuffle
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
,
'gt_bboxes_3d'
,
'gt_labels_3d'
])
]
test_pipeline
=
[
dict
(
type
=
LoadPointsFromFile
,
coord_type
=
'LIDAR'
,
load_dim
=
6
,
use_dim
=
5
,
backend_args
=
backend_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
=
Pack3DDetInputs
,
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
=
6
,
use_dim
=
5
,
backend_args
=
backend_args
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'points'
]),
]
train_dataloader
=
dict
(
batch_size
=
2
,
num_workers
=
2
,
persistent_workers
=
True
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
True
),
dataset
=
dict
(
type
=
RepeatDataset
,
times
=
2
,
dataset
=
dict
(
type
=
WaymoDataset
,
data_root
=
data_root
,
ann_file
=
'waymo_infos_train.pkl'
,
data_prefix
=
dict
(
pts
=
'training/velodyne'
,
sweeps
=
'training/velodyne'
),
pipeline
=
train_pipeline
,
modality
=
input_modality
,
test_mode
=
False
,
metainfo
=
metainfo
,
# 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
,
backend_args
=
backend_args
)))
val_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
WaymoDataset
,
data_root
=
data_root
,
data_prefix
=
dict
(
pts
=
'training/velodyne'
,
sweeps
=
'training/velodyne'
),
ann_file
=
'waymo_infos_val.pkl'
,
pipeline
=
eval_pipeline
,
modality
=
input_modality
,
test_mode
=
True
,
metainfo
=
metainfo
,
box_type_3d
=
'LiDAR'
,
backend_args
=
backend_args
))
test_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
WaymoDataset
,
data_root
=
data_root
,
data_prefix
=
dict
(
pts
=
'training/velodyne'
,
sweeps
=
'training/velodyne'
),
ann_file
=
'waymo_infos_val.pkl'
,
pipeline
=
eval_pipeline
,
modality
=
input_modality
,
test_mode
=
True
,
metainfo
=
metainfo
,
box_type_3d
=
'LiDAR'
,
backend_args
=
backend_args
))
val_evaluator
=
dict
(
type
=
WaymoMetric
,
ann_file
=
'./data/waymo/kitti_format/waymo_infos_val.pkl'
,
waymo_bin_file
=
'./data/waymo/waymo_format/gt.bin'
,
data_root
=
'./data/waymo/waymo_format'
,
convert_kitti_format
=
False
,
backend_args
=
backend_args
)
test_evaluator
=
val_evaluator
vis_backends
=
[
dict
(
type
=
LocalVisBackend
)]
visualizer
=
dict
(
type
=
Det3DLocalVisualizer
,
vis_backends
=
vis_backends
,
name
=
'visualizer'
)
mmdet3d/configs/_base_/datasets/waymoD5_fov_mono3d_3class.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
from
mmengine.dataset.sampler
import
DefaultSampler
from
mmdet3d.datasets.transforms.formating
import
Pack3DDetInputs
from
mmdet3d.datasets.transforms.loading
import
(
LoadAnnotations3D
,
LoadImageFromFileMono3D
)
from
mmdet3d.datasets.transforms.transforms_3d
import
(
RandomFlip3D
,
RandomResize3D
)
from
mmdet3d.datasets.waymo_dataset
import
WaymoDataset
from
mmdet3d.evaluation.metrics.waymo_metric
import
WaymoMetric
# dataset settings
# D3 in the config name means the whole dataset is divided into 3 folds
# We only use one fold for efficient experiments
dataset_type
=
'WaymoDataset'
data_root
=
'data/waymo/kitti_format/'
class_names
=
[
'Car'
,
'Pedestrian'
,
'Cyclist'
]
input_modality
=
dict
(
use_lidar
=
False
,
use_camera
=
True
)
# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)
# data_root = 's3://openmmlab/datasets/detection3d/waymo/kitti_format/'
# Method 2: Use backend_args, file_client_args in versions before 1.1.0
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# './data/': 's3://openmmlab/datasets/detection3d/',
# 'data/': 's3://openmmlab/datasets/detection3d/'
# }))
backend_args
=
None
train_pipeline
=
[
dict
(
type
=
LoadImageFromFileMono3D
,
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox
=
True
,
with_label
=
True
,
with_attr_label
=
False
,
with_bbox_3d
=
True
,
with_label_3d
=
True
,
with_bbox_depth
=
True
),
# base shape (1248, 832), scale (0.95, 1.05)
dict
(
type
=
RandomResize3D
,
scale
=
(
1284
,
832
),
ratio_range
=
(
0.95
,
1.05
),
keep_ratio
=
True
,
),
dict
(
type
=
RandomFlip3D
,
flip_ratio_bev_horizontal
=
0.5
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'img'
,
'gt_bboxes'
,
'gt_bboxes_labels'
,
'gt_bboxes_3d'
,
'gt_labels_3d'
,
'centers_2d'
,
'depths'
]),
]
test_pipeline
=
[
dict
(
type
=
LoadImageFromFileMono3D
,
backend_args
=
backend_args
),
dict
(
type
=
RandomResize3D
,
scale
=
(
1248
,
832
),
ratio_range
=
(
1.
,
1.
),
keep_ratio
=
True
),
dict
(
type
=
Pack3DDetInputs
,
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)
eval_pipeline
=
[
dict
(
type
=
LoadImageFromFileMono3D
,
backend_args
=
backend_args
),
dict
(
type
=
RandomResize3D
,
scale
=
(
1248
,
832
),
ratio_range
=
(
1.
,
1.
),
keep_ratio
=
True
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'img'
]),
]
metainfo
=
dict
(
CLASSES
=
class_names
)
train_dataloader
=
dict
(
batch_size
=
3
,
num_workers
=
3
,
persistent_workers
=
True
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
True
),
dataset
=
dict
(
type
=
WaymoDataset
,
data_root
=
data_root
,
ann_file
=
'waymo_infos_train.pkl'
,
data_prefix
=
dict
(
pts
=
'training/velodyne'
,
CAM_FRONT
=
'training/image_0'
,
CAM_FRONT_LEFT
=
'training/image_1'
,
CAM_FRONT_RIGHT
=
'training/image_2'
,
CAM_SIDE_LEFT
=
'training/image_3'
,
CAM_SIDE_RIGHT
=
'training/image_4'
),
pipeline
=
train_pipeline
,
modality
=
input_modality
,
test_mode
=
False
,
metainfo
=
metainfo
,
# we use box_type_3d='LiDAR' in kitti and nuscenes dataset
# and box_type_3d='Depth' in sunrgbd and scannet dataset.
box_type_3d
=
'Camera'
,
load_type
=
'fov_image_based'
,
# load one frame every three frames
load_interval
=
5
,
backend_args
=
backend_args
))
val_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
WaymoDataset
,
data_root
=
data_root
,
data_prefix
=
dict
(
pts
=
'training/velodyne'
,
CAM_FRONT
=
'training/image_0'
,
CAM_FRONT_LEFT
=
'training/image_1'
,
CAM_FRONT_RIGHT
=
'training/image_2'
,
CAM_SIDE_LEFT
=
'training/image_3'
,
CAM_SIDE_RIGHT
=
'training/image_4'
),
ann_file
=
'waymo_infos_val.pkl'
,
pipeline
=
eval_pipeline
,
modality
=
input_modality
,
test_mode
=
True
,
metainfo
=
metainfo
,
# we use box_type_3d='LiDAR' in kitti and nuscenes dataset
# and box_type_3d='Depth' in sunrgbd and scannet dataset.
box_type_3d
=
'Camera'
,
load_type
=
'fov_image_based'
,
backend_args
=
backend_args
))
test_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
WaymoDataset
,
data_root
=
data_root
,
data_prefix
=
dict
(
pts
=
'training/velodyne'
,
CAM_FRONT
=
'training/image_0'
,
CAM_FRONT_LEFT
=
'training/image_1'
,
CAM_FRONT_RIGHT
=
'training/image_2'
,
CAM_SIDE_LEFT
=
'training/image_3'
,
CAM_SIDE_RIGHT
=
'training/image_4'
),
ann_file
=
'waymo_infos_val.pkl'
,
pipeline
=
eval_pipeline
,
modality
=
input_modality
,
test_mode
=
True
,
metainfo
=
metainfo
,
# we use box_type_3d='LiDAR' in kitti and nuscenes dataset
# and box_type_3d='Depth' in sunrgbd and scannet dataset.
box_type_3d
=
'Camera'
,
load_type
=
'fov_image_based'
,
backend_args
=
backend_args
))
val_evaluator
=
dict
(
type
=
WaymoMetric
,
ann_file
=
'./data/waymo/kitti_format/waymo_infos_val.pkl'
,
waymo_bin_file
=
'./data/waymo/waymo_format/fov_gt.bin'
,
data_root
=
'./data/waymo/waymo_format'
,
metric
=
'LET_mAP'
,
load_type
=
'fov_image_based'
,
backend_args
=
backend_args
)
test_evaluator
=
val_evaluator
mmdet3d/configs/_base_/datasets/waymoD5_mv3d_3class.py
0 → 100644
View file @
2c136730
# Copyright (c) OpenMMLab. All rights reserved.
from
mmengine.dataset.sampler
import
DefaultSampler
from
mmdet3d.datasets.transforms.formating
import
Pack3DDetInputs
from
mmdet3d.datasets.transforms.loading
import
(
LoadAnnotations3D
,
LoadMultiViewImageFromFiles
)
from
mmdet3d.datasets.transforms.transforms_3d
import
(
# noqa
MultiViewWrapper
,
ObjectNameFilter
,
ObjectRangeFilter
,
PhotoMetricDistortion3D
,
RandomCrop3D
,
RandomFlip3D
,
RandomResize3D
)
from
mmdet3d.datasets.waymo_dataset
import
WaymoDataset
from
mmdet3d.evaluation.metrics.waymo_metric
import
WaymoMetric
# dataset settings
# D3 in the config name means the whole dataset is divided into 3 folds
# We only use one fold for efficient experiments
dataset_type
=
'WaymoDataset'
data_root
=
'data/waymo/kitti_format/'
# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)
# data_root = 's3://openmmlab/datasets/detection3d/waymo/kitti_format/'
# Method 2: Use backend_args, file_client_args in versions before 1.1.0
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# './data/': 's3://openmmlab/datasets/detection3d/',
# 'data/': 's3://openmmlab/datasets/detection3d/'
# }))
backend_args
=
None
class_names
=
[
'Car'
,
'Pedestrian'
,
'Cyclist'
]
input_modality
=
dict
(
use_lidar
=
False
,
use_camera
=
True
)
point_cloud_range
=
[
-
35.0
,
-
75.0
,
-
2
,
75.0
,
75.0
,
4
]
train_transforms
=
[
dict
(
type
=
PhotoMetricDistortion3D
),
dict
(
type
=
RandomResize3D
,
scale
=
(
1248
,
832
),
ratio_range
=
(
0.95
,
1.05
),
keep_ratio
=
True
),
dict
(
type
=
RandomCrop3D
,
crop_size
=
(
720
,
1080
)),
dict
(
type
=
RandomFlip3D
,
flip_ratio_bev_horizontal
=
0.5
,
flip_box3d
=
False
),
]
train_pipeline
=
[
dict
(
type
=
LoadMultiViewImageFromFiles
,
to_float32
=
True
,
backend_args
=
backend_args
),
dict
(
type
=
LoadAnnotations3D
,
with_bbox
=
True
,
with_label
=
True
,
with_attr_label
=
False
,
with_bbox_3d
=
True
,
with_label_3d
=
True
,
with_bbox_depth
=
True
),
dict
(
type
=
MultiViewWrapper
,
transforms
=
train_transforms
),
dict
(
type
=
ObjectRangeFilter
,
point_cloud_range
=
point_cloud_range
),
dict
(
type
=
ObjectNameFilter
,
classes
=
class_names
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'img'
,
'gt_bboxes_3d'
,
'gt_labels_3d'
,
]),
]
test_transforms
=
[
dict
(
type
=
RandomResize3D
,
scale
=
(
1248
,
832
),
ratio_range
=
(
1.
,
1.
),
keep_ratio
=
True
)
]
test_pipeline
=
[
dict
(
type
=
LoadMultiViewImageFromFiles
,
to_float32
=
True
,
backend_args
=
backend_args
),
dict
(
type
=
MultiViewWrapper
,
transforms
=
test_transforms
),
dict
(
type
=
Pack3DDetInputs
,
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)
eval_pipeline
=
[
dict
(
type
=
LoadMultiViewImageFromFiles
,
to_float32
=
True
,
backend_args
=
backend_args
),
dict
(
type
=
MultiViewWrapper
,
transforms
=
test_transforms
),
dict
(
type
=
Pack3DDetInputs
,
keys
=
[
'img'
])
]
metainfo
=
dict
(
classes
=
class_names
)
train_dataloader
=
dict
(
batch_size
=
2
,
num_workers
=
2
,
persistent_workers
=
True
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
True
),
dataset
=
dict
(
type
=
WaymoDataset
,
data_root
=
data_root
,
ann_file
=
'waymo_infos_train.pkl'
,
data_prefix
=
dict
(
pts
=
'training/velodyne'
,
CAM_FRONT
=
'training/image_0'
,
CAM_FRONT_LEFT
=
'training/image_1'
,
CAM_FRONT_RIGHT
=
'training/image_2'
,
CAM_SIDE_LEFT
=
'training/image_3'
,
CAM_SIDE_RIGHT
=
'training/image_4'
),
pipeline
=
train_pipeline
,
modality
=
input_modality
,
test_mode
=
False
,
metainfo
=
metainfo
,
box_type_3d
=
'Lidar'
,
load_interval
=
5
,
backend_args
=
backend_args
))
val_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
WaymoDataset
,
data_root
=
data_root
,
ann_file
=
'waymo_infos_val.pkl'
,
data_prefix
=
dict
(
pts
=
'training/velodyne'
,
CAM_FRONT
=
'training/image_0'
,
CAM_FRONT_LEFT
=
'training/image_1'
,
CAM_FRONT_RIGHT
=
'training/image_2'
,
CAM_SIDE_LEFT
=
'training/image_3'
,
CAM_SIDE_RIGHT
=
'training/image_4'
),
pipeline
=
eval_pipeline
,
modality
=
input_modality
,
test_mode
=
True
,
metainfo
=
metainfo
,
box_type_3d
=
'Lidar'
,
backend_args
=
backend_args
))
test_dataloader
=
dict
(
batch_size
=
1
,
num_workers
=
1
,
persistent_workers
=
True
,
drop_last
=
False
,
sampler
=
dict
(
type
=
DefaultSampler
,
shuffle
=
False
),
dataset
=
dict
(
type
=
WaymoDataset
,
data_root
=
data_root
,
ann_file
=
'waymo_infos_val.pkl'
,
data_prefix
=
dict
(
pts
=
'training/velodyne'
,
CAM_FRONT
=
'training/image_0'
,
CAM_FRONT_LEFT
=
'training/image_1'
,
CAM_FRONT_RIGHT
=
'training/image_2'
,
CAM_SIDE_LEFT
=
'training/image_3'
,
CAM_SIDE_RIGHT
=
'training/image_4'
),
pipeline
=
eval_pipeline
,
modality
=
input_modality
,
test_mode
=
True
,
metainfo
=
metainfo
,
box_type_3d
=
'Lidar'
,
backend_args
=
backend_args
))
val_evaluator
=
dict
(
type
=
WaymoMetric
,
ann_file
=
'./data/waymo/kitti_format/waymo_infos_val.pkl'
,
waymo_bin_file
=
'./data/waymo/waymo_format/cam_gt.bin'
,
data_root
=
'./data/waymo/waymo_format'
,
metric
=
'LET_mAP'
,
backend_args
=
backend_args
)
test_evaluator
=
val_evaluator
Prev
1
2
3
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment