import os import gradio as gr import numpy as np import tensorflow as tf from tensorflow.keras import models IMG_SIZE = 300 class_names = ['none','mild','severe'] cwd = os.getcwd() outpath= os.path.join(cwd,"model") model_name = 'cross_event_ecuador_haiti_efficientnet_fine_tuned_1644086357.h5' loaded_model = models.load_model(os.path.join(outpath,model_name)) def _classifier(inp): img = np.asarray(tf.cast(inp, dtype=tf.float32)) * 1 / 255.0 img = img.reshape((-1, IMG_SIZE, IMG_SIZE, 3)) preds = loaded_model.predict(img).flatten() return {class_names[i]:float(preds[i]) for i in range(len(class_names))} iface = gr.Interface(fn=_classifier, title="Disaster damage assessment from social media image", description="This simple app allow users to load an image and assess the extent of damage caused by an earthquake", article="The severity of damage in an image is the extent of physical destruction shown in it. For this experiment we only consider three level of damages: severe damage,mild damage and no damage (none). The model was trained using data from Haiti,Ecuador,Nepal earthquakes and google images.", examples=['Haiti-Gingerbread-2.jpg','building_damage_100.jpg','building_damage_424.jpg'], inputs=gr.inputs.Image(shape=(IMG_SIZE, IMG_SIZE)), outputs=gr.outputs.Label() ) iface.launch()