ইমেজ ক্লাসিফিকেশনের জন্য ফিচার ভেক্টর তৈরি

ফিচার এক্সট্রাকশন (Feature Extraction) - জাভা দিয়ে ডিজিটাল ইমেজ প্রসেসিং (Digital Image Processing using Java) - Computer Science

370

ইমেজ ক্লাসিফিকেশনের জন্য ফিচার ভেক্টর তৈরি (Feature Vector Creation for Image Classification)

ইমেজ ক্লাসিফিকেশন হলো এমন একটি প্রক্রিয়া, যেখানে একটি ইমেজকে নির্দিষ্ট শ্রেণিতে (class) শ্রেণিবদ্ধ করা হয়। ফিচার ভেক্টর তৈরি করা ইমেজ ক্লাসিফিকেশনের একটি গুরুত্বপূর্ণ ধাপ, কারণ ফিচার ভেক্টর ইমেজের গুরুত্বপূর্ণ বৈশিষ্ট্য ধারণ করে। ইমেজ ক্লাসিফিকেশন অ্যালগরিদম এই ফিচার ভেক্টর ব্যবহার করে ইমেজকে সঠিক শ্রেণিতে ফেলার জন্য ট্রেনিং এবং প্রেডিকশন করে।


ফিচার ভেক্টর কি?

ফিচার ভেক্টর হলো একটি ভেক্টর বা লিস্ট যা ইমেজের বিভিন্ন বৈশিষ্ট্য (features) ধারণ করে। প্রতিটি বৈশিষ্ট্য ইমেজের নির্দিষ্ট বৈশিষ্ট্যের পরিমাপ বা তথ্য ধারণ করে, যেমন রঙ, টেক্সচার, আকার, প্রান্ত, এবং আরও অনেক কিছু। এই ভেক্টর ইমেজ ক্লাসিফিকেশন মডেলের ইনপুট হিসেবে কাজ করে।


ফিচার ভেক্টর তৈরির বিভিন্ন পদ্ধতি

ফিচার ভেক্টর তৈরি করার জন্য বিভিন্ন ফিচার এক্সট্র্যাকশন পদ্ধতি রয়েছে। নিচে কিছু সাধারণ পদ্ধতি আলোচনা করা হলো।

১. রঙ ভিত্তিক ফিচার (Color-based Features)

  • কালার হিস্টোগ্রাম: কালার হিস্টোগ্রাম ইমেজের রঙের বণ্টনকে সংখ্যায় প্রকাশ করে। বিভিন্ন কালার স্পেসে (যেমন RGB, HSV) হিস্টোগ্রাম তৈরি করা যায়।
  • কালার মোমেন্টস: কালার মোমেন্টস ইমেজের রঙের গড়, স্ট্যান্ডার্ড ডিভিয়েশন, এবং স্কিউনেস পরিমাপ করে।
import cv2
import numpy as np

def color_histogram(image):
    # ইমেজকে HSV কালার স্পেসে রূপান্তর
    hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
    
    # তিনটি চ্যানেলের জন্য হিস্টোগ্রাম
    hist_h = cv2.calcHist([hsv_image], [0], None, [256], [0, 256])
    hist_s = cv2.calcHist([hsv_image], [1], None, [256], [0, 256])
    hist_v = cv2.calcHist([hsv_image], [2], None, [256], [0, 256])
    
    # হিস্টোগ্রাম ফিচার ভেক্টর হিসেবে কনক্যাটেনেট
    hist_features = np.concatenate((hist_h, hist_s, hist_v)).flatten()
    
    return hist_features

২. টেক্সচার ভিত্তিক ফিচার (Texture-based Features)

  • হারালিক ফিচারস (Haralick Features): হারালিক ফিচারগুলো ইমেজের টেক্সচার বিশ্লেষণ করতে ব্যবহৃত হয়। এটি Co-occurrence Matrix ব্যবহার করে টেক্সচার ফিচার তৈরি করে।
  • LBP (Local Binary Pattern): LBP টেক্সচার বিশ্লেষণের একটি জনপ্রিয় পদ্ধতি, যা পিক্সেলের প্রতিবেশি পিক্সেলের ভিত্তিতে টেক্সচার ফিচার তৈরি করে।
from skimage.feature import local_binary_pattern

def lbp_features(image):
    gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    radius = 1
    n_points = 8 * radius
    lbp = local_binary_pattern(gray_image, n_points, radius, method='uniform')
    (hist, _) = np.histogram(lbp.ravel(), bins=np.arange(0, n_points + 3), range=(0, n_points + 2))
    
    hist = hist.astype("float")
    hist /= (hist.sum() + 1e-6)
    
    return hist

৩. আকার এবং আকৃতি ভিত্তিক ফিচার (Shape-based Features)

  • Hu Moments: Hu Moments হলো একটি ফিচার সেট যা ইমেজের আকার বিশ্লেষণ করে। এটি বিভিন্ন আকার এবং অবস্থান পরিবর্তনেও স্থিতিশীল।
  • Contour-based Features: কনট্যুর ডিটেকশন ব্যবহার করে অবজেক্টের আকারের তথ্য সংগ্রহ করা যায়।
def shape_features(image):
    gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    _, thresh = cv2.threshold(gray_image, 128, 255, cv2.THRESH_BINARY)
    moments = cv2.moments(thresh)
    huMoments = cv2.HuMoments(moments)
    return huMoments.flatten()

৪. এজ ভিত্তিক ফিচার (Edge-based Features)

  • SIFT (Scale-Invariant Feature Transform) এবং SURF (Speeded Up Robust Features): SIFT এবং SURF এজ ফিচার এক্সট্র্যাকশন টেকনিক যা ছবির গুরুত্বপূর্ণ কীপয়েন্ট শনাক্ত করে এবং সেগুলোকে ফিচার ভেক্টরে রূপান্তর করে।
  • Canny Edge Detection: Canny Edge Detection ব্যবহার করে প্রাথমিক এজ ফিচার নির্ণয় করা যায়।
def canny_edge_features(image):
    gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    edges = cv2.Canny(gray_image, 100, 200)
    edge_hist, _ = np.histogram(edges, bins=256, range=(0, 256))
    edge_hist = edge_hist / edge_hist.sum()  # normalize the histogram
    return edge_hist

ডীপ লার্নিং ভিত্তিক ফিচার এক্সট্র্যাকশন (Deep Learning-based Feature Extraction)

ডীপ লার্নিং মডেল যেমন Convolutional Neural Network (CNN) ব্যবহার করে স্বয়ংক্রিয়ভাবে ফিচার এক্সট্র্যাকশন করা যায়। প্রাক-প্রশিক্ষিত মডেল যেমন VGG, ResNet ব্যবহার করে ইমেজ থেকে ফিচার ভেক্টর বের করা হয়।

from tensorflow.keras.applications import VGG16
from tensorflow.keras.applications.vgg16 import preprocess_input
from tensorflow.keras.preprocessing import image
import numpy as np

def deep_learning_features(img_path):
    model = VGG16(weights='imagenet', include_top=False)
    img = image.load_img(img_path, target_size=(224, 224))
    img_data = image.img_to_array(img)
    img_data = np.expand_dims(img_data, axis=0)
    img_data = preprocess_input(img_data)
    
    vgg16_feature = model.predict(img_data)
    vgg16_feature_np = np.array(vgg16_feature).flatten()
    
    return vgg16_feature_np

ফিচার ভেক্টর তৈরির গুরুত্বপূর্ণ বিষয়াবলী

  1. ফিচার নির্বাচন: সঠিক ফিচার নির্বাচন ক্লাসিফিকেশন পারফরম্যান্স বাড়ায়।
  2. নরমালাইজেশন: ফিচার ভেক্টরকে একটি নির্দিষ্ট রেঞ্জে আনতে নরমালাইজেশন গুরুত্বপূর্ণ।
  3. ফিচার একত্রিতকরণ: বিভিন্ন ফিচার ভেক্টর যেমন রঙ, টেক্সচার, এবং আকারের ফিচার একত্রিত করা ভালো ফলাফল দিতে পারে।

সারসংক্ষেপ

ইমেজ ক্লাসিফিকেশনের জন্য ফিচার ভেক্টর তৈরি করা একটি মৌলিক কাজ, যা মডেল ট্রেনিং এবং প্রেডিকশন প্রক্রিয়ায় সহায়ক। বিভিন্ন টেকনিক যেমন রঙ, টেক্সচার, আকার, এবং এজ ভিত্তিক ফিচার ব্যবহার করে ইমেজ থেকে প্রয়োজনীয় ফিচার এক্সট্র্যাক্ট করা যায়। এছাড়া, ডীপ লার্নিং মডেল ব্যবহার করে স্বয়ংক্রিয়ভাবে উচ্চমানের ফিচার ভেক্টর তৈরি করা সম্ভব, যা ইমেজ ক্লাসিফিকেশনে আরও কার্যকরী হয়।

Content added By
Promotion

Are you sure to start over?

Loading...