Sistem deteksi dan pelacakan objek berbasis deep learning untuk mendeteksi keberadaan rokok secara langsung (real-time) melalui umpan kamera (webcam/CCTV).
Proyek ini dirancang untuk mendukung pengawasan kawasan tanpa rokok seperti institusi pendidikan, fasilitas layanan kesehatan, stasiun pengisian bahan bakar (SPBU), area industri rawan kebakaran, dan gedung perkantoran.
Dengan mengintegrasikan model Ultralytics YOLO11 dan algoritma pelacakan ByteTrack, sistem ini mampu melakukan inferensi dengan latensi rendah serta pelacakan objek yang stabil pada perangkat komputer standar maupun edge device.
- Deteksi Sinkron Real-Time: Pembacaan frame dan inferensi model diproses secara sinkron, memastikan bounding box selalu tepat pada posisi objek tanpa jeda tampilan.
- Pelacakan Objek (ByteTrack): Algoritma pelacakan terintegrasi untuk menjaga kontinuitas deteksi objek antar-frame dan mengurangi efek kedipan (flickering).
- Dukungan Multi-Kamera: Deteksi otomatis dan pengalihan sumber video antara kamera internal laptop dan webcam USB eksternal.
- Pengaturan Sensitivitas Dinamis: Penyesuaian ambang batas keyakinan (confidence threshold) secara langsung melalui keyboard saat aplikasi berjalan.
- Penyimpanan Tangkapan Layar: Fitur penyimpanan bukti deteksi ke direktori penyimpanan dengan penamaan berbasis stempel waktu (timestamp).
- Launcher Windows: Skrip batch (
run.bat) untuk memudahkan eksekusi program tanpa perlu memasukkan perintah terminal secara manual.
- Bahasa Pemrograman: Python 3.10+
- Model Deteksi Objek: Ultralytics YOLO11
- Algoritma Pelacakan: ByteTrack
- Pengolahan Citra: OpenCV
- Framework Komputasi: PyTorch, NumPy
Deteksi-Rokok/
├── captures/ # Direktori penyimpanan hasil tangkapan layar (snapshot)
│ └── .gitkeep # Penjaga keberadaan direktori pada Git
├── best model.pt # Bobot (weights) model YOLO11 hasil pelatihan (~5.4 MB)
├── detect_webcam.py # Skrip utama: akuisisi kamera, inferensi YOLO11, ByteTrack, dan UI
├── requirements.txt # Daftar dependensi pustaka Python
├── run.bat # Skrip launcher interaktif satu-klik untuk sistem Windows
├── .gitignore # Konfigurasi pengabaian berkas sementara oleh Git
├── LICENSE # Berkas lisensi resmi MIT (Hak Cipta Murdifin)
└── README.md # Dokumentasi teknis proyek
| Berkas / Direktori | Deskripsi Fungsional |
|---|---|
detect_webcam.py |
Modul inti yang menangani aliran video webcam secara multithreading, eksekusi inferensi sinkron YOLO11 + ByteTrack, rendering overlay bounding box, serta penanganan pintasan keyboard dinamis. |
best model.pt |
Model neural network YOLO11 teroptimasi (~5.4 MB) yang telah dilatih untuk mendeteksi objek rokok secara cepat pada perangkat CPU maupun GPU. |
run.bat |
Menu peluncur interaktif berbasis Command Prompt untuk memilih indeks kamera (Webcam Eksternal USB atau Kamera Internal) sebelum eksekusi. |
captures/ |
Wadah penyimpanan otomatis tangkapan layar beranotasi dengan format penamaan berbasis tanggal dan waktu (timestamp) saat tombol S ditekan. |
requirements.txt |
Spesifikasi dependensi pustaka (ultralytics, opencv-python, torch, numpy, pillow) untuk instalasi lingkungan kerja terisolasi. |
git clone https://github.com/murdifin15/Deteksi-Rokok.git
cd Deteksi-Rokokpython -m venv venv
# Windows:
venv\Scripts\activate
# Linux/macOS:
source venv/bin/activatepip install -r requirements.txtJalankan berkas batch melalui File Explorer atau terminal:
run.bat-
Menjalankan dengan webcam eksternal (sumber 1):
python detect_webcam.py --source 1
-
Menjalankan dengan kamera internal laptop (sumber 0):
python detect_webcam.py --source 0
-
Menjalankan dengan konfigurasi kustom:
python detect_webcam.py --source 1 --conf 0.35 --imgsz 320
| Parameter | Tipe Data | Nilai Default | Deskripsi |
|---|---|---|---|
--model |
str | best model.pt |
Jalur (path) ke berkas bobot model YOLO |
--source |
str | 1 |
Indeks kamera atau jalur berkas video |
--conf |
float | 0.25 |
Ambang batas keyakinan (confidence threshold) deteksi |
--iou |
float | 0.45 |
Ambang batas IoU untuk Non-Maximum Suppression (NMS) |
--imgsz |
int | 320 |
Resolusi citra masukan untuk inferensi |
--label |
str | Rokok |
Label teks yang ditampilkan pada bounding box |
--test |
flag | False |
Mode uji mandiri menggunakan citra tiruan (dummy) |
| Tombol | Fungsi |
|---|---|
Q / ESC |
Keluar dan menghentikan aplikasi |
S |
Menyimpan frame saat ini ke direktori captures/ |
+ / = |
Menaikkan ambang batas keyakinan (+0.05) |
- / _ |
Menurunkan ambang batas keyakinan (-0.05) |
Proyek ini dilisensikan di bawah MIT License - Hak Cipta (c) 2026 Murdifin.