Skip to content

Commit 5f3f351

Browse files
authored
Add Adam optimizer (#390)
* add adam optimizer * fix bugs * simple code * fix bug
1 parent 1042257 commit 5f3f351

File tree

4 files changed

+15
-6
lines changed

4 files changed

+15
-6
lines changed

efficientdet/anchors.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,7 @@ def _generate_detections_tf(cls_outputs,
335335
scores = detections[:, 4]
336336
boxes = detections[:, :4]
337337

338+
image_size = utils.parse_image_size(image_size)
338339
detections = tf.stack([
339340
tf.cast(tf.tile(image_id, tf.shape(top_detection_idx)), tf.float32),
340341
tf.clip_by_value(boxes[:, 0], 0, image_size[0]) * image_scale,
@@ -455,10 +456,7 @@ def __init__(self, min_level, max_level, num_scales, aspect_ratios,
455456
self.num_scales = num_scales
456457
self.aspect_ratios = aspect_ratios
457458
self.anchor_scale = anchor_scale
458-
if isinstance(image_size, int):
459-
self.image_size = (image_size, image_size)
460-
else:
461-
self.image_size = image_size
459+
self.image_size = utils.parse_image_size(image_size)
462460
self.feat_sizes = utils.get_feat_sizes(image_size, max_level)
463461
self.config = self._generate_configs()
464462
self.boxes = self._generate_boxes()

efficientdet/det_model_fn.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -502,8 +502,14 @@ def _model_outputs(inputs):
502502
ema_vars = utils.get_ema_vars()
503503

504504
if mode == tf.estimator.ModeKeys.TRAIN:
505-
optimizer = tf.train.MomentumOptimizer(
506-
learning_rate, momentum=params['momentum'])
505+
if params['optimizer'].lower() == 'sgd':
506+
optimizer = tf.train.MomentumOptimizer(
507+
learning_rate, momentum=params['momentum'])
508+
elif params['optimizer'].lower() == 'adam':
509+
optimizer = tf.train.AdamOptimizer(
510+
learning_rate)
511+
else:
512+
raise ValueError('optimizers should be adam or sgd')
507513
if params['use_tpu']:
508514
optimizer = tf.tpu.CrossShardOptimizer(optimizer)
509515

efficientdet/hparams_config.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,11 @@ def default_detection_configs():
196196
h.is_training_bn = True
197197
# optimization
198198
h.momentum = 0.9
199+
# 'adam', 'sgd'
200+
h.optimizer = 'sgd'
201+
# 0.008 for adam
199202
h.learning_rate = 0.08
203+
# 0.0008 for adam
200204
h.lr_warmup_init = 0.008
201205
h.lr_warmup_epoch = 1.0
202206
h.first_lr_drop_epoch = 200.0

efficientdet/inference.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ def det_post_process_combined(params, cls_outputs, box_outputs, scales,
249249
tf.expand_dims(tf.range(batch_size), axis=1), [1, max_boxes_to_draw]),
250250
dtype=tf.float32)
251251
image_size = params['image_size']
252+
image_size = utils.parse_image_size(image_size)
252253
ymin = tf.clip_by_value(nmsed_boxes[..., 0], 0, image_size[0]) * scales
253254
xmin = tf.clip_by_value(nmsed_boxes[..., 1], 0, image_size[1]) * scales
254255
ymax = tf.clip_by_value(nmsed_boxes[..., 2], 0, image_size[0]) * scales

0 commit comments

Comments
 (0)