TensorFlow মেশিন-লার্নিং মডেল তৈরি করার জন্য একটি বহুমুখী টুল।
এই পোস্টে, আমরা দেখব কীভাবে টেনসরফ্লো, একটি ওপেন-সোর্স মেশিন লার্নিং ফ্রেমওয়ার্ক দিয়ে একটি মুখ শনাক্তকরণ সিস্টেম তৈরি করা যায়। আমরা একটি সফল মুখ শনাক্তকরণ সিস্টেম তৈরির প্রয়োজনীয় প্রক্রিয়াগুলি নিয়ে যাব, ডেটা সংগ্রহ ও প্রস্তুত করা থেকে শুরু করে একটি মডেলকে প্রশিক্ষণ এবং মূল্যায়ন করা পর্যন্ত।
কোড স্নিপেট এবং বাস্তব-বিশ্বের উদাহরণগুলির সাহায্যে মুখের স্বীকৃতি তৈরি করতে আপনি TensorFlow-এর সাথে প্রথম হাতের অভিজ্ঞতা পাবেন। আমরা এগিয়ে যাওয়ার সাথে সাথে অনুসরণ করার জন্য আপনাকে স্বাগতম।
টেনসরফ্লো পরিচিতি
TensorFlow একটি বিনামূল্যের এবং ওপেন সোর্স লাইব্রেরি। এটি একটি প্রতীকী গণিত টুলবক্স যা ডেটাফ্লো এবং ডিফারেনশিয়াবল প্রোগ্রামিং ব্যবহার করে। আপনি এটির সাথে গভীর সহ বিভিন্ন কাজ পরিচালনা করতে পারেন স্নায়বিক নেটওয়ার্ক প্রশিক্ষণ।
TensorFlow শক্তিশালী এবং অভিযোজিত। একইভাবে, এটি বিকাশের জন্য একটি দুর্দান্ত সরঞ্জাম এবং মেশিন লার্নিং মডেল স্থাপন. আপনি বিভিন্ন স্তর এবং টেনসর অপারেশন সহ জটিল মডেল তৈরি করতে পারেন। এছাড়াও, লাইব্রেরিতে প্রাক-নির্মিত মডেলগুলি নির্দিষ্ট প্রয়োজনের জন্য সূক্ষ্ম-টিউন করা যেতে পারে।
উপরন্তু, TensorFlow একটি বিশাল এবং প্রসারিত ব্যবহারকারী সম্প্রদায় রয়েছে। সুতরাং, প্ল্যাটফর্মে নতুন ব্যক্তিদের জন্য তথ্য এবং সহায়তার আধিক্য রয়েছে।
TensorFlow এর জন্য জনপ্রিয় মেশিন লার্নিং আংশিকভাবে কারণ এটি একটি এন্ড-টু-এন্ড ওয়ার্কফ্লো প্রদান করে। সুতরাং, আপনি সহজেই মডেল তৈরি, প্রশিক্ষণ এবং স্থাপন করতে পারেন। এটি নির্দিষ্ট চাহিদা পূরণের জন্য মডেলগুলির উন্নতি এবং স্কেলিং করার জন্য সরঞ্জাম এবং কৌশল প্রদান করে। এটি ডেটা প্রাক-প্রক্রিয়াকরণ থেকে মডেল স্থাপনা পর্যন্ত পরিবর্তিত হয়।
ফেস রিকগনিশন কি?
মুখ চেনা a কম্পিউটার ভিশন এমন একটি কাজ যা একজন ব্যক্তির মুখের উপর ভিত্তি করে তার পরিচয় শনাক্ত করে। এই কৌশলটি মুখের বৈশিষ্ট্যগুলিকে স্বীকৃতি দেয়, যেমন চোখ, নাক এবং মুখের আকার এবং গঠন।
এবং, এটি একটি ম্যাচ সনাক্ত করতে পরিচিত মুখগুলির একটি ডাটাবেসের সাথে তাদের তুলনা করে। মুখ শনাক্তকরণের নিরাপত্তা ব্যবস্থা, ফটো সংগঠন এবং বায়োমেট্রিক প্রমাণীকরণ সহ বেশ কিছু ব্যবহার রয়েছে।
সাম্প্রতিক বছরগুলিতে মেশিন লার্নিংয়ে সাফল্যের ফলে ফেস রিকগনিশন অ্যালগরিদমের যথার্থতা উল্লেখযোগ্যভাবে বৃদ্ধি পেয়েছে।
প্রয়োজনীয় লাইব্রেরি আমদানি করা
কিছু শুরু করার আগে, আমাদের মডেলের জন্য প্রয়োজনীয় লাইব্রেরিগুলি আমদানি করতে হবে। Tensorflow (tf) আমদানি করা হয় এবং মডেল তৈরি এবং প্রশিক্ষণের জন্য ব্যবহার করা হয়। <(p>
"numpy" গাণিতিক গণনা এবং ডেটা প্রক্রিয়াকরণ করে।
"matplotlib.pyplot" plt হিসাবে আমদানি করা হয় এবং এর জন্য ব্যবহৃত হয় ডেটা চার্টিং এবং ভিজ্যুয়ালাইজেশন.
অবশেষে, sklearn থেকে "fetch lfw people" আমদানি করা হয়েছে। ডেটাসেট এবং ফেসিয়াল রিকগনিশন ডেটাসেট লোড করতে ব্যবহৃত হয়। এই ফাংশনটি স্কিট-লার্ন টুলকিটের অংশ। এই ফাংশনের জন্য ধন্যবাদ আমাদের অন্য ডেটাসেট আপলোড করতে হয়নি। এটি ইতিমধ্যেই স্কিট-লার্নে তৈরি করা হয়েছে।
এবং, এটি আপনাকে বিস্তৃত পরিসরে অ্যাক্সেস দেয় মেশিন লার্নিং জন্য ডেটাসেট অ্যাপ্লিকেশন এই পরিস্থিতিতে, "লেবেলযুক্ত ফেস ইন দ্য ওয়াইল্ড" (LFW) ডেটাসেট পুনরুদ্ধার করতে আমরা ফেচ lfw People পদ্ধতি ব্যবহার করি। এতে লোকেদের মুখের ফটো এবং লেবেলগুলি রয়েছে যা তাদের সাথে যায়৷
এই লাইব্রেরিগুলি আমাদের মুখ শনাক্তকরণ মডেলের বাস্তবায়ন এবং মূল্যায়নে গুরুত্বপূর্ণ।
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
ফেস রিকগনিশন ডেটাসেট প্রিপ্রসেসিং এবং লোড করা হচ্ছে
এই অংশে, আমরা ফেসিয়াল রিকগনিশন ডেটা প্রিপ্রসেস করার জন্য "ফেচ lfw পিপল" ফাংশনটি ব্যবহার করি। প্রথমত, আমরা "মানুষের প্রতি মিনিমাম মুখ=60" বিকল্পের সাথে lfw people ফেচ করি। এটি নির্দেশ করে যে আমরা কেবলমাত্র সেই ব্যক্তিদের ডেটাসেটে অন্তর্ভুক্ত করতে চাই যাদের কমপক্ষে 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% প্রশিক্ষণ সেট হিসাবে ব্যবহার করা হবে। তদ্ব্যতীত, প্রতিবার কোডটি সম্পাদন করার সময় ডেটা ধারাবাহিকভাবে বিভক্ত হয়েছে তা নিশ্চিত করতে আমরা র্যান্ডম স্টেট=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'])
মডেল প্রশিক্ষণ
আমরা মডেলটি প্রশিক্ষণের জন্য "ফিট" ফাংশন ব্যবহার করব।
আমরা প্রশিক্ষণের ডেটা (এক্স ট্রেন) এবং সম্পর্কিত লেবেল (ওয়াই ট্রেন) প্রদান করব, সেইসাথে 10 হিসাবে চালানোর জন্য যুগের সংখ্যা (পুনরাবৃত্তি) সেট করব। প্রশিক্ষণ পদ্ধতিটি ক্ষতি কমাতে মডেলের ওজন পরিবর্তন করে (এর মধ্যে পার্থক্য ভবিষ্যদ্বাণী করা এবং বাস্তব লেবেল) এবং প্রশিক্ষণ ডেটার নির্ভুলতা উন্নত করে।
model.fit(X_train, y_train, epochs=10)
মডেল মূল্যায়ন
এখন, আমাদের পরীক্ষার ডেটাতে প্রশিক্ষিত মডেলের মূল্যায়ন করতে হবে। আমরা পরীক্ষার ক্ষতি ব্যবহার করি এবং পরীক্ষার নির্ভুলতা মডেলের কর্মক্ষমতা মূল্যায়ন করতে ব্যবহৃত হয়। টেস্ট ডেটা এক্স টেস্ট এবং টেস্ট লেবেল y টেস্টে, আমাদের "মডেল. মূল্যায়ন ফাংশন" কল করতে হবে
ফাংশন পরীক্ষার নির্ভুলতা এবং পরীক্ষার ক্ষতি আউটপুট করে। ভেরিয়েবল পরীক্ষা ক্ষতি এবং পরীক্ষার নির্ভুলতা, যথাক্রমে, এই মান ধারণ করে। অবশেষে, আমরা পরীক্ষার নির্ভুলতা আউটপুট করতে "প্রিন্ট" ফাংশন ব্যবহার করি।
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 মডিউল ব্যবহার করে চিত্রের প্রকৃত শ্রেণী এবং মডেল দ্বারা ভবিষ্যদ্বাণী করা শ্রেণী উভয়ই প্রদর্শন করবে।
"imshow" ফাংশনটি প্রথম 10টি পরীক্ষার সেট ফটোগুলির প্রতিটি প্লট করার জন্য লুপ দ্বারা ব্যবহৃত হয়। টার্গেটের নাম[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 মেশিন লার্নিং মডেল তৈরি করার জন্য একটি সম্পূর্ণ এবং নমনীয় পরিবেশ অফার করে।
নির্দিষ্ট প্রয়োজনীয়তা পূরণের জন্য মডেলটিকে ফাইন-টিউনিং করে বা মেশিন লার্নিংয়ে নতুন উন্নয়ন যোগ করে, মডেলের যথার্থতা আরও বাড়ানো যেতে পারে।
ভবিষ্যতে নিরাপত্তা ব্যবস্থা, বায়োমেট্রিক প্রমাণীকরণ এবং স্বাস্থ্যসেবার মতো শিল্পগুলিতে টেনসরফ্লো এবং মুখের স্বীকৃতি ক্রমবর্ধমানভাবে ব্যবহার করা হবে। আমরা খুব শীঘ্রই আকর্ষণীয় উদ্ভাবন দেখতে পাব।
নির্দেশিকা সমন্ধে মতামত দিন