इवेंट-आधारित विज़न सॉफ़्टवेयर क्या प्रोसेस करता है?

एक इवेंट कैमरा हर अंतराल पर एक पारंपरिक वीडियो फ्रेम देने के बजाय चमक में बदलाव की रिपोर्ट करता है। एक डिकोडेड घटना आम तौर पर एक पिक्सेल, एक ध्रुवीयता और एक टाइमस्टैम्प की पहचान करती है। आपके एप्लिकेशन को अधिग्रहण, फ़िल्टरिंग, रिकॉर्डिंग और अनुमान के माध्यम से उन क्षेत्रों के अर्थ को संरक्षित करना होगा। द घटना-आधारित बनाम फ़्रेम-आधारित तुलना बताता है कि वह डेटा मॉडल कब उपयोगी है।

डिज़ाइन में तीन प्रारूपों को अलग करें: सेंसर या ट्रांसपोर्ट एन्कोडिंग, सॉफ़्टवेयर द्वारा उपयोग किया जाने वाला डिकोडेड ईवेंट प्रतिनिधित्व, और एक एल्गोरिदम को दिया गया प्रतिनिधित्व। एक फ़ाइल जिसमें कच्चे सेंसर पैकेट, डिकोड किए गए घटनाओं की एक श्रृंखला और एक संचित छवि होती है, विभिन्न उद्देश्यों को पूरा करती है। उनके बीच रूपांतरण से मेमोरी उपयोग, प्रसंस्करण लागत और डाउनस्ट्रीम में उपलब्ध समय की जानकारी बदल सकती है।

प्रतिनिधित्वके लिए उपयोगीएकीकरण प्रश्न
कच्चे पैकेट या विक्रेता रिकॉर्डिंगअधिग्रहण और डिकोडिंग व्यवहार को पुन: प्रस्तुत करनाक्या तैनात डिकोडर इस सटीक डिवाइस और प्रारूप संशोधन को पढ़ सकता है?
डिकोड की गई घटनाएँफ़िल्टरिंग, समय विश्लेषण और घटना-मूल एल्गोरिदमटाइमस्टैम्प इकाई, क्लॉक डोमेन और समन्वय परिपाटी क्या हैं?
समय की सतहें या स्वर-जैसे टेंसरएल्गोरिदम जिन्हें संरचित अस्थायी प्रतिनिधित्व की आवश्यकता होती हैकौन सा इतिहास, बिनिंग और सामान्यीकरण सेटिंग्स पुन: प्रस्तुत की जानी चाहिए?
संचित घटना छवियाँविज़ुअलाइज़ेशन या एक संगत छवि-आधारित प्रसंस्करण चरणसंचय विंडो कितनी देरी और सूचना हानि का परिचय देती है?

इवेंट-कैमरा का मूल्यांकन कैसे करें SDK

सटीक सेंसर, कैमरा फ़र्मवेयर और होस्ट प्लेटफ़ॉर्म से प्रारंभ करें। एक डेस्कटॉप प्रदर्शन एम्बेडेड Linux छवि, एआरएम प्रोसेसर या आपके उत्पादन लाइसेंस के लिए समर्थन स्थापित नहीं करता है। समर्थित ऑपरेटिंग सिस्टम, सीपीयू आर्किटेक्चर, पुनर्वितरण शर्तों और कैमरा इंटरफ़ेस आवश्यकताओं के लिए आपूर्तिकर्ता से पूछें। कंप्यूट मॉड्यूल के लिए कैरियर सर्किट बोर्ड शुरू करने से पहले इच्छित प्लेटफ़ॉर्म पर एप्लिकेशन को सत्यापित करें।

  • अधिग्रहण: डिवाइस खोज, कॉन्फ़िगरेशन, डिकोडिंग और त्रुटि रिपोर्टिंग।
  • समय: टाइमस्टैम्प उत्पत्ति, रोलओवर हैंडलिंग, बाहरी ट्रिगर और मल्टी-डिवाइस संरेखण।
  • प्रतिलिपि प्रस्तुत करने योग्यता: रिकॉर्डिंग, कॉन्फ़िगरेशन निर्यात और एक पहचाने गए सॉफ़्टवेयर संस्करण।
  • परिनियोजन: हेडलेस ऑपरेशन, समर्थित बायनेरिज़, पुनरारंभ व्यवहार और लाइसेंस शर्तें।
  • अवलोकनीयता: घटना की संख्या, कतार की गहराई, गिराया गया डेटा और मेजबान संसाधन का उपयोग।

स्पष्ट समय सीमाओं के साथ एक पाइपलाइन बनाएँ

प्राप्त करेंसेंसर समय को डिकोड और संरक्षित करें
तैयारी करोफ़िल्टर करें, सिंक्रोनाइज़ करें और विंडोज़ बनाएं
निर्णय करेंट्रैक करें या अनुमान लगाएं, फिर आउटपुट पर टाइमस्टैंप लगाएं

अधिग्रहण को महंगे विज़ुअलाइज़ेशन, डिस्क लेखन और मॉडल अनुमान से अलग रखें। अन्यथा एक धीमा उपभोक्ता एल्गोरिदम शुरू होने से पहले ही नए डेटा में देरी कर सकता है। एक बंधी हुई कतार और एक स्पष्ट अधिभार नीति को परिभाषित करें। सबसे पुरानी विंडो को गिराना, रुचि के क्षेत्र को कम करना और त्रुटि के साथ रुकने के अलग-अलग परिणाम होते हैं; वह व्यवहार चुनें जो एप्लिकेशन के अनुकूल हो और ऐसा होने पर रिकॉर्ड करें।

अवलोकन कब हुआ इसका वर्णन करने के लिए सेंसर टाइमस्टैम्प का उपयोग करें, और प्रसंस्करण अवधि को मापने के लिए एक मोनोटोनिक होस्ट घड़ी का उपयोग करें। असंबद्ध घड़ियों से टाइमस्टैम्प घटाने से वैध एंड-टू-एंड विलंबता उत्पन्न नहीं होती है। यदि कैमरे को आईएमयू या पारंपरिक कैमरे के साथ जोड़ा जाना चाहिए, तो हमारे में वर्णित घड़ी संबंध और अंशांकन प्रक्रिया स्थापित करें सेंसर-फ्यूजन सिंक्रोनाइज़ेशन गाइड.

एक छोटा रिकॉर्डिंग-निरीक्षण उदाहरण

निम्नलिखित पायथन उदाहरण एक समर्थित रिकॉर्डिंग में डिकोड की गई घटनाओं की गणना करता है और उनके टाइमस्टैम्प की अवधि की रिपोर्ट करता है। यह प्रलेखित मेटाविज़न स्ट्रीमिंग 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})

टाइमस्टैम्प अवधि पहली से आखिरी देखी गई घटना को कवर करती है; यह फ़ाइल अवधि, अधिग्रहण विलंब या प्रसंस्करण थ्रूपुट को मापता नहीं है। खाली अवधियों और घड़ी रीसेट को उत्पादन में अलग-अलग प्रबंधन की आवश्यकता होती है। डिवाइस कॉन्फ़िगरेशन और रिकॉर्डिंग मेटाडेटा को फ़ाइल के साथ रखें ताकि दूसरा इंजीनियर व्याख्या को पुन: पेश कर सके।

शांत दृश्यों, व्यस्त दृश्यों और विफलता पुनर्प्राप्ति को मान्य करें

एक स्थिर दृश्य, प्रतिनिधि गति और जानबूझकर मांग करने वाले दृश्य का परीक्षण करें। झिलमिलाहट, कैमरा कंपन और बनावट वाली गति बहुत भिन्न घटना दरें बना सकती हैं। सामान्य व्यवहार और आपके द्वारा देखे गए सबसे खराब मामले दोनों को रिकॉर्ड करें। भंडारण और संचार को सक्रिय रखते हुए दोहराएं, क्योंकि वे कार्यभार मेमोरी और सीपीयू समय के लिए प्रतिस्पर्धा करते हैं।

परीक्षणअभिलेखयह जिस निर्णय का समर्थन करता है
उसी रिकॉर्डिंग को दोबारा चलाएंकॉन्फ़िगरेशन, आउटपुट अंतर और प्रसंस्करण अवधिक्या किसी सॉफ़्टवेयर परिवर्तन का पुनरुत्पादनपूर्वक मूल्यांकन किया जा सकता है?
दृश्य गतिविधि बढ़ाएँकतार की गहराई, घटना हानि और आउटपुट आयुक्या सिस्टम पीक लोड के तहत प्रयोग करने योग्य रहता है?
प्रोसेसिंग विंडो बदलेंअनुप्रयोग सटीकता और सेंसर-टू-आउटपुट विलंबकौन सा समय/विस्तार व्यापार-बंद आवश्यकता के अनुरूप है?
डिवाइस को डिस्कनेक्ट करें और पुनः कनेक्ट करेंपुनर्प्राप्ति समय, घड़ी रीसेट और रिकॉर्डिंग निरंतरताक्या तैनात सेवा पूर्वानुमानित रूप से ठीक हो सकती है?

जब एल्गोरिदम एक तंत्रिका नेटवर्क का उपयोग करता है, तो त्वरक चुनने से पहले परिणामी टेंसर और समर्थित ऑपरेटरों की जांच करें। किसी इवेंट कैमरे को स्वचालित रूप से NPU की आवश्यकता नहीं होती है, और NPU स्वचालित रूप से किसी इवेंट स्ट्रीम को स्वीकार नहीं करता है। हमारा FPGA, NPU और MPU आर्किटेक्चर गाइड अधिग्रहण, प्रीप्रोसेसिंग, अनुमान और अनुप्रयोग सेवाओं को अलग करता है।

सॉफ़्टवेयर स्टैक चुनने से पहले प्रश्न

क्या मैं सामान्य कंप्यूटर-विज़न मॉडल का उपयोग कर सकता हूँ?

संगत इनपुट प्रतिनिधित्व को परिभाषित करने और उसके व्यवहार को मान्य करने के बाद ही। छवियों में घटनाओं को संचित करने से छवि-प्रसंस्करण चरण का पुन: उपयोग हो सकता है, लेकिन डेटा वितरण बदल जाता है और एक समय विंडो जुड़ जाती है। प्रतिनिधि डेटा पर संपूर्ण एप्लिकेशन का मूल्यांकन करें।

क्या कार्यशील लैपटॉप डेमो एम्बेडेड संगतता साबित करता है?

नहीं, सीपीयू आर्किटेक्चर, ऑपरेटिंग सिस्टम, सेंसर इंटरफ़ेस, ड्राइवर, SDK लाइसेंस और वास्तविक लक्ष्य प्लेटफ़ॉर्म के निरंतर संसाधन उपयोग की पुष्टि करें।

एकीकरण चर्चा के लिए मुझे क्या भेजना चाहिए?

कैमरा या सेंसर संदर्भ, नमूना रिकॉर्डिंग, इच्छित आउटपुट, स्वीकार्य विलंब, होस्ट प्लेटफ़ॉर्म, इंटरफ़ेस और परिनियोजन वातावरण भेजें। ये इनपुट पहले एकीकरण जोखिमों की पहचान करने के लिए चर्चा को पर्याप्त ठोस बनाते हैं।

कंप्यूटर विज़न पाइपलाइन में न्यूरोमॉर्फिक दृष्टि

इवेंट कैमरों की चर्चा अक्सर न्यूरोमॉर्फिक दृष्टि के तहत की जाती है क्योंकि उनके आउटपुट रिकॉर्ड संपूर्ण छवियों के एक निश्चित अनुक्रम के बजाय व्यक्तिगत पिक्सेल पर बदलते हैं। वह डेटा प्रतिनिधित्व स्वचालित रूप से ऑब्जेक्ट डिटेक्शन या न्यूरल-नेटवर्क परिणाम प्रदान नहीं करता है। सॉफ़्टवेयर को अभी भी एक परिभाषित कार्य, एक संगत एल्गोरिदम और मापने योग्य स्वीकृति मानदंड की आवश्यकता है।

फ़्रेम-उन्मुख कंप्यूटर विज़न टूल के साथ एकीकृत करते समय, एक इवेंट स्ट्रीम को टाइम-विंडो छवि या अन्य प्रतिनिधित्व में परिवर्तित किया जा सकता है। यदि कार्य बारीक अस्थायी जानकारी पर निर्भर करता है तो मूल टाइमस्टैम्प को बनाए रखें। संपूर्ण रूपांतरण और प्रसंस्करण पाइपलाइन का मूल्यांकन करें; अकेले एक आकर्षक पुनर्निर्मित छवि अंतिम अनुप्रयोग की सटीकता या विलंबता स्थापित नहीं करती है।

सेंसर डेटा फ़्यूज़न से पहले समय की योजना बनाएं

तकनीकी संदर्भ

विक्रेता के उदाहरण उनके स्वयं समर्थित पारिस्थितिकी तंत्र का वर्णन करते हैं। चुने गए डिवाइस और परिनियोजन के लिए अनुकूलता और लाइसेंसिंग की पुष्टि करें।

अपने इवेंट-कैमरा एकीकरण की योजना बनाएं।