Spaces:
Running
Running
File size: 5,171 Bytes
1ed4acb 74dec5e 816fe7b 1ed4acb 45af05b 22d404b 6a50739 ab9c147 74dec5e 1ed4acb 74dec5e 0ed54e6 b019779 d3fd89d f3e1197 381e9cd f3e1197 f074365 f3e1197 7c817a1 f3e1197 7c817a1 f3e1197 7c817a1 f3e1197 7c817a1 f3e1197 381e9cd 5edd69e ab9c147 7c817a1 4b58467 ab9c147 381e9cd ab9c147 381e9cd b019779 7c817a1 f3e1197 3c31877 f3e1197 b77b847 f3e1197 d30e80d d4e098f 74dec5e b80583c 1bba452 74dec5e 1688328 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
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()
|