Tutorial Deploy Aplikasi Deteksi Objek Menggunakan Ultralytics YOLO (You Only Look Once) pada Ubuntu 24.04
Pengantar
Pemantauan lalu lintas secara manual memerlukan waktu dan sumber daya yang cukup besar, terutama jika dilakukan selama 24 jam penuh. Dengan memanfaatkan teknologi Artificial Intelligence (AI) dan Computer Vision, proses pemantauan dapat dilakukan secara otomatis menggunakan kamera CCTV yang sudah tersedia.
Salah satu teknologi yang banyak digunakan untuk kebutuhan tersebut adalah YOLO (You Only Look Once). Model ini mampu mendeteksi berbagai objek seperti kendaraan dan pejalan kaki secara real-time dengan performa yang cepat dan akurat.
Pada panduan ini, Anda akan mempelajari cara membangun Dashboard Monitoring Lalu Lintas Real-Time menggunakan YOLO, Flask, OpenCV, dan MariaDB di Ubuntu 24.04. Sistem yang dibuat dapat menampilkan video CCTV, menghitung objek secara otomatis, serta menampilkan hasil pemantauan melalui dashboard web.
Apa Itu YOLO?
YOLO (You Only Look Once) merupakan model deteksi objek berbasis Deep Learning yang mampu mengenali berbagai objek pada gambar maupun video secara real-time.
Beberapa kelebihan YOLO antara lain:
1. Deteksi Real-Time
Mampu mendeteksi objek dengan cepat sehingga cocok digunakan untuk pemantauan langsung.
2. Akurasi Tinggi
Memiliki tingkat akurasi yang baik untuk berbagai kebutuhan deteksi objek.
3. Mendukung Berbagai Objek
Dapat mengenali mobil, motor, bus, truk, sepeda, dan pejalan kaki.
4. Fleksibel
Dapat dijalankan pada server, VPS, maupun perangkat dengan spesifikasi terbatas.
Dengan kemampuan tersebut, YOLO banyak digunakan untuk:
• Monitoring lalu lintas
• Smart City
• Sistem parkir otomatis
• Pengawasan area publik
• Analisis kepadatan kendaraan
Prasyarat
CPU : 2 vCPU
RAM : 4 GB
Storage : 20 GB SSD
Sistem Operasi : Ubuntu 24.04 LTS
Python : Versi 3.10 atau lebih baru
Catatan:
Untuk penggunaan dengan banyak sumber CCTV atau trafik yang tinggi, disarankan menggunakan spesifikasi server yang lebih besar agar proses deteksi objek dapat berjalan lebih optimal.
Download Evironment
- Memperbarui Sistem dan Menginstal Dependensi
Perbarui sistem terlebih dahulu:apt update && apt upgrade -yInstal paket yang dibutuhkan:
apt install python3 python3-pip python3-venv ffmpeg -yKeterangan:
Paket ini digunakan untuk menjalankan YOLO, Flask, OpenCV, dan pemrosesan video.
- Membuat Direktori Project
Buat direktori project:mkdir ~/yolo-app cd ~/yolo-appBuat virtual environment:
python3 -m venv venvAktifkan virtual environment:
source venv/bin/activateKeterangan:
Virtual environment digunakan untuk mengisolasi dependency project dari sistem utama.
- Menginstal Library Python
Instal seluruh dependency yang diperlukan:pip install ultralytics pip install flask pip install opencv-python-headlessVerifikasi instalasi:
pip listPastikan library Flask, OpenCV, dan Ultralytics telah terpasang.
Keterangan:
Library ini digunakan untuk deteksi objek, pemrosesan video, dan pembuatan dashboard web.
Download Model YOLO
- Mengunduh Model YOLO
Unduh model YOLO Nano:wget https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n.ptPastikan file berhasil diunduh:
lsOutput yang muncul kurang lebih seperti berikut:
yolo11n.ptKeterangan:
Model yolo11n.pt digunakan untuk mendeteksi objek seperti kendaraan dan pejalan kaki secara real-time.
Membuat Struktur Direktori
- Membuat Struktur Direktori Project
Susun direktori project seperti berikut:yolo-app/ ├── api.py ├── yolo11n.pt ├── templates/ │ └── dashboard.html └── venv/Buat direktori templates:
mkdir templatesKeterangan:
Direktori templates digunakan untuk menyimpan file antarmuka dashboard Flask.
Membuat Dashboard Monitoring
- Membuat Tampilan Dashboard
Buat file dashboard:nano templates/dashboard.htmlMasukkan kode berikut:
Keterangan:
File dashboard.html digunakan untuk menampilkan video CCTV, jumlah kendaraan, pejalan kaki, dan status lalu lintas secara real-time.
Membuat Aplikasi Flask dan YOLO
- Membuat API Monitoring Lalu Lintas
Buat file aplikasi Flask:nano api.pyMasukkan kode berikut ke dalam file api.py:
from flask import Flask, Response, render_template, jsonify from ultralytics import YOLO import cv2 import threading import time import pymysql app = Flask(__name__) URL = "https://cctv.jogjaprov.go.id/cctv-proxy/atcs-kota/MargoUtomo_WismaRatih.stream/chunklist_w122852773.m3u8" model = YOLO("yolo11n.pt") latest_stats = { "person": 0, "car": 0, "motorcycle": 0, "truck": 0, "status": "Lancar" } output_frame = None frame_lock = threading.Lock() last_save = 0 # Kode program dipersingkat pada artikel # Salin seluruh source code API yang telah disediakan if __name__ == "__main__": app.run(host="0.0.0.0", port=5000)Keterangan:
File api.py berfungsi untuk melakukan deteksi objek menggunakan YOLO, menampilkan video CCTV secara real-time, menyimpan data ke MariaDB, dan menyediakan API untuk dashboard monitoring.
Menjalankan Aplikasi
- Membuat API Monitoring Lalu Lintas
Buat file aplikasi Flask:nano api.pyMasukkan kode berikut ke dalam file api.py:
from flask import Flask, Response, render_template, jsonify from ultralytics import YOLO import cv2 import threading import time import pymysql app = Flask(__name__) URL = "https://cctv.jogjaprov.go.id/cctv-proxy/atcs-kota/MargoUtomo_WismaRatih.stream/chunklist_w122852773.m3u8" model = YOLO("yolo11n.pt") latest_stats = { "person": 0, "car": 0, "motorcycle": 0, "truck": 0, "status": "Lancar" } output_frame = None frame_lock = threading.Lock() last_save = 0 # Kode program dipersingkat pada artikel # Salin seluruh source code API yang telah disediakan if __name__ == "__main__": app.run(host="0.0.0.0", port=5000)Keterangan:
File api.py berfungsi untuk melakukan deteksi objek menggunakan YOLO, menampilkan video CCTV secara real-time, menyimpan data ke MariaDB, dan menyediakan API untuk dashboard monitoring.
Menjalankan Aplikasi
- Menjalankan Aplikasi
Aktifkan virtual environment:source venv/bin/activateJalankan aplikasi:
python api.pyJika berhasil, akan muncul output seperti berikut:
* Running on http://0.0.0.0:5000Akses dashboard melalui browser:
http://IP-SERVER:5000
Membuat Service Systemd
- Membuat Service Systemd
Secara default aplikasi dijalankan menggunakan perintah berikut:python api.pyBuat file service:
nano /etc/systemd/system/traffic-monitor.serviceIsi dengan konfigurasi berikut:
[Unit] Description=Traffic Monitoring Dashboard After=network.target [Service] User=root WorkingDirectory=/root/yolo-app Environment="PATH=/root/yolo-app/venv/bin" ExecStart=/root/yolo-app/venv/bin/python /root/yolo-app/api.py Restart=always RestartSec=5 [Install] WantedBy=multi-user.targetReload systemd:
systemctl daemon-reloadAktifkan service:
systemctl enable traffic-monitorJalankan service:
systemctl start traffic-monitorPeriksa status service:
systemctl status traffic-monitorJika berhasil, status akan menampilkan:
active (running)
Keterangan:
Service systemd memungkinkan aplikasi berjalan otomatis setiap kali server dinyalakan atau reboot.
Tips dan Catatan Penting
• Gunakan model yolo11n.pt jika VPS memiliki spesifikasi terbatas.
• Pastikan sumber CCTV memiliki koneksi yang stabil.
• Gunakan resolusi inferensi yang sesuai agar performa tetap optimal.
• Simpan aplikasi sebagai service systemd agar berjalan otomatis setelah reboot.
• Untuk kebutuhan laporan atau grafik historis, Anda dapat menambahkan database MariaDB pada tahap pengembangan berikutnya.
Kesimpulan
Dashboard Monitoring Lalu Lintas berbasis YOLO memungkinkan proses pemantauan kendaraan dan pejalan kaki dilakukan secara otomatis melalui kamera CCTV. Dengan memanfaatkan teknologi Computer Vision, sistem dapat melakukan deteksi objek secara real-time serta menampilkan hasil pemantauan melalui dashboard web yang mudah dipahami.
Melalui panduan ini, Anda telah mempelajari cara membangun sistem monitoring lalu lintas menggunakan YOLO, Flask, dan OpenCV di Ubuntu 24.04. Setelah instalasi selesai, aplikasi dapat dijalankan secara otomatis menggunakan systemd sehingga siap digunakan untuk kebutuhan monitoring, analisis lalu lintas, maupun pengembangan Smart City.


