classifier / app.py
tommy24's picture
Update app.py
dde5004
raw
history blame
10.2 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")
# system = os.environ.get("system")
# auth = os.environ.get("auth")
# 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:
# if Image is not None:
# 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": system},
# ]
# 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})
# messages.append({"role": "user", "content": content + " " + max_label})
# headers = {
# "Content-Type": "application/json",
# "Authorization": f"Bearer {auth}"
# }
# response = requests.post(host, headers=headers, json={
# "messages":messages,
# "model":model_llm
# }).json()
# reply = response["choices"][0]["message"]["content"]
# messages.append({"role": "assistant", "content": reply})
# output.append({"Mode":"Image", "type": max_label, "prediction_value": rounded_value, "content": reply})
# return output
# else:
# output = []
# 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": system},
# ]
# print("Messages",messages)
# for i in Textbox2_edited:
# messages.append(
# {"role": "user", "content": i}
# )
# print("messages after appending:", messages)
# time.sleep(1)
# messages.append({"role": "user", "content": Textbox})
# headers = {
# "Content-Type": "application/json",
# "Authorization": f"Bearer {auth}"
# }
# response = requests.post(host, headers=headers, json={
# "messages":messages,
# "model":model_llm
# }).json()
# reply = response["choices"][0]["message"]["content"]
# messages.append({"role": "assistant", "content": reply})
# output.append({"Mode":"Chat","content": reply})
# return output
# else:
# return "Unauthorized"
# user_inputs = [
# gr.Textbox(label="User Input", 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()
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")
system = os.environ.get("system")
auth = os.environ.get("auth")
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()
messages = [
{"role": "system", "content": system}
]
def classify(UserInput, Image, Textbox2, Textbox3):
if Textbox3 == code:
if Image is not None:
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(UserInput)
messages.append({"role": "user", "content": UserInput})
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": content + " " + max_label})
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {auth}"
}
response = requests.post(host, headers=headers, json={
"messages": messages,
"model": model_llm
}).json()
reply = response["choices"][0]["message"]["content"]
messages.append({"role": "assistant", "content": reply})
output.append({"Mode": "Image", "type": max_label, "prediction_value": rounded_value, "content": reply})
return output
else:
output = []
Textbox2 = Textbox2.replace("[", "").replace("]", "").replace("'", "")
Textbox2 = Textbox2.split(",")
Textbox2_edited = [x.strip() for x in Textbox2]
Textbox2_edited = list(Textbox2_edited)
Textbox2_edited.append(UserInput)
for i in Textbox2_edited:
messages.append(
{"role": "user", "content": i}
)
print("messages after appending:", messages)
time.sleep(1)
messages.append({"role": "user", "content": UserInput})
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {auth}"
}
response = requests.post(host, headers=headers, json={
"messages": messages,
"model": model_llm
}).json()
reply = response["choices"][0]["message"]["content"]
messages.append({"role": "assistant", "content": reply})
output.append({"Mode": "Chat", "content": reply})
return output
else:
return "Unauthorized"
user_inputs = [
gr.Textbox(label="User Input", 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()