smartleaf-api / README.md
yasyn14's picture
getting strted
7a11d7a
metadata
title: Plant Disease Prediction API
emoji: 🌱
colorFrom: green
colorTo: blue
sdk: docker
pinned: false
license: apache-2.0
app_port: 7860

Plant Disease Prediction API 🌱

A FastAPI-based web service that predicts plant diseases from leaf images using a deep learning model trained on plant pathology data.

Features

  • 38 Disease Classes: Supports detection of various diseases across multiple plant species including Apple, Corn, Grape, Tomato, Potato, and more
  • Batch Processing: Process up to 10 images simultaneously
  • High Accuracy: Uses a pre-trained CNN model for reliable disease classification
  • Easy Integration: RESTful API with comprehensive documentation
  • Model Pre-warming: Fast inference with pre-loaded model

Supported Plants & Diseases

Apple

  • Apple Scab, Black Rot, Cedar Apple Rust, Healthy

Corn (Maize)

  • Cercospora Leaf Spot, Common Rust, Northern Leaf Blight, Healthy

Tomato

  • Bacterial Spot, Early Blight, Late Blight, Leaf Mold, Septoria Leaf Spot, Spider Mites, Target Spot, Yellow Leaf Curl Virus, Mosaic Virus, Healthy

Grape

  • Black Rot, Esca (Black Measles), Leaf Blight, Healthy

Potato

  • Early Blight, Late Blight, Healthy

Other Plants

  • Blueberry, Cherry, Orange, Peach, Bell Pepper, Raspberry, Soybean, Squash, Strawberry

API Endpoints

POST /predict

Upload one or more images to get disease predictions.

Request:

  • Content-Type: multipart/form-data
  • Body: Image files (jpg, png, bmp, gif, tiff, webp)

Response:

{
  "success": true,
  "results": [
    {
      "predicted_class": "Tomato___Late_blight",
      "clean_class_name": "Tomato - Late blight",
      "confidence": 0.95,
      "all_predictions": {
        "Apple - Apple scab": 0.001,
        "Tomato - Late blight": 0.95
        // ... other classes
      }
    }
  ],
  "message": "Successfully processed 1 image(s)"
}

GET /health

Check API and model status.

GET /classes

Get all supported disease classes.

GET /

API information and status.

Usage Examples

Python

import requests

# Single image prediction
with open("leaf_image.jpg", "rb") as f:
    files = {"files": ("leaf_image.jpg", f, "image/jpeg")}
    response = requests.post("https://your-space-url/predict", files=files)
    result = response.json()
    print(f"Predicted: {result['results'][0]['clean_class_name']}")
    print(f"Confidence: {result['results'][0]['confidence']:.2%}")

cURL

curl -X POST "https://your-space-url/predict" \
     -F "files=@leaf_image.jpg"

JavaScript

const formData = new FormData();
formData.append("files", fileInput.files[0]);

fetch("/predict", {
  method: "POST",
  body: formData,
})
  .then((response) => response.json())
  .then((data) => console.log(data));

Model Information

  • Architecture: Convolutional Neural Network (CNN)
  • Input Size: 300x300 RGB images
  • Training Data: PlantVillage dataset
  • Classes: 38 plant disease categories
  • Framework: TensorFlow/Keras

Performance

  • Batch Size: Up to 10 images per request
  • Response Time: ~1-3 seconds per image
  • Memory Usage: ~2GB for model loading
  • Accuracy: >95% on validation set

Limitations

  • Best results with clear, well-lit leaf images
  • Works optimally with images similar to training data
  • Single leaf per image recommended
  • Supported image formats: JPG, PNG, BMP, GIF, TIFF, WEBP

Environment Variables

  • HF_MODEL_REPO: Hugging Face model repository (default: "yasyn14/smart-leaf-model")
  • HF_MODEL_FILENAME: Model file name (default: "best_model_32epochs.keras")
  • HF_HOME: Cache directory for models (default: "/tmp/huggingface")

License

Apache 2.0 License

Support

For issues and questions, please visit the model repository or create an issue in this space.


Built with FastAPI, TensorFlow, and 🤗 Transformers