Pretrained মডেল হল সেই মডেলগুলো যা পূর্বে একটি বড় এবং সাধারণ ডেটাসেট (যেমন ImageNet) এর উপর প্রশিক্ষিত হয়েছে এবং এর মাধ্যমে মডেলটি বিভিন্ন সাধারণ বৈশিষ্ট্য যেমন কোণ, রেখা, টেক্সচার ইত্যাদি শিখে নেয়। এই মডেলগুলোকে Transfer Learning এর জন্য ব্যবহার করা যায়, যেখানে পূর্বে প্রশিক্ষিত মডেলটি নতুন কাজে বা নতুন ডেটাসেটে পুনরায় প্রশিক্ষণ দেওয়ার মাধ্যমে আরও উন্নত করা হয়।
VGG, ResNet, এবং Inception হল এমন কিছু জনপ্রিয় pretrained মডেল যা ইমেজ রিকগনিশন কাজে অত্যন্ত কার্যকর। আপনি এই মডেলগুলোকে সহজে Keras এর মাধ্যমে ব্যবহার করতে পারেন এবং নতুন কাজের জন্য fine-tuning বা feature extraction করতে পারেন।
১. VGG (Visual Geometry Group)
VGG16 এবং VGG19 হল VGG আর্কিটেকচারের জনপ্রিয় সংস্করণ। এগুলো 16 এবং 19 লেয়ারসমৃদ্ধ কনভোলিউশনাল নিউরাল নেটওয়ার্ক (CNN)। VGG মডেলগুলি ImageNet ডেটাসেটের উপর প্রশিক্ষিত।
Keras এ VGG16 ব্যবহার করা:
from tensorflow.keras.applications import VGG16
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D
from tensorflow.keras.models import Model
# VGG16 মডেল লোড করা (pre-trained weights ব্যবহার করে)
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) # 10 শ্রেণির জন্য
# নতুন মডেল তৈরি করা
model = Model(inputs=base_model.input, outputs=predictions)
# VGG16 এর লেয়ারগুলো ফ্রিজ করা, যাতে ট্রেনিং না হয়
for layer in base_model.layers:
layer.trainable = False
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
এখানে VGG16 মডেলটি ImageNet ডেটাসেটের উপর প্রশিক্ষিত। আমরা এর উপর নতুন লেয়ার (এখানে 10 শ্রেণির জন্য) যুক্ত করেছি এবং পূর্বের লেয়ারগুলো ফ্রিজ করেছি।
২. ResNet (Residual Networks)
ResNet হল একটি খুবই জনপ্রিয় এবং শক্তিশালী মডেল যা skip connections বা residual connections ব্যবহার করে ডীপ লার্নিং মডেলগুলির প্রশিক্ষণ উন্নত করে। ResNet50, ResNet101, এবং ResNet152 এর বিভিন্ন সংস্করণ রয়েছে, যেখানে সংখ্যা লেয়ার সংখ্যা নির্দেশ করে।
Keras এ ResNet50 ব্যবহার করা:
from tensorflow.keras.applications import ResNet50
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D
from tensorflow.keras.models import Model
# ResNet50 মডেল লোড করা (pre-trained weights ব্যবহার করে)
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) # 10 শ্রেণির জন্য
# নতুন মডেল তৈরি করা
model = Model(inputs=base_model.input, outputs=predictions)
# ResNet এর লেয়ারগুলো ফ্রিজ করা
for layer in base_model.layers:
layer.trainable = False
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
এখানে ResNet50 মডেলটি ImageNet ডেটাসেটের উপর প্রশিক্ষিত এবং এর লেয়ারগুলোকে ফ্রিজ করে নতুন শ্রেণির জন্য প্রশিক্ষণ দেওয়া হয়েছে।
৩. Inception (GoogLeNet)
Inception মডেলটি Google দ্বারা তৈরি একটি শক্তিশালী CNN মডেল। এটি বিভিন্ন filter sizes এর সাথে একাধিক কনভোলিউশনাল লেয়ার ব্যবহার করে এবং এটি InceptionV3 এর সংস্করণে অধিক জনপ্রিয়।
Keras এ InceptionV3 ব্যবহার করা:
from tensorflow.keras.applications import InceptionV3
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D
from tensorflow.keras.models import Model
# InceptionV3 মডেল লোড করা (pre-trained weights ব্যবহার করে)
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) # 10 শ্রেণির জন্য
# নতুন মডেল তৈরি করা
model = Model(inputs=base_model.input, outputs=predictions)
# InceptionV3 এর লেয়ারগুলো ফ্রিজ করা
for layer in base_model.layers:
layer.trainable = False
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
এখানে InceptionV3 মডেলটি ImageNet ডেটাসেটের উপর প্রশিক্ষিত এবং এখানে নতুন শ্রেণি অনুযায়ী লেয়ার যোগ করা হয়েছে।
Pretrained মডেলগুলোর সুবিধা
- তীব্র প্রশিক্ষণ সময় কমানো: Pretrained মডেলগুলি আগেই প্রচুর ডেটার উপর প্রশিক্ষিত থাকে, তাই নতুন ডেটাসেটের জন্য মাত্র কিছু লেয়ার ফাইন টিউন করতে হয় এবং মডেলটি দ্রুত ফলাফল দেয়।
- কম ডেটা ব্যবহার: যদি আপনার ডেটাসেট খুব ছোট হয়, তাহলে pretrained মডেল ব্যবহার করা অনেক কার্যকরী, কারণ এই মডেলগুলিতে আগেই বিভিন্ন বৈশিষ্ট্য শেখা হয়ে গেছে, যা নতুন ডেটাসেটের জন্য ব্যবহার করা যায়।
- গবেষণা এবং উন্নয়নে সহায়ক: গবেষকরা pretrained মডেল ব্যবহার করে তাদের নির্দিষ্ট প্রয়োজনে ফাইন টিউনিং করে নতুন কাজের জন্য মডেল তৈরি করতে পারেন। এটি নতুন মডেল তৈরি এবং পরীক্ষা করার জন্য সময় কমিয়ে আনে।
- অত্যন্ত শক্তিশালী মডেল: VGG, ResNet, এবং Inception মডেলগুলি অত্যন্ত শক্তিশালী এবং পরীক্ষিত, যা বড় ডেটাসেট এবং উচ্চ-মানের ফলাফল প্রদান করতে সক্ষম।
সারাংশ
Pretrained মডেল ব্যবহার করলে আপনি দ্রুত এবং দক্ষভাবে ডীপ লার্নিং মডেল তৈরি করতে পারেন। VGG, ResNet, এবং Inception হল এমন জনপ্রিয় মডেল যা বিভিন্ন ইমেজ রিকগনিশন কাজের জন্য প্রশিক্ষিত এবং Transfer Learning এর মাধ্যমে সহজেই নতুন কাজের জন্য ব্যবহার করা যেতে পারে। Keras এর মাধ্যমে এই মডেলগুলির ব্যবহার সহজ এবং আপনি বিভিন্ন ডেটাসেটে ফাইন টিউনিং করে নতুন মডেল তৈরি করতে পারেন।
Read more