Spaces:
Running
Running
File size: 2,554 Bytes
1ed4acb 74dec5e 816fe7b 1ed4acb 45af05b 22d404b 74dec5e 1ed4acb 74dec5e 193edf8 1688328 edb5399 74dec5e 5db541e 74dec5e 8c75ad7 74dec5e 1eaf7c6 74dec5e 5db541e 74dec5e 22d404b 4d4da2e 74dec5e 45af05b 74dec5e c616b46 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 |
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(image_path):
try:
image_data = np.array(image_path)
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
# Load the model within the classify function
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')
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 # Update max_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)
payload = [
state,
{"role": "user", "content": content + max_label}
]
response = requests.post(host, json={
"messages": payload,
"model": model_llm,
"temperature": 0.5,
"presence_penalty": 0,
"frequency_penalty": 0,
"top_p": 1
}).json()
return response["choices"][0]["message"]["content"]
except Exception as e:
return f"An error occurred: {e}"
iface = gr.Interface(
fn=classify,
inputs=gr.inputs.Image(),
outputs="text",
title="Waste Classifier",
description="Upload an image to classify and get disposal instructions."
)
iface.launch()
|