TensorFlow مشین لرننگ ماڈل بنانے کا ایک ورسٹائل ٹول ہے۔
اس پوسٹ میں، ہم دیکھیں گے کہ کس طرح ایک اوپن سورس مشین لرننگ فریم ورک TensorFlow کے ساتھ چہرے کی شناخت کا نظام بنایا جائے۔ ہم ایک کامیاب چہرے کی شناخت کے نظام کو بنانے کے لیے ڈیٹا اکٹھا کرنے اور تیار کرنے سے لے کر ماڈل کو تربیت دینے اور اس کا اندازہ لگانے کے لیے ضروری عمل پر جائیں گے۔
آپ کو کوڈ کے ٹکڑوں اور حقیقی دنیا کی مثالوں کی مدد سے چہرے کی شناخت بنانے کے لیے TensorFlow کے ساتھ پہلا تجربہ حاصل ہوگا۔ ہم آگے بڑھنے کے ساتھ ساتھ آپ کا استقبال ہے۔
ٹینسرفلو کا تعارف
TensorFlow ایک مفت اور اوپن سورس لائبریری ہے۔ یہ ایک علامتی ریاضی کا ٹول باکس ہے جو ڈیٹا فلو اور قابل تفریق پروگرامنگ کا استعمال کرتا ہے۔ آپ اس کے ساتھ بہت سے کاموں کو سنبھال سکتے ہیں، بشمول گہرے عصبی نیٹ ورک تربیت.
TensorFlow طاقتور اور قابل موافق ہے۔ اسی طرح، یہ ترقی کے لئے ایک بہترین ذریعہ ہے اور مشین لرننگ ماڈلز کی تعیناتی. آپ کئی پرتوں اور ٹینسر آپریشنز کے ساتھ پیچیدہ ماڈل بنا سکتے ہیں۔ اس کے علاوہ، لائبریری میں پہلے سے بنائے گئے ماڈلز کو مخصوص ضروریات کے لیے ٹھیک بنایا جا سکتا ہے۔
مزید برآں، TensorFlow کی ایک بہت بڑی اور پھیلتی ہوئی صارف برادری ہے۔ لہذا، ان افراد کے لیے معلومات اور مدد کی بہتات ہے جو پلیٹ فارم پر نئے ہیں۔
TensorFlow کے لیے مشہور ہے۔ مشین لرننگ جزوی طور پر کیونکہ یہ آخر سے آخر تک ورک فلو فراہم کرتا ہے۔ لہذا، آپ آسانی سے ماڈلز کی تعمیر، تربیت اور تعیناتی کر سکتے ہیں۔ یہ مخصوص مطالبات کو پورا کرنے کے لیے ماڈلز کو بہتر بنانے اور اسکیلنگ کرنے کے لیے ٹولز اور حکمت عملی فراہم کرتا ہے۔ یہ ڈیٹا پری پروسیسنگ سے لے کر ماڈل کی تعیناتی تک مختلف ہوتا ہے۔
چہرے کی شناخت کیا ہے؟
چہرے کی شناخت ہے a کمپیوٹر وژن وہ کام جو کسی شخص کی شناخت اس کے چہرے کی بنیاد پر کرتا ہے۔ یہ تکنیک چہرے کی خصوصیات کو پہچانتی ہے، جیسے آنکھوں، ناک اور منہ کی شکل اور ساخت۔
اور، یہ میچ کی شناخت کے لیے ان کا موازنہ معروف چہروں کے ڈیٹا بیس سے کرتا ہے۔ چہرے کی شناخت کے کئی استعمال ہوتے ہیں، بشمول سیکیورٹی سسٹم، فوٹو آرگنائزیشن، اور بائیو میٹرک تصدیق۔
مشین لرننگ میں کامیابیوں کے نتیجے میں حالیہ برسوں میں چہرے کی شناخت کے الگورتھم کی درستگی میں کافی اضافہ ہوا ہے۔
ضروری لائبریریوں کو درآمد کرنا
کچھ بھی شروع کرنے سے پہلے، ہمیں اپنے ماڈل کے لیے درکار لائبریریوں کو درآمد کرنے کی ضرورت ہے۔ Tensorflow (tf) کو درآمد کیا جاتا ہے اور ماڈل بنانے اور تربیت دینے کے لیے استعمال کیا جاتا ہے۔ <(p>
"numpy" ریاضی کا حساب اور ڈیٹا پروسیسنگ کرتا ہے۔
"matplotlib.pyplot" کو plt کے طور پر درآمد کیا جاتا ہے اور اس کے لیے استعمال کیا جاتا ہے۔ ڈیٹا چارٹنگ اور تصورات.
آخر میں، "ftch lfw people" sklearn سے درآمد کیا جاتا ہے۔ ڈیٹا سیٹس اور چہرے کی شناخت کے ڈیٹاسیٹ کو لوڈ کرنے کے لیے استعمال کیا جاتا ہے۔ یہ فنکشن اسکیٹ لرن ٹول کٹ کا حصہ ہے۔ اس فنکشن کی بدولت ہمیں دوسرا ڈیٹا سیٹ اپ لوڈ کرنے کی ضرورت نہیں تھی۔ یہ پہلے سے ہی سکیٹ لرن میں بنایا گیا ہے۔
اور، یہ آپ کو وسیع رینج تک رسائی فراہم کرتا ہے۔ مشین لرننگ کے لیے ڈیٹا سیٹس ایپلی کیشنز اس منظر نامے میں، ہم "لیبل والے چہرے ان دی وائلڈ" (LFW) ڈیٹاسیٹ کو بازیافت کرنے کے لیے fetch lfw People طریقہ استعمال کرتے ہیں۔ اس میں لوگوں کے چہروں کی تصاویر کے ساتھ ساتھ ان کے ساتھ جانے والے لیبل بھی شامل ہیں۔
یہ لائبریریاں ہمارے چہرے کی شناخت کے ماڈل کے نفاذ اور تشخیص میں اہم ہیں۔
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
چہرے کی شناخت کے ڈیٹاسیٹ کو پری پروسیسنگ اور لوڈ کرنا
اس حصے میں، ہم چہرے کی شناخت کے ڈیٹا کو پہلے سے پروسیس کرنے کے لیے "ftch lfw people" فنکشن کا استعمال کرتے ہیں۔ سب سے پہلے، ہم "min faces per person=60" کے آپشن کے ساتھ fetch lfw لوگوں کا استعمال کرتے ہیں۔ اس سے ظاہر ہوتا ہے کہ ہم صرف ان لوگوں کو ڈیٹا سیٹ میں شامل کرنا چاہتے ہیں جن کے پاس کم از کم 60 تصاویر ہیں۔ لہذا، ہم اس بات کو یقینی بناتے ہیں کہ ہمارے ماڈل میں سیکھنے کے لیے مناسب ڈیٹا موجود ہے۔ نیز، یہ اوور فٹنگ کے خطرے کو کم کرتا ہے۔
چہروں کے آبجیکٹ سے ڈیٹا اور لیبلز کو پھر نکالا جاتا ہے اور متغیرات X اور y کو تفویض کیا جاتا ہے۔ ایکس ہول۔
اب ہم پری پروسیسڈ ڈیٹا اور لیبلز کا استعمال کرتے ہوئے اپنے چہرے کی شناخت کے ماڈل کو تربیت دینے کے لیے تیار ہیں۔
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% کو ٹریننگ سیٹ کے طور پر استعمال کیا جائے گا۔ مزید برآں، ہم اس بات کو یقینی بنانے کے لیے random state=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 سے تقسیم کرکے پہلے سے تیار کیا جاتا ہے۔
ہمیں یہ حاصل کرنے کے لیے کس چیز نے تحریک دی؟ نارملائزیشن ایک پری پروسیسنگ طریقہ کار ہے جو مشین لرننگ میں اس بات کی ضمانت دیتا ہے کہ تمام خصوصیات ایک ہی پیمانے پر ہیں۔ اس منظر نامے میں، 255 سے تقسیم کرنے سے ڈیٹا 0 سے 1 کی رینج میں آتا ہے، جو کہ تصویر کے ڈیٹا کو معمول پر لانے کا ایک عام مرحلہ ہے۔
اس سے ماڈل کے کنورجنسنس کی رفتار بڑھ جاتی ہے اور اس کی کارکردگی میں اضافہ ہو سکتا ہے۔
X_train = X_train / 255.0
X_test = X_test / 255.0
موڈ بنانا
ہم اس شخص کی شناخت کرنا چاہتے ہیں جس کا چہرہ تصویر میں نظر آتا ہے۔ اس صورت میں، ہم ایک مکمل طور پر جڑے ہوئے نیٹ ورک کا استعمال کریں گے، جسے اکثر گھنے نیٹ ورک کے نام سے جانا جاتا ہے۔ یہ ایک مصنوعی اعصابی نیٹ ورک ہے جسے ماڈل بنانے کے لیے استعمال کیا گیا تھا۔
مصنوعی عصبی نیٹ ورک انسانی دماغ کے کام کرنے اور منظم ہونے کے طریقے کے مطابق بنائے گئے ہیں۔ وہ انفارمیشن پروسیسنگ نوڈس یا نیوران سے بنے ہوتے ہیں جو منسلک ہوتے ہیں۔ گھنے نیٹ ورک میں ایک پرت میں ہر نیوران اس کے اوپر کی پرت میں ہر نیوران سے منسلک ہوتا ہے۔
اس کوڈ میں ماڈل کی چار پرتیں ہیں۔ اگلی پرت میں فیڈ کرنے کے لیے، ان پٹ ڈیٹا کو پہلی پرت میں ایک جہتی صف میں چپٹا کر دیا جاتا ہے۔ مندرجہ ذیل دو تہوں میں 128 اور 64 نیوران، اس کے مطابق، مکمل طور پر جڑے ہوئے ہیں۔
ReLU ایکٹیویشن فنکشن ایک منفرد ایکٹیویشن فنکشن ہے جو ان تہوں کے ذریعہ استعمال کیا جاتا ہے۔ اس کے ساتھ، ہم ان پٹ اور آؤٹ پٹس کے درمیان غیر لکیری ارتباط سیکھنے کے لیے ماڈل حاصل کر سکتے ہیں۔ آخری پرت پیشین گوئیاں کرنے کے لیے softmax ایکٹیویشن فنکشن کا استعمال کرتی ہے۔ اور، یہ ایک مکمل طور پر جڑی ہوئی پرت ہے جس میں زیادہ سے زیادہ نیوران ہیں جتنے ممکنہ کلاسز ہیں۔
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'])
ماڈل ٹریننگ
ہم ماڈل کو تربیت دینے کے لیے "fit" فنکشن استعمال کریں گے۔
ہم ٹریننگ کا ڈیٹا (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 test[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 مشین لرننگ ماڈل بنانے کے لیے ایک مکمل اور لچکدار ماحول پیش کرتا ہے۔
مخصوص ضروریات کو پورا کرنے کے لیے ماڈل کو ٹھیک کرنے سے یا مشین لرننگ میں نئی پیشرفت شامل کر کے، ماڈل کی درستگی میں مزید اضافہ کیا جا سکتا ہے۔
TensorFlow اور چہرے کی شناخت کا ممکنہ طور پر مستقبل میں سیکیورٹی سسٹمز، بائیو میٹرک تصدیق اور صحت کی دیکھ بھال جیسی صنعتوں میں تیزی سے استعمال کیا جائے گا۔ ہم جلد ہی دلچسپ اختراعات دیکھیں گے۔
جواب دیجئے