import gradio as gr import tensorflow as tf import numpy as np from numpy import asarray from datetime import datetime import cv2 model = tf.keras.models.load_model("simple-CNN-model.2022-8-9.hdf5") def image_predict(img): """ Displays dominant colors beyond a given threshold. img : image input, for ex 'blue-car.jpg' isize: input image size, for ex. 227 thr: chosen threshold value """ thr=0 global model if model is None: model = tf.keras.models.load_model("models/simple-CNN-model.2022-8-9.hdf5") #img = img.reshape((None, 227, 227, 3)) img = cv2.resize(img, (227, 227)) data = np.asarray(img) ndata = np.expand_dims(data, axis=0) y_prob = model.predict(ndata/255) #y_prob.argmax(axis=-1) now = datetime.now() print("--------") print("data and time: ", now) colorlabels = ['beige', 'black', 'blue', 'brown', 'gold', 'green', 'grey', 'orange', 'pink', 'purple', 'red', 'silver', 'tan', 'white', 'yellow'] coltags = [sorted(colorlabels)[i] for i in np.where(np.ravel(y_prob)>thr)[0]] colprob = [np.ravel(y_prob)[i] for i in list(np.where(np.ravel(y_prob)>thr)[0])] if len(coltags) > 0: response = [] for i,j in zip(coltags, colprob): #print(i,j) resp = {} resp[i] = float(j) response.append(resp) d = dict(map(dict.popitem, response)) print('colors: ', d) return dict(d) else: return str('No label was found') iface = gr.Interface( title = "Object color tagging", description = "App classifying objects on different colors", article = "

Webpage

", fn=image_predict, inputs=gr.Image(width=227, height=227), # shape=(227,227) outputs=gr.Label(), examples=['shoes1.jpg', 'shoes2.jpg'], ) iface.launch()