File size: 3,268 Bytes
1ed4acb
74dec5e
 
 
 
816fe7b
1ed4acb
45af05b
 
 
22d404b
 
74dec5e
 
 
 
 
1ed4acb
74dec5e
 
 
 
 
 
 
 
0ed54e6
b019779
 
0ed54e6
381e9cd
 
 
 
7c817a1
381e9cd
 
7c817a1
381e9cd
 
 
 
 
 
b019779
 
 
 
 
 
 
 
 
 
 
 
 
7c817a1
381e9cd
 
38a36a9
381e9cd
7c817a1
381e9cd
 
b019779
7c817a1
381e9cd
 
 
7c817a1
381e9cd
 
b019779
 
 
7c817a1
381e9cd
854226e
381e9cd
 
 
 
 
 
7c817a1
381e9cd
b019779
7c817a1
4dbb024
381e9cd
b019779
3c31877
 
74dec5e
b77b847
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
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(Textbox, Image, Textbox2, Textbox3):
    if Textbox3 == code:
        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": content},
        ]
        for i in Textbox2_edited:
            messages.append(
                {"role": "user", "content": i}
            )
    
        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},
            )
    
            response = requests.post(host, json={
                "messages": messages,
                "model": model_llm,
                "temperature": 0.5,
                "presence_penalty": 0,
                "frequency_penalty": 0,
                "top_p": 1
            }).json()

            reply = response["choices"][0]["message"]["content"]
            messages.append({"role": "assistant", "content": reply})

            output.append({"type": max_label, "prediction_value": rounded_value, "content": reply})
        
        return output
    else:
        return "Unauthorized"

user_inputs = [
    gr.Textbox(label="Textbox", 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()