Penggunaan rokok elektrik atau vape menjadi semakin umum, dan deteksi penggunaannya di area tertentu seperti sekolah, kantor, atau area publik dapat menjadi penting untuk menegakkan kebijakan tanpa rokok. Teknologi Object Detection (deteksi objek) memungkinkan pengenalan dan pelacakan objek tertentu dalam video atau gambar secara real-time. Artikel ini membahas desain dan implementasi sistem deteksi pengguna rokok elektrik menggunakan teknologi Object Detection.
Komponen dan Peralatan yang Diperlukan
- Kamera: Kamera pengawas untuk merekam area yang dipantau.
- Server atau Komputer: Untuk memproses data video dan menjalankan algoritma deteksi.
- Framework Object Detection: Seperti TensorFlow, OpenCV, atau YOLO (You Only Look Once).
- Dataset: Gambar dan video rokok elektrik dan penggunaannya untuk melatih model deteksi.
- Python: Bahasa pemrograman untuk mengembangkan sistem deteksi.
Langkah-langkah Implementasi
- Persiapan Dataset
- Kumpulkan dataset gambar dan video yang berisi rokok elektrik dan penggunaannya.
- Anotasi dataset untuk melabeli rokok elektrik dan aktivitas vaping.
- Pemilihan Model dan Framework
- Pilih framework Object Detection yang sesuai, seperti TensorFlow atau YOLO.
- Gunakan model pra-terlatih (pre-trained) jika tersedia, atau latih model dari awal menggunakan dataset yang telah dikumpulkan.
- Pelatihan Model
- Jika menggunakan TensorFlow, Anda dapat memanfaatkan model seperti Faster R-CNN atau SSD (Single Shot MultiBox Detector).
- Untuk YOLO, Anda dapat menggunakan versi YOLOv3 atau YOLOv4 yang telah dioptimalkan untuk deteksi real-time.
import tensorflow as tf from object_detection.utils import config_util from object_detection.builders import model_builder # Konfigurasi model pipeline_config = 'path/to/pipeline.config' configs = config_util.get_configs_from_pipeline_file(pipeline_config) model_config = configs['model'] detection_model = model_builder.build(model_config=model_config, is_training=True) # Pelatihan model def train_step(image_tensors, groundtruth_boxes_list, groundtruth_classes_list): with tf.GradientTape() as tape: # Dapatkan prediksi detections = detection_model(image_tensors, training=True) loss_dict = detection_model.loss(detections, groundtruth_boxes_list, groundtruth_classes_list) total_loss = loss_dict['Loss/total_loss'] gradients = tape.gradient(total_loss, detection_model.trainable_variables) optimizer.apply_gradients(zip(gradients, detection_model.trainable_variables)) return total_loss # Inisialisasi optimizer optimizer = tf.keras.optimizers.Adam(learning_rate=0.001) # Loop pelatihan for epoch in range(num_epochs): for image_tensors, groundtruth_boxes_list, groundtruth_classes_list in dataset: loss = train_step(image_tensors, groundtruth_boxes_list, groundtruth_classes_list) print(f"Loss: {loss.numpy()}") - Implementasi Sistem Deteksi
- Setelah model dilatih, implementasikan sistem deteksi dengan memproses data video secara real-time.
- Gunakan OpenCV untuk menangkap frame dari kamera dan jalankan deteksi objek pada setiap frame.
import cv2 import tensorflow as tf # Load model yang telah dilatih detection_model = tf.saved_model.load('path/to/saved_model') def detect_vape(frame): input_tensor = tf.convert_to_tensor(frame) input_tensor = input_tensor[tf.newaxis, ...] detections = detection_model(input_tensor) return detections # Inisialisasi kamera cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() if not ret: break detections = detect_vape(frame) # Proses dan tampilkan hasil deteksi for detection in detections['detection_boxes']: ymin, xmin, ymax, xmax = detection (startX, startY, endX, endY) = (xmin, ymin, xmax, ymax) cv2.rectangle(frame, (startX, startY), (endX, endY), (0, 255, 0), 2) cv2.imshow('Vape Detection', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() - Pengiriman Notifikasi
- Integrasikan sistem notifikasi untuk memberi tahu administrator jika deteksi rokok elektrik teridentifikasi.
- Gunakan layanan seperti Twilio untuk mengirim notifikasi melalui SMS atau WhatsApp.
from twilio.rest import Client def send_alert(message): client = Client('your_account_sid', 'your_auth_token') client.messages.create( body=message, from_='whatsapp:+14155238886', to='whatsapp:+your_number' ) # Kirim notifikasi saat deteksi ditemukan if detections: send_alert("Rokok elektrik terdeteksi!")
Kesimpulan
Dengan mengintegrasikan teknologi Object Detection menggunakan framework seperti TensorFlow atau YOLO, kita dapat membangun sistem yang efisien untuk mendeteksi pengguna rokok elektrik. Sistem ini tidak hanya mendeteksi aktivitas secara real-time, tetapi juga dapat mengirim notifikasi segera kepada pihak yang berwenang untuk mengambil tindakan yang diperlukan. Teknologi ini memberikan solusi praktis dan efektif dalam menegakkan kebijakan tanpa rokok di area yang diawasi.