ซอฟต์แวร์วิชันซิสเต็มตามเหตุการณ์มีกระบวนการอย่างไร
กล้องบันทึกเหตุการณ์จะรายงานการเปลี่ยนแปลงของความสว่าง แทนที่จะส่งเฟรมวิดีโอแบบเดิมๆ ทุกๆ ช่วงเวลา โดยทั่วไปเหตุการณ์ที่ถอดรหัสจะระบุพิกเซล ขั้ว และการประทับเวลา ใบสมัครของคุณจะต้องรักษาความหมายของฟิลด์เหล่านั้นผ่านการได้มา การกรอง การบันทึก และการอนุมาน ที่ การเปรียบเทียบตามเหตุการณ์กับการเปรียบเทียบตามเฟรม อธิบายว่าโมเดลข้อมูลนั้นมีประโยชน์เมื่อใด
แยกแยะความแตกต่างสามรูปแบบในการออกแบบ: เซนเซอร์ หรือการเข้ารหัสการขนส่ง การแสดงเหตุการณ์ที่ถอดรหัสที่ใช้โดยซอฟต์แวร์ และการแสดงที่ส่งผ่านไปยังอัลกอริทึม ไฟล์ที่มีแพ็กเก็ต เซนเซอร์ แบบดิบ อาร์เรย์ของเหตุการณ์ที่ถอดรหัส และรูปภาพที่สะสมไว้ใช้เพื่อวัตถุประสงค์ที่แตกต่างกัน การแปลงระหว่างกันสามารถเปลี่ยนการใช้หน่วยความจำ ต้นทุนการประมวลผล และข้อมูลเวลาที่มีอยู่ดาวน์สตรีมได้
| การเป็นตัวแทน | มีประโยชน์สำหรับ | คำถามบูรณาการ |
|---|---|---|
| แพ็กเก็ต Raw หรือการบันทึกของผู้ขาย | การสร้างพฤติกรรมการได้มาและการถอดรหัสซ้ำ | ตัวถอดรหัสที่ใช้งานสามารถอ่านอุปกรณ์และการแก้ไขรูปแบบนี้ได้หรือไม่ |
| เหตุการณ์ที่ถอดรหัส | การกรอง การวิเคราะห์เวลา และอัลกอริธึมเหตุการณ์ | หน่วยการประทับเวลา โดเมนนาฬิกา และแบบแผนพิกัดคืออะไร |
| พื้นผิวของเวลาหรือเทนเซอร์คล้ายว็อกเซล | อัลกอริทึมที่ต้องการการนำเสนอชั่วคราวที่มีโครงสร้าง | การตั้งค่าประวัติ, binning และการทำให้เป็นมาตรฐานใดที่ต้องทำซ้ำ |
| ภาพกิจกรรมที่รวบรวมไว้ | การแสดงภาพหรือขั้นตอนการประมวลผลตามภาพที่เข้ากันได้ | หน้าต่างการสะสมทำให้เกิดความล่าช้าและการสูญเสียข้อมูลมากน้อยเพียงใด |
วิธีประเมินกล้องเหตุการณ์ SDK
เริ่มต้นด้วย เซนเซอร์ เฟิร์มแวร์ของกล้อง และแพลตฟอร์มโฮสต์ที่แน่นอน การสาธิตเดสก์ท็อปไม่สนับสนุนอิมเมจ Linux ที่ฝังไว้, โปรเซสเซอร์ ARM หรือลิขสิทธิ์การผลิตของคุณ สอบถามซัพพลายเออร์เกี่ยวกับระบบปฏิบัติการที่รองรับ สถาปัตยกรรม CPU เงื่อนไขการแจกจ่ายซ้ำ และข้อกำหนดอินเทอร์เฟซของกล้อง ตรวจสอบแอปพลิเคชันบนแพลตฟอร์มที่ต้องการก่อนดำเนินการ บอร์ดฐานสำหรับโมดูลประมวลผล
- การได้มา: การค้นหาอุปกรณ์ การกำหนดค่า การถอดรหัส และการรายงานข้อผิดพลาด
- ระยะเวลา: ต้นกำเนิดการประทับเวลา การจัดการแบบโรลโอเวอร์ ทริกเกอร์ภายนอก และการจัดตำแหน่งหลายอุปกรณ์
- ความสามารถในการทำซ้ำ: การบันทึก การส่งออกการกำหนดค่า และเวอร์ชันซอฟต์แวร์ที่ระบุ
- การปรับใช้: การดำเนินการแบบไม่มีหัว, ไบนารีที่รองรับ, พฤติกรรมการรีสตาร์ทและข้อกำหนดสิทธิ์การใช้งาน
- ความสามารถในการสังเกต: จำนวนเหตุการณ์ ความลึกของคิว ข้อมูลที่หลุด และการใช้ทรัพยากรโฮสต์
สร้างไปป์ไลน์ที่มีขอบเขตเวลาที่ชัดเจน
แยกการได้มาแยกจากการสร้างภาพข้อมูลราคาแพง การเขียนดิสก์ และการอนุมานโมเดล มิฉะนั้นผู้บริโภคที่ช้าสามารถชะลอข้อมูลใหม่ก่อนที่อัลกอริทึมจะเริ่มทำงาน กำหนดคิวที่มีขอบเขตและนโยบายการโอเวอร์โหลดที่ชัดเจน การปล่อยหน้าต่างที่เก่าแก่ที่สุด การลดขอบเขตที่สนใจ และการหยุดโดยมีข้อผิดพลาดจะส่งผลที่ตามมาที่แตกต่างกัน เลือกพฤติกรรมที่เหมาะกับการใช้งานและบันทึกเมื่อเกิดขึ้น
ใช้การประทับเวลา เซนเซอร์ เพื่ออธิบายว่าการสังเกตการณ์เกิดขึ้นเมื่อใด และใช้นาฬิกาโฮสต์แบบโมโนโทนิกเพื่อวัดระยะเวลาการประมวลผล การลบการประทับเวลาออกจากนาฬิกาที่ไม่เกี่ยวข้องไม่ได้สร้างเวลาแฝงจากต้นทางถึงปลายทางที่ถูกต้อง หากกล้องต้องใช้ร่วมกับ IMU หรือกล้องทั่วไป ให้สร้างความสัมพันธ์ของนาฬิกาและกระบวนการสอบเทียบตามที่อธิบายไว้ในของเรา คู่มือการซิงโครไนซ์เซ็นเซอร์-ฟิวชั่น.
ตัวอย่างการตรวจสอบการบันทึกขนาดเล็ก
ตัวอย่าง Python ต่อไปนี้นับเหตุการณ์ที่ถอดรหัสในการบันทึกที่รองรับ และรายงานช่วงเวลาของการประทับเวลา ใช้การสตรีม Metavision API ที่ได้รับการบันทึกไว้ และต้องมีการติดตั้งและการบันทึก SDK ที่เข้ากันได้ นี่เป็นตัวอย่างการตรวจสอบ ไม่ใช่เกณฑ์มาตรฐานของกล้อง 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})
ช่วงการประทับเวลาครอบคลุมเหตุการณ์แรกถึงเหตุการณ์สุดท้ายที่สังเกตได้ มันไม่ได้วัดระยะเวลาของไฟล์ ความล่าช้าในการรับข้อมูล หรือปริมาณการประมวลผล ช่วงเวลาที่ว่างเปล่าและการรีเซ็ตนาฬิกาจำเป็นต้องมีการจัดการแยกต่างหากในการผลิต เก็บการกำหนดค่าอุปกรณ์และการบันทึกข้อมูลเมตาไว้ข้างไฟล์เพื่อให้วิศวกรคนที่สองสามารถทำซ้ำการตีความได้
ตรวจสอบฉากที่เงียบ ฉากที่วุ่นวาย และการกู้คืนความล้มเหลว
ทดสอบฉากที่อยู่นิ่ง การเคลื่อนไหวที่เป็นตัวแทน และฉากที่จงใจเรียกร้อง การสั่นไหว การสั่นของกล้อง และการเคลื่อนไหวแบบมีพื้นผิวสามารถสร้างอัตราเหตุการณ์ที่แตกต่างกันมากได้ บันทึกทั้งพฤติกรรมทั่วไปและกรณีที่เลวร้ายที่สุดที่คุณสังเกตเห็น ทำซ้ำโดยใช้งานพื้นที่เก็บข้อมูลและการสื่อสาร เนื่องจากเวิร์กโหลดเหล่านั้นแข่งขันกันเพื่อแย่งชิงเวลาของหน่วยความจำและเวลา CPU
| ทดสอบ | บันทึก | มันสนับสนุนการตัดสินใจ |
|---|---|---|
| เล่นการบันทึกเดียวกันซ้ำ | การกำหนดค่า ความแตกต่างของเอาต์พุต และระยะเวลาการประมวลผล | การเปลี่ยนแปลงซอฟต์แวร์สามารถประเมินซ้ำได้หรือไม่ |
| เพิ่มกิจกรรมฉาก | ความลึกของคิว การสูญเสียเหตุการณ์ และอายุเอาต์พุต | ระบบยังคงใช้งานได้ภายใต้โหลดสูงสุดหรือไม่? |
| เปลี่ยนหน้าต่างการประมวลผล | ความแม่นยำของแอปพลิเคชันและความล่าช้าของเซ็นเซอร์ต่อเอาต์พุต | การแลกเปลี่ยนเวลา/รายละเอียดใดที่เหมาะกับความต้องการ |
| ยกเลิกการเชื่อมต่อและเชื่อมต่ออุปกรณ์อีกครั้ง | เวลาในการฟื้นตัว การรีเซ็ตนาฬิกา และความต่อเนื่องในการบันทึก | บริการที่ปรับใช้สามารถกู้คืนได้อย่างคาดการณ์ได้หรือไม่ |
เมื่ออัลกอริทึมใช้โครงข่ายประสาทเทียม ให้ตรวจสอบเทนเซอร์ผลลัพธ์และตัวดำเนินการที่รองรับก่อนเลือกตัวเร่งความเร็ว กล้องเหตุการณ์ไม่จำเป็นต้องใช้ NPU โดยอัตโนมัติ และ NPU จะไม่ยอมรับสตรีมเหตุการณ์โดยอัตโนมัติ ของเรา คู่มือสถาปัตยกรรม FPGA, NPU และ MPU แยกบริการการได้มา การประมวลผลล่วงหน้า การอนุมาน และแอปพลิเคชันออกจากกัน
คำถามก่อนเลือกซอฟต์แวร์สแต็ค
ฉันสามารถใช้โมเดลคอมพิวเตอร์วิทัศน์ปกติได้หรือไม่
หลังจากกำหนดการแสดงอินพุตที่เข้ากันได้และตรวจสอบพฤติกรรมของมันแล้วเท่านั้น การรวบรวมเหตุการณ์ไว้ในรูปภาพอาจทำให้สามารถนำขั้นตอนการประมวลผลภาพกลับมาใช้ใหม่ได้ แต่จะเปลี่ยนการกระจายข้อมูลและเพิ่มกรอบเวลา ประเมินแอปพลิเคชันที่สมบูรณ์ด้วยข้อมูลตัวแทน
การสาธิตแล็ปท็อปที่ใช้งานได้พิสูจน์ความเข้ากันได้แบบฝังหรือไม่
ไม่ ยืนยันสถาปัตยกรรม CPU, ระบบปฏิบัติการ, อินเทอร์เฟซ เซนเซอร์, ไดรเวอร์, ใบอนุญาต SDK และการใช้ทรัพยากรอย่างยั่งยืนของแพลตฟอร์มเป้าหมายจริง
ฉันควรส่งอะไรไปเพื่อหารือเกี่ยวกับการบูรณาการ?
ส่งกล้องหรือข้อมูลอ้างอิง เซนเซอร์, การบันทึกตัวอย่าง, เอาต์พุตที่ต้องการ, ความล่าช้าที่ยอมรับได้, แพลตฟอร์มโฮสต์, อินเทอร์เฟซ และสภาพแวดล้อมการใช้งาน ข้อมูลเหล่านี้ทำให้การอภิปรายเป็นรูปธรรมเพียงพอที่จะระบุความเสี่ยงในการบูรณาการครั้งแรก
การมองเห็นของ Neuromorphic ในไปป์ไลน์การมองเห็นของคอมพิวเตอร์
กล้องเหตุการณ์มักถูกกล่าวถึงภายใต้การมองเห็นแบบนิวโรมอร์ฟิก เนื่องจากบันทึกเอาต์พุตของกล้องเปลี่ยนแปลงที่แต่ละพิกเซล แทนที่จะเป็นลำดับภาพที่สมบูรณ์คงที่ การแสดงข้อมูลนั้นไม่ได้ให้การตรวจจับวัตถุหรือผลลัพธ์ของโครงข่ายประสาทเทียมโดยอัตโนมัติ ซอฟต์แวร์ยังคงต้องการงานที่กำหนดไว้ อัลกอริธึมที่เข้ากันได้ และเกณฑ์การยอมรับที่วัดผลได้
เมื่อบูรณาการเข้ากับเครื่องมือคอมพิวเตอร์วิทัศน์แบบเฟรม สตรีมเหตุการณ์อาจถูกแปลงเป็นรูปภาพหน้าต่างเวลาหรือการนำเสนออื่น คงการประทับเวลาเดิมไว้หากงานขึ้นอยู่กับข้อมูลชั่วคราวที่ดี ประเมินขั้นตอนการแปลงและการประมวลผลที่สมบูรณ์ ภาพที่สร้างขึ้นใหม่ที่สวยงามเพียงอย่างเดียวไม่ได้สร้างความแม่นยำหรือความหน่วงของการใช้งานขั้นสุดท้าย
วางแผนกำหนดเวลาก่อน การผสานข้อมูลเซนเซอร์
ข้อมูลอ้างอิงทางเทคนิค
- Prophesee: เริ่มต้นใช้งาน Python สตรีมมิ่ง API
- ผู้ทำนาย: อ่านเหตุการณ์จากกล้องและไฟล์
- Gallego และคณะ: วิสัยทัศน์ตามเหตุการณ์ - แบบสำรวจ
ตัวอย่างผู้จำหน่ายอธิบายถึงระบบนิเวศที่ได้รับการสนับสนุนของตนเอง ยืนยันความเข้ากันได้และใบอนุญาตสำหรับอุปกรณ์และการปรับใช้ที่เลือก
