File size: 2,088 Bytes
c3012c0
 
1446069
a9ac2b2
c3012c0
b2432f8
a42eb3e
 
dab2414
 
 
a42eb3e
b56c2af
c3012c0
dab2414
 
 
 
3ce068a
dab2414
 
 
 
 
 
665bea4
 
 
 
 
 
 
 
 
c3012c0
a42eb3e
 
6597ea2
 
 
 
a42eb3e
 
dab2414
c3012c0
665bea4
dab2414
 
665bea4
dab2414
665bea4
c3012c0
dab2414
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
import gradio as gr
import tensorflow as tf
from PIL import Image
import numpy as np

# Klassennamen, sollten Ihrem Dataset entsprechen
class_names = ['Apple__black_rot', 'Apple__healthy', 'Apple__rust', 'Apple__scab']

def predict_figure(uploaded_file):
    if uploaded_file is None:
        return "Keine Datei hochgeladen.", None, "Keine Vorhersage"

    model = tf.keras.models.load_model('apple_classification-6.keras')

    with Image.open(uploaded_file).convert('RGB') as img:
        img = img.resize((150, 150))
        img_array = np.array(img)
        prediction = model.predict(np.expand_dims(img_array, axis=0))

        # Identify the most confident prediction
        confidences = {class_names[i]: np.round(float(prediction[0][i]), 2) for i in range(len(class_names))}
        max_confidence_class = max(confidences, key=confidences.get)
        response = generate_response(max_confidence_class)

        return img, confidences, response

def generate_response(predicted_class):
    responses = {
        'Apple__black_rot': "Die Pflanze zeigt Anzeichen von Schwarzfäule. Erhöhen Sie die Luftzirkulation und vermeiden Sie Überwässerung.",
        'Apple__healthy': "Die Pflanze ist gesund. Weiter so!",
        'Apple__rust': "Rost wurde erkannt. Entfernen Sie infizierte Blätter und behandeln Sie mit einem Fungizid.",
        'Apple__scab': "Schorf ist sichtbar. Beschneiden Sie betroffene Bereiche und verwenden Sie Fungizide."
    }
    return responses.get(predicted_class, "Unbekannte Krankheit")

# Define example images
examples = [
    ["images/Apple__black_rot.JPG"],
    ["images/Apple__healthy.JPG"],
    ["images/Apple__rust.JPG"],
    ["images/Apple__scab.JPG"]
]

# Define the Gradio interface
iface = gr.Interface(
    fn=predict_figure,
    inputs=gr.File(label="Datei hochladen"),
    outputs=["image", "text", "text"],
    title="Klassifikator für Apfelblattkrankheiten",
    description="Lade ein Bild eines Apfelblatts hoch, um den Gesundheitszustand und die Vertrauenswürdigkeit des Modells zu sehen.",
    examples=examples
)
iface.launch()