def build_model(self, keras=False): with tf.Graph().as_default(): config = hparams_config.get_efficientdet_config() inputs_shape = [1, 512, 512, 3] inputs = dict() for i in range(config.min_level, config.max_level + 1): inputs[i] = tf.ones(shape=inputs_shape, name='input', dtype=tf.float32) if not keras: legacy_arch.build_class_and_box_outputs(inputs, config) else: efficientdet_arch_keras.build_class_and_box_outputs(inputs, config) return [n.name for n in tf.global_variables()]
def test_output(self): config = hparams_config.get_efficientdet_config('efficientdet-d0') inputs_shape = [1, 512, 512, 3] config.max_level = config.min_level + 1 with tf.Session(graph=tf.Graph()) as sess: inputs = dict() for i in range(config.min_level, config.max_level + 1): inputs[i] = tf.ones(shape=inputs_shape, name='input', dtype=tf.float32) tf.random.set_random_seed(SEED) output1 = efficientdet_arch_keras.build_class_and_box_outputs( inputs, config) sess.run(tf.global_variables_initializer()) class_output1, box_output1 = sess.run(output1) with tf.Session(graph=tf.Graph()) as sess: inputs = dict() for i in range(config.min_level, config.max_level + 1): inputs[i] = tf.ones(shape=inputs_shape, name='input', dtype=tf.float32) tf.random.set_random_seed(SEED) output2 = legacy_arch.build_class_and_box_outputs(inputs, config) sess.run(tf.global_variables_initializer()) class_output2, box_output2 = sess.run(output2) for i in range(config.min_level, config.max_level + 1): self.assertAllEqual(class_output1[i], class_output2[i]) self.assertAllEqual(box_output1[i], box_output2[i])
def test_model_output(self): inputs_shape = [1, 512, 512, 3] config = hparams_config.get_efficientdet_config('efficientdet-d0') with tf.Session(graph=tf.Graph()) as sess: feats = tf.ones(inputs_shape) tf.random.set_random_seed(SEED) feats = efficientdet_arch_keras.build_backbone(feats, config) feats = efficientdet_arch_keras.build_feature_network( feats, config) feats = efficientdet_arch_keras.build_class_and_box_outputs( feats, config) # TODO(tanmingxing): Fix the failure for keras Model. # feats = efficientdet_arch_keras.EfficientDetModel(config=config)(feats) sess.run(tf.global_variables_initializer()) keras_class_out, keras_box_out = sess.run(feats) with tf.Session(graph=tf.Graph()) as sess: feats = tf.ones(inputs_shape) tf.random.set_random_seed(SEED) feats = legacy_arch.efficientdet(feats, config=config) sess.run(tf.global_variables_initializer()) legacy_class_out, legacy_box_out = sess.run(feats) for i in range(3, 8): self.assertAllEqual(keras_class_out[i - 3], legacy_class_out[i]) self.assertAllEqual(keras_box_out[i - 3], legacy_box_out[i]) feats = tf.ones(inputs_shape) tf.random.set_random_seed(SEED) model = efficientdet_arch_keras.EfficientDetModel(config=config) eager_class_out, eager_box_out = model(feats) for i in range(3, 8): # TODO(tanmingxing): fix the failing case. self.assertAllEqual(eager_class_out[i - 3], legacy_class_out[i]) self.assertAllEqual(eager_box_out[i - 3], legacy_box_out[i])
def test_output(self): config = hparams_config.get_efficientdet_config('efficientdet-d0') inputs_shape = [1, 512, 512, 3] config.max_level = config.min_level + 1 with tf.Session(graph=tf.Graph()) as sess: tf.random.set_random_seed(SEED) keras_inputs = [] for i in range(config.min_level, config.max_level + 1): keras_inputs.append( tf.ones(shape=inputs_shape, name='input', dtype=tf.float32)) output1 = efficientdet_arch_keras.build_class_and_box_outputs( keras_inputs, config) sess.run(tf.global_variables_initializer()) keras_class, keras_box = sess.run(output1) with tf.Session(graph=tf.Graph()) as sess: tf.random.set_random_seed(SEED) legacy_inputs = dict() for i in range(config.min_level, config.max_level + 1): legacy_inputs[i] = tf.ones(shape=inputs_shape, name='input', dtype=tf.float32) output2 = legacy_arch.build_class_and_box_outputs( legacy_inputs, config) sess.run(tf.global_variables_initializer()) legacy_class, legacy_box = sess.run(output2) for i in range(config.min_level, config.max_level + 1): self.assertAllClose(keras_class[i - config.min_level], legacy_class[i]) self.assertAllClose(keras_box[i - config.min_level], legacy_box[i])
def build_model(self, keras=False): with tf.Graph().as_default(): config = hparams_config.get_efficientdet_config('efficientdet-d0') inputs_shape = [1, 512, 512, 3] legacy_inputs, keras_inputs = dict(), [] for i in range(config.min_level, config.max_level + 1): keras_inputs.append( tf.ones(shape=inputs_shape, name='input', dtype=tf.float32)) legacy_inputs[i] = keras_inputs[-1] if keras: efficientdet_arch_keras.build_class_and_box_outputs( keras_inputs, config) else: legacy_arch.build_class_and_box_outputs(legacy_inputs, config) return [n.name for n in tf.global_variables()]
def test_model_output(self): inputs_shape = [1, 512, 512, 3] config = hparams_config.get_efficientdet_config('efficientdet-d0') with tf.Session(graph=tf.Graph()) as sess: feats = tf.ones(inputs_shape) tf.random.set_random_seed(SEED) feats, _ = efficientdet_arch_keras.build_backbone(feats, config) feats = efficientdet_arch_keras.build_feature_network( feats, config) feats = efficientdet_arch_keras.build_class_and_box_outputs( feats, config) sess.run(tf.global_variables_initializer()) class_output1, box_output1 = sess.run(feats) with tf.Session(graph=tf.Graph()) as sess: feats = tf.ones(inputs_shape) tf.random.set_random_seed(SEED) feats = legacy_arch.build_backbone(feats, config) feats = legacy_arch.build_feature_network(feats, config) feats = legacy_arch.build_class_and_box_outputs(feats, config) sess.run(tf.global_variables_initializer()) class_output2, box_output2 = sess.run(feats) for i in range(3, 8): self.assertAllEqual(class_output1[i], class_output2[i]) self.assertAllEqual(box_output1[i], box_output2[i])