Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌿 Plant Detector – YOLOv8 + FastAPI

Sistem deteksi tanaman obat berbasis YOLOv8 dengan API FastAPI, frontend web sederhana, dan penyimpanan metadata ke PostgreSQL (tanpa menyimpan gambar).


🚀 Fitur

  • Upload gambar (JPEG/PNG ≤ 3 MB) via web client atau API
  • Inferensi menggunakan model YOLOv8 (best.pt)
  • Metadata hasil inferensi otomatis tersimpan di PostgreSQL:
    • waktu request
    • IP client
    • ukuran & MIME file
    • kelas terdeteksi (top-1), confidence
    • ringkasan deteksi (JSON)
  • Tidak menyimpan file gambar → lebih aman untuk privasi
  • Configurable lewat .env

🛠️ Struktur Repositori

plant-detector/
├─ app/              # kode utama FastAPI
│  ├─ main.py        # API endpoint /detect
│  ├─ deps.py        # loader model & auth ringan
│  ├─ db.py          # koneksi database
│  ├─ models.py      # SQLAlchemy model (inference log)
│  ├─ schemas.py     # Pydantic schema untuk I/O
│  └─ settings.py    # konfigurasi via .env
├─ static/
│  └─ index.html     # web client sederhana (upload & lihat hasil)
├─ requirements.txt  # daftar dependensi Python
├─ Dockerfile        # containerization
└─ .env.example      # contoh konfigurasi environment

⚡ Cara Menjalankan (Local)

  1. Clone repo & masuk ke folder:

    git clone https://github.com/wardanaa/plant-detector.git
    cd plant-detector
  2. Buat virtual env & install dependencies:

    python -m venv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
  3. Setup PostgreSQL (local/docker):

    docker run --name plantdb -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password -e POSTGRES_DB=plantdb -p 5432:5432 -d postgres:15
  4. Copy .env.example.env dan sesuaikan:

    MODEL_PATH=best.pt
    DATABASE_URL=postgresql+psycopg://user:password@localhost:5432/plantdb
    API_KEY=
  5. Jalankan API:

    uvicorn app.main:app --reload
  6. Buka web client:

    • Buka static/index.html di browser
    • Upload gambar tanaman obat → hasil deteksi muncul

🐳 Cara Menjalankan (Docker)

  1. Build image:

    docker build -t plant-detector .
  2. Jalankan container:

    docker run -it --rm -p 8000:8000 --env-file .env plant-detector
  3. Akses API di http://127.0.0.1:8000/docs


📦 Model best.pt

  1. Latih model YOLOv8 di Google Colab (lihat docs/training.md atau notebook).

  2. Copy best.pt ke folder repo atau mount lewat volume.

  3. Pastikan path di .env benar:

    MODEL_PATH=best.pt

🔑 API Usage

Request:

curl -H "x-api-key: changeme" \
     -F "file=@/path/to/daun.jpg" \
     http://127.0.0.1:8000/detect

Response:

{
  "detections": [
    {
      "class": "Temulawak",
      "bbox": { "x1": 12.3, "y1": 45.6, "x2": 78.9, "y2": 120.4 },
      "confidence": 0.82
    }
  ],
  "latency_ms": 47,
  "model_version": "v1"
}

🧭 Roadmap (next)

  • Tambah worker (Celery/RQ) untuk load tinggi
  • Monitoring (Prometheus + Grafana)
  • Canary testing untuk update model
  • Frontend overlay bounding box

⚠️ Disclaimer

Sistem ini hanya untuk deteksi visual tanaman. Tidak boleh digunakan sebagai saran medis. Selalu verifikasi hasil dengan pakar sebelum penggunaan lebih lanjut.


📜 Lisensi

MIT License – silakan gunakan, modifikasi, atau distribusikan dengan bebas.

About

Sistem deteksi tanaman obat berbasis YOLOv8 dengan API FastAPI, frontend web sederhana, dan penyimpanan metadata ke PostgreSQL (tanpa menyimpan gambar).

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages