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
OpenPCDet
Commits
43b3c006
Commit
43b3c006
authored
Nov 03, 2021
by
acivgin1
Browse files
switch to new VoxelGenerator
parent
9d9e9b85
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
17 additions
and
17 deletions
+17
-17
pcdet/datasets/dataset.py
pcdet/datasets/dataset.py
+2
-1
pcdet/datasets/processor/data_processor.py
pcdet/datasets/processor/data_processor.py
+15
-16
No files found.
pcdet/datasets/dataset.py
View file @
43b3c006
...
...
@@ -31,7 +31,8 @@ class DatasetTemplate(torch_data.Dataset):
self
.
root_path
,
self
.
dataset_cfg
.
DATA_AUGMENTOR
,
self
.
class_names
,
logger
=
self
.
logger
)
if
self
.
training
else
None
self
.
data_processor
=
DataProcessor
(
self
.
dataset_cfg
.
DATA_PROCESSOR
,
point_cloud_range
=
self
.
point_cloud_range
,
training
=
self
.
training
self
.
dataset_cfg
.
DATA_PROCESSOR
,
point_cloud_range
=
self
.
point_cloud_range
,
training
=
self
.
training
,
num_point_features
=
self
.
point_feature_encoder
.
num_point_features
)
self
.
grid_size
=
self
.
data_processor
.
grid_size
...
...
pcdet/datasets/processor/data_processor.py
View file @
43b3c006
from
functools
import
partial
import
cumm.tensorview
as
tv
import
numpy
as
np
from
skimage
import
transform
from
spconv.utils
import
Point2VoxelCPU3d
as
VoxelGenerator
from
...utils
import
box_utils
,
common_utils
class
DataProcessor
(
object
):
def
__init__
(
self
,
processor_configs
,
point_cloud_range
,
training
):
def
__init__
(
self
,
processor_configs
,
point_cloud_range
,
training
,
num_point_features
):
self
.
point_cloud_range
=
point_cloud_range
self
.
training
=
training
self
.
num_point_features
=
num_point_features
self
.
mode
=
'train'
if
training
else
'test'
self
.
grid_size
=
self
.
voxel_size
=
None
self
.
data_processor_queue
=
[]
...
...
@@ -46,16 +49,12 @@ class DataProcessor(object):
def
transform_points_to_voxels
(
self
,
data_dict
=
None
,
config
=
None
,
voxel_generator
=
None
):
if
data_dict
is
None
:
try
:
from
spconv.utils
import
VoxelGeneratorV2
as
VoxelGenerator
except
:
from
spconv.utils
import
VoxelGenerator
voxel_generator
=
VoxelGenerator
(
voxel_size
=
config
.
VOXEL_SIZE
,
point_cloud_range
=
self
.
point_cloud_range
,
max_num_points
=
config
.
MAX_POINTS_PER_VOXEL
,
max_voxels
=
config
.
MAX_NUMBER_OF_VOXELS
[
self
.
mode
]
vsize_xyz
=
config
.
VOXEL_SIZE
,
coors_range_xyz
=
self
.
point_cloud_range
,
num_point_features
=
self
.
num_point_features
,
max_num_points_per_voxel
=
config
.
MAX_POINTS_PER_VOXEL
,
max_num_voxels
=
config
.
MAX_NUMBER_OF_VOXELS
[
self
.
mode
]
)
grid_size
=
(
self
.
point_cloud_range
[
3
:
6
]
-
self
.
point_cloud_range
[
0
:
3
])
/
np
.
array
(
config
.
VOXEL_SIZE
)
self
.
grid_size
=
np
.
round
(
grid_size
).
astype
(
np
.
int64
)
...
...
@@ -63,12 +62,12 @@ class DataProcessor(object):
return
partial
(
self
.
transform_points_to_voxels
,
voxel_generator
=
voxel_generator
)
points
=
data_dict
[
'points'
]
voxel_output
=
voxel_generator
.
generate
(
points
)
if
isinstance
(
voxel_output
,
dict
):
voxels
,
coordinates
,
num_points
=
\
voxel_output
[
'voxels'
],
voxel_output
[
'coordinates'
],
voxel_output
[
'num_points_per_voxel'
]
else
:
voxels
,
coordinates
,
num_points
=
voxel_output
voxel_output
=
voxel_generator
.
point_to_voxel
(
tv
.
from_numpy
(
points
)
)
tv_voxels
,
tv_coordinates
,
tv_num_points
=
voxel_output
# make copy with numpy(), since numpy_view() will disappear as soon as the generator is deleted
voxels
=
tv_voxels
.
numpy
()
coordinates
=
tv_coordinates
.
numpy
()
num_points
=
tv_num_points
.
numpy
()
if
not
data_dict
[
'use_lead_xyz'
]:
voxels
=
voxels
[...,
3
:]
# remove xyz in voxels(N, 3)
...
...
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