Skip to content

fa33az/sigapasap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smart Smoking Detection System

License: MIT Python: 3.10+ OpenCV: Supported OpenVINO: Accelerated YOLOv8: Ultralytics

Sistem AI real-time tingkat lanjut (production-ready) untuk mendeteksi aktivitas merokok menggunakan kamera pengawas (Webcam USB atau CCTV RTSP). Sistem ini dirancang menggunakan arsitektur Hybrid Edge-Cloud untuk memberikan performa maksimal bahkan pada komputer berspesifikasi rendah (low-end PC).


Fitur Utama

  • Arsitektur Hybrid Cerdas:
    • Local Edge (OpenVINO): Mendeteksi orang (person) secara lokal menggunakan perangkat keras terakselerasi CPU Intel (AVX/OpenVINO) untuk menjaga latency minimal (FPS tinggi).
    • Cloud API (Roboflow Inference): Mendeteksi rokok (cigarette) dan pola merokok menggunakan API Cloud berbasis GPU berkecepatan tinggi tanpa membebani CPU lokal Anda.
  • Alarm Suara Real-Time: Memicu peringatan suara instan ketika aktivitas merokok terdeteksi.
  • Penyimpanan Bukti Pelanggaran: Menyimpan bukti screenshot secara otomatis ke direktori evidence/ dengan anotasi visual lengkap.
  • Notifikasi Telegram Bot: Mengirim pesan teks peringatan beserta foto bukti langsung ke ruang obrolan Telegram Anda secara asynchronous (tidak menghalangi antrean video).
  • Log Kejadian Terstruktur: Mencatat riwayat pelanggaran dengan format timestamp presisi pada berkas log.txt.
  • Graceful Exit: Penghentian aman sistem dengan tombol q untuk melepas memori kamera dan GUI secara bersih.

Struktur Direktori

smoking_detection/
├── models/             # Folder penyimpanan file bobot model YOLO lokal (.pt / OpenVINO)
├── evidence/           # Folder penyimpanan screenshot bukti pelanggaran (Auto-generated)
├── config.py           # Konfigurasi sistem (threshold, kamera, Bot Telegram, Roboflow API)
├── utils.py            # Logika relasi spasial objek dan FPS counter
├── alert.py            # Modul alarm suara, logger, screenshot saver, & Telegram dispatcher
├── detector.py         # Koordinator deteksi (Hybrid OpenVINO & Roboflow API)
├── download_dataset.py # Script pembantu pengunduh dataset dari Roboflow
├── train.py            # Script pembantu melatih model kustom YOLOv8 secara lokal
└── main.py             # Entry point loop streaming kamera & render visualisasi GUI

Instalasi

1. Prasyarat Sistem

  • Python 3.10 atau versi di atasnya.
  • Koneksi Internet (jika menggunakan mode Roboflow Cloud API).

2. Pemasangan Pustaka Dependensi

Buka terminal pada direktori root project, kemudian jalankan perintah berikut:

pip install opencv-python ultralytics torch torchvision numpy requests roboflow openvino

Panduan Konfigurasi (config.py)

Buka berkas smoking_detection/config.py untuk menyesuaikan setelan:

# --- CAMERA CONFIGURATION ---
CAMERA_SOURCE = 0              # 0 untuk webcam bawaan, atau URL RTSP ("rtsp://...")

# --- ROBOLOFLOW CLOUD CONFIGURATION ---
USE_ROBOFLOW_API = True        # Set True untuk menggunakan model API Cloud Roboflow
ROBOFLOW_API_KEY = "API_KEY"   # Masukkan Private API Key Roboflow Anda

# --- CONFIGURATION THRESHOLDS ---
CONF_THRESHOLD_PERSON = 0.50   # Threshold minimal deteksi orang
CONF_THRESHOLD_CIGARETTE = 0.35 # Threshold minimal deteksi rokok/merokok

# --- TELEGRAM ALERTS ---
ENABLE_TELEGRAM = False        # Set True untuk mengaktifkan bot notifikasi
TELEGRAM_BOT_TOKEN = "TOKEN"   # Token bot Telegram Anda
TELEGRAM_CHAT_ID = "CHAT_ID"   # Chat ID tujuan pengiriman notifikasi

Cara Menjalankan Sistem

  1. Pastikan webcam terhubung dan terkonfigurasi pada index yang tepat di config.py.
  2. Jalankan perintah di bawah ini dari direktori root:
    python -m smoking_detection.main
  3. Klik pada jendela visualisasi OpenCV lalu tekan tombol q pada keyboard Anda untuk keluar secara aman.

Melatih Model Kustom YOLOv8 (Jika Ingin Berjalan Offline)

Jika komputer Anda berspesifikasi tinggi (memiliki GPU NVIDIA) dan ingin menjalankan deteksi rokok secara 100% lokal tanpa koneksi internet:

  1. Unduh dataset berformat YOLOv8 menggunakan script pembantu:
    python -m smoking_detection.download_dataset --api_key API_KEY_ROBOFLOW_ANDA
  2. Jalankan proses training model kustom YOLOv8 menggunakan:
    python -m smoking_detection.train
  3. Pindahkan berkas bobot terbaik hasil training (runs/detect/train/weights/best.pt) ke folder smoking_detection/models/ dan beri nama cigarette_yolov8n.pt.
  4. Buka config.py dan ubah:
    USE_ROBOFLOW_API = False
  5. Jalankan kembali aplikasi utama. Sistem otomatis akan beralih menggunakan model kustom lokal Anda.

Mengemas Aplikasi Menjadi Executable (.exe)

Untuk membagikan aplikasi ini tanpa mengharuskan pengguna menginstal Python:

  1. Instal PyInstaller:
    pip install pyinstaller
  2. Build executable dengan perintah:
    pyinstaller --noconfirm --onedir --console --add-data "smoking_detection;smoking_detection" smoking_detection/main.py
  3. Berkas eksekusi .exe akan berada di folder dist/main/main.exe.

Lisensi

Proyek ini dilisensikan di bawah MIT License - lihat berkas LICENSE untuk detail selengkapnya. Kontribusi open-source sangat kami harapkan untuk menyempurnakan keandalan model deteksi ini!

About

Sistem deteksi aktivitas merokok real-time berbasis AI menggunakan arsitektur Hybrid Edge-Cloud (OpenVINO & Roboflow). Logging pelanggaran, dan pengolahan citra efisien.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages