classifier / app.py
tommy24's picture
Update app.py
f074365
raw
history blame
3.37 kB
import gradio as gr
import numpy as np
import cv2 as cv
import requests
import time
import os
host = os.environ.get("host")
code = os.environ.get("code")
model_llm = os.environ.get("model")
content = os.environ.get("content")
state = os.environ.get("state")
data = None
model = None
image = None
prediction = None
labels = None
print('START')
np.set_printoptions(suppress=True)
data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32)
with open("labels.txt", "r") as file:
labels = file.read().splitlines()
def classify(Textbox, Image, Textbox2, Textbox3):
if Textbox3 == code:
output = []
image_data = np.array(Image)
image_data = cv.resize(image_data, (224, 224))
image_array = np.asarray(image_data)
normalized_image_array = (image_array.astype(np.float32) / 127.0) - 1
data[0] = normalized_image_array
import tensorflow as tf
model = tf.keras.models.load_model('keras_model.h5')
prediction = model.predict(data)
max_label_index = None
max_prediction_value = -1
print('Prediction')
Textbox2 = Textbox2.replace("[", "").replace("]", "").replace("'", "")
Textbox2 = Textbox2.split(",")
Textbox2_edited = [x.strip() for x in Textbox2]
Textbox2_edited = list(Textbox2_edited)
Textbox2_edited.append(Textbox)
messages = [
{"role": "system", "content": content},
]
print("Messages",messages)
for i in Textbox2_edited:
messages.append(
{"role": "user", "content": i}
)
print("messages after appending:", messages)
for i, label in enumerate(labels):
prediction_value = float(prediction[0][i])
rounded_value = round(prediction_value, 2)
print(f'{label}: {rounded_value}')
if prediction_value > max_prediction_value:
max_label_index = i
max_prediction_value = prediction_value
if max_label_index is not None:
max_label = labels[max_label_index].split(' ', 1)[1]
print(f'Maximum Prediction: {max_label} with a value of {round(max_prediction_value, 2)}')
time.sleep(1)
print("\nWays to dispose of this waste: " + max_label)
messages.append(
{"role": "user", "content": Textbox},
)
response = requests.post(host, json={
"messages": messages,
"model": model_llm,
"temperature": 0.5,
"presence_penalty": 0,
"frequency_penalty": 0,
"top_p": 1
}).json()
reply = response["choices"][0]["message"]["content"]
messages.append({"role": "assistant", "content": reply})
output.append({"type": max_label, "prediction_value": rounded_value, "content": reply})
return output
else:
return "Unauthorized"
user_inputs = [
gr.Textbox(label="Textbox", type="text"),
gr.Image(),
gr.Textbox(label="Textbox2", type="text"),
gr.Textbox(label="Textbox3", type="password")
]
iface = gr.Interface(
fn=classify,
inputs=user_inputs,
outputs=gr.outputs.JSON(),
title="Classifier",
)
iface.launch()