All Articles
Technical 5 min read

Project Snapshot

Goal: Transform a research-grade YOLOv11 model into an autonomous, event-driven diagnostic system. Architecture: Real-time “Watcher” service → YOLOv11 Inference → OpenAI Contextualization → Actionable Email Reports. Impact: Reduced diagnostic turnaround from hours to seconds.

Co-authored by Anwar Iqbal

Research notebooks are excellent for experimentation, but they are not production systems. A model achieving 94% mAP (mean Average Precision) inside a .ipynb file delivers zero value if it requires a data scientist to manually run cells.

In this article, I break down how I engineered a production-ready MLOps pipeline for detecting Cotton Leaf Curl Virus. The system goes beyond simple object detection by integrating Generative AI (OpenAI) to explain the results in plain English for non-technical stakeholders (farmers/agronomists).

The Architecture: Bringing AI to the Edge

The core philosophy of this deployment is “Event-Driven Design”. We don’t want a server idling and polling; we want a system that reacts instantaneously to new data.

Here is the high-level architecture of the SentinelFlux pipeline:

High Level MLOps Architecture

1. The Trigger Mechanism (Watchdog)

Instead of a cron job running every minute, I utilized the watchdog library to hook directly into OS-level file system events. This ensures 0-second latency between upload and processing start.

2. The Vision Core (YOLOv11)

For the detection engine, I deployed a custom-trained YOLOv11 model.

  • Precision: 0.92
  • Recall: 0.89
  • Inference Speed: ~45ms on T4 GPU

The model efficiently localizes the disease vectors on the leaves, but bounding boxes alone are often confusing for the end-user.

3. The “Brain” (OpenAI Integration)

This is where MLOps travels the “Last Mile”. A bounding box saying Cotton_Virus: 0.94 is data, not insight.

I piped the raw detection metadata into the OpenAI API with a specialized prompt:

“You are an expert Agronomist. The vision model detected 3 instances of Cotton Leaf Curl Virus with high confidence. Explain the severity to the farmer and suggest immediate remediation steps.”

This turns a raw image into a consultation.

The Automator Code

The Python service orchestrates these three layers seamlessly. Below is the simplified logic:

class VirusDetector(FileSystemEventHandler):
    def on_created(self, event):
        # 1. Vision Inference
        results = self.model(event.src_path)
        detections = len(results[0].boxes)
        
        if detections > 0:
            # 2. Generative Contextualization
            insight = self.get_openai_summary(detections, "Cotton Leaf Curl Virus")
            
            # 3. Action
            self.send_email(insight, results[0].plot())

    def get_openai_summary(self, count, disease):
        # Calling GPT-4 to interpret the vision results
        response = client.chat.completions.create(
            model="gpt-4",
            messages=[{"role": "system", "content": "Analyze these crop disease findings..."}]
        )
        return response.choices[0].message.content

Why This Matters

This architecture demonstrates the shift from Model-Centric to Data-Centric AI.

By wrapping the model in a robust pipeline, we solved the “Latency” and “Accessibility” problems simultaneously. The user doesn’t need to know Python. They just need to drag-and-drop an image.

Future Roadmap

While this demo runs on local inference, the next phase involves:

  1. Containerization: Dockerizing the Watcher service.
  2. Serverless Scaling: Porting the logic to AWS Lambda functions triggered by S3 uploads.
  3. Edge Deployment: Running the quantized YOLOv11 model directly on NVIDIA Jetson Nano devices in the field.
HT

Written by Hisham Tariq

Backend Engineer & AI Researcher passionate about building secure, intelligent systems at the intersection of cybersecurity and artificial intelligence. Specializing in Python, FastAPI, and machine learning.