Image Augmentation এবং Image Preprocessing দুটি গুরুত্বপূর্ণ প্রক্রিয়া যা মেশিন লার্নিং এবং ডিপ লার্নিং মডেল প্রশিক্ষণের সময় ব্যবহার করা হয়, বিশেষত যখন কাজ করতে হয় কম্পিউটার ভিশন (Computer Vision) এবং ইমেজ ক্লাসিফিকেশন এর মতো টাস্কের সাথে। এগুলি ডেটাসেটকে উন্নত করতে এবং মডেলের পারফরম্যান্স বাড়াতে সাহায্য করে।
১. Image Preprocessing
Image Preprocessing হল এমন একটি প্রক্রিয়া যেখানে ইমেজ ডেটাকে মডেল প্রশিক্ষণের জন্য উপযুক্ত করতে বিভিন্ন ধরনের রূপান্তর বা পরিবর্তন করা হয়। এর মাধ্যমে মডেলের কার্যকারিতা বাড়ানো হয়, কারণ সঠিকভাবে প্রিপ্রসেসড ইমেজ ডেটা মডেলকে দ্রুত এবং সঠিকভাবে শেখাতে সাহায্য করে।
1.1 Image Preprocessing এর সাধারণ ধাপ:
- Resizing:
- ইমেজের আকার মডেল ইনপুটের আকারে সমন্বিত করা হয়। অধিকাংশ ডিপ লার্নিং মডেল নির্দিষ্ট আকারের ইনপুট চাই, যেমন 224x224 পিক্সেল।
উদাহরণ:
from PIL import Image img = Image.open('image.jpg') img = img.resize((224, 224))
- Normalization:
- ইমেজের পিক্সেল মান 0 থেকে 1 বা -1 থেকে 1 পরিসরে নিয়ে আসা হয়, যাতে ডিপ লার্নিং মডেল প্রশিক্ষণের সময় কনভার্জেন্স দ্রুত হয়।
উদাহরণ:
import numpy as np img_array = np.array(img) # Convert image to numpy array img_array = img_array / 255.0 # Normalize image to range [0, 1]
- Mean Subtraction:
- ইমেজের প্রতিটি পিক্সেল থেকে তার গড় মান (mean) বাদ দিয়ে পিক্সেলগুলোকে কেন্দ্রীয় করে তুলতে হয়। এটি পিক্সেল ভ্যালুদের স্কেল এবং পরিবর্তনশীলতা হ্রাস করতে সাহায্য করে।
উদাহরণ:
mean = [123.68, 116.78, 103.94] # Mean of the ImageNet dataset img_array = img_array - mean
- Color Space Transformation:
- RGB থেকে গ্রেস্কেল বা অন্য কোনো কালার স্পেসে রূপান্তর করা হয়। এটি ইমেজের বিভিন্ন বৈশিষ্ট্যকে হাইলাইট করে মডেলকে প্রশিক্ষণ দেওয়ার সময়।
উদাহরণ:
img = img.convert('L') # Convert image to grayscale
- Data Augmentation:
- ডেটা অগমেন্টেশন হল প্রশিক্ষণ ডেটাকে আর্টিফিশিয়ালি বৃদ্ধি করার প্রক্রিয়া, যাতে মডেলটি আরও ভালভাবে সাধারণীকৃত হয়। এর মাধ্যমে বিভিন্ন পরিবর্তন করা হয়, যেমন রোটেশন, স্কেলিং, শিফটিং, ইত্যাদি।
২. Image Augmentation
Image Augmentation এমন একটি কৌশল যা ডেটাসেট থেকে নতুন এবং বৈচিত্র্যময় ইমেজ তৈরি করে, বিশেষত যখন ডেটা কম বা ব্যালান্সড নয়। এই পদ্ধতিতে ডেটাকে বিভিন্ন রকম পরিবর্তন করা হয়, যেমন রোটেশন, জুম, ফ্লিপিং, স্কেলিং ইত্যাদি, যাতে মডেলটি বিভিন্ন ধরনের ইমেজের ওপর সাধারণীকৃতভাবে কাজ করতে পারে। এটি ডিপ লার্নিং মডেলের ওভারফিটিং রোধ করতে সাহায্য করে এবং প্রশিক্ষণ ডেটার বৈচিত্র্য বাড়ায়।
2.1 Image Augmentation এর কিছু সাধারণ কৌশল:
- Horizontal/Vertical Flip:
- ইমেজকে অনুভূমিক বা উল্লম্বভাবে উল্টানো হয়।
উদাহরণ:
from keras.preprocessing.image import ImageDataGenerator datagen = ImageDataGenerator(horizontal_flip=True) datagen.fit(X_train)
- Rotation:
- ইমেজকে একটি নির্দিষ্ট কোণ ঘুরিয়ে দেওয়া হয়।
উদাহরণ:
datagen = ImageDataGenerator(rotation_range=30) # Rotate images by 30 degrees
- Zooming:
- ইমেজের ভিউ ইন বা আউট করা হয়, যা মডেলকে বিভিন্ন স্কেলে ডেটা দেখানোর সুযোগ দেয়।
উদাহরণ:
datagen = ImageDataGenerator(zoom_range=0.2) # Zoom in or out by 20%
- Shearing:
- ইমেজের আকার পরিবর্তন করে একটি স্কেলিং শিফট করা হয়, যা ভিন্ন ভিন্ন দৃষ্টিভঙ্গি তৈরি করে।
উদাহরণ:
datagen = ImageDataGenerator(shear_range=0.2) # Shear by 20%
- Width and Height Shifting:
- ইমেজের অবস্থান প্রতি পিক্সেল বা অল্প পরিমাণে সরে যাওয়ার জন্য শিফট করা হয়।
উদাহরণ:
datagen = ImageDataGenerator(width_shift_range=0.2, height_shift_range=0.2)
- Brightness Adjustment:
- ইমেজের উজ্জ্বলতা পরিবর্তন করা হয়, যাতে মডেলটি বিভিন্ন আলোতে কাজ করতে শিখে।
উদাহরণ:
datagen = ImageDataGenerator(brightness_range=[0.2, 1.0])
- Random Cropping:
- ইমেজের একটি এলোমেলো অংশ কেটে নেওয়া হয়, যা মডেলকে ইমেজের বিভিন্ন অংশ ফোকাস করতে সাহায্য করে।
৩. Image Augmentation এবং Preprocessing এর একত্রিত ব্যবহার
এটি ডিপ লার্নিং মডেল প্রশিক্ষণকারী ডেভেলপারদের জন্য একটি শক্তিশালী টুল। যখন আপনি image preprocessing এবং image augmentation একত্রিত ব্যবহার করেন, তখন আপনার মডেলটি অধিকতর সাধারণীকৃত (generalized) হয় এবং বিভিন্ন বাস্তব পরিস্থিতিতে ভাল পারফর্ম করে।
Augmentation এবং Preprocessing এর একত্রিত উদাহরণ:
from keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.preprocessing import image
# Create an ImageDataGenerator for preprocessing and augmentation
datagen = ImageDataGenerator(
rescale=1./255, # Normalize image
rotation_range=40, # Random rotation
width_shift_range=0.2, # Random width shift
height_shift_range=0.2, # Random height shift
shear_range=0.2, # Random shear
zoom_range=0.2, # Random zoom
horizontal_flip=True, # Horizontal flip
fill_mode='nearest' # Fill in any newly created pixels
)
# Fit the generator on your training data
datagen.fit(X_train)
# Use the augmented data in model training
model.fit(datagen.flow(X_train, y_train, batch_size=32), epochs=50)
এই কোডটি ImageDataGenerator এর মাধ্যমে ইমেজের preprocessing এবং augmentation একত্রিত করে মডেল প্রশিক্ষণের জন্য একটি শক্তিশালী টুল তৈরি করে।
সারাংশ
- Image Preprocessing: এটি একটি প্রক্রিয়া যেখানে ইমেজ ডেটাকে মডেল প্রশিক্ষণের জন্য উপযুক্ত করতে বিভিন্ন ধরনের রূপান্তর এবং পরিবর্তন করা হয়, যেমন resizing, normalization, mean subtraction, color space transformation ইত্যাদি।
- Image Augmentation: এটি ডেটাসেটের বৈচিত্র্য বাড়ানোর এবং মডেলটির সাধারণীকরণের ক্ষমতা বাড়ানোর জন্য ব্যবহৃত হয়। এটি বিভিন্ন রকম পরিবর্তন যেমন flip, rotation, zoom, shear, shift, brightness adjustment ইত্যাদি ব্যবহার করে ইমেজ তৈরি করে।
- Preprocessing এবং Augmentation একত্রিত করে প্রশিক্ষণ ডেটার গুণমান এবং বৈচিত্র্য বাড়ানো যায়, যা মডেলের পারফরম্যান্স উন্নত করে এবং overfitting কমায়।
Read more