Image Classification মডেল তৈরি

Convolutional Neural Networks (CNN) - পাইথন ডিপ লার্নিং (Python Deep Learning) - Machine Learning

366

Image Classification হল একটি প্রক্রিয়া যার মাধ্যমে মডেল একটি ছবি ইনপুট হিসেবে গ্রহণ করে এবং সেটির মধ্যে থাকা বিভিন্ন অবজেক্ট বা শ্রেণী (class) চিহ্নিত করে। ডিপ লার্নিং ব্যবহৃত কনভলিউশনাল নিউরাল নেটওয়ার্ক (CNN) ইমেজ ক্লাসিফিকেশনে ব্যাপকভাবে ব্যবহৃত হয়। এখানে আমরা TensorFlow এবং Keras ব্যবহার করে একটি সাধারণ ইমেজ ক্লাসিফিকেশন মডেল তৈরি করব।


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

প্রথমে, আপনাকে কিছু প্রয়োজনীয় লাইব্রেরি ইনস্টল করতে হবে। এই লাইব্রেরি গুলি মডেল তৈরি এবং ডেটা প্রক্রিয়াকরণের জন্য ব্যবহৃত হবে।

pip install tensorflow numpy matplotlib

ধাপ ২: ডেটা প্রস্তুতি

এই উদাহরণে আমরা CIFAR-10 ডেটাসেট ব্যবহার করব, যা 10টি শ্রেণীর ছোট আকারের রঙিন ছবি অন্তর্ভুক্ত করে। TensorFlow এটি ডিফল্টভাবে প্রদান করে, তাই আপনাকে আলাদাভাবে ডাউনলোড করতে হবে না।

import tensorflow as tf
from tensorflow.keras import datasets, layers, models
import matplotlib.pyplot as plt

# CIFAR-10 ডেটাসেট লোড করা
(train_images, train_labels), (test_images, test_labels) = datasets.cifar10.load_data()

# ডেটার পরিস্কারকরণ এবং স্কেলিং (0 থেকে 1 পর্যন্ত মানে)
train_images, test_images = train_images / 255.0, test_images / 255.0

# ক্লাস নামগুলির তালিকা
class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']

ধাপ ৩: মডেল তৈরি

এখন, আমরা একটি Convolutional Neural Network (CNN) মডেল তৈরি করব। CNN বিশেষভাবে চিত্র বিশ্লেষণে ভাল পারফর্ম করে কারণ এটি ছবির স্থানীয় প্যাটার্ন এবং বৈশিষ্ট্য শিখতে সক্ষম।

# মডেল তৈরি
model = models.Sequential([
    layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),  # কনভলিউশনাল লেয়ার
    layers.MaxPooling2D((2, 2)),  # ম্যাক্স পুলিং
    layers.Conv2D(64, (3, 3), activation='relu'),  # দ্বিতীয় কনভলিউশনাল লেয়ার
    layers.MaxPooling2D((2, 2)),  # ম্যাক্স পুলিং
    layers.Conv2D(64, (3, 3), activation='relu'),  # তৃতীয় কনভলিউশনাল লেয়ার
    layers.Flatten(),  # ফ্ল্যাট লেয়ার
    layers.Dense(64, activation='relu'),  # ডেনস লেয়ার
    layers.Dense(10)  # আউটপুট লেয়ার
])

# মডেল কম্পাইল করা
model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])

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

মডেলটি এখন তৈরি হয়েছে, এবং আমরা fit() ফাংশন ব্যবহার করে মডেলটিকে ট্রেনিং ডেটার উপর প্রশিক্ষিত করতে পারি।

# মডেল প্রশিক্ষণ
history = model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))

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

এখন আমরা মডেলটি পরীক্ষা ডেটার উপর পরীক্ষা করতে পারি এবং এর পারফরম্যান্স মূল্যায়ন করতে পারি।

# মডেল মূল্যায়ন
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print(f'Test accuracy: {test_acc}')

ধাপ ৬: ভবিষ্যদ্বাণী (Prediction)

যেকোনো নতুন ইমেজের জন্য মডেল পূর্বাভাস দিতে পারে। এখানে আমরা কিছু টেস্ট ইমেজের উপর পূর্বাভাস দেখাবো।

# পূর্বাভাস তৈরি
predictions = model.predict(test_images)

# প্রথম ছবি এবং তার পূর্বাভাস দেখানো
plt.imshow(test_images[0])
plt.title(f"Prediction: {class_names[predictions[0].argmax()]}")
plt.show()

সম্পূর্ণ কোড উদাহরণ:

import tensorflow as tf
from tensorflow.keras import datasets, layers, models
import matplotlib.pyplot as plt

# CIFAR-10 ডেটাসেট লোড করা
(train_images, train_labels), (test_images, test_labels) = datasets.cifar10.load_data()

# ডেটার পরিস্কারকরণ এবং স্কেলিং (0 থেকে 1 পর্যন্ত মানে)
train_images, test_images = train_images / 255.0, test_images / 255.0

# ক্লাস নামগুলির তালিকা
class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']

# মডেল তৈরি
model = models.Sequential([
    layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),
    layers.MaxPooling2D((2, 2)),
    layers.Conv2D(64, (3, 3), activation='relu'),
    layers.MaxPooling2D((2, 2)),
    layers.Conv2D(64, (3, 3), activation='relu'),
    layers.Flatten(),
    layers.Dense(64, activation='relu'),
    layers.Dense(10)
])

# মডেল কম্পাইল করা
model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])

# মডেল প্রশিক্ষণ
history = model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))

# মডেল মূল্যায়ন
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print(f'Test accuracy: {test_acc}')

# পূর্বাভাস তৈরি
predictions = model.predict(test_images)

# প্রথম ছবি এবং তার পূর্বাভাস দেখানো
plt.imshow(test_images[0])
plt.title(f"Prediction: {class_names[predictions[0].argmax()]}")
plt.show()

সারাংশ:

  • Image Classification মডেল তৈরি করার জন্য Convolutional Neural Network (CNN) ব্যবহার করা হয়। CNN ইমেজ ডেটার স্থানীয় বৈশিষ্ট্য শিখতে সক্ষম।
  • এখানে CIFAR-10 ডেটাসেট ব্যবহার করা হয়েছে, যা 10টি শ্রেণীর 60,000 ইমেজ নিয়ে গঠিত।
  • TensorFlow/Keras ব্যবহার করে CNN মডেল তৈরি করা হয়েছে এবং প্রশিক্ষিত হয়েছে।
  • মডেলটি Test Accuracy এবং Prediction এর মাধ্যমে তার কার্যকারিতা যাচাই করা হয়েছে।
Content added By
Promotion

Are you sure to start over?

Loading...