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
ModelZoo
SOLOv2-pytorch
Commits
f1d06cdc
"git@developer.sourcefind.cn:OpenDAS/ollama.git" did not exist on "34f142797aff17af2a1c22d68529269d231cc8d4"
Commit
f1d06cdc
authored
Feb 13, 2019
by
Kai Chen
Browse files
support gt_bboxes_ignore for anchor heads
parent
801c8b19
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
64 additions
and
18 deletions
+64
-18
mmdet/core/anchor/anchor_target.py
mmdet/core/anchor/anchor_target.py
+8
-3
mmdet/models/anchor_heads/anchor_head.py
mmdet/models/anchor_heads/anchor_head.py
+9
-2
mmdet/models/anchor_heads/rpn_head.py
mmdet/models/anchor_heads/rpn_head.py
+15
-3
mmdet/models/anchor_heads/ssd_head.py
mmdet/models/anchor_heads/ssd_head.py
+9
-2
mmdet/models/detectors/cascade_rcnn.py
mmdet/models/detectors/cascade_rcnn.py
+3
-2
mmdet/models/detectors/rpn.py
mmdet/models/detectors/rpn.py
+7
-2
mmdet/models/detectors/single_stage.py
mmdet/models/detectors/single_stage.py
+8
-2
mmdet/models/detectors/two_stage.py
mmdet/models/detectors/two_stage.py
+5
-2
No files found.
mmdet/core/anchor/anchor_target.py
View file @
f1d06cdc
...
@@ -11,6 +11,7 @@ def anchor_target(anchor_list,
...
@@ -11,6 +11,7 @@ def anchor_target(anchor_list,
target_means
,
target_means
,
target_stds
,
target_stds
,
cfg
,
cfg
,
gt_bboxes_ignore_list
=
None
,
gt_labels_list
=
None
,
gt_labels_list
=
None
,
label_channels
=
1
,
label_channels
=
1
,
sampling
=
True
,
sampling
=
True
,
...
@@ -41,6 +42,8 @@ def anchor_target(anchor_list,
...
@@ -41,6 +42,8 @@ def anchor_target(anchor_list,
valid_flag_list
[
i
]
=
torch
.
cat
(
valid_flag_list
[
i
])
valid_flag_list
[
i
]
=
torch
.
cat
(
valid_flag_list
[
i
])
# compute targets for each image
# compute targets for each image
if
gt_bboxes_ignore_list
is
None
:
gt_bboxes_ignore_list
=
[
None
for
_
in
range
(
num_imgs
)]
if
gt_labels_list
is
None
:
if
gt_labels_list
is
None
:
gt_labels_list
=
[
None
for
_
in
range
(
num_imgs
)]
gt_labels_list
=
[
None
for
_
in
range
(
num_imgs
)]
(
all_labels
,
all_label_weights
,
all_bbox_targets
,
all_bbox_weights
,
(
all_labels
,
all_label_weights
,
all_bbox_targets
,
all_bbox_weights
,
...
@@ -49,6 +52,7 @@ def anchor_target(anchor_list,
...
@@ -49,6 +52,7 @@ def anchor_target(anchor_list,
anchor_list
,
anchor_list
,
valid_flag_list
,
valid_flag_list
,
gt_bboxes_list
,
gt_bboxes_list
,
gt_bboxes_ignore_list
,
gt_labels_list
,
gt_labels_list
,
img_metas
,
img_metas
,
target_means
=
target_means
,
target_means
=
target_means
,
...
@@ -90,6 +94,7 @@ def images_to_levels(target, num_level_anchors):
...
@@ -90,6 +94,7 @@ def images_to_levels(target, num_level_anchors):
def
anchor_target_single
(
flat_anchors
,
def
anchor_target_single
(
flat_anchors
,
valid_flags
,
valid_flags
,
gt_bboxes
,
gt_bboxes
,
gt_bboxes_ignore
,
gt_labels
,
gt_labels
,
img_meta
,
img_meta
,
target_means
,
target_means
,
...
@@ -108,11 +113,11 @@ def anchor_target_single(flat_anchors,
...
@@ -108,11 +113,11 @@ def anchor_target_single(flat_anchors,
if
sampling
:
if
sampling
:
assign_result
,
sampling_result
=
assign_and_sample
(
assign_result
,
sampling_result
=
assign_and_sample
(
anchors
,
gt_bboxes
,
Non
e
,
None
,
cfg
)
anchors
,
gt_bboxes
,
gt_bboxes_ignor
e
,
None
,
cfg
)
else
:
else
:
bbox_assigner
=
build_assigner
(
cfg
.
assigner
)
bbox_assigner
=
build_assigner
(
cfg
.
assigner
)
assign_result
=
bbox_assigner
.
assign
(
anchors
,
gt_bboxes
,
None
,
assign_result
=
bbox_assigner
.
assign
(
anchors
,
gt_bboxes
,
gt_labels
)
gt_bboxes_ignore
,
gt_labels
)
bbox_sampler
=
PseudoSampler
()
bbox_sampler
=
PseudoSampler
()
sampling_result
=
bbox_sampler
.
sample
(
assign_result
,
anchors
,
sampling_result
=
bbox_sampler
.
sample
(
assign_result
,
anchors
,
gt_bboxes
)
gt_bboxes
)
...
...
mmdet/models/anchor_heads/anchor_head.py
View file @
f1d06cdc
...
@@ -169,8 +169,14 @@ class AnchorHead(nn.Module):
...
@@ -169,8 +169,14 @@ class AnchorHead(nn.Module):
avg_factor
=
num_total_samples
)
avg_factor
=
num_total_samples
)
return
loss_cls
,
loss_reg
return
loss_cls
,
loss_reg
def
loss
(
self
,
cls_scores
,
bbox_preds
,
gt_bboxes
,
gt_labels
,
img_metas
,
def
loss
(
self
,
cfg
):
cls_scores
,
bbox_preds
,
gt_bboxes
,
gt_labels
,
img_metas
,
cfg
,
gt_bboxes_ignore
=
None
):
featmap_sizes
=
[
featmap
.
size
()[
-
2
:]
for
featmap
in
cls_scores
]
featmap_sizes
=
[
featmap
.
size
()[
-
2
:]
for
featmap
in
cls_scores
]
assert
len
(
featmap_sizes
)
==
len
(
self
.
anchor_generators
)
assert
len
(
featmap_sizes
)
==
len
(
self
.
anchor_generators
)
...
@@ -186,6 +192,7 @@ class AnchorHead(nn.Module):
...
@@ -186,6 +192,7 @@ class AnchorHead(nn.Module):
self
.
target_means
,
self
.
target_means
,
self
.
target_stds
,
self
.
target_stds
,
cfg
,
cfg
,
gt_bboxes_ignore_list
=
gt_bboxes_ignore
,
gt_labels_list
=
gt_labels
,
gt_labels_list
=
gt_labels
,
label_channels
=
label_channels
,
label_channels
=
label_channels
,
sampling
=
sampling
)
sampling
=
sampling
)
...
...
mmdet/models/anchor_heads/rpn_head.py
View file @
f1d06cdc
...
@@ -34,9 +34,21 @@ class RPNHead(AnchorHead):
...
@@ -34,9 +34,21 @@ class RPNHead(AnchorHead):
rpn_bbox_pred
=
self
.
rpn_reg
(
x
)
rpn_bbox_pred
=
self
.
rpn_reg
(
x
)
return
rpn_cls_score
,
rpn_bbox_pred
return
rpn_cls_score
,
rpn_bbox_pred
def
loss
(
self
,
cls_scores
,
bbox_preds
,
gt_bboxes
,
img_metas
,
cfg
):
def
loss
(
self
,
losses
=
super
(
RPNHead
,
self
).
loss
(
cls_scores
,
bbox_preds
,
gt_bboxes
,
cls_scores
,
None
,
img_metas
,
cfg
)
bbox_preds
,
gt_bboxes
,
img_metas
,
cfg
,
gt_bboxes_ignore
=
None
):
losses
=
super
(
RPNHead
,
self
).
loss
(
cls_scores
,
bbox_preds
,
gt_bboxes
,
None
,
img_metas
,
cfg
,
gt_bboxes_ignore
=
gt_bboxes_ignore
)
return
dict
(
return
dict
(
loss_rpn_cls
=
losses
[
'loss_cls'
],
loss_rpn_reg
=
losses
[
'loss_reg'
])
loss_rpn_cls
=
losses
[
'loss_cls'
],
loss_rpn_reg
=
losses
[
'loss_reg'
])
...
...
mmdet/models/anchor_heads/ssd_head.py
View file @
f1d06cdc
...
@@ -130,8 +130,14 @@ class SSDHead(AnchorHead):
...
@@ -130,8 +130,14 @@ class SSDHead(AnchorHead):
avg_factor
=
num_total_samples
)
avg_factor
=
num_total_samples
)
return
loss_cls
[
None
],
loss_reg
return
loss_cls
[
None
],
loss_reg
def
loss
(
self
,
cls_scores
,
bbox_preds
,
gt_bboxes
,
gt_labels
,
img_metas
,
def
loss
(
self
,
cfg
):
cls_scores
,
bbox_preds
,
gt_bboxes
,
gt_labels
,
img_metas
,
cfg
,
gt_bboxes_ignore
=
None
):
featmap_sizes
=
[
featmap
.
size
()[
-
2
:]
for
featmap
in
cls_scores
]
featmap_sizes
=
[
featmap
.
size
()[
-
2
:]
for
featmap
in
cls_scores
]
assert
len
(
featmap_sizes
)
==
len
(
self
.
anchor_generators
)
assert
len
(
featmap_sizes
)
==
len
(
self
.
anchor_generators
)
...
@@ -145,6 +151,7 @@ class SSDHead(AnchorHead):
...
@@ -145,6 +151,7 @@ class SSDHead(AnchorHead):
self
.
target_means
,
self
.
target_means
,
self
.
target_stds
,
self
.
target_stds
,
cfg
,
cfg
,
gt_bboxes_ignore_list
=
gt_bboxes_ignore
,
gt_labels_list
=
gt_labels
,
gt_labels_list
=
gt_labels
,
label_channels
=
1
,
label_channels
=
1
,
sampling
=
False
,
sampling
=
False
,
...
...
mmdet/models/detectors/cascade_rcnn.py
View file @
f1d06cdc
...
@@ -109,8 +109,8 @@ class CascadeRCNN(BaseDetector, RPNTestMixin):
...
@@ -109,8 +109,8 @@ class CascadeRCNN(BaseDetector, RPNTestMixin):
img
,
img
,
img_meta
,
img_meta
,
gt_bboxes
,
gt_bboxes
,
gt_bboxes_ignore
,
gt_labels
,
gt_labels
,
gt_bboxes_ignore
=
None
,
gt_masks
=
None
,
gt_masks
=
None
,
proposals
=
None
):
proposals
=
None
):
x
=
self
.
extract_feat
(
img
)
x
=
self
.
extract_feat
(
img
)
...
@@ -121,7 +121,8 @@ class CascadeRCNN(BaseDetector, RPNTestMixin):
...
@@ -121,7 +121,8 @@ class CascadeRCNN(BaseDetector, RPNTestMixin):
rpn_outs
=
self
.
rpn_head
(
x
)
rpn_outs
=
self
.
rpn_head
(
x
)
rpn_loss_inputs
=
rpn_outs
+
(
gt_bboxes
,
img_meta
,
rpn_loss_inputs
=
rpn_outs
+
(
gt_bboxes
,
img_meta
,
self
.
train_cfg
.
rpn
)
self
.
train_cfg
.
rpn
)
rpn_losses
=
self
.
rpn_head
.
loss
(
*
rpn_loss_inputs
)
rpn_losses
=
self
.
rpn_head
.
loss
(
*
rpn_loss_inputs
,
gt_bboxes_ignore
=
gt_bboxes_ignore
)
losses
.
update
(
rpn_losses
)
losses
.
update
(
rpn_losses
)
proposal_inputs
=
rpn_outs
+
(
img_meta
,
self
.
test_cfg
.
rpn
)
proposal_inputs
=
rpn_outs
+
(
img_meta
,
self
.
test_cfg
.
rpn
)
...
...
mmdet/models/detectors/rpn.py
View file @
f1d06cdc
...
@@ -38,7 +38,11 @@ class RPN(BaseDetector, RPNTestMixin):
...
@@ -38,7 +38,11 @@ class RPN(BaseDetector, RPNTestMixin):
x
=
self
.
neck
(
x
)
x
=
self
.
neck
(
x
)
return
x
return
x
def
forward_train
(
self
,
img
,
img_meta
,
gt_bboxes
=
None
):
def
forward_train
(
self
,
img
,
img_meta
,
gt_bboxes
=
None
,
gt_bboxes_ignore
=
None
):
if
self
.
train_cfg
.
rpn
.
get
(
'debug'
,
False
):
if
self
.
train_cfg
.
rpn
.
get
(
'debug'
,
False
):
self
.
rpn_head
.
debug_imgs
=
tensor2imgs
(
img
)
self
.
rpn_head
.
debug_imgs
=
tensor2imgs
(
img
)
...
@@ -46,7 +50,8 @@ class RPN(BaseDetector, RPNTestMixin):
...
@@ -46,7 +50,8 @@ class RPN(BaseDetector, RPNTestMixin):
rpn_outs
=
self
.
rpn_head
(
x
)
rpn_outs
=
self
.
rpn_head
(
x
)
rpn_loss_inputs
=
rpn_outs
+
(
gt_bboxes
,
img_meta
,
self
.
train_cfg
.
rpn
)
rpn_loss_inputs
=
rpn_outs
+
(
gt_bboxes
,
img_meta
,
self
.
train_cfg
.
rpn
)
losses
=
self
.
rpn_head
.
loss
(
*
rpn_loss_inputs
)
losses
=
self
.
rpn_head
.
loss
(
*
rpn_loss_inputs
,
gt_bboxes_ignore
=
gt_bboxes_ignore
)
return
losses
return
losses
def
simple_test
(
self
,
img
,
img_meta
,
rescale
=
False
):
def
simple_test
(
self
,
img
,
img_meta
,
rescale
=
False
):
...
...
mmdet/models/detectors/single_stage.py
View file @
f1d06cdc
...
@@ -42,11 +42,17 @@ class SingleStageDetector(BaseDetector):
...
@@ -42,11 +42,17 @@ class SingleStageDetector(BaseDetector):
x
=
self
.
neck
(
x
)
x
=
self
.
neck
(
x
)
return
x
return
x
def
forward_train
(
self
,
img
,
img_metas
,
gt_bboxes
,
gt_labels
):
def
forward_train
(
self
,
img
,
img_metas
,
gt_bboxes
,
gt_labels
,
gt_bboxes_ignore
=
None
):
x
=
self
.
extract_feat
(
img
)
x
=
self
.
extract_feat
(
img
)
outs
=
self
.
bbox_head
(
x
)
outs
=
self
.
bbox_head
(
x
)
loss_inputs
=
outs
+
(
gt_bboxes
,
gt_labels
,
img_metas
,
self
.
train_cfg
)
loss_inputs
=
outs
+
(
gt_bboxes
,
gt_labels
,
img_metas
,
self
.
train_cfg
)
losses
=
self
.
bbox_head
.
loss
(
*
loss_inputs
)
losses
=
self
.
bbox_head
.
loss
(
*
loss_inputs
,
gt_bboxes_ignore
=
gt_bboxes_ignore
)
return
losses
return
losses
def
simple_test
(
self
,
img
,
img_meta
,
rescale
=
False
):
def
simple_test
(
self
,
img
,
img_meta
,
rescale
=
False
):
...
...
mmdet/models/detectors/two_stage.py
View file @
f1d06cdc
...
@@ -81,8 +81,8 @@ class TwoStageDetector(BaseDetector, RPNTestMixin, BBoxTestMixin,
...
@@ -81,8 +81,8 @@ class TwoStageDetector(BaseDetector, RPNTestMixin, BBoxTestMixin,
img
,
img
,
img_meta
,
img_meta
,
gt_bboxes
,
gt_bboxes
,
gt_bboxes_ignore
,
gt_labels
,
gt_labels
,
gt_bboxes_ignore
=
None
,
gt_masks
=
None
,
gt_masks
=
None
,
proposals
=
None
):
proposals
=
None
):
x
=
self
.
extract_feat
(
img
)
x
=
self
.
extract_feat
(
img
)
...
@@ -94,7 +94,8 @@ class TwoStageDetector(BaseDetector, RPNTestMixin, BBoxTestMixin,
...
@@ -94,7 +94,8 @@ class TwoStageDetector(BaseDetector, RPNTestMixin, BBoxTestMixin,
rpn_outs
=
self
.
rpn_head
(
x
)
rpn_outs
=
self
.
rpn_head
(
x
)
rpn_loss_inputs
=
rpn_outs
+
(
gt_bboxes
,
img_meta
,
rpn_loss_inputs
=
rpn_outs
+
(
gt_bboxes
,
img_meta
,
self
.
train_cfg
.
rpn
)
self
.
train_cfg
.
rpn
)
rpn_losses
=
self
.
rpn_head
.
loss
(
*
rpn_loss_inputs
)
rpn_losses
=
self
.
rpn_head
.
loss
(
*
rpn_loss_inputs
,
gt_bboxes_ignore
=
gt_bboxes_ignore
)
losses
.
update
(
rpn_losses
)
losses
.
update
(
rpn_losses
)
proposal_inputs
=
rpn_outs
+
(
img_meta
,
self
.
test_cfg
.
rpn
)
proposal_inputs
=
rpn_outs
+
(
img_meta
,
self
.
test_cfg
.
rpn
)
...
@@ -108,6 +109,8 @@ class TwoStageDetector(BaseDetector, RPNTestMixin, BBoxTestMixin,
...
@@ -108,6 +109,8 @@ class TwoStageDetector(BaseDetector, RPNTestMixin, BBoxTestMixin,
bbox_sampler
=
build_sampler
(
bbox_sampler
=
build_sampler
(
self
.
train_cfg
.
rcnn
.
sampler
,
context
=
self
)
self
.
train_cfg
.
rcnn
.
sampler
,
context
=
self
)
num_imgs
=
img
.
size
(
0
)
num_imgs
=
img
.
size
(
0
)
if
gt_bboxes_ignore
is
None
:
gt_bboxes_ignore
=
[
None
for
_
in
range
(
num_imgs
)]
sampling_results
=
[]
sampling_results
=
[]
for
i
in
range
(
num_imgs
):
for
i
in
range
(
num_imgs
):
assign_result
=
bbox_assigner
.
assign
(
assign_result
=
bbox_assigner
.
assign
(
...
...
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