Esempio n. 1
0
def evaluate_age_mobilenet_v1_imdb_wiki():
    validation_size = 1000
    data = get_imdb_wiki_dataset()
    addrs = data["addrs"][:validation_size]
    age_labels = data["age_labels"][:validation_size]
    gender_labels = data["gender_labels"][:validation_size]

    num_classes = 101
    batch_size = 64

    imp = task_importance_weights(age_labels, num_classes)
    plt.figure("Weight importance")
    plt.plot(imp)
    plt.show()

    checkpoint_path = os.path.join(ROOT_DIR, "outputs", "checkpoints",
                                   "age_mobilenet_v1_imdb_wiki", "ckpt.h5")

    # Building Mobilenet

    val_generator = DataGenerator(addrs[:validation_size],
                                  age_labels[:validation_size], batch_size,
                                  num_classes)

    # steps_per_epoch = val_generator.n // val_generator.batch_size

    loss = coral_loss(imp)
    model = keras.models.load_model(
        checkpoint_path,
        custom_objects={
            "loss": loss,
            "mae_pred": mae_pred,
            "Linear_1_bias": Linear_1_bias
        },
    )

    pred = model.predict_generator(generator=val_generator)
    pred = pred > 0.5
    y_pred = np.sum(pred, axis=1)
    mae = np.mean(np.abs(age_labels - y_pred))
    print("mae: {}".format(mae))

    # print(list(zip(model.metrics_names, score)))
    plot(validation_size, batch_size, addrs, gender_labels, age_labels, y_pred)
Esempio n. 2
0
# Custom variables
################################################################################
num_classes = 101
batch_size = 64
validation_size = 1000
input_shape = (224, 224, 3)
app_id = "age_mobilenet_v1_audience"

################################################################################
# Create dataset generator
################################################################################
data = get_audience_dataset()
addrs = data["addrs"]
age_labels = data["age_labels"]

imp = task_importance_weights(age_labels, num_classes)

train_generator = DataGenerator(addrs[validation_size:],
                                age_labels[validation_size:], batch_size,
                                num_classes)
val_generator = DataGenerator(addrs[:validation_size],
                              age_labels[:validation_size], batch_size,
                              num_classes)
steps_per_epoch = train_generator.n // train_generator.batch_size

################################################################################
# Create and load mobilenet
################################################################################
model = keras.applications.mobilenet.MobileNet(input_shape=input_shape,
                                               weights=None,
                                               include_top=False)