Image Data Preprocessing Techniques

Machine Learning - নাইম (Knime) Image Processing এবং Analysis |
143
143

ইমেজ ডেটা প্রিপ্রসেসিং একটি অত্যন্ত গুরুত্বপূর্ণ পদক্ষেপ যা কম্পিউটার ভিশন এবং ইমেজ প্রসেসিং এর কাজগুলোকে সহজ করে তোলে। এটি কাঁচা ইমেজ ডেটাকে মডেলিংয়ের জন্য প্রস্তুত করতে ব্যবহৃত হয়, বিশেষত মেশিন লার্নিং এবং ডিপ লার্নিং অ্যালগরিদমগুলোর জন্য। কার্যকর প্রিপ্রসেসিং মডেলকে ভালোভাবে শিখতে এবং অজানা ডেটাতে ভালোভাবে সাধারণীকরণ করতে সহায়তা করে।

এখানে কিছু সাধারণ ইমেজ ডেটা প্রিপ্রসেসিং টেকনিকস দেওয়া হল:


১. রিসাইজিং (Resizing)

  • উদ্দেশ্য: ইমেজের আকার একটি নির্দিষ্ট সাইজে আনতে যাতে মডেলের ইনপুট লেয়ারে সেটি উপযুক্ত হয়, কারণ বিভিন্ন ইমেজের আকার ভিন্ন হতে পারে।
  • পদ্ধতি: ইমেজটি একটি নির্দিষ্ট প্রস্থ এবং উচ্চতায় (যেমন 224x224) রিসাইজ করা হয়।
  • টুলস: OpenCV, Pillow (PIL), অথবা TensorFlow।
from PIL import Image

# ইমেজ রিসাইজ করা
image = Image.open('image.jpg')
resized_image = image.resize((224, 224))  # 224x224 এ রিসাইজ
resized_image.show()

২. নরমালাইজেশন (Normalization)

  • উদ্দেশ্য: পিক্সেল ভ্যালুগুলিকে একটি মানক রেঞ্জে আনা (সাধারণত [0, 1] বা [-1, 1]) যাতে মডেল আরও ভালোভাবে কনভার্জ করতে পারে।
  • পদ্ধতি: ইমেজের পিক্সেল ভ্যালু (যেগুলি 0 থেকে 255 পর্যন্ত থাকে) 255 দিয়ে ভাগ করা হয় যাতে পিক্সেলগুলি [0, 1] রেঞ্জে চলে আসে।
  • টুলস: OpenCV, NumPy।
import numpy as np
from PIL import Image

# ইমেজকে numpy অ্যারে তে রূপান্তর করা
image = Image.open('image.jpg')
image_array = np.array(image)

# [0, 1] রেঞ্জে নরমালাইজেশন
normalized_image = image_array / 255.0

৩. গ্রেসকেল কনভার্সন (Grayscale Conversion)

  • উদ্দেশ্য: ইমেজটিকে গ্রেসকেল (কালো এবং সাদা) এ রূপান্তর করা যাতে অপ্রয়োজনীয় রঙের তথ্য বাদ দেওয়া যায়, যখন রঙের তথ্য প্রয়োজনীয় না থাকে।
  • পদ্ধতি: রঙিন ইমেজ (RGB) কে একক ইন্টেনসিটি ভ্যালু (লিউমিন্যান্স) দিয়ে গ্রেসকেলে রূপান্তর করা হয়।
  • টুলস: OpenCV, Pillow।
import cv2

# ইমেজ পড়া
image = cv2.imread('image.jpg')

# গ্রেসকেলে রূপান্তর
grayscale_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow("Grayscale Image", grayscale_image)
cv2.waitKey(0)

৪. ডেটা অগমেন্টেশন (Data Augmentation)

  • উদ্দেশ্য: ট্রেনিং ডেটাসেটের বৈচিত্র্য বাড়ানোর জন্য বিভিন্ন রূপের ইমেজ তৈরি করা, যা মডেলের ওভারফিটিং কমাতে সহায়তা করে।
  • পদ্ধতি: রোটেশন, জুম, ফ্লিপিং, শিয়ারিং, এবং ট্রান্সলেশন এর মতো ট্রান্সফর্মেশন প্রয়োগ করা হয়।
  • টুলস: Keras, TensorFlow, OpenCV।
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import numpy as np
from tensorflow.keras.preprocessing import image

# অগমেন্টেশন সেটিংস
datagen = ImageDataGenerator(
    rotation_range=40,
    width_shift_range=0.2,
    height_shift_range=0.2,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True,
    fill_mode='nearest'
)

# ইমেজ লোড করা
img = image.load_img('image.jpg')
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)

# ট্রান্সফরমেশন প্রয়োগ
i = 0
for batch in datagen.flow(x, batch_size=1, save_to_dir='output', save_prefix='aug', save_format='jpeg'):
    i += 1
    if i > 20:
        break

৫. ইমেজ রোটেশন (Image Rotation)

  • উদ্দেশ্য: ইমেজটিকে বিভিন্ন অবস্থানে আনা যাতে ডেটা আরো বৈচিত্র্যপূর্ণ হয় বা পজিশনাল বৈশিষ্ট্যগুলোর জন্য আরো সাধারণীকৃত হয়।
  • পদ্ধতি: ইমেজটিকে একটি নির্দিষ্ট বা র্যান্ডম কোণ দ্বারা রোটেট করা হয়।
  • টুলস: OpenCV, Pillow।
from PIL import Image

# ইমেজ ওপেন করা
image = Image.open('image.jpg')

# রোটেশন
rotated_image = image.rotate(45)  # 45 ডিগ্রি ঘুরানো
rotated_image.show()

৬. ফ্লিপিং (Flipping)

  • উদ্দেশ্য: ইমেজের দিক উল্টানো (horizontally/vertically) যাতে ডেটা অগমেন্টেশন বৃদ্ধি পায়।
  • পদ্ধতি: ইমেজটিকে অনুভূমিক বা উল্লম্বভাবে ফ্লিপ করা হয়।
  • টুলস: OpenCV, Pillow।
from PIL import Image

# ইমেজ ওপেন করা
image = Image.open('image.jpg')

# অনুভূমিকভাবে ফ্লিপ
flipped_image = image.transpose(Image.FLIP_LEFT_RIGHT)
flipped_image.show()

৭. নোইস রিমুভাল (Noise Removal)

  • উদ্দেশ্য: ইমেজ থেকে নোইস বা গোলমাল অপসারণ করা, যা মডেলের পারফরম্যান্সের উপর নেতিবাচক প্রভাব ফেলতে পারে।
  • পদ্ধতি: গাউসিয়ান ব্লার, মিডিয়ান ব্লার, এবং অন্যান্য ফিল্টার ব্যবহার করে নোইস কমানো।
  • টুলস: OpenCV।
import cv2

# ইমেজ পড়া
image = cv2.imread('image.jpg')

# গাউসিয়ান ব্লার প্রয়োগ
blurred_image = cv2.GaussianBlur(image, (5, 5), 0)
cv2.imshow("Blurred Image", blurred_image)
cv2.waitKey(0)

৮. কনট্রাস্ট এবং ব্রাইটনেস অ্যাডজাস্টমেন্ট (Contrast and Brightness Adjustment)

  • উদ্দেশ্য: ইমেজের কনট্রাস্ট এবং ব্রাইটনেস পরিবর্তন করে ইমেজের ভিজ্যুয়াল উপস্থাপনা বাড়ানো।
  • পদ্ধতি: পিক্সেল ভ্যালু গুলোতে স্কেলিং বা শিফটিং প্রয়োগ করা হয়।
  • টুলস: OpenCV, Pillow।
import cv2

# ইমেজ পড়া
image = cv2.imread('image.jpg')

# কনট্রাস্ট এবং ব্রাইটনেস পরিবর্তন
alpha = 1.5  # কনট্রাস্ট কন্ট্রোল
beta = 50    # ব্রাইটনেস কন্ট্রোল

adjusted_image = cv2.convertScaleAbs(image, alpha=alpha, beta=beta)
cv2.imshow("Adjusted Image", adjusted_image)
cv2.waitKey(0)

সারাংশ

ইমেজ ডেটা প্রিপ্রসেসিং মডেলকে কার্যকরভাবে শিখতে এবং সাধারণীকরণে সহায়তা করে। বিভিন্ন টেকনিক যেমন রিসাইজিং, নরমালাইজেশন, গ্রেসকেল কনভার্সন, ডেটা অগমেন্টেশন ইত্যাদি ব্যবহার করে ইমেজ ডেটাকে প্রস্তুত করা হয়, যা মডেল ট্রেনিংয়ের সময় পারফরম্যান্স উন্নত করতে সাহায্য করে।

Content added By
Promotion