Bunu Neden İnşa Ettim?
"Bu pipeline, `OpenCV-Face-Features-Toolkit-For-ML-cpp` projem tarafından üretilen normalize edilmiş yüz veri setlerini (dataset) işlemek ve sınıflandırmak için uç nokta (downstream) motoru olarak tasarlandı. Yüz tanımada tek bir ML mimarisine güvenmek genellikle uzamsal aşırı öğrenmeye (overfitting) veya varyans sorunlarına yol açar. Geleneksel istatistiksel modeller (SVM/RF) ile derin uzamsal özellik çıkarıcıların (CNN) tahminlerini matematiksel olarak birleştirerek bireysel model sapmalarını (bias) minimize etmek için bu ensemble yaklaşımını kurguladım."
Mimari & Kararlar
Veri yükleme katmanı, girdi matrislerini 100x100 gri tonlamalı dizilere normalize eder. Scikit-Learn ve TensorFlow farklı tensör geometrileri beklediği için (1D düzleştirilmiş diziler vs. 2D uzamsal tensörler), `BaseEstimator` ve `ClassifierMixin` sınıflarından miras alan özel bir `KerasClassifierWrapper` inşa ettim. Bu wrapper, TF/Keras hesaplama grafiğini (computational graph) doğrudan Scikit-Learn'ün `VotingClassifier` yapısına entegre eder. Sistem, tahmin olasılık dağılımlarını (`predict_proba`) soft-voting mekanizmasıyla hesaplar. Son olarak modeller, çıkarsama (inference) motorunu Python/TensorFlow runtime'ından izole edip C++ ortamlarında (edge deployment) çalıştırılabilmesi için ONNX formatında (opset 9 ve 11) serileştirilir.
Temel Özellikler
- 01.`OpenCV-Face-Features-Toolkit-For-ML-cpp` aracı tarafından üretilen normalize veri setlerinin doğrudan içeri alınması ve sınıflandırılması
- 02.TensorFlow CNN'lerini Scikit-Learn ensemble pipeline'ları içinde orkestre etmek için özel `BaseEstimator` köprü katmanı
- 03.SVM, Random Forest ve CNN olasılık dağılımları üzerinden maksimum olabilirlik (maximum likelihood) hesaplayan soft-voting ensemble sınıflandırıcı
- 04.Çapraz platform ve runtime bağımsız inference (çıkarsama) için otonom ONNX graph serileştirme hattı