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
ResNet50_tensorflow
Commits
c839310b
Commit
c839310b
authored
Oct 28, 2017
by
Vivek Rathod
Browse files
feature extractor and model builder update.
parent
ff88581a
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
55 additions
and
10 deletions
+55
-10
research/object_detection/models/ssd_mobilenet_v1_feature_extractor_test.py
...tection/models/ssd_mobilenet_v1_feature_extractor_test.py
+55
-10
No files found.
research/object_detection/models/ssd_mobilenet_v1_feature_extractor_test.py
View file @
c839310b
...
...
@@ -20,75 +20,120 @@ import tensorflow as tf
from
object_detection.models
import
ssd_feature_extractor_test
from
object_detection.models
import
ssd_mobilenet_v1_feature_extractor
slim
=
tf
.
contrib
.
slim
class
SsdMobilenetV1FeatureExtractorTest
(
ssd_feature_extractor_test
.
SsdFeatureExtractorTestBase
,
tf
.
test
.
TestCase
):
def
_create_feature_extractor
(
self
,
depth_multiplier
):
def
_create_feature_extractor
(
self
,
depth_multiplier
,
pad_to_multiple
,
is_training
=
True
,
batch_norm_trainable
=
True
):
"""Constructs a new feature extractor.
Args:
depth_multiplier: float depth multiplier for feature extractor
pad_to_multiple: the nearest multiple to zero pad the input height and
width dimensions to.
is_training: whether the network is in training mode.
batch_norm_trainable: Whether to update batch norm parameters during
training or not.
Returns:
an ssd_meta_arch.SSDFeatureExtractor object.
"""
min_depth
=
32
conv_hyperparams
=
{}
with
slim
.
arg_scope
([
slim
.
conv2d
],
normalizer_fn
=
slim
.
batch_norm
)
as
sc
:
conv_hyperparams
=
sc
return
ssd_mobilenet_v1_feature_extractor
.
SSDMobileNetV1FeatureExtractor
(
depth_multiplier
,
min_depth
,
conv_hyperparams
)
is_training
,
depth_multiplier
,
min_depth
,
pad_to_multiple
,
conv_hyperparams
,
batch_norm_trainable
)
def
test_extract_features_returns_correct_shapes_128
(
self
):
image_height
=
128
image_width
=
128
depth_multiplier
=
1.0
pad_to_multiple
=
1
expected_feature_map_shape
=
[(
4
,
8
,
8
,
512
),
(
4
,
4
,
4
,
1024
),
(
4
,
2
,
2
,
512
),
(
4
,
1
,
1
,
256
),
(
4
,
1
,
1
,
256
),
(
4
,
1
,
1
,
128
)]
self
.
check_extract_features_returns_correct_shape
(
image_height
,
image_width
,
depth_multiplier
,
expected_feature_map_shape
)
image_height
,
image_width
,
depth_multiplier
,
pad_to_multiple
,
expected_feature_map_shape
)
def
test_extract_features_returns_correct_shapes_299
(
self
):
image_height
=
299
image_width
=
299
depth_multiplier
=
1.0
pad_to_multiple
=
1
expected_feature_map_shape
=
[(
4
,
19
,
19
,
512
),
(
4
,
10
,
10
,
1024
),
(
4
,
5
,
5
,
512
),
(
4
,
3
,
3
,
256
),
(
4
,
2
,
2
,
256
),
(
4
,
1
,
1
,
128
)]
self
.
check_extract_features_returns_correct_shape
(
image_height
,
image_width
,
depth_multiplier
,
expected_feature_map_shape
)
image_height
,
image_width
,
depth_multiplier
,
pad_to_multiple
,
expected_feature_map_shape
)
def
test_extract_features_returns_correct_shapes_enforcing_min_depth
(
self
):
image_height
=
299
image_width
=
299
depth_multiplier
=
0.5
**
12
pad_to_multiple
=
1
expected_feature_map_shape
=
[(
4
,
19
,
19
,
32
),
(
4
,
10
,
10
,
32
),
(
4
,
5
,
5
,
32
),
(
4
,
3
,
3
,
32
),
(
4
,
2
,
2
,
32
),
(
4
,
1
,
1
,
32
)]
self
.
check_extract_features_returns_correct_shape
(
image_height
,
image_width
,
depth_multiplier
,
expected_feature_map_shape
)
image_height
,
image_width
,
depth_multiplier
,
pad_to_multiple
,
expected_feature_map_shape
)
def
test_extract_features_returns_correct_shapes_with_pad_to_multiple
(
self
):
image_height
=
299
image_width
=
299
depth_multiplier
=
1.0
pad_to_multiple
=
32
expected_feature_map_shape
=
[(
4
,
20
,
20
,
512
),
(
4
,
10
,
10
,
1024
),
(
4
,
5
,
5
,
512
),
(
4
,
3
,
3
,
256
),
(
4
,
2
,
2
,
256
),
(
4
,
1
,
1
,
128
)]
self
.
check_extract_features_returns_correct_shape
(
image_height
,
image_width
,
depth_multiplier
,
pad_to_multiple
,
expected_feature_map_shape
)
def
test_extract_features_raises_error_with_invalid_image_size
(
self
):
image_height
=
32
image_width
=
32
depth_multiplier
=
1.0
pad_to_multiple
=
1
self
.
check_extract_features_raises_error_with_invalid_image_size
(
image_height
,
image_width
,
depth_multiplier
)
image_height
,
image_width
,
depth_multiplier
,
pad_to_multiple
)
def
test_preprocess_returns_correct_value_range
(
self
):
image_height
=
128
image_width
=
128
depth_multiplier
=
1
pad_to_multiple
=
1
test_image
=
np
.
random
.
rand
(
4
,
image_height
,
image_width
,
3
)
feature_extractor
=
self
.
_create_feature_extractor
(
depth_multiplier
)
feature_extractor
=
self
.
_create_feature_extractor
(
depth_multiplier
,
pad_to_multiple
)
preprocessed_image
=
feature_extractor
.
preprocess
(
test_image
)
self
.
assertTrue
(
np
.
all
(
np
.
less_equal
(
np
.
abs
(
preprocessed_image
),
1.0
)))
def
test_variables_only_created_in_scope
(
self
):
depth_multiplier
=
1
pad_to_multiple
=
1
scope_name
=
'MobilenetV1'
self
.
check_feature_extractor_variables_under_scope
(
depth_multiplier
,
scope_name
)
self
.
check_feature_extractor_variables_under_scope
(
depth_multiplier
,
pad_to_multiple
,
scope_name
)
def
test_nofused_batchnorm
(
self
):
image_height
=
40
image_width
=
40
depth_multiplier
=
1
pad_to_multiple
=
1
image_placeholder
=
tf
.
placeholder
(
tf
.
float32
,
[
1
,
image_height
,
image_width
,
3
])
feature_extractor
=
self
.
_create_feature_extractor
(
depth_multiplier
,
pad_to_multiple
)
preprocessed_image
=
feature_extractor
.
preprocess
(
image_placeholder
)
_
=
feature_extractor
.
extract_features
(
preprocessed_image
)
self
.
assertFalse
(
any
(
op
.
type
==
'FusedBatchNorm'
for
op
in
tf
.
get_default_graph
().
get_operations
()))
if
__name__
==
'__main__'
:
tf
.
test
.
main
()
Prev
1
2
Next
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