Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
seminar-breakout
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Shashank Suhas
seminar-breakout
Commits
49ab85e8
Commit
49ab85e8
authored
Jul 04, 2018
by
Yuxin Wu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[MaskRCNN] improve name scope
parent
2334ca17
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
36 additions
and
26 deletions
+36
-26
examples/FasterRCNN/README.md
examples/FasterRCNN/README.md
+9
-9
examples/FasterRCNN/config.py
examples/FasterRCNN/config.py
+1
-1
examples/FasterRCNN/model_fpn.py
examples/FasterRCNN/model_fpn.py
+6
-6
examples/FasterRCNN/model_rpn.py
examples/FasterRCNN/model_rpn.py
+1
-0
examples/FasterRCNN/train.py
examples/FasterRCNN/train.py
+2
-3
tensorpack/tfutils/scope_utils.py
tensorpack/tfutils/scope_utils.py
+17
-7
No files found.
examples/FasterRCNN/README.md
View file @
49ab85e8
...
@@ -62,15 +62,15 @@ Evaluation or prediction will need the same config used during training.
...
@@ -62,15 +62,15 @@ Evaluation or prediction will need the same config used during training.
These models are trained with different configurations on trainval35k and evaluated on minival using mAP@IoU=0.50:0.95.
These models are trained with different configurations on trainval35k and evaluated on minival using mAP@IoU=0.50:0.95.
MaskRCNN results contain both bbox and segm mAP.
MaskRCNN results contain both bbox and segm mAP.
| Backbone | mAP
<br/>
(box/mask) | Detectron mAP
<br/>
(box/mask) | Time | Configurations
<br/>
(click to expand) |
| Backbone | mAP
<br/>
(box/mask) | Detectron mAP
<br/>
(box/mask) | Time | Configurations
<br/>
(click to expand)
|
| - | - | - | - | - |
| - | - | - | - | -
|
| R50-C4 | 33.1 | | 18h on 8 V100s |
<details><summary>
super quick
</summary>
`MODE_MASK=False FRCNN.BATCH_PER_IM=64
PREPROC.SHORT_EDGE_SIZE=600 PREPROC.MAX_SIZE=1024
TRAIN.LR_SCHEDULE=[150000,230000,280000]`
</details>
|
| R50-C4 | 33.1 | | 18h on 8 V100s |
<details><summary>
super quick
</summary>
`MODE_MASK=False FRCNN.BATCH_PER_IM=64
`
<br/>
`PREPROC.SHORT_EDGE_SIZE=600 PREPROC.MAX_SIZE=1024`
<br/>
`
TRAIN.LR_SCHEDULE=[150000,230000,280000]`
</details>
|
| R50-C4 | 36.6 | 36.5 | 49h on 8 V100s |
<details><summary>
standard
</summary>
`MODE_MASK=False`
</details>
|
| R50-C4 | 36.6 | 36.5 | 49h on 8 V100s |
<details><summary>
standard
</summary>
`MODE_MASK=False`
</details>
|
| R50-FPN | 37.5 | 37.9
<sup>
[
1
](
#ft1
)
</sup>
| 28h on 8 V100s |
<details><summary>
standard
</summary>
`MODE_MASK=False MODE_FPN=True`
</details>
|
| R50-FPN | 37.5 | 37.9
<sup>
[
1
](
#ft1
)
</sup>
| 28h on 8 V100s |
<details><summary>
standard
</summary>
`MODE_MASK=False MODE_FPN=True`
</details>
|
| R50-C4 | 36.8/32.1 | | 39h on 8 P100s |
<details><summary>
quick
</summary>
`MODE_MASK=True FRCNN.BATCH_PER_IM=256
TRAIN.LR_SCHEDULE=[150000,230000,280000]`
</details>
|
| R50-C4 | 36.8/32.1 | | 39h on 8 P100s |
<details><summary>
quick
</summary>
`MODE_MASK=True FRCNN.BATCH_PER_IM=256
`
<br/>
`TRAIN.LR_SCHEDULE=[150000,230000,280000]`
</details>
|
| R50-C4 | 37.8/33.1 | 37.8/32.8 | 51h on 8 V100s |
<details><summary>
standard
</summary>
`MODE_MASK=True`
</details>
|
| R50-C4 | 37.8/33.1 | 37.8/32.8 | 51h on 8 V100s |
<details><summary>
standard
</summary>
`MODE_MASK=True`
</details>
|
| R50-FPN | 38.1/34.9 | 38.6/34.5
<sup>
[
1
](
#ft1
)
</sup>
| 38h on 8 V100s |
<details><summary>
standard
</summary>
`MODE_MASK=True MODE_FPN=True`
</details>
|
| R50-FPN | 38.1/34.9 | 38.6/34.5
<sup>
[
1
](
#ft1
)
</sup>
| 38h on 8 V100s |
<details><summary>
standard
</summary>
`MODE_MASK=True MODE_FPN=True`
</details>
|
| R101-C4 | 40.8/35.1 | | 63h on 8 V100s |
<details><summary>
standard
</summary>
`MODE_MASK=True
BACKBONE.RESNET_NUM_BLOCK=[3,4,23,3]`
</details>
|
| R101-C4 | 40.8/35.1 | | 63h on 8 V100s |
<details><summary>
standard
</summary>
`MODE_MASK=True
`
<br/>
`BACKBONE.RESNET_NUM_BLOCK=[3,4,23,3]`
</details>
|
<a
id=
"ft1"
>
1
</a>
: Slightly different configurations.
<a
id=
"ft1"
>
1
</a>
: Slightly different configurations.
...
...
examples/FasterRCNN/config.py
View file @
49ab85e8
...
@@ -60,7 +60,7 @@ _C.DATA.NUM_CATEGORY = 80 # 80 categories
...
@@ -60,7 +60,7 @@ _C.DATA.NUM_CATEGORY = 80 # 80 categories
_C
.
DATA
.
CLASS_NAMES
=
[]
# NUM_CLASS strings. Needs to be populated later by data loader
_C
.
DATA
.
CLASS_NAMES
=
[]
# NUM_CLASS strings. Needs to be populated later by data loader
# basemodel ----------------------
# basemodel ----------------------
_C
.
BACKBONE
.
WEIGHTS
=
'
/path/to/ImageNet-ResNet50.npz'
_C
.
BACKBONE
.
WEIGHTS
=
'
'
# /path/to/weights.npz
_C
.
BACKBONE
.
RESNET_NUM_BLOCK
=
[
3
,
4
,
6
,
3
]
# for resnet50
_C
.
BACKBONE
.
RESNET_NUM_BLOCK
=
[
3
,
4
,
6
,
3
]
# for resnet50
# RESNET_NUM_BLOCK = [3, 4, 23, 3] # for resnet101
# RESNET_NUM_BLOCK = [3, 4, 23, 3] # for resnet101
_C
.
BACKBONE
.
FREEZE_AFFINE
=
False
# do not train affine parameters inside BN
_C
.
BACKBONE
.
FREEZE_AFFINE
=
False
# do not train affine parameters inside BN
...
...
examples/FasterRCNN/model_fpn.py
View file @
49ab85e8
...
@@ -141,12 +141,12 @@ def multilevel_rpn_losses(
...
@@ -141,12 +141,12 @@ def multilevel_rpn_losses(
losses
=
[]
losses
=
[]
with
tf
.
name_scope
(
'rpn_losses'
):
with
tf
.
name_scope
(
'rpn_losses'
):
for
lvl
in
range
(
num_lvl
):
for
lvl
in
range
(
num_lvl
):
with
tf
.
name_scope
(
'Level{}'
.
format
(
lvl
+
2
)):
anchors
=
multilevel_anchors
[
lvl
]
anchors
=
multilevel_anchors
[
lvl
]
label_loss
,
box_loss
=
rpn_losses
(
label_loss
,
box_loss
=
rpn_losses
(
anchors
.
gt_labels
,
anchors
.
encoded_gt_boxes
(),
anchors
.
gt_labels
,
anchors
.
encoded_gt_boxes
()
,
multilevel_label_logits
[
lvl
],
multilevel_box_logits
[
lvl
]
,
multilevel_label_logits
[
lvl
],
multilevel_box_logits
[
lvl
]
)
name_scope
=
'Level{}'
.
format
(
lvl
+
2
)
)
losses
.
extend
([
label_loss
,
box_loss
])
losses
.
extend
([
label_loss
,
box_loss
])
total_label_loss
=
tf
.
add_n
(
losses
[::
2
],
name
=
'label_loss'
)
total_label_loss
=
tf
.
add_n
(
losses
[::
2
],
name
=
'label_loss'
)
total_box_loss
=
tf
.
add_n
(
losses
[
1
::
2
],
name
=
'box_loss'
)
total_box_loss
=
tf
.
add_n
(
losses
[
1
::
2
],
name
=
'box_loss'
)
...
...
examples/FasterRCNN/model_rpn.py
View file @
49ab85e8
...
@@ -37,6 +37,7 @@ def rpn_head(featuremap, channel, num_anchors):
...
@@ -37,6 +37,7 @@ def rpn_head(featuremap, channel, num_anchors):
return
label_logits
,
box_logits
return
label_logits
,
box_logits
@
under_name_scope
()
def
rpn_losses
(
anchor_labels
,
anchor_boxes
,
label_logits
,
box_logits
):
def
rpn_losses
(
anchor_labels
,
anchor_boxes
,
label_logits
,
box_logits
):
"""
"""
Args:
Args:
...
...
examples/FasterRCNN/train.py
View file @
49ab85e8
...
@@ -200,9 +200,8 @@ class ResNetC4Model(DetectionModel):
...
@@ -200,9 +200,8 @@ class ResNetC4Model(DetectionModel):
if
is_training
:
if
is_training
:
# rpn loss
# rpn loss
with
tf
.
name_scope
(
'rpn_losses'
):
rpn_label_loss
,
rpn_box_loss
=
rpn_losses
(
rpn_label_loss
,
rpn_box_loss
=
rpn_losses
(
anchors
.
gt_labels
,
anchors
.
encoded_gt_boxes
(),
rpn_label_logits
,
rpn_box_logits
)
anchors
.
gt_labels
,
anchors
.
encoded_gt_boxes
(),
rpn_label_logits
,
rpn_box_logits
)
# fastrcnn loss
# fastrcnn loss
matched_gt_boxes
=
tf
.
gather
(
gt_boxes
,
fg_inds_wrt_gt
)
matched_gt_boxes
=
tf
.
gather
(
gt_boxes
,
fg_inds_wrt_gt
)
...
...
tensorpack/tfutils/scope_utils.py
View file @
49ab85e8
...
@@ -54,11 +54,17 @@ def auto_reuse_variable_scope(func):
...
@@ -54,11 +54,17 @@ def auto_reuse_variable_scope(func):
return
wrapper
return
wrapper
def
under_name_scope
(
name
=
None
):
def
under_name_scope
(
name
_scope
=
None
):
"""
"""
Args:
name_scope(str): the default scope to use. If None, will use the name of the function.
Returns:
Returns:
A decorator which makes the function happen under a name scope.
A decorator which makes the function run under a name scope.
The default name is the function itself.
The name scope is obtained by the following:
1. The 'name_scope' keyword argument when the decorated function is called.
2. The 'name_scope' argument of the decorator.
3. (default) The name of the decorated function itself.
Example:
Example:
...
@@ -66,9 +72,13 @@ def under_name_scope(name=None):
...
@@ -66,9 +72,13 @@ def under_name_scope(name=None):
@under_name_scope()
@under_name_scope()
def rms(x):
def rms(x):
return tf.sqrt(
# will be under name scope 'rms'
return tf.sqrt(
tf.reduce_mean(tf.square(x)))
tf.reduce_mean(tf.square(x)))
rms(tensor) # will be called under name scope 'rms'
rms(tensor, name_scope='scope') # will be called under name scope 'scope'
Todo:
Todo:
Add a reuse option.
Add a reuse option.
"""
"""
...
@@ -76,10 +86,10 @@ def under_name_scope(name=None):
...
@@ -76,10 +86,10 @@ def under_name_scope(name=None):
def
_impl
(
func
):
def
_impl
(
func
):
@
functools
.
wraps
(
func
)
@
functools
.
wraps
(
func
)
def
wrapper
(
*
args
,
**
kwargs
):
def
wrapper
(
*
args
,
**
kwargs
):
if
name
is
None
:
scopename
=
kwargs
.
pop
(
'name_scope'
,
name_scope
)
if
scopename
is
None
:
scopename
=
func
.
__name__
scopename
=
func
.
__name__
else
:
scopename
=
name
with
tf
.
name_scope
(
scopename
):
with
tf
.
name_scope
(
scopename
):
return
func
(
*
args
,
**
kwargs
)
return
func
(
*
args
,
**
kwargs
)
return
wrapper
return
wrapper
...
...
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