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).
- 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
quntuk melepas memori kamera dan GUI secara bersih.
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
- Python 3.10 atau versi di atasnya.
- Koneksi Internet (jika menggunakan mode Roboflow Cloud API).
Buka terminal pada direktori root project, kemudian jalankan perintah berikut:
pip install opencv-python ultralytics torch torchvision numpy requests roboflow openvinoBuka 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- Pastikan webcam terhubung dan terkonfigurasi pada index yang tepat di
config.py. - Jalankan perintah di bawah ini dari direktori root:
python -m smoking_detection.main
- Klik pada jendela visualisasi OpenCV lalu tekan tombol
qpada keyboard Anda untuk keluar secara aman.
Jika komputer Anda berspesifikasi tinggi (memiliki GPU NVIDIA) dan ingin menjalankan deteksi rokok secara 100% lokal tanpa koneksi internet:
- Unduh dataset berformat YOLOv8 menggunakan script pembantu:
python -m smoking_detection.download_dataset --api_key API_KEY_ROBOFLOW_ANDA
- Jalankan proses training model kustom YOLOv8 menggunakan:
python -m smoking_detection.train
- Pindahkan berkas bobot terbaik hasil training (
runs/detect/train/weights/best.pt) ke foldersmoking_detection/models/dan beri namacigarette_yolov8n.pt. - Buka
config.pydan ubah:USE_ROBOFLOW_API = False
- Jalankan kembali aplikasi utama. Sistem otomatis akan beralih menggunakan model kustom lokal Anda.
Untuk membagikan aplikasi ini tanpa mengharuskan pengguna menginstal Python:
- Instal PyInstaller:
pip install pyinstaller
- Build executable dengan perintah:
pyinstaller --noconfirm --onedir --console --add-data "smoking_detection;smoking_detection" smoking_detection/main.py - Berkas eksekusi
.exeakan berada di folderdist/main/main.exe.
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!