🫒 Argon-Bilig: Gemlik Zeytini Yapay Zekâ Teşhis ve Karar Destek Motoru

Argon-Bilig, Gemlik (Olea europaea cv. 'Gemlik') zeytini özelinde rekolte ve ağaç sağlığını tehdit eden Halkalı Leke (Venturia oleaginea) ve Zeytin Pas Akarı (Aculus olearius) etmenlerini piksel hassasiyetinde tespit eden, arka plan gürültüsünü izole eden ve fenolojik döneme göre zirai mücadele reçetesi sunan hibrit bir yapay zekâ teşhis sistemidir.

Bu çalışma; TÜBİTAK 2204-A Lise Öğrencileri Araştırma Projeleri Yarışması ve TEKNOFEST Tarımsal Teknolojiler kapsamında geliştirilmiştir.


👥 Proje Geliştiricileri ve Sahipliği

  • Muhammed Emin DUYAR
  • Ahmet Buğra GİRGİN
  • Yıl: 2026

📦 İlgili Veri Seti (Companion Dataset)

Bu modeller, arka plan gürültüsünden arındırılarak standardize edilen resmi Argon-Bilig veri seti ile eğitilmiştir:


📊 1. Model Ağırlıkları ve Donanım Çıkarım Performansı

Aşağıdaki değerler sistem tarafından CPU üzerinde gerçekleştirilen gerçek zamanlı testler ile ölçülmüştür:

Model Bileşeni Dosya Adı Mimari Dosya Boyutu Giriş Çözünürlüğü Ortalama CPU Gecikmesi
Model 1 (Segmentasyon) yolov8_zeytin_seg.onnx YOLOv8s-seg 45.18 MB 640x640 px 387.3 ms
Model 2 (Sınıflandırma) efficientnet_classifier.onnx EfficientNet-B0 15.79 MB 224x224 px 16.1 ms
Toplam Sistem Hibrit Boru Hattı İki Aşamalı ONNX 60.97 MB - 403.4 ms

🏷️ 2. Sınıflar, Veri Dağılımı ve Sınıf Ağırlıkları

Eğitimde veri dengesizliğini bertaraf etmek amacıyla Weighted Cross-Entropy Loss kullanılmıştır:

Sınıf ID Sınıf Etiketi Türkçe Tanım Eğitim Seti (Train) Doğrulama Seti (Val) Kayıp Ağırlığı (Weight)
0 Healthy Sağlıklı Zeytin Yaprağı 1033 yaprak 259 yaprak 0.889
1 acerculus_olearius Zeytin Pas Akarı 398 yaprak 100 yaprak 2.308
2 olive_peacock_spot Halkalı Leke 1325 yaprak 332 yaprak 0.693

📈 3. Doğrulama Seti Performans Karnesi (Validation Metrics)

Doğrulama veri seti üzerindeki gerçek çıkarım sonuçları:

Sınıf Precision (Hassasiyet) Recall (Duyarlılık) F1-Score Doğrulama Örneklemi (Support)
Sağlıklı Zeytin Yaprağı %99.23 (0.9923) %99.23 (0.9923) %99.23 (0.9923) 259
Zeytin Pas Akarı %99.00 (0.9900) %99.00 (0.9900) %99.00 (0.9900) 100
Halkalı Leke %99.40 (0.9940) %99.40 (0.9940) %99.40 (0.9940) 332
Genel Başarım (Accuracy) - - %99.28 691

Tarımsal Güvenlik Notu: Tarımda en kritik metrik, hastalıklı yaprağı gözden kaçırmamayı ifade eden Recall (Duyarlılık) değeridir. Modelimiz leke ve pas akarı sınıflarında yüksek duyarlılık göstererek yanlış negatif riskini en aza indirmiştir.


🧠 Model Mimarisi ve Hibrit Karar Akışı

Ham Yaprak Fotoğrafı 
       │
       ▼
[Model 1: YOLOv8s-seg] ──(Leke Alanı > %0.5)──► [Halkalı Leke Teşhisi & Şiddet Analizi]
       │
   (Leke Yok)
       │
[Arka Plan İzolasyonu & Kırpma]
       │
       ▼
[Model 2: EfficientNet-B0] ────────────────────► [Zeytin Pas Akarı VEYA Sağlıklı Yaprak]

🎯 Hedef Sınıflar ve Zirai Mücadele Reçeteleri

Sınıf Etiketi Bilimsel Adı Türkçe Karşılığı Mücadele ve Tedavi Reçetesi
olive_peacock_spot Venturia oleaginea Halkalı Leke %1 - 1.5 Bordo Bulamacı / Ruhsatlı Bakırlı Fungisit
acerculus_olearius Aculus olearius Zeytin Pas Akarı Sürgün döneminde Islanabilir Kükürt (WP) / Akarisit
Healthy Olea europaea Sağlıklı Yaprak Rutin sulama, havalandırma budaması ve dengeli besleme

💻 Python ile Hızlı Çıkarım (Quickstart)

import onnxruntime as ort
import numpy as np
import cv2

# Modeli Yükle
session = ort.InferenceSession("efficientnet_classifier.onnx", providers=['CPUExecutionProvider'])
classes = ['Healthy', 'acerculus_olearius', 'olive_peacock_spot']

# Görseli Oku ve Normalize Et (224x224)
img = cv2.imread("ornek_yaprak.jpg")
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
resized = cv2.resize(img_rgb, (224, 224)).astype(np.float32) / 255.0

mean = np.array([0.485, 0.456, 0.406], dtype=np.float32)
std = np.array([0.229, 0.224, 0.225], dtype=np.float32)
normalized = (resized - mean) / std
input_tensor = np.transpose(normalized, (2, 0, 1))[np.newaxis, ...]

# Çıkarım
input_name = session.get_inputs()[0].name
logits = session.run(None, {input_name: input_tensor})[0][0]
probs = np.exp(logits) / np.sum(np.exp(logits))

pred_class = classes[np.argmax(probs)]
print(f"Teşhis: {pred_class} (Güven: %{np.max(probs)*100:.2f})")

📖 Bu Modeli Alıntılamak İçin (Citation)

@misc{argonbilig2026,
  title={Argon-Bilig: Gemlik Zeytini Hastalık ve Zararlıları İçin Hibrit Yapay Zekâ Teşhis Motoru},
  author={Duyar, Muhammed Emin and Girgin, Ahmet Bu{\u{g}}ra},
  year={2026},
  howpublished={Hugging Face Hub: \url{https://huggingface.co/JoQert/argon-bilig-olive-models}},
  note={Yapay zekâ teşhis motoru ve ONNX modelleri}
}

🙏 Veri Seti Kaynakları ve Teşekkür (Acknowledgements)

Model eğitiminde kullanılan öncül ham verilerin bilimsel katkıları için teşekkür ederiz:

  • Olive Peacock Eye Dataset: Diker, A., Elen, A., Közkurt, C. et al. (2024). Eur Food Res Technol, 250, 287–299. DOI: 10.1007/s00217-023-04386-8
  • Olive Leaf Disease Unified Dataset: Abeer Saleh (CC0: Public Domain)
  • Olive Leaf Image Dataset: Habibul Basher (CC0: Public Domain)
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train JoQert/argon-bilig-olive-models