Image Classification এর জন্য CNN তৈরি করা

Convolutional Neural Networks (CNN) - কেরাস ডিপ লার্নিং (Deep Learning with Keras) - Machine Learning

411

Convolutional Neural Network (CNN) একটি বিশেষ ধরনের নিউরাল নেটওয়ার্ক যা ইমেজ ডেটা প্রক্রিয়া করতে অত্যন্ত কার্যকরী। CNN বিভিন্ন ধরনের লেয়ার ব্যবহার করে যেমন convolutional layers, pooling layers, এবং fully connected layers ইমেজের বৈশিষ্ট্য শিখতে এবং শ্রেণীবিভাজন করতে সহায়ক।

এখানে, আমরা একটি সাধারণ CNN মডেল তৈরি করবো যা একটি ইমেজ ক্লাসিফিকেশন টাস্কে ব্যবহৃত হবে।

ধাপ ১: প্রয়োজনীয় লাইব্রেরি ইনস্টল করা

প্রথমে, আপনি যদি এখনও TensorFlow এবং Keras ইনস্টল না করে থাকেন, তাহলে এগুলো ইনস্টল করতে নিচের কমান্ডটি ব্যবহার করুন:

pip install tensorflow

ধাপ ২: CNN মডেল তৈরি করা

এখন আমরা একটি সাধারণ CNN মডেল তৈরি করবো যা ইমেজ ক্লাসিফিকেশন করবে। উদাহরণস্বরূপ, CIFAR-10 ডেটাসেট ব্যবহার করবো, যা ১০টি ভিন্ন শ্রেণীতে ৬০,০০০ ছবি ধারণ করে। আমাদের CNN মডেলটি এই ডেটাসেটের বিভিন্ন শ্রেণী চিহ্নিত করবে।

import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.utils import to_categorical

# CIFAR-10 ডেটাসেট লোড করা
(X_train, y_train), (X_test, y_test) = cifar10.load_data()

# ডেটা স্কেলিং (0-255 রেঞ্জ থেকে 0-1 রেঞ্জে পরিণত করা)
X_train, X_test = X_train / 255.0, X_test / 255.0

# আউটপুট লেবেলগুলিকে ক্যাটেগরিকাল আউটপুটে রূপান্তর করা
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

# CNN মডেল তৈরি করা
model = models.Sequential()

# Convolutional Layer 1: 32 ফিল্টার, 3x3 কনভোলিউশন কোর, ReLU অ্যাক্টিভেশন
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))

# Convolutional Layer 2: 64 ফিল্টার, 3x3 কনভোলিউশন কোর, ReLU অ্যাক্টিভেশন
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))

# Convolutional Layer 3: 64 ফিল্টার, 3x3 কনভোলিউশন কোর, ReLU অ্যাক্টিভেশন
model.add(layers.Conv2D(64, (3, 3), activation='relu'))

# Flatten Layer: ডেটাকে একক ভেক্টর আকারে রূপান্তর করা
model.add(layers.Flatten())

# Fully Connected Layer 1: 64 নিউরন, ReLU অ্যাক্টিভেশন
model.add(layers.Dense(64, activation='relu'))

# আউটপুট লেয়ার: 10 ক্লাস, সিগময়েড অ্যাক্টিভেশন
model.add(layers.Dense(10, activation='softmax'))

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

# মডেল সারাংশ দেখা
model.summary()

কোড বিশ্লেষণ:

  1. Conv2D Layer:
    • প্রথম কনভোলিউশনাল লেয়ারে ৩২টি ৩x৩ ফিল্টার ব্যবহার করা হয়েছে এবং এটি ইনপুট চিত্রের মধ্যে বৈশিষ্ট্য শিখবে।
    • দ্বিতীয় এবং তৃতীয় কনভোলিউশনাল লেয়ারে যথাক্রমে ৬৪টি ফিল্টার ব্যবহার করা হয়েছে।
  2. MaxPooling2D:
    • MaxPooling হল একটি প্রযুক্তি যা কনভোলিউশনাল লেয়ারের পর ইমেজের সাইজ কমিয়ে দেয়, এটি প্রক্রিয়াকরণের সময় ডেটার মাত্রা কমাতে সাহায্য করে।
  3. Flatten Layer:
    • Flatten লেয়ারটি কনভোলিউশনাল লেয়ারের আউটপুটকে একক ভেক্টর আকারে রূপান্তর করে, যাতে এটি fully connected layer (Dense layer) তে পাঠানো যায়।
  4. Dense Layer:
    • Fully connected লেয়ারে 64টি নিউরন ব্যবহার করা হয়েছে। এটি শিখে নেওয়া বৈশিষ্ট্যগুলিকে শ্রেণীবদ্ধ করবে।
    • আউটপুট লেয়ারে 10টি নিউরন ব্যবহার করা হয়েছে, প্রতিটি নিউরন একটি ক্লাসের প্রতিনিধিত্ব করে, এবং softmax activation ব্যবহৃত হয়েছে, যা প্রতিটি শ্রেণীর জন্য সম্ভাবনা প্রদান করবে।
  5. Model Compilation:
    • Adam optimizer ব্যবহার করা হয়েছে, যা অগ্রসর অপটিমাইজেশন প্রক্রিয়া সরবরাহ করে।
    • categorical_crossentropy লস ফাংশনটি ব্যবহার করা হয়েছে, যেটি মাল্টি-ক্লাস ক্লাসিফিকেশন সমস্যায় ব্যবহৃত হয়।
    • accuracy মেট্রিকটি ব্যবহার করা হয়েছে, যাতে প্রশিক্ষণের সময় মডেলের সঠিকতা জানা যায়।

ধাপ ৩: মডেল প্রশিক্ষণ করা

এখন, আমরা মডেলটি প্রশিক্ষণ দিবো। এখানে আমরা X_train এবং y_train ডেটা ব্যবহার করবো এবং মডেলটি প্রশিক্ষণ করবো।

# মডেল প্রশিক্ষণ করা
history = model.fit(X_train, y_train, epochs=10, batch_size=64, validation_split=0.2)
  • epochs=10: মডেলটি 10 বার প্রশিক্ষিত হবে।
  • batch_size=64: প্রতি ব্যাচে 64টি স্যাম্পল নিয়ে প্রশিক্ষণ করা হবে।
  • validation_split=0.2: ২০% ডেটা যাচাইয়ের জন্য রাখা হবে।

ধাপ ৪: মডেল মূল্যায়ন

প্রশিক্ষণ শেষে, মডেলটি X_test এবং y_test ডেটার উপর পরীক্ষা করা হবে।

# মডেল মূল্যায়ন করা
loss, accuracy = model.evaluate(X_test, y_test)

print(f"Test Loss: {loss}")
print(f"Test Accuracy: {accuracy}")

সারাংশ

  • CNN ইমেজ ক্লাসিফিকেশন সমস্যার জন্য একটি শক্তিশালী মডেল তৈরি করতে ব্যবহৃত হয়। এটি Convolutional Layers ব্যবহার করে ইমেজের বৈশিষ্ট্য শিখতে পারে এবং Pooling Layers দ্বারা ডেটার মাত্রা কমিয়ে কার্যক্ষমতা বাড়ায়।
  • এখানে আমরা CIFAR-10 ডেটাসেট ব্যবহার করে একটি বেসিক CNN মডেল তৈরি করেছি যা ১০টি শ্রেণী চিহ্নিত করবে।
  • এই মডেলটি কনভোলিউশনাল লেয়ার, ম্যাক্স পুলিং, এবং ফুলি কানেকটেড লেয়ার সমন্বিত করে ডিজাইন করা হয়েছে।

এটি একটি সাধারণ CNN মডেলের উদাহরণ, যা ইমেজ ক্লাসিফিকেশন টাস্কে ব্যবহার করা যেতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...