Apakah data yang diproses oleh perisian penglihatan berasaskan peristiwa?

Kamera peristiwa melaporkan perubahan dalam kecerahan dan bukannya menyampaikan bingkai video konvensional pada setiap selang waktu. Peristiwa yang dinyahkod biasanya mengenal pasti piksel, kekutuban dan cap masa. Permohonan anda mesti mengekalkan maksud medan tersebut melalui pemerolehan, penapisan, rakaman dan inferens. The berasaskan peristiwa berbanding perbandingan berasaskan bingkai menerangkan bila model data itu berguna.

Bezakan tiga format dalam reka bentuk: pengekodan sensor atau pengangkutan, perwakilan peristiwa yang dinyahkod digunakan oleh perisian dan perwakilan yang dihantar kepada algoritma. Fail yang mengandungi paket sensor mentah, pelbagai peristiwa yang dinyahkod dan imej terkumpul mempunyai tujuan yang berbeza. Penukaran antara mereka boleh menukar penggunaan memori, kos pemprosesan dan maklumat masa yang tersedia di hiliran.

PerwakilanBerguna untukSoalan integrasi
Paket mentah atau rakaman vendorMenghasilkan semula tingkah laku pemerolehan dan penyahkodanBolehkah penyahkod yang digunakan membaca peranti dan semakan format yang tepat ini?
peristiwa yang dinyahkodkanPenapisan, analisis masa dan algoritma asli peristiwaApakah unit cap masa, domain jam dan konvensyen koordinat?
Permukaan masa atau tensor seperti voxelAlgoritma yang memerlukan perwakilan temporal berstrukturTetapan sejarah, binning dan normalisasi yang manakah mesti dihasilkan semula?
Imej peristiwa terkumpulVisualisasi atau peringkat pemprosesan berasaskan imej yang serasiBerapa banyak kelewatan dan kehilangan maklumat yang diperkenalkan oleh tetingkap pengumpulan?

Cara menilai SDK kamera peristiwa

Mulakan dengan penderia yang tepat, perisian tegar kamera dan platform hos. Demonstrasi desktop tidak mewujudkan sokongan untuk imej Linux terbenam, pemproses ARM atau lesen pengeluaran anda. Tanya pembekal untuk sistem pengendalian yang disokong, seni bina CPU, syarat pengagihan semula dan keperluan antara muka kamera. Sahkan aplikasi pada platform yang dimaksudkan sebelum melakukan papan pembawa.

  • Pemerolehan: penemuan peranti, konfigurasi, penyahkodan dan pelaporan ralat.
  • Masa: asal cap masa, pengendalian peralihan, pencetus luaran dan penjajaran berbilang peranti.
  • Kebolehulangan: rakaman, eksport konfigurasi dan versi perisian yang dikenal pasti.
  • Kerahan: operasi tanpa kepala, binari yang disokong, mulakan semula tingkah laku dan syarat lesen.
  • Kebolehlihatan: kiraan peristiwa, kedalaman baris gilir, data yang digugurkan dan penggunaan sumber hos.

Bina saluran paip dengan sempadan masa yang jelas

MemperolehMenyahkod dan mengekalkan masa penderia
SediakanTapis, segerakkan dan bentuk tetingkap
buat keputusanJejak atau simpulkan, kemudian cap masa output

Pastikan pemerolehan berasingan daripada visualisasi mahal, penulisan cakera dan inferens model. Jika tidak, pengguna yang lambat boleh menangguhkan data baharu sebelum algoritma bermula. Tentukan baris gilir terhad dan dasar lebihan eksplisit. Menggugurkan tetingkap tertua, mengurangkan kawasan minat dan berhenti dengan ralat mempunyai akibat yang berbeza; pilih tingkah laku yang sesuai dengan aplikasi dan rekod apabila ia berlaku.

Gunakan cap masa penderia untuk menerangkan masa pemerhatian berlaku dan jam hos monoton untuk mengukur tempoh pemprosesan. Menolak cap masa daripada jam yang tidak berkaitan tidak menghasilkan kependaman hujung ke hujung yang sah. Jika kamera mesti digabungkan dengan IMU atau kamera konvensional, wujudkan hubungan jam dan proses penentukuran yang diterangkan dalam panduan penyegerakan sensor-fusion.

Contoh pemeriksaan rakaman kecil

Contoh Python berikut mengira peristiwa yang dinyahkod dalam rakaman yang disokong dan melaporkan rentang cap masanya. Ia menggunakan API penstriman Metavision yang didokumenkan dan memerlukan pemasangan dan rakaman SDK yang serasi. Ia adalah contoh pemeriksaan, bukan penanda aras kamera Alvexis atau pengesan.

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})

Jangka masa cap masa meliputi peristiwa pertama hingga terakhir diperhatikan; ia tidak mengukur tempoh fail, kelewatan pemerolehan atau pemprosesan pemprosesan. Tempoh kosong dan tetapan semula jam memerlukan pengendalian berasingan dalam pengeluaran. Simpan konfigurasi peranti dan metadata rakaman bersama fail supaya jurutera kedua boleh menghasilkan semula tafsiran.

Sahkan adegan senyap, adegan sibuk dan pemulihan kegagalan

Uji adegan pegun, gerakan perwakilan dan adegan yang sengaja menuntut. Kelipan, getaran kamera dan gerakan bertekstur boleh mencipta kadar peristiwa yang sangat berbeza. Catatkan kedua-dua tingkah laku biasa dan kes terburuk yang anda perhatikan. Ulangi dengan storan dan komunikasi aktif, kerana beban kerja tersebut bersaing untuk memori dan masa CPU.

UjianRekodKeputusan yang disokongnya
Main semula rakaman yang samaKonfigurasi, perbezaan output dan tempoh pemprosesanBolehkah perubahan perisian dinilai secara berulang?
Tingkatkan aktiviti adeganKedalaman baris gilir, kehilangan peristiwa dan umur outputAdakah sistem kekal boleh digunakan di bawah beban puncak?
Tukar tetingkap pemprosesanKetepatan aplikasi dan kelewatan sensor-ke-outputPertimbangan masa/perincian manakah yang sesuai dengan keperluan?
Putuskan sambungan dan sambung semula perantiMasa pemulihan, tetapan semula jam dan kesinambungan rakamanBolehkah perkhidmatan yang digunakan pulih secara dijangka?

Apabila algoritma menggunakan rangkaian saraf, semak tensor yang terhasil dan operator yang disokong sebelum memilih pemecut. Kamera peristiwa tidak memerlukan NPU secara automatik dan NPU tidak menerima aliran peristiwa secara automatik. kami Panduan seni bina FPGA, NPU dan MPU memisahkan perkhidmatan pemerolehan, prapemprosesan, inferens dan aplikasi.

Soalan sebelum memilih timbunan perisian

Bolehkah saya menggunakan model penglihatan komputer biasa?

Hanya selepas mentakrifkan perwakilan input yang serasi dan mengesahkan kelakuannya. Mengumpul peristiwa ke dalam imej mungkin membenarkan penggunaan semula peringkat pemprosesan imej, tetapi mengubah pengedaran data dan menambah tetingkap masa. Menilai permohonan lengkap pada data perwakilan.

Adakah demo komputer riba yang berfungsi membuktikan keserasian terbenam?

Tidak. Sahkan seni bina CPU, sistem pengendalian, antara muka penderia, pemacu, lesen SDK dan penggunaan sumber yang berterusan bagi platform sasaran sebenar.

Apakah yang perlu saya hantar untuk perbincangan integrasi?

Hantar rujukan kamera atau sensor, rakaman sampel, output yang dimaksudkan, kelewatan yang boleh diterima, platform hos, antara muka dan persekitaran penggunaan. Input ini menjadikan perbincangan cukup konkrit untuk mengenal pasti risiko penyepaduan pertama.

Rujukan teknikal

Contoh vendor menerangkan ekosistem mereka sendiri yang disokong. Sahkan keserasian dan pelesenan untuk peranti dan penggunaan yang dipilih.

Rancang penyepaduan kamera peristiwa anda.