Data apa yang diproses oleh perangkat lunak visi berbasis peristiwa?
Kamera peristiwa melaporkan perubahan kecerahan dibandingkan mengirimkan bingkai video konvensional pada setiap interval. Peristiwa yang didekodekan biasanya mengidentifikasi piksel, polaritas, dan stempel waktu. Aplikasi Anda harus mempertahankan arti dari bidang tersebut melalui akuisisi, pemfilteran, pencatatan, dan inferensi. Itu perbandingan berbasis peristiwa versus berbasis bingkai menjelaskan kapan model data tersebut berguna.
Bedakan tiga format dalam desain: sensor atau pengkodean transportasi, representasi peristiwa yang didekodekan yang digunakan oleh perangkat lunak, dan representasi yang diteruskan ke suatu algoritma. File yang berisi paket sensor mentah, serangkaian peristiwa yang didekodekan, dan akumulasi gambar memiliki tujuan berbeda. Mengonversi keduanya dapat mengubah penggunaan memori, biaya pemrosesan, dan informasi waktu yang tersedia di hilir.
| Representasi | Berguna untuk | Pertanyaan integrasi |
|---|---|---|
| Paket mentah atau rekaman vendor | Mereproduksi perilaku akuisisi dan decoding | Bisakah dekoder yang diterapkan membaca revisi perangkat dan format yang sama persis? |
| Peristiwa yang diterjemahkan | Pemfilteran, analisis waktu, dan algoritme asli peristiwa | Apa yang dimaksud dengan unit stempel waktu, domain jam, dan konvensi koordinat? |
| Permukaan waktu atau tensor mirip voxel | Algoritma yang memerlukan representasi temporal terstruktur | Pengaturan riwayat, binning, dan normalisasi mana yang harus direproduksi? |
| Akumulasi gambar peristiwa | Visualisasi atau tahap pemrosesan berbasis gambar yang kompatibel | Berapa banyak penundaan dan hilangnya informasi yang disebabkan oleh jendela akumulasi? |
Cara mengevaluasi SDK kamera peristiwa
Mulailah dengan sensor yang tepat, firmware kamera, dan platform host. Demonstrasi desktop tidak memberikan dukungan untuk image Linux tertanam, prosesor ARM, atau lisensi produksi Anda. Tanyakan kepada pemasok tentang sistem operasi yang didukung, arsitektur CPU, kondisi redistribusi, dan persyaratan antarmuka kamera. Verifikasi aplikasi pada platform yang dimaksud sebelum melakukan papan operator.
- Akuisisi: penemuan perangkat, konfigurasi, decoding dan pelaporan kesalahan.
- Waktu: asal stempel waktu, penanganan rollover, pemicu eksternal, dan penyelarasan multi-perangkat.
- Reproduksibilitas: rekaman, ekspor konfigurasi, dan versi perangkat lunak yang teridentifikasi.
- Penerapan: operasi tanpa kepala, biner yang didukung, perilaku mulai ulang, dan persyaratan lisensi.
- Observabilitas: jumlah peristiwa, kedalaman antrian, data yang hilang, dan penggunaan sumber daya host.
Bangun saluran dengan batasan waktu yang jelas
Pisahkan akuisisi dari visualisasi mahal, penulisan disk, dan inferensi model. Jika tidak, konsumen yang lambat dapat menunda data baru bahkan sebelum algoritme dimulai. Tentukan antrean terbatas dan kebijakan kelebihan beban yang eksplisit. Menghapus jendela terlama, mengurangi wilayah yang diinginkan, dan menghentikan kesalahan memiliki konsekuensi yang berbeda; pilih perilaku yang sesuai dengan aplikasi dan catat saat itu terjadi.
Gunakan stempel waktu sensor untuk menjelaskan kapan observasi terjadi, dan jam host monoton untuk mengukur durasi pemrosesan. Mengurangi stempel waktu dari jam yang tidak terkait tidak menghasilkan latensi end-to-end yang valid. Jika kamera harus digabungkan dengan IMU atau kamera konvensional, tetapkan hubungan jam dan proses kalibrasi yang dijelaskan di kami panduan sinkronisasi fusi sensor.
Contoh inspeksi rekaman kecil
Contoh Python berikut menghitung peristiwa yang didekodekan dalam rekaman yang didukung dan melaporkan rentang stempel waktunya. Ini menggunakan API streaming Metavision yang terdokumentasi dan memerlukan instalasi dan perekaman SDK yang kompatibel. Ini adalah contoh inspeksi, bukan patokan atau detektor kamera Alvexis.
import argparse
from metavision_sdk_stream import Camera, CameraStreamSlicer
parser = argparse.ArgumentParser()
parser.add_argument("recording")
args = parser.parse_args()
source = Camera.from_file(args.recording)
count, first_us, last_us = 0, None, None
for batch in CameraStreamSlicer(source.move()):
events = batch.events
if events.size:
start = int(events["t"][0])
end = int(events["t"][-1])
first_us = start if first_us is None else min(first_us, start)
last_us = end if last_us is None else max(last_us, end)
count += int(events.size)
span_s = 0.0 if first_us is None else (last_us - first_us) / 1_000_000
print({"events": count, "event_timestamp_span_s": span_s})
Rentang stempel waktu mencakup peristiwa pertama hingga terakhir yang diamati; itu tidak mengukur durasi file, penundaan akuisisi, atau throughput pemrosesan. Periode kosong dan pengaturan ulang jam memerlukan penanganan terpisah dalam produksi. Simpan konfigurasi perangkat dan rekaman metadata di samping file sehingga teknisi kedua dapat mereproduksi interpretasinya.
Validasi adegan tenang, adegan sibuk, dan pemulihan kegagalan
Uji adegan diam, gerakan representatif, dan adegan yang sengaja menuntut. Kedipan, getaran kamera, dan gerakan bertekstur dapat menciptakan laju peristiwa yang sangat berbeda. Catat perilaku umum dan kasus terburuk yang Anda amati. Ulangi dengan penyimpanan dan komunikasi aktif, karena beban kerja tersebut bersaing untuk mendapatkan memori dan waktu CPU.
| Tes | Rekam | Keputusan yang didukungnya |
|---|---|---|
| Putar ulang rekaman yang sama | Konfigurasi, perbedaan keluaran dan durasi pemrosesan | Bisakah perubahan perangkat lunak dievaluasi secara reproduktif? |
| Tingkatkan aktivitas adegan | Kedalaman antrian, kehilangan peristiwa, dan usia keluaran | Apakah sistem tetap dapat digunakan pada beban puncak? |
| Ubah jendela pemrosesan | Akurasi aplikasi dan penundaan sensor-ke-output | Pertukaran waktu/detail manakah yang sesuai dengan persyaratan? |
| Putuskan sambungan dan sambungkan kembali perangkat | Waktu pemulihan, pengaturan ulang jam, dan kontinuitas perekaman | Apakah layanan yang diterapkan dapat pulih seperti yang diharapkan? |
Jika algoritme menggunakan jaringan saraf, periksa tensor yang dihasilkan dan operator yang didukung sebelum memilih akselerator. Kamera peristiwa tidak secara otomatis memerlukan NPU, dan NPU tidak secara otomatis menerima aliran peristiwa. Kami Panduan arsitektur FPGA, NPU dan MPU memisahkan layanan akuisisi, prapemrosesan, inferensi, dan aplikasi.
Pertanyaan sebelum memilih tumpukan perangkat lunak
Bisakah saya menggunakan model visi komputer biasa?
Hanya setelah mendefinisikan representasi masukan yang kompatibel dan memvalidasi perilakunya. Mengumpulkan peristiwa ke dalam gambar memungkinkan penggunaan kembali tahap pemrosesan gambar, tetapi mengubah distribusi data dan menambahkan jendela waktu. Evaluasi aplikasi lengkap pada data yang representatif.
Apakah demo laptop yang berfungsi membuktikan kompatibilitas tertanam?
Tidak. Konfirmasikan arsitektur CPU, sistem operasi, antarmuka sensor, driver, lisensi SDK, dan penggunaan sumber daya berkelanjutan dari platform target sebenarnya.
Apa yang harus saya kirimkan untuk diskusi integrasi?
Kirim referensi kamera atau sensor, rekaman sampel, keluaran yang diinginkan, penundaan yang dapat diterima, platform host, antarmuka, dan lingkungan penerapan. Masukan-masukan ini menjadikan diskusi ini cukup konkrit untuk mengidentifikasi risiko-risiko integrasi yang pertama.
Referensi teknis
- Prophesee: memulai dengan API streaming Python
- Prophesee: membaca peristiwa dari kamera dan file
- Gallego dkk.: Visi Berbasis Peristiwa — Sebuah Survei
Contoh vendor menggambarkan ekosistem yang mereka dukung. Konfirmasikan kompatibilitas dan lisensi untuk perangkat dan penerapan yang dipilih.
