RunSight
ID

Teknologi

Cara RunSight mengubah tampilan kamera menjadi arahan suara.

Model, geometri lajur, dan prioritas arahan yang berjalan di prototipe, beserta performa yang telah diukur.

Kamera, ketiga model, geometri, dan pemilihan instruksi berjalan di perangkat. Internet tidak diperlukan.

Tiga model persepsi dari satu kamera RGB.

Kamera USB setinggi mata mengirim frame ke akselerator Hailo-8. Sistem persepsi di perangkat memakai tiga model terkompilasi: segmentasi garis lajur, deteksi orang, dan kedalaman monokular. Ketiganya memakai input RGB yang sama, sehingga prototipe tidak memerlukan sensor kedalaman, LiDAR, atau kamera kedua.

Frame terbaru selalu diprioritaskan. Jika proses inferensi tertinggal, frame lama dibuang dan tidak ditumpuk dalam antrean. Arahan harus berdasarkan kondisi yang masih relevan.

Keluaran segmentasi garis lajur, dengan lajur terdeteksi digambar biru

U-Net

Di prototipe

ResNet-18 backbone

Menyegmentasi garis lajur yang dicat, sehingga perangkat tahu ke mana lajur menuju dan di mana posisi Anda di dalamnya.

84.23% IoUIoU, set validasi

Keluaran deteksi orang, dengan kotak pembatas di sekitar pelari di depan

YOLOv8n

Di prototipe

Nano detector

Menemukan orang di depan agar pemanduan dapat merespons ketika seseorang berada di jalur pelari.

88.24% IoUIoU, set validasi

Peta kedalaman lintasan lari, dengan objek dekat berwarna hangat

Sc-Depth V3

Di prototipe

Monocular RGB

Memperkirakan seberapa jauh orang yang terdeteksi dari satu frame RGB, sehingga mesin pemandu tahu apakah sebuah rintangan cukup dekat untuk penting.

Self-supervisedkedalaman monokular, di perangkat

Hasil segmentasi lajur: citra masukan, prediksi model, dan ground truth
Segmentasi lajur: masukan, prediksi, dan ground truth yang dianotasi manual.
Hasil deteksi orang: kotak prediksi terhadap kotak ground truth
Deteksi orang: prediksi (merah) terhadap ground truth (hijau).

Mengubah keluaran model menjadi arahan.

Sebuah mask dan beberapa kotak belum menjadi panduan. Semuanya harus menjadi geometri: ke mana lajur menuju, di mana posisi Anda, seberapa tajam ia menikung, dan apakah orang di depan cukup dekat untuk penting.

Garis lajur yang dideteksi model segmentasi, digambar kuning di atas lintasan lari

01

Paskan garis lajur

Kontur diambil dari mask segmentasi dan tiap garis lajur dipaskan dengan kurva kuadratik, sehingga garis yang terputus oleh orang atau bayangan diinterpolasi kembali menjadi satu tepi yang menyambung.

Area lajur pelari saat ini disorot hijau di antara garis lajur yang dipaskan

02

Bagi lintasan menjadi beberapa area

Garis yang dipaskan membagi lintasan menjadi lima area: paling kiri, kiri, tengah, kanan, dan paling kanan. Pelari ditempatkan di salah satunya, dan dari situlah arahan dihitung.

Lingkaran kelengkungan yang dipaskan pada garis lajur, menunjukkan ketajaman tikungan

03

Ukur tikungannya

Jari-jari kelengkungan dihitung dari titik-titik tengah garis yang dipaskan. Jari-jari besar berarti lajur lurus; yang kecil berarti ia menikung, dan menunjukkan arahnya.

Seorang terdeteksi di depan dengan nilai perkiraan kedalaman tercetak di atas kotak

04

Nilai orang di depan

Orang yang terdeteksi baru menjadi rintangan bila ia dekat. Model kedalaman memperkirakan jarak itu dari frame RGB yang sama, sehingga mesin bereaksi pada yang dekat, bukan pada setiap orang yang terlihat.

Dari situasi di depan menjadi satu arahan suara.

Sebuah lintasan menghasilkan jauh lebih banyak informasi daripada yang bisa ditindaklanjuti seseorang sambil berlari. Mesin mengeluarkan paling banyak satu instruksi dan menahan sisanya, dengan jeda terpisah per prioritas.

FrasaKapanPrioritasJeda
Move leftAnda bergeser ke kanan lajur, jadi instruksi membawa Anda kembali ke tengah.Arahan1.5s
Move rightAnda bergeser ke kiri lajur, jadi instruksi membawa Anda kembali ke tengah.Arahan1.5s
Caution, person aheadAda orang di depan: cukup dekat untuk penting, belum berbahaya.Peringatan0.8s
Stop, person aheadAda orang di depan dan dekat. Instruksi ini memotong yang lain.KritisTidak ada
  • Jeda terpisah untuk setiap prioritas

    Tiap tingkat punya jeda sendiri, jadi sebuah peringatan tak pernah terhalang oleh arahan yang baru saja diucapkan.

  • Pengulangan instruksi dibatasi

    Frasa yang sama ditahan selama 3 detik, betapa pun ia masih benar.

  • Instruksi kritis memotong audio lain

    Instruksi kritis melewati semua jeda dan memotong audio yang sedang diputar.

Mengoptimalkan model untuk inferensi real-time.

Pada float32, model tak mampu menjaga laju frame real-time di Raspberry Pi. Maka model dikompilasi untuk akselerator Hailo: diterjemahkan ke representasinya sendiri, diprofil, dikuantisasi terhadap set kalibrasi berisi frame lintasan asli, lalu dikompilasi menjadi berkas yang dimuat runtime saat boot.

Setelah dikompilasi untuk akselerator, prototipe menjadi 6× lebih cepat dan berjalan di atas 10 frame per detik.

Datanya berasal dari lintasan Indonesia.

Tak ada dataset publik yang menampilkan lintasan lari Indonesia dari sudut pandang pelari, maka kami membuatnya sendiri. Citra dikumpulkan di lintasan umum, termasuk Stadion Patriot Candrabhaga, setinggi mata, dengan dan tanpa orang di depan.

Tiap citra dianotasi dua kali: kotak pembatas untuk orang, dan poligaris untuk tepi lajur yang dicat. Lalu ia diaugmentasi agar tahan menghadapi kenyataan: kepala yang miring, kamera yang bergoyang, dan sore yang menyilaukan atau kelabu.

Anotasi segmentasi garis lajur di Label Studio
Anotasi lajur: tepi yang dicat, ditelusuri dengan tangan.
Anotasi kotak pembatas seorang di lintasan lari di Label Studio
Anotasi orang: satu kotak per pelari di depan.
Lima teknik augmentasi diterapkan satu per satu pada satu citra sumber
Tiap augmentasi, diterapkan sendiri-sendiri pada satu frame sumber.

Status prototipe dan pengujian berikutnya.

Prototipe terpadu sudah bekerja, tetapi beberapa bagian masih memerlukan pengembangan atau validasi.

  • Satu model multi-tugas

    Akselerator tak punya DRAM, jadi berganti model tiap frame itu mahal. Meleburkan ketiganya menjadi satu model dengan beberapa kepala adalah jalan keluarnya.

  • Audio nirkabel

    Perangkat berbicara lewat earphone kabel saat ini. Audio Bluetooth butuh radio kedua di samping yang sudah dipakai untuk ponsel.

  • Pembaruan model dari jarak jauh

    Saat ini, model baru berarti akses fisik ke perangkat.

  • Validasi lapangan

    Pengukuran saat ini berasal dari uji meja dan sesi lintasan bersama penguji awas. Uji terpandu bersama pelari tunanetra belum berlangsung.