import gradio as gr import tensorflow as tf import numpy as np from PIL import Image # Sınıf isimleri - sizin veri setinize göre CLASS_NAMES = [ "Africanized Honey Bees (Killer Bees)", "Aphids", "Armyworms", "Brown Marmorated Stink Bugs", "Cabbage Loopers", "Citrus Canker", "Colorado Potato Beetles", "Corn Borers", "Corn Earworms", "Fall Armyworms", "Fruit Flies", "Spider Mites", "Thrips", "Tomato Hornworms", "Western Corn Rootworms" ] # Model yükleme model = tf.keras.models.load_model("XceptionFarmInsectClassifier.h5") def predict_insect(image): """ Yüklenen görüntüyü işler ve böcek sınıfını tahmin eder. Args: image: PIL Image veya numpy array Returns: dict: Sınıf olasılıkları """ # Görüntüyü işle if isinstance(image, np.ndarray): img = Image.fromarray(image.astype('uint8')) else: img = image # Boyutlandır img = img.resize((224, 224)) img_array = np.array(img) # Normalize et img_array = img_array / 255.0 # Batch dimension ekle img_array = np.expand_dims(img_array, axis=0) # Tahmin yap predictions = model.predict(img_array, verbose=0) # Sonuçları dictionary'e çevir results = {CLASS_NAMES[i]: float(predictions[0][i]) for i in range(len(CLASS_NAMES))} return results # Gradio arayüzü oluştur iface = gr.Interface( fn=predict_insect, inputs=gr.Image(type="pil", label="Böcek Fotoğrafı Yükleyin"), outputs=gr.Label(num_top_classes=5, label="Tahmin Sonuçları"), title="🐛 Farm Insect Classifier API", description="Zararlı böcekleri tespit eden AI modeli. Bir böcek fotoğrafı yükleyin.", examples=[ # Örnek görüntü yolları ekleyebilirsiniz ], allow_flagging="never" ) # API olarak çalıştır if __name__ == "__main__": iface.launch(share=False, server_name="0.0.0.0", server_port=7860)