Skip to main content
DEEPX, hızlandırıcı modülünü kullanan uygulamaların hızlıca geliştirilebilmesi için iki ayrı referans proje sunmaktadır. DX-APP, tek başına çalışabilen örnek uygulama şablonları içermektedir. DX-STREAM ise GStreamer tabanlı gerçek zamanlı video işleme hatları kurmaya olanak tanımaktadır.
Bu bölümdeki komutların çalıştırılabilmesi için sürücü ve çalışma zamanı kurulumunun tamamlanmış olması gerekmektedir. Kurulumu dxrt-cli -s komutu ile doğrulayabilirsiniz.

DX-APP Örnek Uygulamaları

DX-APP; nesne tespiti, sınıflandırma, poz tahmini, segmentasyon, derinlik tahmini ve yüz tanıma gibi görevler için hazır C++ ve Python şablonları içermektedir.
1

Projenin İndirilmesi

2

Bağımlılıkların Kurulumu

Derleme araçları ve OpenCV kütüphanesini kuran betiği çalıştırınız.
3

Model ve Örnek Videoların İndirilmesi

Örnek uygulamalarda kullanılan modeller ve videolar setup.sh betiği ile indirilmektedir.
Modeller assets/models, videolar ise assets/videos klasörüne indirilmektedir.
4

Projenin Derlenmesi

Derleme sonucunda çalıştırılabilir dosyalar bin klasöründe oluşturulmaktadır.
Yalnızca ihtiyaç duyduğunuz uygulamayı derlemek isterseniz ./build.sh --target yolov9s_sync biçiminde hedef belirtebilirsiniz. Kullanılabilir hedefleri ./build.sh --target list komutu ile listeleyebilirsiniz.
5

Örneklerin Çalıştırılması

Tüm örnekleri menü üzerinden denemek için demo betiğini kullanabilirsiniz.
Belirli bir örneği doğrudan çalıştırmak da mümkündür.

Ortak Komut Satırı Seçenekleri

DX-APP içerisindeki tüm örnekler aynı komut satırı seçeneklerini kullanmaktadır.
--image, --video, --camera ve --rtsp seçenekleri birbirinin alternatifidir ve yalnızca biri kullanılabilir. Hiçbiri belirtilmediğinde göreve uygun örnek bir görüntü otomatik olarak seçilmektedir.
Geliştirme kartına ekran bağlı değilse veya SSH üzerinden çalışıyorsanız --no-display seçeneğini kullanmanız gerekmektedir. Sonucu görüntülemek için --save seçeneği ile çıktıyı dosyaya kaydedebilirsiniz.

Senkron ve Asenkron Şablonlar

Örnek uygulamalar _sync ve _async olmak üzere iki biçimde sunulmaktadır.
  • Senkron (_sync) şablonlar; ön işleme, çıkarım ve son işleme adımlarını sırayla yürütmektedir. Tek görüntü üzerinde çalışmak ve hata ayıklamak için uygundur.
  • Asenkron (_async) şablonlar; NPU N numaralı kareyi işlerken CPU’nun N+1 numaralı kareyi hazırlamasına olanak tanımaktadır. Video akışlarında kare hızını en üst düzeye çıkarmak için tercih edilmelidir.

DX-STREAM ile Video İşleme

DX-STREAM, GStreamer altyapısına DEEPX NPU desteği ekleyen eklenti kümesidir. Bu sayede kamera, video dosyası veya RTSP akışından gelen görüntüler bir hat (pipeline) içerisinde işlenebilmektedir.

Eklenti Elemanları

Kurulu eklentileri ve özelliklerini gst-inspect-1.0 aracı ile inceleyebilirsiniz.

Örnek Hat

Aşağıdaki hat bir video dosyasını okumakta, YOLO modeli ile nesne tespiti yapmakta ve sonuçları görüntü üzerine çizerek bir video dosyasına kaydetmektedir.
Oluşturulan çıktı /home/gemstone/output.avi konumuna kaydedilmiştir. Bu dosya üzerinden erişebilirsiniz.

Örnek hattın çıktısı: YOLOv7 ile tespit edilen nesneler kareler üzerine çizilmektedir.

Yukarıdaki görsel, dokümantasyonda GIF olarak paylaşılabilmesi için çözünürlüğü ve süresi düşürülerek oluşturulmuştur. Hattın ürettiği gerçek çıktı, kaynak videonun çözünürlüğünde ve tam uzunluktadır.
Hattın çalışma mantığı aşağıdaki gibidir.
Video kaynağını okur ve çözer. uri özelliğine işlenecek dosyanın yolu verilmektedir.
Kareleri resize-width ve resize-height değerlerine göre yeniden boyutlandırır. preprocess-id değeri, sonraki dxinfer elemanı ile eşleştirme yapmak için kullanılmaktadır.
model-path ile belirtilen .dxnn modelini NPU üzerinde çalıştırır.
library-file-path ile belirtilen paylaşımlı kütüphaneyi kullanarak model çıktısını çözümler. Kullanılacak kütüphane, model ailesine göre değişmektedir.
Tespit sonuçlarını kare üzerine çizer.
Kareleri kodlayıcının beklediği renk biçimine dönüştürür, quality=85 değeri ile JPEG olarak sıkıştırır ve elde edilen kareleri AVI kapsayıcısında birleştirir.
Oluşturulan videoyu location ile belirtilen dosyaya yazar.
Ekran bağlı sistemlerde çıktıyı dosyaya kaydetmek yerine videoconvert ! fpsdisplaysink sync=false ile kare hızı bilgisi eşliğinde doğrudan ekranda görüntüleyebilirsiniz. X11 ortamı bulunmayan kurulumlarda ximagesink yerine kmssink tercih edilmelidir.
queue elemanları hattın asenkron çalışmasını sağlamaktadır. Bu elemanlar kaldırıldığında her aşama bir öncekinin bitmesini beklediği için kare hızı düşmektedir.

Nesne Takibi Eklenmesi

Nesne tespitinin ardından dxtracker elemanı eklendiğinde, tespit edilen nesnelere kareler arasında kimlik (track ID) atanmaktadır.
dxtracker elemanı sınırlayıcı kutu (bounding box) bilgisine ihtiyaç duymaktadır. Bu nedenle hat içerisinde nesne tespiti adımından sonra yer almalıdır.

Kaynaklar

DX-APP

Örnek uygulama şablonları

DX-STREAM

GStreamer eklentileri ve hazır hatlar

DX-RT

Çalışma zamanı kaynak kodu ve API örnekleri

DX Model Zoo

Hazır model deposu

deepx-npu-sdk

T3 Gemstone için çekirdek modülü, DX-RT çalışma zamanı ve GStreamer eklentisi Debian paketlerini üreten derleme tarifleri

DEEPX Model Zoo

Önceden derlenmiş .dxnn modellerinin listelendiği ve indirilebildiği resmi model deposu