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
6f9d92b9
Commit
6f9d92b9
authored
Jul 17, 2020
by
Shaoshuai Shi
Browse files
Merge branch 'master' into develop
parents
f4bd7b0b
9f5d201e
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
37 additions
and
34 deletions
+37
-34
pcdet/datasets/kitti/kitti_object_eval_python/eval.py
pcdet/datasets/kitti/kitti_object_eval_python/eval.py
+26
-26
pcdet/models/dense_heads/anchor_head_multi.py
pcdet/models/dense_heads/anchor_head_multi.py
+4
-2
pcdet/models/roi_heads/roi_head_template.py
pcdet/models/roi_heads/roi_head_template.py
+1
-0
tools/eval_utils/eval_utils.py
tools/eval_utils/eval_utils.py
+2
-2
tools/train_utils/train_utils.py
tools/train_utils/train_utils.py
+4
-4
No files found.
pcdet/datasets/kitti/kitti_object_eval_python/eval.py
View file @
6f9d92b9
...
...
@@ -694,10 +694,10 @@ def get_official_eval_result(gt_annos, dt_annos, current_classes, PR_detail_dict
result
+=
print_str
((
f
"aos AP:
{
mAPaos
[
j
,
0
,
i
]:.
2
f
}
, "
f
"
{
mAPaos
[
j
,
1
,
i
]:.
2
f
}
, "
f
"
{
mAPaos
[
j
,
2
,
i
]:.
2
f
}
"
))
if
i
==
0
:
ret_dict
[
'%s_aos
_
easy'
%
class_to_name
[
curcls
]]
=
mAPaos
[
j
,
0
,
0
]
ret_dict
[
'%s_aos
_
moderate'
%
class_to_name
[
curcls
]]
=
mAPaos
[
j
,
1
,
0
]
ret_dict
[
'%s_aos
_
hard'
%
class_to_name
[
curcls
]]
=
mAPaos
[
j
,
2
,
0
]
#
if i == 0:
#
ret_dict['%s_aos
/
easy' % class_to_name[curcls]] = mAPaos[j, 0, 0]
#
ret_dict['%s_aos
/
moderate' % class_to_name[curcls]] = mAPaos[j, 1, 0]
#
ret_dict['%s_aos
/
hard' % class_to_name[curcls]] = mAPaos[j, 2, 0]
result
+=
print_str
(
(
f
"
{
class_to_name
[
curcls
]
}
"
...
...
@@ -716,30 +716,30 @@ def get_official_eval_result(gt_annos, dt_annos, current_classes, PR_detail_dict
f
"
{
mAPaos_R40
[
j
,
1
,
i
]:.
2
f
}
, "
f
"
{
mAPaos_R40
[
j
,
2
,
i
]:.
2
f
}
"
))
if
i
==
0
:
ret_dict
[
'%s_aos
_
easy_R40'
%
class_to_name
[
curcls
]]
=
mAPaos_R40
[
j
,
0
,
0
]
ret_dict
[
'%s_aos
_
moderate_R40'
%
class_to_name
[
curcls
]]
=
mAPaos_R40
[
j
,
1
,
0
]
ret_dict
[
'%s_aos
_
hard_R40'
%
class_to_name
[
curcls
]]
=
mAPaos_R40
[
j
,
2
,
0
]
ret_dict
[
'%s_aos
/
easy_R40'
%
class_to_name
[
curcls
]]
=
mAPaos_R40
[
j
,
0
,
0
]
ret_dict
[
'%s_aos
/
moderate_R40'
%
class_to_name
[
curcls
]]
=
mAPaos_R40
[
j
,
1
,
0
]
ret_dict
[
'%s_aos
/
hard_R40'
%
class_to_name
[
curcls
]]
=
mAPaos_R40
[
j
,
2
,
0
]
if
i
==
0
:
ret_dict
[
'%s_3d
_
easy'
%
class_to_name
[
curcls
]]
=
mAP3d
[
j
,
0
,
0
]
ret_dict
[
'%s_3d
_
moderate'
%
class_to_name
[
curcls
]]
=
mAP3d
[
j
,
1
,
0
]
ret_dict
[
'%s_3d
_
hard'
%
class_to_name
[
curcls
]]
=
mAP3d
[
j
,
2
,
0
]
ret_dict
[
'%s_bev
_
easy'
%
class_to_name
[
curcls
]]
=
mAPbev
[
j
,
0
,
0
]
ret_dict
[
'%s_bev
_
moderate'
%
class_to_name
[
curcls
]]
=
mAPbev
[
j
,
1
,
0
]
ret_dict
[
'%s_bev
_
hard'
%
class_to_name
[
curcls
]]
=
mAPbev
[
j
,
2
,
0
]
ret_dict
[
'%s_image
_
easy'
%
class_to_name
[
curcls
]]
=
mAPbbox
[
j
,
0
,
0
]
ret_dict
[
'%s_image
_
moderate'
%
class_to_name
[
curcls
]]
=
mAPbbox
[
j
,
1
,
0
]
ret_dict
[
'%s_image
_
hard'
%
class_to_name
[
curcls
]]
=
mAPbbox
[
j
,
2
,
0
]
ret_dict
[
'%s_3d
_
easy_R40'
%
class_to_name
[
curcls
]]
=
mAP3d_R40
[
j
,
0
,
0
]
ret_dict
[
'%s_3d
_
moderate_R40'
%
class_to_name
[
curcls
]]
=
mAP3d_R40
[
j
,
1
,
0
]
ret_dict
[
'%s_3d
_
hard_R40'
%
class_to_name
[
curcls
]]
=
mAP3d_R40
[
j
,
2
,
0
]
ret_dict
[
'%s_bev
_
easy_R40'
%
class_to_name
[
curcls
]]
=
mAPbev_R40
[
j
,
0
,
0
]
ret_dict
[
'%s_bev
_
moderate_R40'
%
class_to_name
[
curcls
]]
=
mAPbev_R40
[
j
,
1
,
0
]
ret_dict
[
'%s_bev
_
hard_R40'
%
class_to_name
[
curcls
]]
=
mAPbev_R40
[
j
,
2
,
0
]
ret_dict
[
'%s_image
_
easy_R40'
%
class_to_name
[
curcls
]]
=
mAPbbox_R40
[
j
,
0
,
0
]
ret_dict
[
'%s_image
_
moderate_R40'
%
class_to_name
[
curcls
]]
=
mAPbbox_R40
[
j
,
1
,
0
]
ret_dict
[
'%s_image
_
hard_R40'
%
class_to_name
[
curcls
]]
=
mAPbbox_R40
[
j
,
2
,
0
]
#
ret_dict['%s_3d
/
easy' % class_to_name[curcls]] = mAP3d[j, 0, 0]
#
ret_dict['%s_3d
/
moderate' % class_to_name[curcls]] = mAP3d[j, 1, 0]
#
ret_dict['%s_3d
/
hard' % class_to_name[curcls]] = mAP3d[j, 2, 0]
#
ret_dict['%s_bev
/
easy' % class_to_name[curcls]] = mAPbev[j, 0, 0]
#
ret_dict['%s_bev
/
moderate' % class_to_name[curcls]] = mAPbev[j, 1, 0]
#
ret_dict['%s_bev
/
hard' % class_to_name[curcls]] = mAPbev[j, 2, 0]
#
ret_dict['%s_image
/
easy' % class_to_name[curcls]] = mAPbbox[j, 0, 0]
#
ret_dict['%s_image
/
moderate' % class_to_name[curcls]] = mAPbbox[j, 1, 0]
#
ret_dict['%s_image
/
hard' % class_to_name[curcls]] = mAPbbox[j, 2, 0]
ret_dict
[
'%s_3d
/
easy_R40'
%
class_to_name
[
curcls
]]
=
mAP3d_R40
[
j
,
0
,
0
]
ret_dict
[
'%s_3d
/
moderate_R40'
%
class_to_name
[
curcls
]]
=
mAP3d_R40
[
j
,
1
,
0
]
ret_dict
[
'%s_3d
/
hard_R40'
%
class_to_name
[
curcls
]]
=
mAP3d_R40
[
j
,
2
,
0
]
ret_dict
[
'%s_bev
/
easy_R40'
%
class_to_name
[
curcls
]]
=
mAPbev_R40
[
j
,
0
,
0
]
ret_dict
[
'%s_bev
/
moderate_R40'
%
class_to_name
[
curcls
]]
=
mAPbev_R40
[
j
,
1
,
0
]
ret_dict
[
'%s_bev
/
hard_R40'
%
class_to_name
[
curcls
]]
=
mAPbev_R40
[
j
,
2
,
0
]
ret_dict
[
'%s_image
/
easy_R40'
%
class_to_name
[
curcls
]]
=
mAPbbox_R40
[
j
,
0
,
0
]
ret_dict
[
'%s_image
/
moderate_R40'
%
class_to_name
[
curcls
]]
=
mAPbbox_R40
[
j
,
1
,
0
]
ret_dict
[
'%s_image
/
hard_R40'
%
class_to_name
[
curcls
]]
=
mAPbbox_R40
[
j
,
2
,
0
]
return
result
,
ret_dict
...
...
pcdet/models/dense_heads/anchor_head_multi.py
View file @
6f9d92b9
...
...
@@ -4,6 +4,7 @@ from .anchor_head_template import AnchorHeadTemplate
from
..backbones_2d
import
BaseBEVBackbone
import
torch
class
SingleHead
(
BaseBEVBackbone
):
def
__init__
(
self
,
model_cfg
,
input_channels
,
num_class
,
num_anchors_per_location
,
code_size
,
encode_conv_cfg
=
None
):
super
().
__init__
(
encode_conv_cfg
,
input_channels
)
...
...
@@ -75,6 +76,7 @@ class SingleHead(BaseBEVBackbone):
return
ret_dict
class
AnchorHeadMulti
(
AnchorHeadTemplate
):
def
__init__
(
self
,
model_cfg
,
input_channels
,
num_class
,
class_names
,
grid_size
,
point_cloud_range
,
predict_boxes_when_training
=
True
):
super
().
__init__
(
...
...
@@ -83,7 +85,6 @@ class AnchorHeadMulti(AnchorHeadTemplate):
self
.
model_cfg
=
model_cfg
self
.
make_multihead
(
input_channels
)
def
make_multihead
(
self
,
input_channels
):
rpn_head_cfgs
=
self
.
model_cfg
.
RPN_HEAD_CFGS
rpn_heads
=
[]
...
...
@@ -123,7 +124,8 @@ class AnchorHeadMulti(AnchorHeadTemplate):
gt_boxes
=
data_dict
[
'gt_boxes'
]
)
self
.
forward_ret_dict
.
update
(
targets_dict
)
else
:
if
not
self
.
training
or
self
.
predict_boxes_when_training
:
batch_cls_preds
,
batch_box_preds
=
self
.
generate_predicted_boxes
(
batch_size
=
data_dict
[
'batch_size'
],
cls_preds
=
cls_preds
,
box_preds
=
box_preds
,
dir_cls_preds
=
dir_cls_preds
...
...
pcdet/models/roi_heads/roi_head_template.py
View file @
6f9d92b9
...
...
@@ -39,6 +39,7 @@ class RoIHeadTemplate(nn.Module):
fc_layers
=
nn
.
Sequential
(
*
fc_layers
)
return
fc_layers
@
torch
.
no_grad
()
def
proposal_layer
(
self
,
batch_dict
,
nms_config
):
"""
Args:
...
...
tools/eval_utils/eval_utils.py
View file @
6f9d92b9
...
...
@@ -95,8 +95,8 @@ def eval_one_epoch(cfg, model, dataloader, epoch_id, logger, dist_test=False, sa
cur_rcnn_recall
=
metric
[
'recall_rcnn_%s'
%
str
(
cur_thresh
)]
/
max
(
gt_num_cnt
,
1
)
logger
.
info
(
'recall_roi_%s: %f'
%
(
cur_thresh
,
cur_roi_recall
))
logger
.
info
(
'recall_rcnn_%s: %f'
%
(
cur_thresh
,
cur_rcnn_recall
))
ret_dict
[
'recall
_
roi_%s'
%
str
(
cur_thresh
)]
=
cur_roi_recall
ret_dict
[
'recall
_
rcnn_%s'
%
str
(
cur_thresh
)]
=
cur_rcnn_recall
ret_dict
[
'recall
/
roi_%s'
%
str
(
cur_thresh
)]
=
cur_roi_recall
ret_dict
[
'recall
/
rcnn_%s'
%
str
(
cur_thresh
)]
=
cur_rcnn_recall
total_pred_objects
=
0
for
anno
in
det_annos
:
...
...
tools/train_utils/train_utils.py
View file @
6f9d92b9
...
...
@@ -29,7 +29,7 @@ def train_one_epoch(model, optimizer, train_loader, model_func, lr_scheduler, ac
cur_lr
=
optimizer
.
param_groups
[
0
][
'lr'
]
if
tb_log
is
not
None
:
tb_log
.
add_scalar
(
'learning_rate'
,
cur_lr
,
accumulated_iter
)
tb_log
.
add_scalar
(
'
meta_data/
learning_rate'
,
cur_lr
,
accumulated_iter
)
model
.
train
()
optimizer
.
zero_grad
()
...
...
@@ -51,10 +51,10 @@ def train_one_epoch(model, optimizer, train_loader, model_func, lr_scheduler, ac
tbar
.
refresh
()
if
tb_log
is
not
None
:
tb_log
.
add_scalar
(
'train
_
loss'
,
loss
,
accumulated_iter
)
tb_log
.
add_scalar
(
'learning_rate'
,
cur_lr
,
accumulated_iter
)
tb_log
.
add_scalar
(
'train
/
loss'
,
loss
,
accumulated_iter
)
tb_log
.
add_scalar
(
'
meta_data/
learning_rate'
,
cur_lr
,
accumulated_iter
)
for
key
,
val
in
tb_dict
.
items
():
tb_log
.
add_scalar
(
'train
_
'
+
key
,
val
,
accumulated_iter
)
tb_log
.
add_scalar
(
'train
/
'
+
key
,
val
,
accumulated_iter
)
if
rank
==
0
:
pbar
.
close
()
return
accumulated_iter
...
...
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