Dadang Kriswanto

Business Analyst

System Analyst

Project Manager

Tech Enthusiast

0

No products in the cart.

Dadang Kriswanto
Dadang Kriswanto
Dadang Kriswanto
Dadang Kriswanto
Dadang Kriswanto
Dadang Kriswanto
Dadang Kriswanto
Dadang Kriswanto
Dadang Kriswanto
Dadang Kriswanto

Business Analyst

System Analyst

Project Manager

Tech Enthusiast

Blog Post

Analisis Object Detection, Classification, dan LPR pada Sistem AI Kendaraan

March 1, 2026 Case Study, Uncategorized

Sistem AI berbasis computer vision kini menjadi tulang punggung manajemen lalu lintas pelabuhan modern. Artikel ini membahas secara teknis bagaimana object detection, vehicle classification, dan License Plate Recognition (LPR) bekerja bersama dalam satu pipeline — berdasarkan studi kasus implementasi nyata di sebuah operator pelabuhan penyeberangan dengan volume kendaraan tinggi.


Latar Belakang

Sebuah operator pelabuhan penyeberangan membutuhkan sistem yang mampu:

  • Menghitung kendaraan yang melewati tollgate dan dermaga secara otomatis
  • Mengklasifikasikan kendaraan ke dalam 12 golongan sesuai standar operasional
  • Membaca nomor plat (License Plate Number) setiap kendaraan yang tercounting
  • Mengintegrasikan data hasil AI ke sistem Business Intelligence (BI) yang sudah berjalan

Tantangan utamanya adalah bagaimana ketiga fungsi ini — detection, classification, dan LPR — dapat berjalan bersamaan secara akurat dan real-time pada satu gerbang/dermaga, dengan kondisi lingkungan yang dinamis sepanjang hari.


Arsitektur Pipeline AI

Sistem ini menggunakan dua kamera CCTV secara paralel di setiap titik pantau:

Alur Proses (Flowchart)

Kedua stream kamera berjalan secara paralel menuju satu pipeline terpadu:

flowchart TD
    A["CCTV Classification 25 FPS RTSP"] --> B["AI Object Detection & Classification"]
    C["CCTV LPR 10 FPS RTSP"] --> D["AI LPR Engine"]
    B --> E[("AI Database")]
    D --> E
    E --> F["Voting Logic"]
    F --> G["Backend Data Center"]
    G --> H["Dashboard & Reporting"]

Sequence: Proses Live Streaming & Deteksi AI

Alur end-to-end dari sisi operator — mulai buka streaming, start deteksi, sinkronisasi data, hingga akses laporan:

sequenceDiagram
autonumber
    participant User as Operator
    participant FE as Frontend Dashboard
    participant Backend as Backend Data Center
    participant Redis as Redis Broker
    participant AI as Sistem AI On-Premise

    note over User, AI: Start Streaming Video
    User ->> FE: Akses live monitoring kamera
    FE -x Redis: publish start streaming RTSP
    AI -x Redis: subscribe start streaming RTSP
    AI ->> AI: Buka koneksi RTSP
    AI -x Redis: publish frame video
    FE -x Redis: subscribe frame video

    note over User, AI: Start Deteksi AI
    User ->> FE: Klik Start Deteksi AI
    par Log ke Backend
        FE ->> Backend: Event start AI
        Backend ->> Backend: Simpan log ke BatchReportHeader
        Backend ->> FE: Started
    and Streaming AI dari On-Premise
        FE -x Redis: publish start streaming AI
        AI -x Redis: subscribe start streaming AI
        AI -->> AI: Inference object detection dan classification
        AI -->> AI: Inference LPR
        AI -->> AI: Deteksi object ID melewati garis
        AI -->> AI: Voting logic dan simpan ke DB
        AI -x Redis: publish frame hasil deteksi
        FE -x Redis: subscribe frame hasil deteksi
    end

    note over User, AI: Sinkronisasi ke Data Center
    AI -x Backend: Kirim data LPR + classification
    Backend -->> Backend: Catat ke VehicleLogs
    AI -x Backend: Kirim event crowded / stop crowded
    Backend -->> Backend: Flag status crowded pada batch

    note over User, AI: Stop Deteksi AI
    User ->> FE: Klik Stop Deteksi
    par Log stop ke Backend
        FE ->> Backend: Event stop AI
        Backend ->> Backend: Update log end ke BatchReportHeader
        Backend ->> FE: Stopped
    and Stop stream dari On-Premise
        FE -x Redis: publish stop streaming RTSP
        AI -x Redis: subscribe stop streaming RTSP
    end

    note over User, AI: Akses Laporan
    User ->> Backend: Akses batch report filter shift atau tanggal
    Backend -->> Backend: Agregasi data VehicleLogs
    opt Integrasi e-ticketing aktif
        Backend -->> Backend: Cross-validate dengan data tiket resmi
    end
    Backend -->> User: Kirim laporan shift atau periode

Sequence: Dual-Camera — Classification & LPR Paralel

Detail proses inference dari dua kamera yang berjalan bersamaan beserta voting logic dan deteksi crowded:

sequenceDiagram
autonumber
    participant cctvClass as CCTV Classification
    participant cctvLPR as CCTV LPR
    participant AICount as AI Object Detection & Classification
    participant AILPR as AI LPR Engine
    participant AIDB as AI Database
    participant voting as Voting Logic
    participant Backend as Backend Data Center

    note over cctvClass, Backend: Dua CCTV berjalan paralel
    par Stream Classification
        cctvClass ->>+ AICount: Stream RTSP 25 FPS
        loop Inference Loop
            AICount ->> AICount: Inference frame
            alt Objek terdeteksi
                AICount ->> AICount: Assign object ID
                AICount ->> AICount: Klasifikasi golongan kendaraan
                AICount ->> AICount: Deteksi object ID menyentuh garis
                AICount ->>- AIDB: Log timestamp, object_id, classification
            end
        end
    and Stream LPR
        cctvLPR ->>+ AILPR: Stream RTSP 10 FPS
        loop Inference Loop
            AILPR ->> AILPR: Inference frame
            alt Objek terdeteksi
                AILPR ->> AILPR: Assign object ID
                AILPR ->> AILPR: Deteksi object ID menyentuh garis
                AILPR ->> AILPR: License Plate Recognition
                AILPR ->>- AIDB: Log timestamp, object_id, license_plate
            end
        end
    end

    note over cctvClass, Backend: Voting Logic
    AIDB ->>+ voting: Data counting object_id + classification
    voting ->> voting: Assign ticket ID ke kendaraan
    AIDB ->> voting: Data LPR object_id + license_plate
    voting ->> voting: Susun voting list per ticket
    voting ->> voting: Hitung frekuensi unique plate
    alt Plate dengan voting tertinggi >= minimum threshold
        voting ->> voting: Set final license plate
        voting ->>- AIDB: Assign ticket ID yang sama ke LPR record
    else Tidak memenuhi threshold
        voting ->> AIDB: Tandai sebagai unresolved
    end
    AIDB ->> Backend: Kirim data deteksi via queue dan live counting

    note over cctvClass, Backend: Deteksi Crowded
    alt Jumlah objek melebihi threshold dalam rentang waktu tertentu
        AIDB ->>+ Backend: Kirim event crowded
    else Normal
        AIDB ->>+ Backend: Kirim event stop crowded
    end

Object Detection & Vehicle Classification

Cara Kerja

Pada stream CCTV Classification, AI melakukan:

  1. Inference Image Stream — setiap frame dianalisis untuk mendeteksi objek kendaraan
  2. Assign Object ID — setiap kendaraan diberi ID unik menggunakan teknik robust data association untuk mitigasi ID collision
  3. Vehicle Classification — kendaraan diklasifikasikan ke 12 golongan berdasarkan fitur visual
  4. Line Crossing Detection — sistem mendeteksi apakah object ID telah menyentuh atau melewati garis counting
  5. Log ke Database — data timestamp, object_id, dan classification disimpan ke AI Database on-premise

Tantangan Klasifikasi 12 Golongan

Klasifikasi kendaraan menjadi kompleks karena:

  • Variasi visual yang tinggi antar golongan (motor, mobil pribadi, truk, bus, alat berat, dll.)
  • Kondisi lingkungan — pencahayaan yang berubah sepanjang hari, hujan, kabut
  • Crowded scenario — saat peak season, banyak kendaraan bertumpuk sehingga akurasi model bisa turun
Array
Catatan teknis: Sistem memiliki mekanisme deteksi crowded — ketika terdeteksi sejumlah objek dalam rentang waktu tertentu, sistem mengirimkan event crowded ke backend. Ini berguna untuk mitigasi risiko penurunan akurasi saat kerumunan.

License Plate Recognition (LPR)

Cara Kerja

Pada stream CCTV LPR yang berjalan paralel:

  1. Inference stream 10 FPS — lebih rendah dari CCTV classification karena LPR butuh gambar lebih statis
  2. Assign Object ID — kendaraan juga diberi ID untuk keperluan pencocokan data
  3. Line Crossing Detection — mendeteksi kendaraan menyentuh garis
  4. OCR / LPR inference — membaca karakter plat nomor
  5. Log ke AI Database — data disimpan dengan timestamp, object_id, dan hasil bacaan plat

Faktor yang Memengaruhi Akurasi LPR

  • Kondisi plat — plat rusak, kotor, atau mengelupas
  • Sudut kamera — angle yang tidak ideal menurunkan akurasi OCR
  • Kecepatan kendaraan — kendaraan yang terlalu cepat berpotensi menghasilkan motion blur
  • Variasi font & format plat — plat daerah memiliki format berbeda

Voting Logic: Mencocokkan Classification & LPR

Ini adalah komponen kunci yang membedakan sistem ini dari implementasi biasa. Karena object detection dan LPR berjalan di dua pipeline terpisah, diperlukan mekanisme voting logic untuk menggabungkan hasilnya.

Alur Voting Logic

flowchart TD
    A["AI DB: Data dari Counting<br>object_id + classification"] --> B["Voting Engine"]
    C["AI DB: Data dari LPR<br>object_id + license_plate"] --> B
    B --> D["Assign ticket ke setiap kendaraan"]
    D --> E["Kumpulkan kandidat plat per ticket"]
    E --> F["Hitung frekuensi unik plat"]
    F --> G{"Plat dengan frekuensi tinggi >= minimum voting?"}
    G -- Ya --> H["Set final license plate"]
    G -- Tidak --> I["Tandai sebagai unresolved"]
    H --> J["Simpan ke AI DB & kirim ke Backend"]

Logika Detail

  1. Setiap kendaraan dari stream counting mendapatkan ticket ID
  2. Data LPR dengan object ID yang sama dimasukkan ke dalam voting list
  3. Sistem menghitung unique plate dan frekuensinya
  4. Jika plat dengan jumlah voting tertinggi memenuhi minimum voting threshold → ditetapkan sebagai plat final
  5. Ticket ID yang sama diberikan ke data LPR car → data tergabung
Array
Keunggulan voting logic: Meningkatkan akurasi baca plat dengan memanfaatkan redundansi data dari beberapa frame, sehingga satu frame blur tidak langsung menghasilkan pembacaan yang salah.

Arsitektur Sistem Terintegrasi

Stack Teknologi

Integrasi dengan Sistem Tiket Eksternal

Sistem AI tidak berdiri sendiri. Hasil deteksi diintegrasikan dengan sistem e-ticketing operator yang sudah ada melalui:

  • Webhook asynchronous — sistem e-ticketing mengirim data shift, trip, boarding transaction, dan check-in transaction ke backend AI secara real-time
  • Batch reporting — laporan per-shift yang membandingkan data hasil counting AI vs data tiket resmi
  • REST API — untuk kontrol start/stop counting, live streaming, dan query laporan

Pola integrasi ini memastikan data AI dan data tiket bisa diverifikasi silang (cross-validation), sehingga laporan akhir lebih akurat dan dapat dipertanggungjawabkan.


Akurasi dan Ekspektasi Realistis

Berdasarkan hasil Proof of Concept (PoC) yang dilakukan pada kondisi lapangan nyata:

  • Tingkat akurasi counting kendaraan berkisar antara 94% hingga 100%
  • Akurasi dipengaruhi oleh kondisi lingkungan dan konfigurasi kamera

Mengapa AI Tidak Bisa 100% Akurat?

Penting untuk dipahami bahwa model AI bersifat probabilistik, bukan deterministik:

  • Model dilatih pada dataset tertentu — variasi dunia nyata selalu ada
  • Faktor eksternal (cahaya, cuaca, kondisi plat) tidak bisa sepenuhnya dikontrol
  • Trade-off antara kecepatan inferensi dan akurasi

Strategi mitigasi yang digunakan:

  1. Voting logic untuk LPR — mengurangi error dari frame tunggal
  2. Crowded detection — flagging otomatis saat kondisi tidak ideal
  3. Continuous retraining — model diperbarui dengan data lapangan secara berkala
  4. Dual-camera setup — memisahkan tugas classification dan LPR untuk optimasi masing-masing

Kesimpulan

Kombinasi object detection, vehicle classification, dan LPR dalam satu sistem yang terintegrasi membutuhkan desain arsitektur yang matang. Kunci keberhasilan implementasi ini adalah:

  • Pemisahan pipeline antara classification dan LPR untuk optimasi performa masing-masing model
  • Voting logic sebagai jembatan data dari dua pipeline berbeda
  • Integrasi sistem yang fleksibel menggunakan REST API + webhook
  • Ekspektasi realistis terhadap akurasi AI yang dikomunikasikan dengan baik ke stakeholder

Sistem seperti ini tidak hanya relevan untuk pelabuhan penyeberangan, tetapi juga applicable untuk tollgate, parkir otomatis, border crossing, dan manajemen lalu lintas skala besar lainnya.

Write a comment