Ana içeriğe atla
Bu bölümde, kendi veri setinizle veya hazır olarak edindiğiniz görüntü işleme modellerini nasıl kullanacağınız hakkında bilgi verilecektir.
sudo su
source /opt/t3-edgeai-env
Bu komutlar, root kullanıcısına geçmenizi ve Edge AI için gerekli olan ortam değişkenlerini yükleminizi sağlar.
Ortam değişkeni dosyası yoksa Edge AI Kurulumu bölümünden ilgili paketi kurabilirsiniz.

Edge AI GStreamer Apps

Bu proje, Texas Instruments tarafından sağlanan ve T3 Gemstone O1 gibi cihazlarda yapay zeka uygulamalarını hızla geliştirmek için kullanılabilecek bir açık kaynak referans uygulamaları koleksiyonudur. Temel olarak, GStreamer tabanlı bir mimariyle çalışmakta olup Texas Instruments işlemcileri ve SoC donanımları üzerinde görüntü işleme, nesne algılama, akış (streaming) ve diğer yapay zeka iş akışlarını gerçekleştirmek için hazır çözümler sunmaktadır. Kurulum bölümündeki Edge AI kurulumunu yaptığınız zaman /opt/edgeai-gst-apps klasöründen bu projeye erişebilirsiniz. Configs klasörü içinde birden fazla uygulama için örnekler mevcuttur. Python ve C++ dillerinde projeyi çalıştırmanıza olanak sağlamaktadır. Örneğin configs/image_classification.yaml içerisinde yer alan config aşağıdaki gibidir.
title: "Image Classification"
log_level: 2
inputs:
    input0:
        source: /dev/video-usb-cam0
        format: jpeg
        width: 1280
        height: 720
        framerate: 30
    input1:
        source: /opt/edgeai-test-data/videos/video0_1280_768.h264
        format: h264
        width: 1280
        height: 768
        framerate: 30
        loop: True
    input2:
        source: /opt/edgeai-test-data/images/%04d.jpg
        width: 1280
        height: 720
        index: 0
        framerate: 1
        loop: True
models:
    model0:
        model_path: /opt/model_zoo/TVM-CL-3090-mobileNetV2-tv
        topN: 5
    model1:
        model_path: /opt/model_zoo/TFL-CL-0000-mobileNetV1-mlperf
        topN: 5
    model2:
        model_path: /opt/model_zoo/ONR-CL-6360-regNetx-200mf
        topN: 5
outputs:
    output0:
        sink: kmssink
        width: 1920
        height: 1080
        overlay-perf-type: graph
    output1:
        sink: /opt/edgeai-test-data/output/output_video.mkv
        width: 1920
        height: 1080
    output2:
        sink: /opt/edgeai-test-data/output/output_image_%04d.jpg
        width: 1920
        height: 1080
    output3:
        sink: remote
        width: 1920
        height: 1080
        port: 8081
        host: 127.0.0.1
        encoding: jpeg
        overlay-perf-type: graph

flows:
    flow0: [input2,model1,output0,[320,150,1280,720]]
Yukarıdaki YAML dosyasını kendi ihtiyaçlarına göre düzenleyebilirisiniz.
TITLE
varsayılan:"Image Classification"
gerekli
Uygulamanın başlığı. Log çıktılarında ve arayüzde referans olarak kullanılır.
LOG_LEVEL
varsayılan:"2"
gerekli
Log detay seviyesini belirler. 0: minimal, 5: debug
INPUTS
gerekli
İşlenecek giriş veri kaynakları.
INPUT_SOURCE
varsayılan:"<cihaz-yolu>,<dosya-yolu>"
gerekli
Giriş kaynağının yolu.
INPUT_FORMAT
varsayılan:"jpeg,h264"
gerekli
Giriş veri formatı. Örneğin: jpeg, h264
INPUT_WIDTH
varsayılan:"1280"
gerekli
Giriş görüntü genişliği (piksel)
INPUT_HEIGHT
varsayılan:"720"
gerekli
Giriş görüntü yüksekliği (piksel)
INPUT_FRAMERATE
varsayılan:"30"
gerekli
Giriş kare hızı (FPS)
INPUT_LOOP
varsayılan:"True,False"
Döngü ile tekrar edecek mi?
MODELS
gerekli
Kullanılacak modeller
MODEL_PATH
varsayılan:"<dosya-yolu>"
gerekli
Modelin dosya yolu.
MODEL_TOPN
varsayılan:"5"
gerekli
Modelden alınacak top-N tahmin sayısı.
OUTPUTS
gerekli
Çıkış hedefleri
OUTPUT_SINK
varsayılan:"remote,kmssink,<dosya-yolu>"
gerekli
Çıkış yolu
OUTPUT_WIDTH
varsayılan:"1920"
gerekli
Streaming çözünürlüğü genişliği (piksel)
OUTPUT_HEIGHT
varsayılan:"1080"
gerekli
Streaming çözünürlüğü yüksekliği (piksel)
OUTPUT_HOST
varsayılan:"127.0.0.1"
Streaming yapılacak host IP
OUTPUT_PORT
varsayılan:"8081"
Streaming port numarası
OUTPUT_ENCODING
varsayılan:"jpeg,h264"
gerekli
Streaming görüntü formatı
OUTPUT_OVERLAY_PERF_TYPE
varsayılan:"graph"
Performans grafiği overlay türü
FLOWS
gerekli
Veri akışını tanımlar.
FLOW
varsayılan:"[input2, model1, output0, [320,150,1280,720]]"
gerekli
Veri akışını tanımlar: input → model → output. Opsiyonel olarak ROI (x,y,width,height) belirtebilirsiniz.
Görüntü işleme adımlarına başlamadan önce root olarak oturum açtığınızdan ve ortam değişkenlerini yüklediğinizden emin olunuz.
cd /opt/edgeai-gst-apps/apps_python && ./app_edgeai.py ../configs/image_classification.yaml
Görüntü işlemeyi sonra erdirmek için bir defa CTRL + C kombinasyonuna basarak sonlandırabilirsiniz. YAML dosyasında çıkış dosyasında değişiklik yapmadıysanız /opt/edgeai-test-data/output/output_video.mkv üzerinden çıktıya erişebilirsiniz.

Mevcut Python Kodunuza Entegre Etme

TensorFlow Lite, modelleri varsayılan olarak cihazın CPU’sunda (Merkezi İşlem Birimi) çalıştırır. “Delegate” (Temsilci/Vekil), TFLite modelinizdeki hesaplamaların bir kısmını veya tamamını CPU yerine daha özelleşmiş bir donanıma “devretme” (delegate etme) mekanizmasıdır. Bu özel donanımları (örneğin T3 Gemstone O1 Geliştirme Kartı içerisinde yer alan görüntü işleme hızlandırıcıları) kullanabilmek için gereken paylaşımlı kütüphane dosyasını (.so, .dll vb.) yüklemeniz gerekmektedir.
Görüntü işleme adımlarına başlamadan önce root olarak oturum açtığınızdan ve ortam değişkenlerini yüklediğinizden emin olunuz.
Python
#!/usr/bin/python3

import numpy as np
from tflite_runtime.interpreter import Interpreter
from tflite_runtime.interpreter import load_delegate

# 1. Edge AI delegate kütüphanesini yükle
try:
    edgetpu_delegate = load_delegate('/usr/lib/libtidl_tfl_delegate.so')
    delegates_list = [edgetpu_delegate]
    print("Edge TPU bulundu ve yüklendi.")
except (ValueError, OSError):
    delegates_list = [] # TPU bulunamazsa, normal CPU'da çalıştır
    print("Edge TPU bulunamadı, CPU kullanılacak.")

# 2. Modeli yükle ve Interpreter'ı başlatırken delegate'i kullan
interpreter = Interpreter(
    model_path="modelinizin_adi.tflite",
    experimental_delegates=delegates_list
)

# 3. Kalan standart TFLite adımları...
interpreter.allocate_tensors()
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()

# ... (Giriş verisini ayarla, modeli çalıştır, vb.)