classifier / app.py
tommy24's picture
Update app.py
74dec5e
raw
history blame
2.44 kB
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()