TensorFlow maşın öyrənmə modelləri yaratmaq üçün çox yönlü bir vasitədir.
Bu yazıda açıq mənbəli maşın öyrənmə çərçivəsi olan TensorFlow ilə üz tanıma sisteminin necə yaradılacağına baxacağıq. Uğurlu üz tanıma sisteminin yaradılmasında məlumatların toplanması və hazırlanmasından tutmuş modelin hazırlanmasına və qiymətləndirilməsinə qədər əsas prosesləri nəzərdən keçirəcəyik.
Kod parçaları və real dünya nümunələrinin köməyi ilə sifətin tanınması yaratmaq üçün TensorFlow ilə birinci əldən təcrübə əldə edəcəksiniz. Davam etdikcə izləməyinizi xahiş edirik.
TensorFlow'a giriş
TensorFlow pulsuz və açıq mənbəli kitabxanadır. Məlumat axını və diferensiallaşdırıla bilən proqramlaşdırmadan istifadə edən simvolik riyaziyyat alətlər qutusudur. Onunla dərinlik də daxil olmaqla bir sıra tapşırıqların öhdəsindən gələ bilərsiniz neyron şəbəkə təlim.
TensorFlow güclü və uyğunlaşa bilir. Eynilə, inkişaf etdirmək üçün əla vasitədir və maşın öyrənmə modellərinin tətbiqi. Bir neçə təbəqə və tenzor əməliyyatları ilə mürəkkəb modellər qura bilərsiniz. Həmçinin, kitabxanada əvvəlcədən qurulmuş modellər xüsusi ehtiyaclar üçün dəqiq tənzimlənə bilər.
Bundan əlavə, TensorFlow nəhəng və genişlənən istifadəçi icmasına malikdir. Beləliklə, platformada yeni olan şəxslər üçün çoxlu məlumat və yardım var.
TensorFlow üçün məşhurdur maşın təlim qismən başa çatan iş axını təmin etdiyi üçün. Beləliklə, siz asanlıqla modellər qura, öyrədə və yerləşdirə bilərsiniz. O, xüsusi tələblərə uyğun olaraq modelləri təkmilləşdirmək və miqyaslaşdırmaq üçün alətlər və strategiyalar təqdim edir. O, verilənlərin əvvəlcədən işlənməsindən tutmuş model yerləşdirməsinə qədər dəyişir.
Üz tanıma nədir?
Üz tanıma a kompüter görmə insanın sifətinə görə şəxsiyyətini müəyyən edən vəzifə. Bu texnika gözlərin, burunun və ağzın forması və quruluşu kimi üz xüsusiyyətlərini tanıyır.
Və uyğunluğu müəyyən etmək üçün onları tanınmış simalar bazası ilə müqayisə edir. Üzün tanınması təhlükəsizlik sistemləri, fotoşəkillərin təşkili və biometrik autentifikasiya da daxil olmaqla bir neçə məqsədə malikdir.
Üz tanıma alqoritmlərinin dəqiqliyi son illərdə maşın öyrənməsində irəliləyişlər nəticəsində əhəmiyyətli dərəcədə artmışdır.
Lazımi Kitabxanaların idxalı
Hər hansı bir işə başlamazdan əvvəl modelimiz üçün lazım olan kitabxanaları idxal etməliyik. Tensorflow (tf) modeli yaratmaq və öyrətmək üçün idxal edilir və istifadə olunur. <(p>
“numpy” riyazi hesablamalar və məlumatların işlənməsini həyata keçirir.
“matplotlib.pyplot” plt kimi idxal olunur və üçün istifadə olunur məlumat qrafiki və vizuallaşdırma.
Nəhayət, “Ftch lfw people” sklearn-dan idxal edilir. datasets və sifətin tanınması verilənlər bazasını yükləmək üçün istifadə olunur. Bu funksiya scikit-learn alət dəstinin bir hissəsidir. Bu funksiya sayəsində başqa dataset yükləməli olmadıq. Bu, artıq sckit-learn-da qurulub.
Və bu, sizə geniş çeşiddə çıxış imkanı verir maşın öyrənməsi üçün verilənlər dəstləri tətbiqlər. Bu ssenaridə biz “Vəhşi Təbiətdə Etiketli Üzlər” (LFW) məlumat dəstini əldə etmək üçün lfw insanları götür metodundan istifadə edirik. Buraya insanların üzlərinin fotoşəkilləri və onlarla birlikdə gələn etiketlər daxildir.
Bu kitabxanalar üz tanıma modelimizin həyata keçirilməsində və qiymətləndirilməsində mühüm əhəmiyyət kəsb edir.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
Üz Tanıma Data Setinin Əvvəlcədən İşlənməsi və Yüklənməsi
Bu hissədə biz sifətin tanınması məlumatlarını əvvəlcədən emal etmək üçün “İnsanları gətir” funksiyasından istifadə edirik. Birincisi, biz “adam başına min üz = 60” seçimi ilə lfw adamları gətirməkdən istifadə edirik. Bu onu göstərir ki, biz verilənlər bazasına yalnız ən azı 60 fotoşəkili olan şəxsləri daxil etmək istəyirik. Beləliklə, modelimizin öyrənmək üçün adekvat məlumatlara malik olmasını təmin edirik. Bundan əlavə, bu, həddindən artıq uyğunlaşma riskini azaldır.
Sonra üzlər obyektindən verilənlər və etiketlər çıxarılır və X və y dəyişənlərinə təyin edilir. X hol.
İndi biz əvvəlcədən işlənmiş məlumat və etiketlərdən istifadə edərək sifətin tanınması modelimizi öyrətməyə hazırıq.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
Təlim və Test Setlərinin Ayrılması
Bu addımda biz sklearn.model seçimindən qatar testinin bölünməsi metodundan istifadə edərək üz tanıma verilənlər bazamızı iki yarıya böldük. Bu bölünmənin məqsədi təlimdən sonra modelimizin performansını qiymətləndirməkdir
Qatar testinin bölünməsi funksiyası giriş məlumatları X və y etiketləri kimi qəbul edir. Və onları təlim və test dəstlərinə ayırır. Bu nümunədə test ölçüsü=0.2 seçirik. Bu o deməkdir ki, məlumatların 20%-i test toplusu, 80%-i isə təlim toplusu kimi istifadə olunacaq. Bundan əlavə, kodun hər yerinə yetirilməsində verilənlərin ardıcıl olaraq bölünməsini təmin etmək üçün təsadüfi vəziyyət=42 istifadə edirik.
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)
Məlumatların Hazırlanması
Məlumatların əvvəlcədən işlənməsinin məqsədi onu modelə daxil olmaq üçün hazırlamaqdır. Bu kodda verilənlər hər bir məlumat nöqtəsini 255-ə bölmək yolu ilə əvvəlcədən işlənir.
Buna nail olmaq üçün bizi nə motivasiya etdi? Normallaşdırma, bütün xüsusiyyətlərin eyni miqyasda olmasını təmin etmək üçün maşın öyrənməsində istifadə olunan bir ön emal prosedurudur. Bu ssenaridə, 255-ə bölmək, məlumatları 0-dan 1-ə qədər diapazona qədər miqyaslandırır ki, bu da adi şəkil məlumatlarının normallaşdırılması addımıdır.
Bu, modelin yaxınlaşmasını sürətləndirir və onun performansını artıra bilər.
X_train = X_train / 255.0
X_test = X_test / 255.0
Rejimin yaradılması
Şəkildə üzü görünən şəxsi müəyyənləşdirmək istəyirik. Bu halda biz çox vaxt sıx şəbəkə kimi tanınan tam qoşulmuş şəbəkədən istifadə edəcəyik. Bu modeli yaratmaq üçün istifadə edilən süni neyron şəbəkəsidir.
Süni neyron şəbəkələri insan beyninin necə işlədiyinə və təşkil edildiyinə görə modelləşdirilir. Onlar məlumat emal edən qovşaqlardan və ya əlaqəli neyronlardan ibarətdir. Sıx bir şəbəkədəki təbəqədəki hər bir neyron, yuxarıdakı təbəqədəki hər bir neyronla əlaqələndirilir.
Modelin bu kodda dörd qatı var. Növbəti təbəqəyə daxil olmaq üçün giriş məlumatları birinci təbəqədə bir ölçülü massivdə düzəldilir. Aşağıdakı iki təbəqədəki 128 və 64 neyron, müvafiq olaraq, tamamilə bağlıdır.
ReLU aktivləşdirmə funksiyası bu təbəqələr tərəfindən istifadə edilən unikal aktivləşdirmə funksiyasıdır. Bununla, giriş və çıxışlar arasında qeyri-xətti korrelyasiya öyrənmək üçün modeli əldə edə bilərik. Sonuncu təbəqə proqnozlar vermək üçün softmax aktivləşdirmə funksiyasından istifadə edir. Və potensial siniflər olduğu qədər çox neyronla tam əlaqəli bir təbəqədir.
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 tərtibi
Model “kompilyasiya” funksiyasından istifadə etməklə tərtib edilir. Modeli məşq üçün hazırlamalıyıq. Beləliklə, modeli qiymətləndirmək üçün istifadə ediləcək optimallaşdırıcı, zərər funksiyası və ölçüləri müəyyən edəcəyik.
Təlim zamanı optimallaşdırıcı modelin parametrlərinin dəyişdirilməsinə cavabdehdir. "Adam" optimallaşdırıcısı məşhur dərin öyrənmə optimallaşdırma texnikasıdır.
Təlim məlumatlarında modelin performansını qiymətləndirmək üçün zərər funksiyasından istifadə edirik. Hədəf etiketləri bir-isti kodlanmış vektorlar deyil, təsvirin sinfini əks etdirən tam ədədlər olduğundan, “seyrək kateqoriyalı çarpazentropiya” itki funksiyası əlverişlidir.
Nəhayət, modeli qiymətləndirmək üçün ölçüləri, bu halda "dəqiqliyi" müəyyənləşdiririk.
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Model Təlimi
Modeli öyrətmək üçün “fit” funksiyasından istifadə edəcəyik.
Biz məşq datasını (X qatarı) və əlaqəli etiketləri (y qatarı) təqdim edəcəyik, həmçinin işləmək üçün dövrlərin (iterasiyaların) sayını 10 olaraq təyin edəcəyik. Təlim proseduru itkini azaltmaq üçün model çəkilərini dəyişdirir (aralarındakı fərq) proqnozlaşdırılan və real etiketlər) və təlim məlumatlarının dəqiqliyini təkmilləşdirin.
model.fit(X_train, y_train, epochs=10)
Modelin qiymətləndirilməsi
İndi test məlumatlarında öyrədilmiş modeli qiymətləndirməliyik. Test itkisindən istifadə edirik və test dəqiqliyi modelin performansını qiymətləndirmək üçün istifadə olunur. Test məlumatı X testində və test etiketlərində y testində “model.qiymətləndirmə funksiyası”nı çağırmalıyıq.
Funksiya test dəqiqliyini və sınaq itkisini çıxarır. Dəyişənlərin test itkisi və test dəqiqliyi müvafiq olaraq bu dəyərləri ehtiva edir. Nəhayət, test dəqiqliyini çıxarmaq üçün “çap” funksiyasından istifadə edirik.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
Dərsləri proqnozlaşdırmaq və proqnozlaşdırılan dərsləri əldə etmək
Təlim modelindən və test məlumatlarından istifadə edərək alqoritm proqnozlar verir. Test məlumatları “model.predict” metoduna ötürüldükdə, test dəstindəki hər bir şəkil üçün bir sıra proqnozlar verir.
Hər bir şəkil üçün hədəf sinif adı daha sonra ən böyük proqnozlaşdırılan ehtimala malik indeksi müəyyən etmək üçün “np.argmax” funksiyasından istifadə edərək “hədəf adları” siyahısından götürülür. Bu indeks daha sonra hər bir şəkil üçün proqnozlaşdırılan sinfi müəyyən etmək üçün istifadə olunur.
Siyahının başa düşülməsindən istifadə edərək, "proqnozlar" massivindəki bütün proqnozlar bu üsula məruz qalır və nəticədə "proqnozlaşdırılan siniflər" siyahısı yaranır.
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
Proqnozların vizuallaşdırılması
İndi modelimizin necə göründüyünü görə bilərik.
Modelin nə dərəcədə yaxşı olduğunu qiymətləndirmək üçün ilk 10 fotoşəkil və onların proqnozları göstəriləcək. O, fotoşəkilləri boz rəngdə tərtib edəcək və həm şəklin faktiki sinfini, həm də matplotlib.pyplot modulundan istifadə edərək model tərəfindən proqnozlaşdırılan sinfi göstərəcək.
“imshow” funksiyası for loopu tərəfindən ilk 10 sınaq dəsti fotoşəkilinin hər birini çəkmək üçün istifadə olunur. Hədəf adları[y test[i]] və proqnozlaşdırılan siniflər[i] müvafiq olaraq şəklin faktiki sinfini və proqnozlaşdırılan sinifini müəyyən etmək üçün istifadə olunur. Sonra hər bir süjetin başlıqları bu təsnifatlarla göstərilir.
Nəhayət, süjet plt.show() metodundan istifadə etməklə göstərilir.
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()
Wrap Up
TensorFlow maşın öyrənmə modelləri yaratmaq üçün tam və çevik mühit təklif edir.
Xüsusi tələblərə cavab vermək üçün modeli incə tənzimləməklə və ya maşın öyrənməsində yeni inkişaflar əlavə etməklə, modelin dəqiqliyi daha da artırıla bilər.
TensorFlow və sifətin tanınması, ehtimal ki, gələcəkdə təhlükəsizlik sistemləri, biometrik autentifikasiya və səhiyyə kimi sənayelərdə getdikcə daha çox istifadə olunacaq. Tezliklə maraqlı yeniliklər görəcəyik.
Cavab yaz