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
47bb07f7
Unverified
Commit
47bb07f7
authored
Aug 17, 2022
by
ChaimZhu
Committed by
GitHub
Aug 17, 2022
Browse files
update seg config (#1734)
parent
d6d7447c
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
124 additions
and
183 deletions
+124
-183
configs/_base_/datasets/scannet_seg-3d-20class.py
configs/_base_/datasets/scannet_seg-3d-20class.py
+6
-0
configs/paconv/paconv_cuda_ssg_8x8_cosine_200e_s3dis_seg-3d-13class.py
...v/paconv_cuda_ssg_8x8_cosine_200e_s3dis_seg-3d-13class.py
+16
-19
configs/paconv/paconv_ssg_8x8_cosine_150e_s3dis_seg-3d-13class.py
...paconv/paconv_ssg_8x8_cosine_150e_s3dis_seg-3d-13class.py
+11
-24
configs/pointnet2/pointnet2_msg_16x2_cosine_250e_scannet_seg-3d-20class.py
.../pointnet2_msg_16x2_cosine_250e_scannet_seg-3d-20class.py
+7
-6
configs/pointnet2/pointnet2_msg_16x2_cosine_80e_s3dis_seg-3d-13class.py
...et2/pointnet2_msg_16x2_cosine_80e_s3dis_seg-3d-13class.py
+7
-6
configs/pointnet2/pointnet2_msg_xyz-only_16x2_cosine_250e_scannet_seg-3d-20class.py
...2_msg_xyz-only_16x2_cosine_250e_scannet_seg-3d-20class.py
+39
-64
configs/pointnet2/pointnet2_ssg_16x2_cosine_200e_scannet_seg-3d-20class.py
.../pointnet2_ssg_16x2_cosine_200e_scannet_seg-3d-20class.py
+1
-1
configs/pointnet2/pointnet2_ssg_xyz-only_16x2_cosine_200e_scannet_seg-3d-20class.py
...2_ssg_xyz-only_16x2_cosine_200e_scannet_seg-3d-20class.py
+37
-63
No files found.
configs/_base_/datasets/scannet_seg-3d-20class.py
View file @
47bb07f7
...
...
@@ -58,6 +58,12 @@ test_pipeline = [
use_color
=
True
,
load_dim
=
6
,
use_dim
=
[
0
,
1
,
2
,
3
,
4
,
5
]),
dict
(
type
=
'LoadAnnotations3D'
,
with_bbox_3d
=
False
,
with_label_3d
=
False
,
with_mask_3d
=
False
,
with_seg_3d
=
True
),
dict
(
type
=
'NormalizePointsColor'
,
color_mean
=
None
),
dict
(
# a wrapper in order to successfully call test function
...
...
configs/paconv/paconv_cuda_ssg_8x8_cosine_200e_s3dis_seg-3d-13class.py
View file @
47bb07f7
...
...
@@ -4,9 +4,19 @@ _base_ = [
'../_base_/schedules/seg_cosine_150e.py'
,
'../_base_/default_runtime.py'
]
# model settings
model
=
dict
(
decode_head
=
dict
(
num_classes
=
13
,
ignore_index
=
13
,
loss_decode
=
dict
(
class_weight
=
None
)),
# S3DIS doesn't use class_weight
test_cfg
=
dict
(
num_points
=
4096
,
block_size
=
1.0
,
sample_rate
=
0.5
,
use_normalized_coord
=
True
,
batch_size
=
12
))
# data settings
class_names
=
(
'ceiling'
,
'floor'
,
'wall'
,
'beam'
,
'column'
,
'window'
,
'door'
,
'table'
,
'chair'
,
'sofa'
,
'bookcase'
,
'board'
,
'clutter'
)
num_points
=
4096
train_pipeline
=
[
dict
(
...
...
@@ -43,24 +53,11 @@ train_pipeline = [
jitter_std
=
[
0.01
,
0.01
,
0.01
],
clip_range
=
[
-
0.05
,
0.05
]),
dict
(
type
=
'RandomDropPointsColor'
,
drop_ratio
=
0.2
),
dict
(
type
=
'DefaultFormatBundle3D'
,
class_names
=
class_names
),
dict
(
type
=
'Collect3D'
,
keys
=
[
'points'
,
'pts_semantic_mask'
])
dict
(
type
=
'Pack3DDetInputs'
,
keys
=
[
'points'
,
'pts_semantic_mask'
])
]
data
=
dict
(
samples_per_gpu
=
8
,
train
=
dict
(
pipeline
=
train_pipeline
))
evaluation
=
dict
(
interval
=
1
)
# model settings
model
=
dict
(
decode_head
=
dict
(
num_classes
=
13
,
ignore_index
=
13
,
loss_decode
=
dict
(
class_weight
=
None
)),
# S3DIS doesn't use class_weight
test_cfg
=
dict
(
num_points
=
4096
,
block_size
=
1.0
,
sample_rate
=
0.5
,
use_normalized_coord
=
True
,
batch_size
=
12
))
train_dataloader
=
dict
(
batch_size
=
8
,
dataset
=
dict
(
pipeline
=
train_pipeline
))
# runtime settings
runner
=
dict
(
max_epochs
=
200
)
val_cfg
=
dict
(
interval
=
1
)
train_cfg
=
dict
(
by_epoch
=
True
,
max_epochs
=
200
)
configs/paconv/paconv_ssg_8x8_cosine_150e_s3dis_seg-3d-13class.py
View file @
47bb07f7
...
...
@@ -4,18 +4,17 @@ _base_ = [
'../_base_/default_runtime.py'
]
# file_client_args = dict(backend='disk')
# Uncomment the following if use ceph or other file clients.
# See https://mmcv.readthedocs.io/en/latest/api.html#mmcv.fileio.FileClient
# for more details.
file_client_args
=
dict
(
backend
=
'petrel'
,
path_mapping
=
dict
({
'./data/s3dis/'
:
's3://openmmlab/datasets/detection3d/s3dis_processed/'
,
'data/s3dis/'
:
's3://openmmlab/datasets/detection3d/s3dis_processed/'
}))
# model settings
model
=
dict
(
decode_head
=
dict
(
num_classes
=
13
,
ignore_index
=
13
,
loss_decode
=
dict
(
class_weight
=
None
)),
# S3DIS doesn't use class_weight
test_cfg
=
dict
(
num_points
=
4096
,
block_size
=
1.0
,
sample_rate
=
0.5
,
use_normalized_coord
=
True
,
batch_size
=
12
))
# data settings
num_points
=
4096
...
...
@@ -57,17 +56,5 @@ train_pipeline = [
dict
(
type
=
'Pack3DDetInputs'
,
keys
=
[
'points'
,
'pts_semantic_mask'
])
]
# model settings
model
=
dict
(
decode_head
=
dict
(
num_classes
=
13
,
ignore_index
=
13
,
loss_decode
=
dict
(
class_weight
=
None
)),
# S3DIS doesn't use class_weight
test_cfg
=
dict
(
num_points
=
4096
,
block_size
=
1.0
,
sample_rate
=
0.5
,
use_normalized_coord
=
True
,
batch_size
=
12
))
train_dataloader
=
dict
(
batch_size
=
8
,
dataset
=
dict
(
pipeline
=
train_pipeline
))
val_cfg
=
dict
(
interval
=
1
)
configs/pointnet2/pointnet2_msg_16x2_cosine_250e_scannet_seg-3d-20class.py
View file @
47bb07f7
...
...
@@ -4,10 +4,6 @@ _base_ = [
'../_base_/schedules/seg_cosine_200e.py'
,
'../_base_/default_runtime.py'
]
# data settings
data
=
dict
(
samples_per_gpu
=
16
)
evaluation
=
dict
(
interval
=
5
)
# model settings
model
=
dict
(
decode_head
=
dict
(
...
...
@@ -30,7 +26,12 @@ model = dict(
use_normalized_coord
=
False
,
batch_size
=
24
))
# data settings
train_dataloader
=
dict
(
batch_size
=
16
)
# runtime settings
checkpoint_config
=
dict
(
interval
=
5
)
default_hooks
=
dict
(
checkpoint
=
dict
(
type
=
'CheckpointHook'
,
interval
=
5
))
val_cfg
=
dict
(
interval
=
5
)
# PointNet2-MSG needs longer training time than PointNet2-SSG
runner
=
dict
(
type
=
'EpochBasedRunner'
,
max_epochs
=
250
)
train_cfg
=
dict
(
by_epoch
=
True
,
max_epochs
=
250
)
configs/pointnet2/pointnet2_msg_16x2_cosine_80e_s3dis_seg-3d-13class.py
View file @
47bb07f7
...
...
@@ -4,10 +4,6 @@ _base_ = [
'../_base_/schedules/seg_cosine_50e.py'
,
'../_base_/default_runtime.py'
]
# data settings
data
=
dict
(
samples_per_gpu
=
16
)
evaluation
=
dict
(
interval
=
2
)
# model settings
model
=
dict
(
backbone
=
dict
(
in_channels
=
9
),
# [xyz, rgb, normalized_xyz]
...
...
@@ -21,7 +17,12 @@ model = dict(
use_normalized_coord
=
True
,
batch_size
=
24
))
# data settings
train_dataloader
=
dict
(
batch_size
=
16
)
# runtime settings
checkpoint_config
=
dict
(
interval
=
2
)
default_hooks
=
dict
(
checkpoint
=
dict
(
type
=
'CheckpointHook'
,
interval
=
2
))
val_cfg
=
dict
(
interval
=
2
)
# PointNet2-MSG needs longer training time than PointNet2-SSG
runner
=
dict
(
type
=
'EpochBasedRunner'
,
max_epochs
=
80
)
train_cfg
=
dict
(
by_epoch
=
True
,
max_epochs
=
80
)
configs/pointnet2/pointnet2_msg_xyz-only_16x2_cosine_250e_scannet_seg-3d-20class.py
View file @
47bb07f7
...
...
@@ -4,11 +4,32 @@ _base_ = [
'../_base_/schedules/seg_cosine_200e.py'
,
'../_base_/default_runtime.py'
]
# model settings
model
=
dict
(
backbone
=
dict
(
in_channels
=
3
),
# only [xyz]
decode_head
=
dict
(
num_classes
=
20
,
ignore_index
=
20
,
# `class_weight` is generated in data pre-processing, saved in
# `data/scannet/seg_info/train_label_weight.npy`
# you can copy paste the values here, or input the file path as
# `class_weight=data/scannet/seg_info/train_label_weight.npy`
loss_decode
=
dict
(
class_weight
=
[
2.389689
,
2.7215734
,
4.5944676
,
4.8543367
,
4.096086
,
4.907941
,
4.690836
,
4.512031
,
4.623311
,
4.9242644
,
5.358117
,
5.360071
,
5.019636
,
4.967126
,
5.3502126
,
5.4023647
,
5.4027233
,
5.4169416
,
5.3954206
,
4.6971426
])),
test_cfg
=
dict
(
num_points
=
8192
,
block_size
=
1.5
,
sample_rate
=
0.5
,
use_normalized_coord
=
False
,
batch_size
=
24
))
# dataset settings
# in this setting, we only use xyz as network input
# so we need to re-write all the data pipeline
dataset_type
=
'ScanNetSegDataset'
data_root
=
'./data/scannet/'
class_names
=
(
'wall'
,
'floor'
,
'cabinet'
,
'bed'
,
'chair'
,
'sofa'
,
'table'
,
'door'
,
'window'
,
'bookshelf'
,
'picture'
,
'counter'
,
'desk'
,
'curtain'
,
'refrigerator'
,
'showercurtrain'
,
'toilet'
,
'sink'
,
...
...
@@ -37,8 +58,7 @@ train_pipeline = [
use_normalized_coord
=
False
,
enlarge_size
=
0.2
,
min_unique_num
=
None
),
dict
(
type
=
'DefaultFormatBundle3D'
,
class_names
=
class_names
),
dict
(
type
=
'Collect3D'
,
keys
=
[
'points'
,
'pts_semantic_mask'
])
dict
(
type
=
'Pack3DDetInputs'
,
keys
=
[
'points'
,
'pts_semantic_mask'
])
]
test_pipeline
=
[
dict
(
...
...
@@ -48,6 +68,12 @@ test_pipeline = [
use_color
=
False
,
load_dim
=
6
,
use_dim
=
[
0
,
1
,
2
]),
dict
(
type
=
'LoadAnnotations3D'
,
with_bbox_3d
=
False
,
with_label_3d
=
False
,
with_mask_3d
=
False
,
with_seg_3d
=
True
),
dict
(
# a wrapper in order to successfully call test function
# actually we don't perform test-time-aug
...
...
@@ -66,68 +92,17 @@ test_pipeline = [
sync_2d
=
False
,
flip_ratio_bev_horizontal
=
0.0
,
flip_ratio_bev_vertical
=
0.0
),
dict
(
type
=
'DefaultFormatBundle3D'
,
class_names
=
class_names
,
with_label
=
False
),
dict
(
type
=
'Collect3D'
,
keys
=
[
'points'
])
])
]),
dict
(
type
=
'Pack3DDetInputs'
,
keys
=
[
'points'
])
]
data
=
dict
(
samples_per_gpu
=
16
,
workers_per_gpu
=
4
,
train
=
dict
(
type
=
dataset_type
,
data_root
=
data_root
,
ann_file
=
data_root
+
'scannet_infos_train.pkl'
,
pipeline
=
train_pipeline
,
classes
=
class_names
,
test_mode
=
False
,
ignore_index
=
len
(
class_names
),
scene_idxs
=
data_root
+
'seg_info/train_resampled_scene_idxs.npy'
),
val
=
dict
(
type
=
dataset_type
,
data_root
=
data_root
,
ann_file
=
data_root
+
'scannet_infos_val.pkl'
,
pipeline
=
test_pipeline
,
classes
=
class_names
,
test_mode
=
True
,
ignore_index
=
len
(
class_names
)),
test
=
dict
(
type
=
dataset_type
,
data_root
=
data_root
,
ann_file
=
data_root
+
'scannet_infos_val.pkl'
,
pipeline
=
test_pipeline
,
classes
=
class_names
,
test_mode
=
True
,
ignore_index
=
len
(
class_names
)))
evaluation
=
dict
(
interval
=
5
)
# model settings
model
=
dict
(
backbone
=
dict
(
in_channels
=
3
),
# only [xyz]
decode_head
=
dict
(
num_classes
=
20
,
ignore_index
=
20
,
# `class_weight` is generated in data pre-processing, saved in
# `data/scannet/seg_info/train_label_weight.npy`
# you can copy paste the values here, or input the file path as
# `class_weight=data/scannet/seg_info/train_label_weight.npy`
loss_decode
=
dict
(
class_weight
=
[
2.389689
,
2.7215734
,
4.5944676
,
4.8543367
,
4.096086
,
4.907941
,
4.690836
,
4.512031
,
4.623311
,
4.9242644
,
5.358117
,
5.360071
,
5.019636
,
4.967126
,
5.3502126
,
5.4023647
,
5.4027233
,
5.4169416
,
5.3954206
,
4.6971426
])),
test_cfg
=
dict
(
num_points
=
8192
,
block_size
=
1.5
,
sample_rate
=
0.5
,
use_normalized_coord
=
False
,
batch_size
=
24
))
train_dataloader
=
dict
(
batch_size
=
16
,
dataset
=
dict
(
pipeline
=
train_pipeline
))
test_dataloader
=
dict
(
dataset
=
dict
(
pipeline
=
test_pipeline
))
val_dataloader
=
test_dataloader
# runtime settings
checkpoint_config
=
dict
(
interval
=
5
)
default_hooks
=
dict
(
checkpoint
=
dict
(
type
=
'CheckpointHook'
,
interval
=
5
))
val_cfg
=
dict
(
interval
=
5
)
# PointNet2-MSG needs longer training time than PointNet2-SSG
runner
=
dict
(
type
=
'EpochBasedRunner'
,
max_epochs
=
250
)
train_cfg
=
dict
(
by_epoch
=
True
,
max_epochs
=
250
)
configs/pointnet2/pointnet2_ssg_16x2_cosine_200e_scannet_seg-3d-20class.py
View file @
47bb07f7
...
...
@@ -30,5 +30,5 @@ model = dict(
train_dataloader
=
dict
(
batch_size
=
16
)
# runtime settings
default_hooks
=
dict
(
checkpoint
=
dict
(
type
=
'CheckpointHook'
,
interval
=
5
)
,
)
default_hooks
=
dict
(
checkpoint
=
dict
(
type
=
'CheckpointHook'
,
interval
=
5
))
val_cfg
=
dict
(
interval
=
5
)
configs/pointnet2/pointnet2_ssg_xyz-only_16x2_cosine_200e_scannet_seg-3d-20class.py
View file @
47bb07f7
...
...
@@ -4,11 +4,32 @@ _base_ = [
'../_base_/schedules/seg_cosine_200e.py'
,
'../_base_/default_runtime.py'
]
# model settings
model
=
dict
(
backbone
=
dict
(
in_channels
=
3
),
# only [xyz]
decode_head
=
dict
(
num_classes
=
20
,
ignore_index
=
20
,
# `class_weight` is generated in data pre-processing, saved in
# `data/scannet/seg_info/train_label_weight.npy`
# you can copy paste the values here, or input the file path as
# `class_weight=data/scannet/seg_info/train_label_weight.npy`
loss_decode
=
dict
(
class_weight
=
[
2.389689
,
2.7215734
,
4.5944676
,
4.8543367
,
4.096086
,
4.907941
,
4.690836
,
4.512031
,
4.623311
,
4.9242644
,
5.358117
,
5.360071
,
5.019636
,
4.967126
,
5.3502126
,
5.4023647
,
5.4027233
,
5.4169416
,
5.3954206
,
4.6971426
])),
test_cfg
=
dict
(
num_points
=
8192
,
block_size
=
1.5
,
sample_rate
=
0.5
,
use_normalized_coord
=
False
,
batch_size
=
24
))
# dataset settings
# in this setting, we only use xyz as network input
# so we need to re-write all the data pipeline
dataset_type
=
'ScanNetSegDataset'
data_root
=
'./data/scannet/'
class_names
=
(
'wall'
,
'floor'
,
'cabinet'
,
'bed'
,
'chair'
,
'sofa'
,
'table'
,
'door'
,
'window'
,
'bookshelf'
,
'picture'
,
'counter'
,
'desk'
,
'curtain'
,
'refrigerator'
,
'showercurtrain'
,
'toilet'
,
'sink'
,
...
...
@@ -37,8 +58,7 @@ train_pipeline = [
use_normalized_coord
=
False
,
enlarge_size
=
0.2
,
min_unique_num
=
None
),
dict
(
type
=
'DefaultFormatBundle3D'
,
class_names
=
class_names
),
dict
(
type
=
'Collect3D'
,
keys
=
[
'points'
,
'pts_semantic_mask'
])
dict
(
type
=
'Pack3DDetInputs'
,
keys
=
[
'points'
,
'pts_semantic_mask'
])
]
test_pipeline
=
[
dict
(
...
...
@@ -48,6 +68,12 @@ test_pipeline = [
use_color
=
False
,
load_dim
=
6
,
use_dim
=
[
0
,
1
,
2
]),
dict
(
type
=
'LoadAnnotations3D'
,
with_bbox_3d
=
False
,
with_label_3d
=
False
,
with_mask_3d
=
False
,
with_seg_3d
=
True
),
dict
(
# a wrapper in order to successfully call test function
# actually we don't perform test-time-aug
...
...
@@ -66,66 +92,14 @@ test_pipeline = [
sync_2d
=
False
,
flip_ratio_bev_horizontal
=
0.0
,
flip_ratio_bev_vertical
=
0.0
),
dict
(
type
=
'DefaultFormatBundle3D'
,
class_names
=
class_names
,
with_label
=
False
),
dict
(
type
=
'Collect3D'
,
keys
=
[
'points'
])
])
]),
dict
(
type
=
'Pack3DDetInputs'
,
keys
=
[
'points'
])
]
data
=
dict
(
samples_per_gpu
=
16
,
workers_per_gpu
=
4
,
train
=
dict
(
type
=
dataset_type
,
data_root
=
data_root
,
ann_file
=
data_root
+
'scannet_infos_train.pkl'
,
pipeline
=
train_pipeline
,
classes
=
class_names
,
test_mode
=
False
,
ignore_index
=
len
(
class_names
),
scene_idxs
=
data_root
+
'seg_info/train_resampled_scene_idxs.npy'
),
val
=
dict
(
type
=
dataset_type
,
data_root
=
data_root
,
ann_file
=
data_root
+
'scannet_infos_val.pkl'
,
pipeline
=
test_pipeline
,
classes
=
class_names
,
test_mode
=
True
,
ignore_index
=
len
(
class_names
)),
test
=
dict
(
type
=
dataset_type
,
data_root
=
data_root
,
ann_file
=
data_root
+
'scannet_infos_val.pkl'
,
pipeline
=
test_pipeline
,
classes
=
class_names
,
test_mode
=
True
,
ignore_index
=
len
(
class_names
)))
evaluation
=
dict
(
interval
=
5
)
# model settings
model
=
dict
(
backbone
=
dict
(
in_channels
=
3
),
# only [xyz]
decode_head
=
dict
(
num_classes
=
20
,
ignore_index
=
20
,
# `class_weight` is generated in data pre-processing, saved in
# `data/scannet/seg_info/train_label_weight.npy`
# you can copy paste the values here, or input the file path as
# `class_weight=data/scannet/seg_info/train_label_weight.npy`
loss_decode
=
dict
(
class_weight
=
[
2.389689
,
2.7215734
,
4.5944676
,
4.8543367
,
4.096086
,
4.907941
,
4.690836
,
4.512031
,
4.623311
,
4.9242644
,
5.358117
,
5.360071
,
5.019636
,
4.967126
,
5.3502126
,
5.4023647
,
5.4027233
,
5.4169416
,
5.3954206
,
4.6971426
])),
test_cfg
=
dict
(
num_points
=
8192
,
block_size
=
1.5
,
sample_rate
=
0.5
,
use_normalized_coord
=
False
,
batch_size
=
24
))
train_dataloader
=
dict
(
batch_size
=
16
,
dataset
=
dict
(
pipeline
=
train_pipeline
))
test_dataloader
=
dict
(
dataset
=
dict
(
pipeline
=
test_pipeline
))
val_dataloader
=
test_dataloader
# runtime settings
checkpoint_config
=
dict
(
interval
=
5
)
default_hooks
=
dict
(
checkpoint
=
dict
(
type
=
'CheckpointHook'
,
interval
=
5
))
val_cfg
=
dict
(
interval
=
5
)
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