Sistem deteksi tanaman obat berbasis YOLOv8 dengan API FastAPI, frontend web sederhana, dan penyimpanan metadata ke PostgreSQL (tanpa menyimpan gambar).
- 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
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
-
Clone repo & masuk ke folder:
git clone https://github.com/wardanaa/plant-detector.git cd plant-detector -
Buat virtual env & install dependencies:
python -m venv .venv source .venv/bin/activate pip install -r requirements.txt -
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
-
Copy
.env.example→.envdan sesuaikan:MODEL_PATH=best.pt DATABASE_URL=postgresql+psycopg://user:password@localhost:5432/plantdb API_KEY=
-
Jalankan API:
uvicorn app.main:app --reload
-
Buka web client:
- Buka
static/index.htmldi browser - Upload gambar tanaman obat → hasil deteksi muncul
- Buka
-
Build image:
docker build -t plant-detector . -
Jalankan container:
docker run -it --rm -p 8000:8000 --env-file .env plant-detector
-
Akses API di http://127.0.0.1:8000/docs
-
Latih model YOLOv8 di Google Colab (lihat docs/training.md atau notebook).
-
Copy
best.ptke folder repo atau mount lewat volume. -
Pastikan path di
.envbenar:MODEL_PATH=best.pt
Request:
curl -H "x-api-key: changeme" \
-F "file=@/path/to/daun.jpg" \
http://127.0.0.1:8000/detectResponse:
{
"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"
}- Tambah worker (Celery/RQ) untuk load tinggi
- Monitoring (Prometheus + Grafana)
- Canary testing untuk update model
- Frontend overlay bounding box
Sistem ini hanya untuk deteksi visual tanaman. Tidak boleh digunakan sebagai saran medis. Selalu verifikasi hasil dengan pakar sebelum penggunaan lebih lanjut.
MIT License – silakan gunakan, modifikasi, atau distribusikan dengan bebas.