Spaces:
Running
Running
import gradio as gr | |
import tensorflow | |
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 = os.environ.get("model") | |
data = None | |
model = None | |
image = None | |
prediction = None | |
labels = None | |
max_label_index = None | |
max_prediction_value = -1 | |
print('START') | |
np.set_printoptions(suppress=True) | |
model = tensorflow.keras.models.load_model('keras_model.h5') | |
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 = cv.imread(image_path) | |
image = cv.resize(image, (224, 224)) | |
image_array = np.asarray(image) | |
normalized_image_array = (image_array.astype(np.float32) / 127.0) - 1 | |
data[0] = normalized_image_array | |
prediction = model.predict(data) | |
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 | |
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 this waste: " + max_label) | |
payload = [ | |
{"role": "system", "content": "You are a helpful assistant."}, | |
{"role": "user", "content": "Give me the steps to dispose this waste in bulleting points 5 max: " + "Plastic"} | |
] | |
response = requests.post(host, json={ | |
"messages": payload, | |
"model": model, | |
"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="text", | |
outputs="text", | |
title="Waste Classifier", | |
description="Upload an image to classify and get disposal instructions." | |
) | |
iface.launch() | |