ভূমিকা
আমাদের আগের ভিডিওগুলোতে আমরা শিখেছি কীভাবে ইমেজগুলো ক্রপ (crop) বা সাইজ অনুযায়ী কাটতে হয়। আজকের এই পর্বে আমরা শিখব ফিচার ইঞ্জিনিয়ারিং কী এবং কেন এটি ইমেজ ক্লাসিফিকেশনের জন্য জরুরি। সহজ কথায়, মেশিনের কাছে ছবিকে আরও অর্থবহ করে তোলার প্রক্রিয়াকেই আমরা এখানে ফিচার ইঞ্জিনিয়ারিং বলছি।
ওয়েভলেট ট্রান্সফর্ম (Wavelet Transform) কি এবং কেন ব্যবহার করব?
ভিডিও রেফারেন্স: [00:07] থেকে দেখুন কীভাবে ওয়েভলেট ট্রান্সফর্ম কাজ করে।
ওয়েভলেট ট্রান্সফর্ম এমন একটি কৌশল যা ছবির ভেতরের মূল ফিচারগুলো (যেমন: চোখ, নাক, ঠোঁট) আলাদা করতে সাহায্য করে। সাধারণ রঙিন ছবি কম্পিউটার বুঝতে হিমশিম খায়, কিন্তু যখন আমরা ছবির ওপর ওয়েভলেট ট্রান্সফর্ম করি, তখন সেটি দেখতে অনেকটা ব্ল্যাক অ্যান্ড হোয়াইট ছবির মতো হয়ে যায়। এই ছবিতে চোখের কোণা বা নাকের গঠন খুব স্পষ্ট বোঝা যায়, যা কম্পিউটারকে খুব সহজে বুঝতে সাহায্য করে যে ছবির ব্যক্তিটি কে।
সহজ ভাষায়:
-
ফিচার (Feature): ছবির ভেতরকার বিশেষ অংশ যেমন চোখ, মুখ বা নাকের আকৃতি।
-
মডেল (Model): এটি একটি ছোট প্রোগ্রামের মতো যা ডেটা দেখে শেখার চেষ্টা করে।
-
ওয়েভলেট ট্রান্সফর্ম: একটি গাণিতিক পদ্ধতি যা ছবির মূল অংশগুলোকে হাইলাইট করে এবং বাড়তি নয়েজ বা অপ্রয়োজনীয় তথ্য কমিয়ে দেয়।
ডেটা প্রিপারেশন এবং স্ট্যাকিং (Stacking)
মেশিন লার্নিং মডেলে ডেটা দেওয়ার আগে আমাদের ইমেজগুলোকে সুন্দর করে সাজাতে হয়। আমরা এখানে দুটি জিনিস করছি: ১. মূল রঙিন ছবি (Raw Image) ব্যবহার করছি। ২. ওয়েভলেট ট্রান্সফর্ম করা ছবি ব্যবহার করছি।
এই দুটিকে আমরা ওপর-নিচ করে জোড়া বা ভার্টিক্যালি স্ট্যাক (Vertically Stack) করছি। এতে মডেলটি একই সাথে ছবির সাধারণ গঠন এবং সূক্ষ্ম ফিচার—দুটোই একসাথে দেখতে পায়।
কোডিং কনসেপ্ট: নিচে দেখানো হয়েছে কীভাবে ছবিগুলোকে প্রসেস করে X (ইনপুট) এবং Y (আউটপুট/নাম) তৈরি করা হয়:
Python
import numpy as np
import cv2
import pywt
# ওয়েভলেট ট্রান্সফর্ম করার ফাংশন
def w2d(img, mode='haar', level=1):
imArray = img
# রঙিন ছবিকে গ্রেস্কেলে কনভার্ট করা
imArray = cv2.cvtColor(imArray, cv2.COLOR_BGR2GRAY)
imArray = np.float32(imArray)
imArray /= 255
# ওয়েভলেট ট্রান্সফর্ম প্রয়োগ করা
coeffs = pywt.wavedec2(imArray, mode, level=level)
coeffs_H = list(coeffs)
coeffs_H[0] *= 0
imArray_H = pywt.waverec2(coeffs_H, mode)
imArray_H *= 255
imArray_H = np.uint8(imArray_H)
return imArray_H
# এটি ব্যবহার করে আমরা ইমেজগুলোকে প্রসেস করে একটি লিস্টে রাখছি
# এরপর numpy ব্যবহার করে সেগুলোকে স্ট্যাক (stack) করছি
কোড ব্যাখ্যা:
-
cv2.cvtColor: রঙিন ছবিকে ধূসর বা ব্ল্যাক অ্যান্ড হোয়াইট করা হচ্ছে। -
pywt.wavedec2: এটি ওয়েভলেট ট্রান্সফর্মের মূল লাইব্রেরি ফাংশন যা ছবি বিশ্লেষণ করে। -
np.vstack: এটি আমাদের মূল ছবি এবং প্রসেস করা ছবিকে একটির ওপর আরেকটি বসিয়ে দিচ্ছে, যা মডেলের জন্য খুব উপকারী।
X এবং Y ডেটাসেট তৈরি
মেশিন লার্নিং মডেল কিন্তু মানুষের নাম বুঝতে পারে না, সে কেবল সংখ্যা বোঝে। তাই আমরা প্রতিটি সেলিব্রেটির নামকে একটি নির্দিষ্ট সংখ্যা (Class label) দিয়ে দিচ্ছি। সবশেষে আমরা X (ছবিগুলো) এবং Y (সংখ্যায় দেওয়া নামগুলো) প্রস্তুত করছি যা পরবর্তী ভিডিওতে মডেল ট্রেনিংয়ের জন্য ব্যবহার করা হবে।
বিশ্লেষণ এবং মতামত
এই ভিডিওটিতে ভিডিও ক্রিয়েটর খুব সুন্দরভাবে দেখিয়েছেন যে কেবল কাঁচা ছবি দিয়ে মেশিন লার্নিং মডেল ট্রেনিং না করে যদি ফিচার ইঞ্জিনিয়ারিং করা যায়, তবে মডেলের নির্ভুলতা (Accuracy) অনেক বেড়ে যায়।
-
বাস্তবতা: বাস্তবে ছবির আকার বা কোয়ালিটি সবসময় এক থাকে না, তাই
cv2.resize()ব্যবহার করে সব ছবিকে একই সাইজে নিয়ে আসা খুব জরুরি। -
পরামর্শ: যদি আপনার ছবির পরিমাণ খুব বেশি হয়, তবে কেবল ওয়েভলেট ট্রান্সফর্ম নয়, আরও উন্নত কম্পিউটার ভিশন পদ্ধতি যেমন
CNN (Convolutional Neural Networks)ব্যবহার করার কথা ভাবতে পারেন। এটি বর্তমানে ইমেজের ফিচার নিজে থেকেই শিখতে পারে, ফলে ম্যানুয়ালি ফিচার ইঞ্জিনিয়ারিংয়ের প্রয়োজন কমে যায়।
এই প্রজেক্টটি যারা ডেটা সায়েন্সে নতুন, তাদের জন্য একটি দুর্দান্ত হাতে-কলমে শেখার সুযোগ। ধাপগুলো মনোযোগ দিয়ে অনুসরণ করলে আপনি নিজের ফেস ডিটেকশন মডেল তৈরি করতে পারবেন।
ভিডিও লিঙ্ক: https://www.youtube.com/watch?v=sWAPtaBZKBQ
[
Data Science & Machine Learning Project - Part 4 Feature Engineering | Image Classification
codebasics · 62K views
](http://www.youtube.com/watch?v=sWAPtaBZKBQ)

মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন
আপনার সমস্যাটি কমেন্ট করে আমাদের জানান :-d