TensorFlow, makine öğrenimi modelleri oluşturmak için çok yönlü bir araçtır.
Bu gönderide, açık kaynaklı bir makine öğrenimi çerçevesi olan TensorFlow ile bir yüz tanıma sisteminin nasıl oluşturulacağına bakacağız. Başarılı bir yüz tanıma sistemi oluşturmak için veri toplama ve hazırlamadan bir modeli eğitmeye ve değerlendirmeye kadar temel süreçleri gözden geçireceğiz.
Kod parçacıkları ve gerçek dünyadan örnekler yardımıyla yüz tanıma oluşturmak için TensorFlow ile ilk elden deneyim kazanacaksınız. Biz devam ederken siz de takip edebilirsiniz.
TensorFlow'a Giriş
TensorFlow ücretsiz ve açık kaynaklı bir kitaplıktır. Veri akışı ve türevlenebilir programlama kullanan sembolik bir matematik araç kutusudur. Derin dahil olmak üzere bir dizi görevi onunla halledebilirsiniz. sinir ağı eğitim.
TensorFlow güçlü ve uyarlanabilirdir. Aynı şekilde, geliştirmek için harika bir araçtır ve makine öğrenimi modellerini dağıtma. Çeşitli katmanlar ve tensör işlemleriyle karmaşık modeller oluşturabilirsiniz. Ayrıca, kitaplıktaki önceden oluşturulmuş modellerde özel ihtiyaçlar için ince ayar yapılabilir.
Ayrıca, TensorFlow çok büyük ve genişleyen bir kullanıcı topluluğuna sahiptir. Dolayısıyla, platformda yeni olan bireyler için çok sayıda bilgi ve yardım var.
TensorFlow şunlar için popülerdir: makine öğrenme kısmen uçtan uca bir iş akışı sağladığı için. Böylece modelleri kolayca oluşturabilir, eğitebilir ve dağıtabilirsiniz. Modelleri belirli taleplere uyacak şekilde geliştirmek ve ölçeklendirmek için araçlar ve stratejiler sağlar. Veri ön işlemeden model dağıtımına kadar değişir.
Yüz Tanıma Nedir?
Yüz tanıma bir Bilgisayar görüşü Bir kişinin kimliğini yüzüne göre tanımlayan görev. Bu teknik, gözlerin, burnun ve ağzın şekli ve dokusu gibi yüz özelliklerini tanır.
Ve bir eşleşmeyi belirlemek için onları bilinen yüzlerden oluşan bir veri tabanıyla karşılaştırır. Yüz tanıma, güvenlik sistemleri, fotoğraf düzenleme ve biyometrik kimlik doğrulama dahil olmak üzere çeşitli kullanımlara sahiptir.
Yüz tanıma algoritmalarının doğruluğu, son yıllarda makine öğrenimindeki atılımların bir sonucu olarak önemli ölçüde arttı.
Gerekli Kitaplıkları İçe Aktarma
Herhangi bir şeye başlamadan önce, modelimiz için gerekli kütüphaneleri içe aktarmamız gerekiyor. Tensorflow (tf), modeli oluşturmak ve eğitmek için içe aktarılır ve kullanılır. <(p>
“numpy” matematiksel hesaplamalar ve veri işleme yapar.
“matplotlib.pyplot” plt olarak içe aktarılır ve bunun için kullanılır veri grafiği ve görselleştirmeler.
Son olarak, "lfw kişileri getir" sklearn'den içe aktarılır. veri kümeleri ve yüz tanıma veri kümesini yüklemek için kullanılır. Bu işlev, scikit-learn araç setinin bir parçasıdır. Bu fonksiyon sayesinde başka bir veri seti yüklemek zorunda kalmadık. Bu zaten sckit-learn'de yerleşiktir.
Ve geniş bir yelpazeye erişmenizi sağlar. makine öğrenimi için veri kümeleri uygulamalar. Bu senaryoda, "Labeled Faces in the Wild" (LFW) veri kümesini almak için fetch lfw people yöntemini kullanıyoruz. İnsanların yüzlerinin fotoğraflarından ve onlarla birlikte gelen etiketlerden oluşur.
Bu kütüphaneler, yüz tanıma modelimizin uygulanması ve değerlendirilmesinde kritik öneme sahiptir.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
Yüz Tanıma Veri Kümesini Ön İşleme ve Yükleme
Bu bölümde, yüz tanıma verilerini önceden işlemek için "kişileri getir" işlevini kullanıyoruz. İlk olarak, “kişi başına minimum yüz=60” seçeneğiyle lfw kişileri getir seçeneğini kullanıyoruz. Bu, veri kümesine yalnızca en az 60 fotoğrafı olan kişileri dahil etmek istediğimizi gösterir. Bu nedenle, modelimizin öğrenmek için yeterli veriye sahip olmasını sağlıyoruz. Ayrıca, bu aşırı uyum tehlikesini azaltır.
Yüzler nesnesindeki veriler ve etiketler daha sonra çıkarılır ve X ve y değişkenlerine atanır. X hol.
Artık önceden işlenmiş verileri ve etiketleri kullanarak yüz tanıma modelimizi eğitmeye hazırız.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
Eğitim ve Test Setlerini Bölme
Bu adımda, sklearn.model seçiminden train test split yöntemini kullanarak yüz tanıma veri setimizi ikiye böldük. Bu ayrımın amacı, eğitimden sonra modelimizin performansını değerlendirmektir.
Tren testi bölme işlevi, X giriş verilerini ve y etiketlerini kabul eder. Ve onları eğitim ve test setlerine ayırır. Bu örnekte test boyutu=0.2'yi seçiyoruz. Bu, verilerin %20'sinin test seti ve %80'inin eğitim seti olarak kullanılacağı anlamına gelir. Ayrıca, kod her gerçekleştirildiğinde verilerin tutarlı bir şekilde bölünmesini sağlamak için rastgele durum=42 kullanırız.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Verilerin Hazırlanması
Verileri ön işlemenin amacı, onu modele giriş için hazırlamaktır. Veriler, bu kodda her veri noktasının 255'e bölünmesiyle önceden işlenir.
Bunu başarmak için bizi motive eden neydi? Normalleştirme, tüm özelliklerin aynı ölçekte olmasını garanti etmek için makine öğreniminde kullanılan bir ön işleme prosedürüdür. Bu senaryoda, 255'e bölmek, verileri normal bir resim verisi normalleştirme adımı olan 0 ila 1 aralığına ölçeklendirir.
Bu, modelin yakınsamasını hızlandırır ve performansını artırabilir.
X_train = X_train / 255.0
X_test = X_test / 255.0
Modu Oluşturma
Bir resimde yüzü görünen kişiyi teşhis etmek istiyoruz. Bu durumda, genellikle yoğun ağ olarak bilinen tam bağlantılı bir ağ kullanacağız. Modeli oluşturmak için kullanılan bir yapay sinir ağıdır.
Yapay sinir ağları, insan beyninin nasıl çalıştığına ve organize edildiğine göre modellenmiştir. Bağlantılı bilgi işleme düğümlerinden veya nöronlardan oluşurlar. Yoğun bir ağdaki bir katmandaki her nöron, bir üst katmandaki her nöronla bağlantılıdır.
Bu kodda modelin dört katmanı vardır. Bir sonraki katmana beslenmek üzere, giriş verileri birinci katmanda tek boyutlu bir dizi halinde düzleştirilir. Aşağıdaki iki katmandaki 128 ve 64 nöron, buna göre tamamen bağlantılıdır.
ReLU aktivasyon fonksiyonu, bu katmanlar tarafından kullanılan benzersiz bir aktivasyon fonksiyonudur. Bununla, modelin girdiler ve çıktılar arasındaki doğrusal olmayan korelasyonları öğrenmesini sağlayabiliriz. Son katman, tahminler yapmak için softmax aktivasyon fonksiyonunu kullanır. Ve potansiyel sınıf sayısı kadar nörona sahip tamamen bağlantılı bir katmandır.
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(62 * 47,)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(len(target_names), activation='softmax')
])
Modelin Derlenmesi
Model, “derleme” işlevi kullanılarak derlenir. Modeli eğitim için hazırlamamız gerekiyor. Bu nedenle, modeli değerlendirmek için kullanılacak optimize ediciyi, kayıp fonksiyonunu ve metrikleri tanımlayacağız.
Eğitim sırasında, optimize edici modelin parametrelerini değiştirmekten sorumludur. "Adam" optimize edici, popüler bir derin öğrenme optimizasyon tekniğidir.
Modelin eğitim verileri üzerindeki performansını değerlendirmek için kayıp işlevini kullanıyoruz. Hedef etiketler, tek sıcak kodlanmış vektörler yerine görüntünün sınıfını yansıtan tamsayılar olduğundan, "seyrek kategorik çapraz entropi" kayıp işlevi uygundur.
Son olarak, modeli değerlendirmek için metrikleri, bu durumda "doğruluğu" tanımlarız.
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Model Eğitimi
Modeli eğitmek için "fit" işlevini kullanacağız.
Eğitim verilerini (X treni) ve ilgili etiketleri (y treni) sağlamanın yanı sıra çalışacak dönem (yineleme) sayısını 10 olarak ayarlayacağız. Eğitim prosedürü, bir kaybı (arasındaki fark) azaltmak için model ağırlıklarını değiştirir. tahmin edilen ve gerçek etiketler) ve eğitim verilerinin doğruluğunu artırır.
model.fit(X_train, y_train, epochs=10)
Model Değerlendirmesi
Şimdi, eğitilmiş modeli test verileri üzerinde değerlendirmemiz gerekiyor. Modelin performansını değerlendirmek için test kaybı ve test doğruluğu kullanılır. Test verileri X testi ve test etiketleri y testi üzerinde, "model.evaluate işlevini" çağırmamız gerekir.
Fonksiyon, test doğruluğunu ve test kaybını verir. Sırasıyla test kaybı ve test doğruluğu değişkenleri bu değerleri içerir. Son olarak, test doğruluğunun çıktısını almak için "yazdır" işlevini kullanırız.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
Sınıfları Tahmin Etme ve Tahmin Edilen Sınıfları Alma
Algoritma, eğitim modelini ve test verilerini kullanarak tahminler yapar. Test verileri “model.predict” yöntemine geçirildiğinde, test setindeki her resim için bir dizi tahmin çıktısı verir.
Her bir resim için hedef sınıf adı daha sonra tahmin edilen en büyük olasılığa sahip dizini tanımlamak için "np.argmax" işlevi kullanılarak "hedef adlar" listesinden alınır. Bu indeks daha sonra her görüntü için tahmin edilen sınıfı belirlemek için kullanılır.
Bir liste kavrayışı kullanılarak, "tahminler" dizisindeki tüm tahminler bu yönteme tabi tutularak "öngörülen sınıflar" listesi elde edilir.
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
Tahminleri Görselleştirme
Artık modelimizin nasıl göründüğünü görebiliriz.
Modelin ne kadar iyi çalıştığını değerlendirmek için ilk 10 fotoğraf ve tahminleri gösterilecek. Fotoğrafları gri tonlamalı olarak çizecek ve hem görüntünün gerçek sınıfını hem de matplotlib.pyplot modülünü kullanan model tarafından tahmin edilen sınıfı gösterecektir.
"imshow" işlevi, ilk 10 test seti fotoğrafının her birini çizmek için for döngüsü tarafından kullanılır. Sırasıyla görüntünün gerçek sınıfını ve tahmin edilen sınıfını belirlemek için hedef adları[y test[i]] ve tahmin edilen sınıflar[i] kullanılır. Her arsanın başlıkları daha sonra bu sınıflandırmalarla belirtilir.
Son olarak, çizim plt.show() yöntemi kullanılarak görüntülenir.
for i in range(10):
plt.imshow(X_test[i].reshape(62, 47), cmap='gray')
plt.title(f"True: {target_names[y_test[i]]}, Predicted:{predicted_classes[i]}")
plt.show()
Sarmak
TensorFlow, makine öğrenimi modelleri oluşturmak için eksiksiz ve esnek bir ortam sunar.
Belirli gereksinimleri karşılamak için modele ince ayar yapılarak veya makine öğrenimindeki yeni gelişmeler eklenerek modelin doğruluğu daha da artırılabilir.
TensorFlow ve yüz tanıma, gelecekte güvenlik sistemleri, biyometrik kimlik doğrulama ve sağlık hizmetleri gibi sektörlerde giderek daha fazla kullanılacaktır. Çok yakında büyüleyici yenilikler göreceğiz.
Yorum bırak