Início

ZONY AgroVision AI™

YOLOv8 · CNN · Segmentação · PlantVillage Dataset

YOLOv8
TensorFlow
CNN
PlantVillage
CAN Bus

Pipeline de Visão

Câmera/DroneYOLOv8CNN ClassifyDecision AIMQTTPulverizador

Fontes de Imagem

🚁

Drones

Imagem aérea 4K, multispectral

📷

Câmera Trator

Visão em tempo real no campo

🛰️

Satélites

Sentinel-2, Planet Labs

📱

Smartphone

App ZONY no campo pelo produtor

Detecções Simuladas em Tempo Real

LIVE

Código — Detecção YOLOv8

vision/detect.py
Python
# vision/detect.py
from ultralytics import YOLO
import cv2

model = YOLO("yolov8n.pt")   # treinar com PlantVillage
img   = cv2.imread("plant.jpg")
results = model(img)

for r in results:
    for box in r.boxes:
        cls  = int(box.cls[0])
        conf = float(box.conf[0])
        print(f"Detecção: classe={cls}, confiança={conf:.2f}")

Classificação CNN — TensorFlow

vision/classifier.py
Python
# vision/classifier.py
import tensorflow as tf
from tensorflow.keras.preprocessing import image
import numpy as np

model = tf.keras.models.load_model("plant_disease_model.h5")

img       = image.load_img("leaf.jpg", target_size=(224, 224))
img_array = image.img_to_array(img)
img_array = np.expand_dims(img_array, axis=0) / 255.0

prediction = model.predict(img_array)
classes    = ["saudavel", "ferrugem", "manchas", "murcha", "praga"]
print("Diagnóstico:", classes[np.argmax(prediction)])

Decisão Automática

ai/vision_action.py
Python
# ai/vision_action.py
import requests

def act_on_detection(detection: str, zone: int):
    commands = {
        "lagarta":        ("APLICAR_INSETICIDA", "/spray?product=inseticida"),
        "fungo":          ("APLICAR_FUNGICIDA",  "/spray?product=fungicida"),
        "deficiencia_N":  ("FERTILIZAR_N",       "/fertilize?npk=N"),
        "stress_hidrico": ("IRRIGAR",            "/irrigate?volume=150"),
        "broca":          ("APLICAR_INSETICIDA", "/spray?product=inseticida"),
        "acaro":          ("APLICAR_ACARICIDA",  "/spray?product=acaricida"),
    }

    action, endpoint = commands.get(detection, ("OK", None))
    if endpoint:
        requests.post(f"http://api:8000{endpoint}&zone={zone}")
    return action

Pipeline Completo

ai/vision_pipeline.py
Python
# ai/vision_pipeline.py  — pipeline completo
from vision.detect     import detect_yolo
from vision.classifier import classify_disease
from ai.vision_action  import act_on_detection
import paho.mqtt.client as mqtt

mqttc = mqtt.Client()
mqttc.connect("mqtt-broker", 1883)

def run_pipeline(image_path: str, zone: int):
    # 1. YOLO detecta objetos
    detections = detect_yolo(image_path)

    for det in detections:
        # 2. CNN classifica doença / praga
        disease = classify_disease(image_path)

        # 3. IA decide ação
        action  = act_on_detection(disease, zone)

        # 4. Publica no MQTT → máquina executa
        mqttc.publish(f"field/zone{zone}/action", action)
        print(f"Zone {zone} | {disease} → {action}")

Integração Máquina

1

Drone/Câmera captura imagem

campo · 4K · multispectral

2

YOLOv8 detecta objeto suspeito

vision/detect.py · <100ms

3

CNN classifica doença/praga

vision/classifier.py · 224×224

4

IA decide ação correta

ai/vision_action.py

5

MQTT publica comando

field/zone1/action

6

Pulverizador aplica produto

CAN 0x100 → implemento

🌱 Cada Planta Monitorada

"Detectar, Classificar, Agir — em milissegundos, no campo."

— ZONY AgroVision AI™

base44
Edit with Base44