Skip to content

Commit b7728ba

Browse files
ziyeqinghanMarkDaoust
authored andcommitted
Automated rollback of commit 081fbc0
PiperOrigin-RevId: 352455619
1 parent a8c612a commit b7728ba

File tree

2 files changed

+73
-70
lines changed

2 files changed

+73
-70
lines changed

tensorflow_examples/lite/model_maker/third_party/efficientdet/keras/efficientdet_keras.py

+40-59
Original file line numberDiff line numberDiff line change
@@ -401,8 +401,18 @@ def __init__(self,
401401
self.bns = []
402402
self.grad_checkpoint = grad_checkpoint
403403
self.feature_only = feature_only
404-
405-
conv2d_layer = self.conv2d_layer(separable_conv, data_format)
404+
if separable_conv:
405+
conv2d_layer = functools.partial(
406+
tf.keras.layers.SeparableConv2D,
407+
depth_multiplier=1,
408+
data_format=data_format,
409+
pointwise_initializer=tf.initializers.variance_scaling(),
410+
depthwise_initializer=tf.initializers.variance_scaling())
411+
else:
412+
conv2d_layer = functools.partial(
413+
tf.keras.layers.Conv2D,
414+
data_format=data_format,
415+
kernel_initializer=tf.random_normal_initializer(stddev=0.01))
406416
for i in range(self.repeats):
407417
# If using SeparableConv2D
408418
self.conv_ops.append(
@@ -425,8 +435,12 @@ def __init__(self,
425435
))
426436
self.bns.append(bn_per_level)
427437

428-
self.classes = self.classes_layer(
429-
conv2d_layer, num_classes, num_anchors, name='class-predict')
438+
self.classes = conv2d_layer(
439+
num_classes * num_anchors,
440+
kernel_size=3,
441+
bias_initializer=tf.constant_initializer(-np.log((1 - 0.01) / 0.01)),
442+
padding='same',
443+
name='class-predict')
430444

431445
@tf.autograph.experimental.do_not_convert
432446
def _conv_bn_act(self, image, i, level_id, training):
@@ -462,33 +476,6 @@ def call(self, inputs, training, **kwargs):
462476

463477
return class_outputs
464478

465-
@classmethod
466-
def conv2d_layer(cls, separable_conv, data_format):
467-
"""Gets the conv2d layer in ClassNet class."""
468-
if separable_conv:
469-
conv2d_layer = functools.partial(
470-
tf.keras.layers.SeparableConv2D,
471-
depth_multiplier=1,
472-
data_format=data_format,
473-
pointwise_initializer=tf.initializers.variance_scaling(),
474-
depthwise_initializer=tf.initializers.variance_scaling())
475-
else:
476-
conv2d_layer = functools.partial(
477-
tf.keras.layers.Conv2D,
478-
data_format=data_format,
479-
kernel_initializer=tf.random_normal_initializer(stddev=0.01))
480-
return conv2d_layer
481-
482-
@classmethod
483-
def classes_layer(cls, conv2d_layer, num_classes, num_anchors, name):
484-
"""Gets the classes layer in ClassNet class."""
485-
return conv2d_layer(
486-
num_classes * num_anchors,
487-
kernel_size=3,
488-
bias_initializer=tf.constant_initializer(-np.log((1 - 0.01) / 0.01)),
489-
padding='same',
490-
name=name)
491-
492479

493480
class BoxNet(tf.keras.layers.Layer):
494481
"""Box regression network."""
@@ -587,8 +574,28 @@ def __init__(self,
587574
name='box-%d-bn-%d' % (i, level)))
588575
self.bns.append(bn_per_level)
589576

590-
self.boxes = self.boxes_layer(
591-
separable_conv, num_anchors, data_format, name='box-predict')
577+
if self.separable_conv:
578+
self.boxes = tf.keras.layers.SeparableConv2D(
579+
filters=4 * self.num_anchors,
580+
depth_multiplier=1,
581+
pointwise_initializer=tf.initializers.variance_scaling(),
582+
depthwise_initializer=tf.initializers.variance_scaling(),
583+
data_format=self.data_format,
584+
kernel_size=3,
585+
activation=None,
586+
bias_initializer=tf.zeros_initializer(),
587+
padding='same',
588+
name='box-predict')
589+
else:
590+
self.boxes = tf.keras.layers.Conv2D(
591+
filters=4 * self.num_anchors,
592+
kernel_initializer=tf.random_normal_initializer(stddev=0.01),
593+
data_format=self.data_format,
594+
kernel_size=3,
595+
activation=None,
596+
bias_initializer=tf.zeros_initializer(),
597+
padding='same',
598+
name='box-predict')
592599

593600
@tf.autograph.experimental.do_not_convert
594601
def _conv_bn_act(self, image, i, level_id, training):
@@ -625,32 +632,6 @@ def call(self, inputs, training):
625632

626633
return box_outputs
627634

628-
@classmethod
629-
def boxes_layer(cls, separable_conv, num_anchors, data_format, name):
630-
"""Gets the conv2d layer in BoxNet class."""
631-
if separable_conv:
632-
return tf.keras.layers.SeparableConv2D(
633-
filters=4 * num_anchors,
634-
depth_multiplier=1,
635-
pointwise_initializer=tf.initializers.variance_scaling(),
636-
depthwise_initializer=tf.initializers.variance_scaling(),
637-
data_format=data_format,
638-
kernel_size=3,
639-
activation=None,
640-
bias_initializer=tf.zeros_initializer(),
641-
padding='same',
642-
name=name)
643-
else:
644-
return tf.keras.layers.Conv2D(
645-
filters=4 * num_anchors,
646-
kernel_initializer=tf.random_normal_initializer(stddev=0.01),
647-
data_format=data_format,
648-
kernel_size=3,
649-
activation=None,
650-
bias_initializer=tf.zeros_initializer(),
651-
padding='same',
652-
name=name)
653-
654635

655636
class SegmentationHead(tf.keras.layers.Layer):
656637
"""Keras layer for semantic segmentation head."""

tensorflow_examples/lite/model_maker/third_party/efficientdet/keras/train_lib.py

+33-11
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
# limitations under the License.
1414
# ==============================================================================
1515
"""Training related libraries."""
16+
import functools
1617
import math
1718
import os
1819
import re
@@ -862,19 +863,40 @@ def __init__(self, config, hub_module_url, name=''):
862863
# class/box output prediction network.
863864
num_anchors = len(config.aspect_ratios) * config.num_scales
864865

865-
conv2d_layer = efficientdet_keras.ClassNet.conv2d_layer(
866-
config.separable_conv, config.data_format)
867-
self.classes = efficientdet_keras.ClassNet.classes_layer(
868-
conv2d_layer,
869-
config.num_classes,
870-
num_anchors,
866+
if config.separable_conv:
867+
conv2d_layer = functools.partial(
868+
tf.keras.layers.SeparableConv2D, depth_multiplier=1)
869+
else:
870+
conv2d_layer = tf.keras.layers.Conv2D
871+
self.classes = conv2d_layer(
872+
config.num_classes * num_anchors,
873+
kernel_size=3,
874+
bias_initializer=tf.constant_initializer(-np.log((1 - 0.01) / 0.01)),
875+
padding='same',
871876
name='class_net/class-predict')
872877

873-
self.boxes = efficientdet_keras.BoxNet.boxes_layer(
874-
config.separable_conv,
875-
num_anchors,
876-
config.data_format,
877-
name='box_net/box-predict')
878+
if config.separable_conv:
879+
self.boxes = tf.keras.layers.SeparableConv2D(
880+
filters=4 * num_anchors,
881+
depth_multiplier=1,
882+
pointwise_initializer=tf.initializers.variance_scaling(),
883+
depthwise_initializer=tf.initializers.variance_scaling(),
884+
data_format=config.data_format,
885+
kernel_size=3,
886+
activation=None,
887+
bias_initializer=tf.zeros_initializer(),
888+
padding='same',
889+
name='box_net/box-predict')
890+
else:
891+
self.boxes = tf.keras.layers.Conv2D(
892+
filters=4 * num_anchors,
893+
kernel_initializer=tf.random_normal_initializer(stddev=0.01),
894+
data_format=config.data_format,
895+
kernel_size=3,
896+
activation=None,
897+
bias_initializer=tf.zeros_initializer(),
898+
padding='same',
899+
name='box_net/box-predict')
878900

879901
log_dir = os.path.join(self.config.model_dir, 'train_images')
880902
self.summary_writer = tf.summary.create_file_writer(log_dir)

0 commit comments

Comments
 (0)