TensorFlow हे मशीन-लर्निंग मॉडेल्स तयार करण्यासाठी एक अष्टपैलू साधन आहे.
या पोस्टमध्ये, आम्ही TensorFlow या ओपन-सोर्स मशीन लर्निंग फ्रेमवर्कसह चेहरा ओळखण्याची प्रणाली कशी तयार करावी ते पाहू. आम्ही यशस्वी चेहरा ओळख प्रणाली तयार करण्यासाठी डेटा गोळा करणे आणि तयार करणे ते प्रशिक्षण आणि मॉडेलचे मूल्यांकन करण्यासाठी आवश्यक प्रक्रिया पाहू.
कोड स्निपेट्स आणि वास्तविक-जगातील उदाहरणांच्या सहाय्याने चेहऱ्याची ओळख निर्माण करण्यासाठी तुम्हाला TensorFlow सह प्रत्यक्ष अनुभव मिळेल. आम्ही पुढे जात असताना आपले अनुसरण करण्यास आपले स्वागत आहे.
टेन्सरफ्लोची ओळख
TensorFlow एक विनामूल्य आणि मुक्त-स्रोत लायब्ररी आहे. हा एक प्रतीकात्मक गणित टूलबॉक्स आहे जो डेटाफ्लो आणि भिन्नता प्रोग्रामिंग वापरतो. आपण त्याच्यासह अनेक कार्ये हाताळू शकता, ज्यात सखोल समावेश आहे मज्जासंस्थेसंबंधीचा नेटवर्क प्रशिक्षण
TensorFlow शक्तिशाली आणि अनुकूल आहे. त्याचप्रमाणे, हे विकसित करण्यासाठी एक उत्तम साधन आहे आणि मशीन लर्निंग मॉडेल्स तैनात करणे. आपण अनेक स्तर आणि टेन्सर ऑपरेशनसह जटिल मॉडेल तयार करू शकता. तसेच, लायब्ररीतील पूर्व-निर्मित मॉडेल्स विशिष्ट गरजांसाठी छान-ट्यून केले जाऊ शकतात.
शिवाय, TensorFlow चा एक प्रचंड आणि विस्तारणारा वापरकर्ता समुदाय आहे. त्यामुळे, प्लॅटफॉर्मवर नवीन असलेल्या व्यक्तींसाठी माहिती आणि मदतीचा भरपूर साठा आहे.
TensorFlow साठी लोकप्रिय आहे मशीन शिक्षण अंशतः कारण ते एंड-टू-एंड वर्कफ्लो प्रदान करते. त्यामुळे, तुम्ही सहजपणे मॉडेल तयार करू शकता, ट्रेन करू शकता आणि तैनात करू शकता. हे विशिष्ट मागण्या पूर्ण करण्यासाठी मॉडेल सुधारण्यासाठी आणि स्केलिंग करण्यासाठी साधने आणि धोरणे प्रदान करते. हे डेटा प्री-प्रोसेसिंगपासून मॉडेल डिप्लॉयमेंटपर्यंत बदलते.
चेहरा ओळख म्हणजे काय?
चेहरा ओळखणे म्हणजे a संगणक दृष्टी चेहऱ्यावर आधारित व्यक्तीची ओळख ओळखणारे कार्य. हे तंत्र चेहर्यावरील गुणधर्म ओळखते, जसे की डोळे, नाक आणि तोंड यांचा आकार आणि पोत.
आणि, जुळणी ओळखण्यासाठी ते ओळखीच्या चेहऱ्यांच्या डेटाबेसशी त्यांची तुलना करते. सुरक्षा प्रणाली, फोटो संघटना आणि बायोमेट्रिक प्रमाणीकरणासह चेहरा ओळखण्याचे अनेक उपयोग आहेत.
अलिकडच्या वर्षांत मशीन लर्निंगमधील प्रगतीमुळे चेहरा ओळखण्याच्या अल्गोरिदमची अचूकता लक्षणीयरीत्या वाढली आहे.
आवश्यक लायब्ररी आयात करणे
काहीही सुरू करण्यापूर्वी, आम्हाला आमच्या मॉडेलसाठी आवश्यक लायब्ररी आयात करणे आवश्यक आहे. टेन्सरफ्लो (tf) आयात केले जाते आणि मॉडेल तयार करण्यासाठी आणि प्रशिक्षित करण्यासाठी वापरले जाते. <(p>
"numpy" गणितीय गणना आणि डेटा प्रक्रिया करते.
"matplotlib.pyplot" plt म्हणून आयात केले जाते आणि यासाठी वापरले जाते डेटा चार्टिंग आणि व्हिज्युअलायझेशन.
शेवटी, "ftch lfw people" sklearn वरून आयात केले जाते. डेटासेट आणि फेशियल रेकग्निशन डेटासेट लोड करण्यासाठी वापरला जातो. हे फंक्शन स्किट-लर्न टूलकिटचा भाग आहे. या कार्यामुळे आम्हाला दुसरा डेटासेट अपलोड करावा लागला नाही. हे आधीच स्किट-लर्नमध्ये तयार केलेले आहे.
आणि, ते तुम्हाला विस्तृत श्रेणीमध्ये प्रवेश देते मशीन लर्निंगसाठी डेटासेट अनुप्रयोग या परिस्थितीत, आम्ही “लेबल केलेले चेहरे इन द वाइल्ड” (LFW) डेटासेट पुनर्प्राप्त करण्यासाठी lfw People पद्धत वापरतो. यामध्ये लोकांच्या चेहऱ्यांचे फोटो तसेच त्यांच्यासोबत असलेल्या लेबलांचा समावेश आहे.
या लायब्ररी आमच्या चेहरा ओळख मॉडेलच्या अंमलबजावणी आणि मूल्यमापनासाठी महत्त्वपूर्ण आहेत.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
फेस रेकग्निशन डेटासेटची प्रीप्रोसेसिंग आणि लोडिंग
या भागात, आम्ही चेहर्यावरील ओळख डेटाची प्रीप्रोसेस करण्यासाठी "fetch lfw people" फंक्शन वापरतो. प्रथम, आम्ही “min faces per person=60” या पर्यायासह lfw people मिळवणे वापरतो. हे सूचित करते की आम्ही डेटासेटमध्ये किमान 60 फोटो असलेल्या व्यक्तींचा समावेश करू इच्छितो. म्हणून, आम्ही खात्री करतो की आमच्या मॉडेलमध्ये शिकण्यासाठी पुरेसा डेटा आहे. तसेच, हे ओव्हरफिटिंगचा धोका कमी करते.
फेस ऑब्जेक्टमधील डेटा आणि लेबल्स नंतर एक्स आणि वाई व्हेरिएबल्सला एक्सट्रॅक्ट केले जातात आणि नियुक्त केले जातात. एक्स होल.
आम्ही आता प्रीप्रोसेस्ड डेटा आणि लेबले वापरून आमचे फेशियल रेकग्निशन मॉडेल प्रशिक्षित करण्यास तयार आहोत.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
प्रशिक्षण आणि चाचणी संच विभाजित करणे
या चरणात, आम्ही sklearn.model सिलेक्शनमधून ट्रेन टेस्ट स्प्लिट पद्धत वापरून आमचा चेहरा ओळख डेटासेट दोन भागांमध्ये विभाजित करतो. प्रशिक्षणानंतर आमच्या मॉडेलच्या कामगिरीचे मूल्यांकन करणे हे या विभाजनाचे ध्येय आहे
ट्रेन टेस्ट स्प्लिट फंक्शन इनपुट डेटा X आणि लेबल y म्हणून स्वीकारते. आणि, ते त्यांना प्रशिक्षण आणि चाचणी सेटमध्ये विभाजित करते. आम्ही या उदाहरणात चाचणी आकार=0.2 निवडतो. याचा अर्थ 20% डेटा चाचणी संच आणि 80% प्रशिक्षण संच म्हणून वापरला जाईल. शिवाय, प्रत्येक वेळी कोड सादर केल्यावर डेटा सुसंगतपणे विभागला गेला आहे याची खात्री करण्यासाठी आम्ही यादृच्छिक स्थिती=42 वापरतो.
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)
डेटा तयार करत आहे
प्रीप्रोसेसिंग डेटाचा उद्देश मॉडेलमध्ये प्रवेश करण्यासाठी तयार करणे आहे. प्रत्येक डेटा पॉइंटला २५५ ने विभाजित करून या कोडमध्ये डेटा पूर्वप्रक्रिया केला जातो.
हे साध्य करण्यासाठी आम्हाला कशामुळे प्रेरित केले? सामान्यीकरण ही सर्व वैशिष्ट्ये एकाच स्केलवर असल्याची हमी देण्यासाठी मशीन लर्निंगमध्ये वापरली जाणारी प्रीप्रोसेसिंग प्रक्रिया आहे. या परिस्थितीमध्ये, 255 ने भागल्याने डेटा 0 ते 1 च्या श्रेणीत येतो, जो सामान्य चित्र डेटा सामान्यीकरण पायरी आहे.
हे मॉडेलच्या अभिसरणास गती देते आणि त्याचे कार्यप्रदर्शन वाढवू शकते.
X_train = X_train / 255.0
X_test = X_test / 255.0
मोड तयार करणे
ज्या व्यक्तीचा चेहरा चित्रात दिसतो तो आम्ही ओळखू इच्छितो. या प्रकरणात, आम्ही पूर्णपणे कनेक्ट केलेले नेटवर्क वापरू, बहुतेकदा घन नेटवर्क म्हणून ओळखले जाते. हे एक कृत्रिम न्यूरल नेटवर्क आहे जे मॉडेल तयार करण्यासाठी वापरले होते.
कृत्रिम न्यूरल नेटवर्क हे मानवी मेंदू कसे कार्य करते आणि व्यवस्थित केले जाते यानुसार तयार केले जाते. ते माहिती-प्रोसेसिंग नोड्स किंवा न्यूरॉन्सचे बनलेले असतात जे जोडलेले असतात. दाट नेटवर्कमधील लेयरमधील प्रत्येक न्यूरॉन त्याच्या वरील लेयरमधील प्रत्येक न्यूरॉनशी जोडलेला असतो.
या कोडमध्ये मॉडेलमध्ये चार स्तर आहेत. पुढील लेयरमध्ये फीड करण्यासाठी, इनपुट डेटा पहिल्या लेयरमध्ये एका-आयामी अॅरेमध्ये सपाट केला जातो. खालील दोन स्तरांमधील 128 आणि 64 न्यूरॉन्स, त्यानुसार, पूर्णपणे जोडलेले आहेत.
ReLU एक्टिव्हेशन फंक्शन हे या लेयर्सद्वारे वापरले जाणारे अनन्य सक्रियकरण फंक्शन आहे. त्याच्या मदतीने आम्ही इनपुट आणि आऊटपुटमध्ये नॉन-लिनियर सहसंबंध शिकण्यासाठी मॉडेल मिळवू शकतो. शेवटचा स्तर अंदाज बांधण्यासाठी सॉफ्टमॅक्स सक्रियकरण कार्य वापरतो. आणि, संभाव्य वर्ग आहेत तितक्या न्यूरॉन्ससह हा पूर्णपणे जोडलेला स्तर आहे.
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')
])
मॉडेलचे संकलन
मॉडेल "कंपाइल" फंक्शन वापरून संकलित केले आहे. आम्हाला प्रशिक्षणासाठी मॉडेल तयार करण्याची आवश्यकता आहे. म्हणून, आम्ही ऑप्टिमायझर, नुकसान कार्य आणि मेट्रिक्स परिभाषित करू जे मॉडेलचे मूल्यांकन करण्यासाठी वापरले जातील.
प्रशिक्षणादरम्यान, ऑप्टिमायझर मॉडेलचे पॅरामीटर्स बदलण्याचे प्रभारी आहे. "अॅडम" ऑप्टिमायझर हे एक लोकप्रिय सखोल-शिक्षण ऑप्टिमायझेशन तंत्र आहे.
प्रशिक्षण डेटावर मॉडेलच्या कामगिरीचे मूल्यांकन करण्यासाठी आम्ही नुकसान कार्य वापरतो. कारण लक्ष्य लेबले एक-हॉट एन्कोडेड व्हेक्टर ऐवजी प्रतिमेचा वर्ग प्रतिबिंबित करणारी पूर्णांक आहेत, "विरळ वर्गीय क्रॉसेन्ट्रोपी" नुकसान कार्य अनुकूल आहे.
शेवटी, आम्ही मॉडेलचे मूल्यांकन करण्यासाठी मेट्रिक्स परिभाषित करतो, या प्रकरणात, "अचूकता".
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
मॉडेल प्रशिक्षण
आम्ही मॉडेल प्रशिक्षित करण्यासाठी "फिट" फंक्शन वापरू.
आम्ही प्रशिक्षण डेटा (X ट्रेन) आणि संबंधित लेबले (y ट्रेन) प्रदान करणार आहोत, तसेच 10 म्हणून चालण्यासाठी युगांची संख्या (पुनरावृत्ती) सेट करणार आहोत. प्रशिक्षण प्रक्रिया तोटा कमी करण्यासाठी मॉडेलच्या वजनात बदल करते (यामधील फरक अंदाजित आणि वास्तविक लेबले) आणि प्रशिक्षण डेटाची अचूकता सुधारते.
model.fit(X_train, y_train, epochs=10)
मॉडेल मूल्यांकन
आता, आम्हाला चाचणी डेटावर प्रशिक्षित मॉडेलचे मूल्यांकन करणे आवश्यक आहे. आम्ही चाचणी नुकसान वापरतो आणि चाचणी अचूकता मॉडेलच्या कार्यक्षमतेचे मूल्यांकन करण्यासाठी वापरली जाते. चाचणी डेटा X चाचणी आणि चाचणी लेबले y चाचणीवर, आम्हाला "model.evaluate फंक्शन" कॉल करणे आवश्यक आहे.
फंक्शन चाचणी अचूकता आणि चाचणी तोटा आउटपुट करते. व्हेरिएबल्समध्ये अनुक्रमे नुकसान आणि चाचणी अचूकता ही मूल्ये असतात. शेवटी, आम्ही चाचणी अचूकता आउटपुट करण्यासाठी "प्रिंट" फंक्शन वापरतो.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
वर्ग अंदाज करणे आणि अंदाज वर्ग मिळवणे
प्रशिक्षण मॉडेल आणि चाचणी डेटा वापरून, अल्गोरिदम अंदाज लावते. जेव्हा चाचणी डेटा “model.predict” पद्धतीने पास केला जातो, तेव्हा ते चाचणी संचातील प्रत्येक चित्रासाठी अंदाजांचे अॅरे आउटपुट करते.
प्रत्येक चित्रासाठी लक्ष्य वर्गाचे नाव नंतर "np.argmax" फंक्शन वापरून "लक्ष्य नावे" सूचीमधून पुनर्प्राप्त केले जाते आणि सर्वात जास्त अंदाजित संभाव्यतेसह निर्देशांक ओळखले जाते. हा निर्देशांक नंतर प्रत्येक प्रतिमेसाठी अंदाजित वर्ग निर्धारित करण्यासाठी वापरला जातो.
सूची आकलन वापरून, "अंदाज" अॅरेमधील सर्व अंदाज या पद्धतीच्या अधीन आहेत, परिणामी "अंदाजित वर्ग" सूची बनते.
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
अंदाजांचे व्हिज्युअलायझेशन
आमचे मॉडेल कसे दिसते ते आम्ही आता पाहू शकतो.
मॉडेल किती चांगले काम करत आहे याचे मूल्यांकन करण्यासाठी, पहिले 10 फोटो आणि त्यांचे अंदाज दर्शविले जातील. ते ग्रेस्केलमध्ये फोटो प्लॉट करेल आणि matplotlib.pyplot मॉड्यूल वापरून प्रतिमेचा वास्तविक वर्ग आणि मॉडेलने अंदाज केलेला वर्ग दोन्ही प्रदर्शित करेल.
पहिल्या 10 चाचणी सेट फोटोंपैकी प्रत्येक प्लॉट करण्यासाठी फॉर लूपद्वारे “imshow” फंक्शन वापरले जाते. लक्ष्य नावे[y चाचणी[i]] आणि अंदाजित वर्ग[i] अनुक्रमे प्रतिमेचा वास्तविक वर्ग आणि अंदाज वर्ग निर्धारित करण्यासाठी वापरले जातात. प्रत्येक प्लॉटची शीर्षके नंतर या वर्गीकरणाद्वारे दर्शविली जातात.
शेवटी, plt.show() पद्धत वापरून प्लॉट प्रदर्शित केला जातो.
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()
वर ओघ वळवा
TensorFlow मशीन लर्निंग मॉडेल तयार करण्यासाठी संपूर्ण आणि लवचिक वातावरण देते.
विशिष्ट आवश्यकतांची पूर्तता करण्यासाठी मॉडेलचे फाइन-ट्यूनिंग करून किंवा मशीन लर्निंगमध्ये नवीन विकास जोडून, मॉडेलची अचूकता आणखी वाढविली जाऊ शकते.
भविष्यात सुरक्षा प्रणाली, बायोमेट्रिक प्रमाणीकरण आणि आरोग्य सेवा यांसारख्या उद्योगांमध्ये टेन्सरफ्लो आणि चेहऱ्याची ओळख वाढण्याची शक्यता आहे. आम्ही लवकरच आकर्षक नवकल्पना पाहणार आहोत.
प्रत्युत्तर द्या