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()