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.

RepresentasiBerguna untukPertanyaan integrasi
Paket mentah atau rekaman vendorMereproduksi perilaku akuisisi dan decodingBisakah dekoder yang diterapkan membaca revisi perangkat dan format yang sama persis?
Peristiwa yang diterjemahkanPemfilteran, analisis waktu, dan algoritme asli peristiwaApa yang dimaksud dengan unit stempel waktu, domain jam, dan konvensi koordinat?
Permukaan waktu atau tensor mirip voxelAlgoritma yang memerlukan representasi temporal terstrukturPengaturan riwayat, binning, dan normalisasi mana yang harus direproduksi?
Akumulasi gambar peristiwaVisualisasi atau tahap pemrosesan berbasis gambar yang kompatibelBerapa 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

MemperolehDekode dan pertahankan waktu sensor
MempersiapkanFilter, sinkronisasi, dan bentuk jendela
PutuskanLacak atau simpulkan, lalu beri stempel waktu pada output

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.

TesRekamKeputusan yang didukungnya
Putar ulang rekaman yang samaKonfigurasi, perbedaan keluaran dan durasi pemrosesanBisakah perubahan perangkat lunak dievaluasi secara reproduktif?
Tingkatkan aktivitas adeganKedalaman antrian, kehilangan peristiwa, dan usia keluaranApakah sistem tetap dapat digunakan pada beban puncak?
Ubah jendela pemrosesanAkurasi aplikasi dan penundaan sensor-ke-outputPertukaran waktu/detail manakah yang sesuai dengan persyaratan?
Putuskan sambungan dan sambungkan kembali perangkatWaktu pemulihan, pengaturan ulang jam, dan kontinuitas perekamanApakah 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

Contoh vendor menggambarkan ekosistem yang mereka dukung. Konfirmasikan kompatibilitas dan lisensi untuk perangkat dan penerapan yang dipilih.

Rencanakan integrasi kamera peristiwa Anda.