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.
| Perwakilan | Berguna untuk | Soalan integrasi |
|---|---|---|
| Paket mentah atau rakaman vendor | Menghasilkan semula tingkah laku pemerolehan dan penyahkodan | Bolehkah penyahkod yang digunakan membaca peranti dan semakan format yang tepat ini? |
| peristiwa yang dinyahkodkan | Penapisan, analisis masa dan algoritma asli peristiwa | Apakah unit cap masa, domain jam dan konvensyen koordinat? |
| Permukaan masa atau tensor seperti voxel | Algoritma yang memerlukan perwakilan temporal berstruktur | Tetapan sejarah, binning dan normalisasi yang manakah mesti dihasilkan semula? |
| Imej peristiwa terkumpul | Visualisasi atau peringkat pemprosesan berasaskan imej yang serasi | Berapa 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
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.
| Ujian | Rekod | Keputusan yang disokongnya |
|---|---|---|
| Main semula rakaman yang sama | Konfigurasi, perbezaan output dan tempoh pemprosesan | Bolehkah perubahan perisian dinilai secara berulang? |
| Tingkatkan aktiviti adegan | Kedalaman baris gilir, kehilangan peristiwa dan umur output | Adakah sistem kekal boleh digunakan di bawah beban puncak? |
| Tukar tetingkap pemprosesan | Ketepatan aplikasi dan kelewatan sensor-ke-output | Pertimbangan masa/perincian manakah yang sesuai dengan keperluan? |
| Putuskan sambungan dan sambung semula peranti | Masa pemulihan, tetapan semula jam dan kesinambungan rakaman | Bolehkah 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
- Prophesee: bermula dengan API penstriman Python
- Prophesee: membaca peristiwa daripada kamera dan fail
- Gallego et al.: Visi berasaskan peristiwa — Satu Tinjauan
Contoh vendor menerangkan ekosistem mereka sendiri yang disokong. Sahkan keserasian dan pelesenan untuk peranti dan penggunaan yang dipilih.
