Olay tabanlı görüntüleme yazılımı neyi işler?

Bir olay kamerası, her aralıkta geleneksel bir video karesi sunmak yerine parlaklıktaki değişiklikleri bildirir. Kodu çözülmüş bir olay tipik olarak bir pikseli, bir polariteyi ve bir zaman damgasını tanımlar. Uygulamanız bu alanların anlamını toplama, filtreleme, kaydetme ve çıkarım yoluyla korumalıdır. olaya dayalı ve çerçeveye dayalı karşılaştırma Bu veri modelinin ne zaman yararlı olduğunu açıklar.

Tasarımdaki üç formatı ayırt edin: sensör veya aktarım kodlaması, yazılım tarafından kullanılan kodu çözülmüş olay gösterimi ve bir algoritmaya aktarılan gösterim. Ham sensör paketlerini, bir dizi kodu çözülmüş olayı ve birikmiş görüntüyü içeren bir dosya farklı amaçlara hizmet eder. Bunlar arasında dönüştürme yapmak, bellek kullanımını, işlem maliyetini ve aşağı akışta mevcut olan zamanlama bilgilerini değiştirebilir.

TemsilŞunun için kullanışlıdır:Entegrasyon sorusu
Ham paketler veya satıcı kaydıEdinme ve kod çözme davranışını yeniden üretmeKonuşlandırılan kod çözücü bu cihazı ve format revizyonunu tam olarak okuyabilir mi?
Kodu çözülmüş etkinliklerFiltreleme, zamanlama analizi ve olaya özgü algoritmalarZaman damgası birimi, saat alanı ve koordinat kuralı nedir?
Zaman yüzeyleri veya voksel benzeri tensörlerYapılandırılmış bir zamansal temsile ihtiyaç duyan algoritmalarHangi geçmiş, gruplama ve normalleştirme ayarlarının çoğaltılması gerekir?
Birikmiş etkinlik görüntüleriGörselleştirme veya uyumlu bir görüntü tabanlı işleme aşamasıBiriktirme penceresi ne kadar gecikme ve bilgi kaybına neden olur?

Olay kamerası SDK’sı nasıl değerlendirilir?

Tam sensör, kamera yazılımı ve ana bilgisayar platformuyla başlayın. Bir masaüstü gösterimi, gömülü bir Linux görüntüsü, bir ARM işlemcisi veya üretim lisansınız için destek sağlamaz. Desteklenen işletim sistemleri, CPU mimarileri, yeniden dağıtım koşulları ve kamera arayüzü gereksinimleri için tedarikçiye danışın. Taşıyıcı kartı devreye almadan önce uygulamayı amaçlanan platformda doğrulayın.

  • Edinme: cihaz keşfi, konfigürasyonu, kod çözme ve hata raporlama.
  • Zamanlama: zaman damgası kaynağı, rollover yönetimi, harici tetikleyiciler ve çoklu cihaz hizalaması.
  • Tekrarlanabilirlik: kayıtlar, konfigürasyon aktarımı ve tanımlanmış bir yazılım sürümü.
  • Dağıtım: başsız çalışma, desteklenen ikili dosyalar, yeniden başlatma davranışı ve lisans koşulları.
  • Gözlemlenebilirlik: olay sayıları, kuyruk derinliği, bırakılan veriler ve ana bilgisayar kaynağı kullanımı.

Açık zamanlama sınırlarına sahip bir işlem hattı oluşturun

EdinmeSensör zamanının kodunu çözün ve koruyun
HazırlanPencereleri filtreleyin, senkronize edin ve oluşturun
Karar verTakip edin veya çıkarım yapın, ardından çıktıya zaman damgası ekleyin

Edinimi pahalı görselleştirme, disk yazma ve model çıkarımlarından ayrı tutun. Aksi takdirde yavaş bir tüketici, algoritma başlamadan önce yeni verileri geciktirebilir. Sınırlı bir kuyruk ve açık bir aşırı yükleme politikası tanımlayın. En eski pencereyi bırakmak, ilgilenilen bölgeyi azaltmak ve hatayla durmak farklı sonuçlar doğurur; uygulamaya uygun davranışı seçin ve gerçekleştiğinde kaydedin.

Gözlemlerin ne zaman gerçekleştiğini açıklamak için sensör zaman damgalarını ve işlem sürelerini ölçmek için monoton bir ana bilgisayar saatini kullanın. Zaman damgalarının ilgisiz saatlerden çıkarılması geçerli bir uçtan uca gecikme üretmez. Kameranın bir IMU veya geleneksel kamerayla birleştirilmesi gerekiyorsa, bölümümüzde açıklanan saat ilişkisini ve kalibrasyon işlemini kurun. sensör füzyon senkronizasyon kılavuzu.

Küçük bir kayıt inceleme örneği

Aşağıdaki Python örneği, desteklenen bir kayıttaki kodu çözülmüş olayları sayar ve zaman damgalarının aralığını bildirir. Belgelenen Metavision akış API'sini kullanır ve uyumlu bir SDK kurulumu ve kaydı gerektirir. Bu bir inceleme örneğidir, Alvexis kamera kıyaslaması veya dedektör değildir.

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

Zaman damgası aralığı ilk gözlemlenen olaydan son gözlemlenen olaya kadar kapsar; dosya süresini, edinme gecikmesini veya işlem hacmini ölçmez. Boş periyotlar ve saat sıfırlamalarının üretimde ayrı ayrı ele alınması gerekir. İkinci bir mühendisin yorumu yeniden üretebilmesi için cihaz yapılandırmasını ve kayıt meta verilerini dosyanın yanında tutun.

Sessiz sahneleri, yoğun sahneleri ve arıza kurtarmayı doğrulayın

Sabit bir sahneyi, temsili hareketi ve kasıtlı olarak zorlu bir sahneyi test edin. Titreme, kamera titreşimi ve dokulu hareket çok farklı olay oranları yaratabilir. Hem tipik davranışı hem de gözlemlediğiniz en kötü durumu kaydedin. Bu iş yükleri bellek ve CPU zamanı için rekabet ettiğinden, depolama ve iletişim etkinken tekrarlayın.

testiKayıtDesteklediği karar
Aynı kaydı tekrar oynatYapılandırma, çıktı farklılıkları ve işlem süresiBir yazılım değişikliği tekrarlanabilir bir şekilde değerlendirilebilir mi?
Sahne etkinliğini artırınKuyruk derinliği, olay kaybı ve çıktı yaşıSistem pik yük altında kullanılabilir durumda mı?
İşleme penceresini değiştirinUygulama doğruluğu ve sensörden çıkışa gecikmeHangi zamanlama/ayrıntı dengesi gereksinime uyuyor?
Cihazın bağlantısını kesin ve yeniden bağlayınKurtarma süresi, saatin sıfırlanması ve kayıt sürekliliğiDağıtılan hizmet öngörülebilir bir şekilde kurtarılabilir mi?

Algoritma bir sinir ağı kullandığında, bir hızlandırıcı seçmeden önce ortaya çıkan tensörü ve desteklenen işleçleri kontrol edin. Bir olay kamerası otomatik olarak bir NPU'ya ihtiyaç duymaz ve bir NPU, bir olay akışını otomatik olarak kabul etmez. Bizim FPGA, NPU ve MPU mimarisi kılavuzu edinme, ön işleme, çıkarım ve uygulama hizmetlerini ayırır.

Yazılım yığınını seçmeden önce sorulan sorular

Normal bir bilgisayarlı görme modelini kullanabilir miyim?

Yalnızca uyumlu bir giriş gösterimi tanımlandıktan ve davranışı doğrulandıktan sonra. Olayların görüntülerde toplanması, görüntü işleme aşamasının yeniden kullanılmasına izin verebilir, ancak veri dağıtımını değiştirir ve bir zamanlama penceresi ekler. Başvurunun tamamını temsili veriler üzerinden değerlendirin.

Çalışan bir dizüstü bilgisayar demosu gömülü uyumluluğu kanıtlar mı?

Hayır. Gerçek hedef platformun CPU mimarisini, işletim sistemini, sensör arayüzünü, sürücüyü, SDK lisansını ve sürekli kaynak kullanımını doğrulayın.

Entegrasyon görüşmesi için ne göndermeliyim?

Kamera veya sensör referansını, örnek kaydını, amaçlanan çıktıyı, kabul edilebilir gecikmeyi, ana bilgisayar platformunu, arayüzü ve dağıtım ortamını gönderin. Bu girdiler, tartışmayı ilk entegrasyon risklerini tanımlamaya yetecek kadar somut hale getiriyor.

Teknik referanslar

Satıcı örnekleri kendi desteklenen ekosistemlerini açıklar. Seçilen cihaz ve dağıtım için uyumluluğu ve lisanslamayı onaylayın.

Olay kamerası entegrasyonunuzu planlayın.