Pretrained মডেল (VGG, ResNet, Inception) ব্যবহার

Transfer Learning এবং Pretrained মডেল - কেরাস ডিপ লার্নিং (Deep Learning with Keras) - Machine Learning

417

Pretrained মডেল হল সেই মডেলগুলি যা পূর্বে বড় ডেটাসেট (যেমন ImageNet) এর উপর প্রশিক্ষিত হয়েছে এবং তারা একে অপরের বৈশিষ্ট্যগুলি শিখে ফেলেছে। এই মডেলগুলি নতুন সমস্যার জন্য পুনঃপ্রশিক্ষণ বা fine-tuning এর মাধ্যমে ব্যবহার করা যায়। এই প্রক্রিয়া "Transfer Learning" নামে পরিচিত, যেখানে আপনি আগে থেকে প্রশিক্ষিত মডেলের জ্ঞান নতুন ডেটাসেটে প্রয়োগ করেন।

VGG, ResNet, এবং Inception মডেল

  1. VGG (Visual Geometry Group):
    • VGG একটি খুবই জনপ্রিয় কনভোলিউশনাল নিউরাল নেটওয়ার্ক (CNN) আর্কিটেকচার যা 16 বা 19 লেয়ার এর গভীরতা সহ আসে।
    • VGG মডেলগুলো সাধারণত ইমেজ ক্লাসিফিকেশন সমস্যার জন্য ব্যবহৃত হয় এবং ImageNet ডেটাসেটে প্রশিক্ষিত।
    • VGG এর সাধারণ বৈশিষ্ট্য হচ্ছে এটি শুধুমাত্র 3x3 কনভলিউশন ফিল্টার ব্যবহার করে, যা সহজ এবং কার্যকরী।
  2. ResNet (Residual Network):
    • ResNet মডেল Residual Blocks ব্যবহার করে, যা খুব গভীর নেটওয়ার্কের মধ্যে Vanishing Gradient Problem রোধ করে।
    • ResNet মডেল ৫০, ১০০, ১০০০ লেয়ার পর্যন্ত যেতে পারে এবং খুব ভালো পারফরম্যান্স দেয় বিশেষ করে ImageNet ডেটাসেটে।
    • Residual Connection এর মাধ্যমে, মডেল আরও গভীর হয় কিন্তু প্রশিক্ষণ সমস্যা সৃষ্টি হয় না।
  3. Inception:
    • Inception মডেলটির মূল বৈশিষ্ট্য হল Inception Module, যা একাধিক কনভলিউশন ফিল্টারের মাধ্যমে একাধিক প্যাটার্ন শনাক্ত করতে সহায়ক।
    • এটি multi-scale feature extraction এর ধারণা ব্যবহার করে যাতে মডেল বিভিন্ন আকারের বৈশিষ্ট্য শিখতে পারে।
    • Inception v3 হল Inception এর একটি জনপ্রিয় সংস্করণ যা ImageNet ডেটাসেটে প্রশিক্ষিত।

Pretrained মডেল ব্যবহার করার প্রক্রিয়া

Keras তে applications মডিউল ব্যবহার করে VGG16, ResNet50, এবং InceptionV3 এর মত pretrained মডেল সহজে লোড করা যায়। নিচে Keras এ pretrained মডেলগুলো কিভাবে ব্যবহার করা যায় তা দেখানো হলো:

১. VGG16 মডেল ব্যবহার

VGG16 মডেল ImageNet ডেটাসেটে প্রশিক্ষিত এবং এটি fine-tuning এর জন্য খুব উপযোগী।

from tensorflow.keras.applications import VGG16
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.vgg16 import preprocess_input
import numpy as np

# VGG16 মডেল লোড করা, যে যার উপর pretrained
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))

# নতুন লেয়ার যোগ করা
x = base_model.output
x = GlobalAveragePooling2D()(x)  # গ্লোবাল অ্যাভারেজ পুলিং
x = Dense(1024, activation='relu')(x)  # নতুন ফুলি কানেক্টেড লেয়ার
predictions = Dense(10, activation='softmax')(x)  # আউটপুট লেয়ার

# মডেল তৈরি করা
model = Model(inputs=base_model.input, outputs=predictions)

# Pretrained লেয়ারগুলো freeze করা (এগুলি পুনঃপ্রশিক্ষণ করা হবে না)
for layer in base_model.layers:
    layer.trainable = False

# মডেল কম্পাইল করা
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# মডেল.summary() ব্যবহার করে মডেল দেখুন
model.summary()

২. ResNet50 মডেল ব্যবহার

ResNet50 মডেলও ImageNet ডেটাসেটে pretrained এবং এটি Residual Blocks ব্যবহার করে।

from tensorflow.keras.applications import ResNet50
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D
from tensorflow.keras.models import Model

# ResNet50 মডেল লোড করা, যে যার উপর pretrained
base_model = ResNet50(weights='imagenet', include_top=False, input_shape=(224, 224, 3))

# নতুন লেয়ার যোগ করা
x = base_model.output
x = GlobalAveragePooling2D()(x)  # গ্লোবাল অ্যাভারেজ পুলিং
x = Dense(1024, activation='relu')(x)  # নতুন ফুলি কানেক্টেড লেয়ার
predictions = Dense(10, activation='softmax')(x)  # আউটপুট লেয়ার

# মডেল তৈরি করা
model = Model(inputs=base_model.input, outputs=predictions)

# Pretrained লেয়ারগুলো freeze করা (এগুলি পুনঃপ্রশিক্ষণ করা হবে না)
for layer in base_model.layers:
    layer.trainable = False

# মডেল কম্পাইল করা
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# মডেল.summary() ব্যবহার করে মডেল দেখুন
model.summary()

৩. InceptionV3 মডেল ব্যবহার

InceptionV3 মডেল ImageNet ডেটাসেটের উপর pretrained এবং এটি Inception module ব্যবহার করে।

from tensorflow.keras.applications import InceptionV3
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D

# InceptionV3 মডেল লোড করা, যে যার উপর pretrained
base_model = InceptionV3(weights='imagenet', include_top=False, input_shape=(299, 299, 3))

# নতুন লেয়ার যোগ করা
x = base_model.output
x = GlobalAveragePooling2D()(x)  # গ্লোবাল অ্যাভারেজ পুলিং
x = Dense(1024, activation='relu')(x)  # নতুন ফুলি কানেক্টেড লেয়ার
predictions = Dense(10, activation='softmax')(x)  # আউটপুট লেয়ার

# মডেল তৈরি করা
model = Model(inputs=base_model.input, outputs=predictions)

# Pretrained লেয়ারগুলো freeze করা (এগুলি পুনঃপ্রশিক্ষণ করা হবে না)
for layer in base_model.layers:
    layer.trainable = False

# মডেল কম্পাইল করা
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# মডেল.summary() ব্যবহার করে মডেল দেখুন
model.summary()

Fine-tuning (Pretrained মডেলটিকে পুনঃপ্রশিক্ষণ)

  1. Freeze: প্রথমে pretrained মডেলের লেয়ারগুলো freeze করতে হবে যাতে শুধুমাত্র নতুন লেয়ারগুলো প্রশিক্ষিত হয়।
  2. Unfreeze: তারপর আপনি যেকোনো একটি লেয়ার বা কিছু লেয়ার unfreeze করতে পারেন এবং এগুলিকে পুনঃপ্রশিক্ষণ করার অনুমতি দিতে পারেন (fine-tuning)।
# কিছু লেয়ার unfreeze করা
for layer in base_model.layers[:100]:
    layer.trainable = False

for layer in base_model.layers[100:]:
    layer.trainable = True

Pretrained মডেল ব্যবহার করার উপকারিতা

  1. Transfer Learning: pretrained মডেলগুলি আগের ডেটাসেটে যা শিখেছে তা নতুন ডেটাসেটে ব্যবহার করা যায়, যা প্রশিক্ষণের সময় কম লাগে।
  2. Feature Extraction: pretrained মডেলগুলি বিভিন্ন জটিল বৈশিষ্ট্য (features) শিখে ফেলেছে যা নতুন ডেটাসেটের জন্য দরকারী হতে পারে।
  3. Reduced Computational Cost: বড় ডেটাসেটে প্রশিক্ষণ দিতে অনেক সময় এবং কম্পিউটিং রিসোর্স লাগে, কিন্তু pretrained মডেল ব্যবহার করলে সেই সময় এবং রিসোর্সের সাশ্রয় হয়।

সারাংশ

VGG, ResNet, এবং Inception মডেলগুলি pretrained মডেল হিসেবে সহজেই ব্যবহার করা যেতে পারে এবং Transfer Learning এর মাধ্যমে নতুন সমস্যার সমাধান করতে সহায়ক। Keras এ applications মডিউল থেকে এসব মডেল লোড করা যায় এবং সেগুলির fine-tuning বা নতুন ডেটাসেটে ব্যবহার করা যেতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...