ইমেজ ক্লাসিফিকেশন (Image Classification) এর জন্য কনভোলিউশনাল নিউরাল নেটওয়ার্ক (CNN) তৈরি করা একটি জনপ্রিয় ডিপ লার্নিং অ্যাপ্লিকেশন। CNN মূলত ইমেজের বিভিন্ন ফিচার শনাক্ত করে এবং সেগুলি থেকে সিদ্ধান্ত নিয়ে ইমেজের শ্রেণী নির্ধারণ করে। এখানে, আমি একটি সাধারণ CNN মডেল তৈরি করার উদাহরণ দিবো যা ইমেজ ক্লাসিফিকেশন কাজ করবে। আমরা TensorFlow এবং Keras লাইব্রেরি ব্যবহার করব, যা সহজেই CNN তৈরি করার জন্য জনপ্রিয় টুল।
ইমেজ ক্লাসিফিকেশন এর জন্য CNN মডেল তৈরি করার ধাপসমূহ
লাইব্রেরি ইনস্টলেশন: প্রথমে, আপনাকে টেনসরফ্লো এবং কেরাস ইনস্টল করতে হবে (যদি এটি আপনার সিস্টেমে ইনস্টল না থাকে)।
pip install tensorflowডেটাসেট লোডিং: এখানে আমরা CIFAR-10 ডেটাসেট ব্যবহার করব, যা ১০টি ক্লাসে ৬০,০০০ ছবি নিয়ে তৈরি। আপনি আপনার নিজস্ব ডেটাসেটও ব্যবহার করতে পারেন।
import tensorflow as tf from tensorflow.keras.datasets import cifar10 from tensorflow.keras.utils import to_categorical # ডেটাসেট লোড করা (x_train, y_train), (x_test, y_test) = cifar10.load_data() # ডেটা নরমালাইজেশন x_train = x_train / 255.0 x_test = x_test / 255.0 # টার্গেট ভ্যালু গুলিকে ক্যাটিগোরিক্যাল ফর্মে রূপান্তর করা y_train = to_categorical(y_train, 10) y_test = to_categorical(y_test, 10)CNN মডেল তৈরি: এখন আমরা একটি সিম্পল CNN মডেল তৈরি করব, যা কনভোলিউশনাল লেয়ার, পুলিং লেয়ার এবং ডেনস লেয়ার নিয়ে গঠিত।
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout model = Sequential() # কনভোলিউশনাল লেয়ার 1 model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3))) model.add(MaxPooling2D(pool_size=(2, 2))) # কনভোলিউশনাল লেয়ার 2 model.add(Conv2D(64, (3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) # কনভোলিউশনাল লেয়ার 3 model.add(Conv2D(64, (3, 3), activation='relu')) # ফ্ল্যাটেনিং এবং ডেনস লেয়ার model.add(Flatten()) model.add(Dense(64, activation='relu')) model.add(Dropout(0.5)) # ড্রপআউট লেয়ার (ওভারফিটিং কমাতে) model.add(Dense(10, activation='softmax')) # আউটপুট লেয়ার (১০টি ক্লাস) # মডেল সংকলন model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])মডেল ট্রেনিং: এবার আমরা আমাদের তৈরি মডেলটি ট্রেন করব। ১০০ ইপোক এবং ৫২ ব্যাচ সাইজ দিয়ে ট্রেনিং শুরু করা হবে।
model.fit(x_train, y_train, epochs=10, batch_size=64, validation_data=(x_test, y_test))মডেল মূল্যায়ন: মডেলটি ট্রেন করার পর, আমরা এটি পরীক্ষা করার জন্য টেস্ট ডেটাসেট ব্যবহার করব।
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2) print(f"Test accuracy: {test_acc}")
সারাংশ
এই কোডটিতে CNN মডেলটি CIFAR-10 ডেটাসেটের উপর ক্লাসিফিকেশন কাজ করতে ট্রেন করা হয়েছে। মডেলটিতে তিনটি কনভোলিউশনাল লেয়ার এবং দুটি পুলিং লেয়ার রয়েছে, যা ইমেজের ফিচার শনাক্ত করতে সাহায্য করবে। শেষে, একটি ডেনস লেয়ার এবং সেম্বল আউটপুট লেয়ার রয়েছে যা ক্লাসিফিকেশন করবে। মডেলটি categorical_crossentropy লস ফাংশন এবং Adam অপটিমাইজার দিয়ে সংকলিত হয়েছে।
এটি একটি বেসিক CNN মডেল, এবং আপনি এই কাঠামোটি আরও জটিল বা আপনার প্রয়োজন অনুযায়ী কাস্টমাইজ করতে পারেন।
Read more