Görüntü işleme ve yapay zeka, düşük güçlü cihazlarda da yaygınlaşıyor. Bu noktada TensorFlow Lite (TFLite), gömülü sistemlerde veya masaüstü uygulamalarda C++ diliyle yüksek performanslı AI işlemleri gerçekleştirmek isteyen geliştiriciler için ideal bir araçtır. Bu makalede TFLite'ın C++ API'leriyle nasıl entegre edildiğini, görüntü işleme projelerinde nasıl kullanıldığını ve performansı nasıl optimize edebileceğinizi adım adım açıklıyoruz.
Ayrıca şu bağlantıdan TensorFlow Lite ile nesne tanıma örneğini görebilirsiniz: https://www.ekasunucu.com/bilgi/tensorflow-lite-c-ile-object-detection-nesne-tanima-ve-coco-label-kullanimi-baslangictan-optimizasyona-kadar-rehber
TensorFlow Lite C++ API ile Başlangıç
Gerekli Dosyalar:
-
.tflite
model dosyası (örneğin: mobilenet_v1.tflite) -
Label dosyası (COCO için:
labelmap.txt
) -
TensorFlow Lite C++ kütüphaneleri (
libtensorflow-lite.a
,header
dosyaları)
Derleme Ortamı:
-
Linux + GCC / CMake
-
Alternatif: Android NDK (gömülü sistemler için)
Temel Kod Yapısı
Model Yükleme:
#include "tensorflow/lite/interpreter.h"
#include "tensorflow/lite/kernels/register.h"
#include "tensorflow/lite/model.h"
std::unique_ptr model = tflite::FlatBufferModel::BuildFromFile("model.tflite");
tflite::ops::builtin::BuiltinOpResolver resolver;
tflite::InterpreterBuilder(*model, resolver)(&interpreter);
interpreter->AllocateTensors();
Giriş Verisi Hazırlama:
float* input = interpreter->typed_input_tensor(0);
// Buraya 224x224x3 normalize edilmiş piksel verisi yüklenir (örneğin OpenCV ile)
Modeli Çalıştırma:
interpreter->Invoke();
Çıkış Alımı:
float* output = interpreter->typed_output_tensor(0);
// output verileri: class_id, score, bbox
Görüntü İşleme için OpenCV Entegrasyonu
cv::Mat img = cv::imread("image.jpg");
cv::resize(img, img, cv::Size(224, 224));
img.convertTo(img, CV_32FC3, 1.0f / 255.0f);
memcpy(input, img.data, sizeof(float) * 224 * 224 * 3);
Örnek Uygulama: Nesne Tespiti
-
Kullanılan Model: SSD MobileNet v1 (COCO eğitimi)
-
Giriş:
image.jpg
-
Çıkış: tespit edilen sınıf, konum ve güven skoru
COCO Label Okuma:
std::vector labels = LoadLabels("labelmap.txt");
std::cout << "Detected class: " << labels[class_id] << std::endl;
Performans İyileştirme Yöntemleri
Yöntem | Açıklama |
---|---|
Quantized model kullanımı | Daha hızlı, daha küçük model |
Delegate kullanımı | XNNPACK, GPU, EdgeTPU destekli hızlandırma |
Thread ayarları | interpreter->SetNumThreads(4); gibi ayarlarla CPU verimi artırılır |
Giriş boyutu küçültme | 224 yerine 160 gibi daha küçük input boyutları ile daha hızlı inference |
Diğer Uygulamalar
Proje | Açıklama |
---|---|
Yüz Tanıma | FaceNet veya BlazeFace model entegrasyonu |
El Hareketi Tanıma | MediaPipe modelleri ile gesture tespiti |
Trafik İşareti Tanıma | Yol kamerası + TFLite ile gerçek zamanlı analiz |
Barkod Tarama | Görüntü üzerinden barkod sınıflandırma |
✅ Sonuç
TensorFlow Lite, C++ diliyle gömülü sistemlerde veya masaüstü uygulamalarda hafif yapay zeka projeleri için güçlü ve optimize bir çözümdür. Görüntü işleme işlemlerinde OpenCV ile kolayca entegre edilir ve gerçek zamanlı nesne tanıma gibi projelerde başarıyla kullanılır. Detaylı uygulama örnekleri için:
TensorFlow Lite C++ ile Object Detection: COCO Label ve Optimizasyon Rehberi