CNN ব্যবহার করে Image Classification প্রজেক্ট

প্র্যাকটিস প্রোজেক্টস - চেইনার (Chainer) - Latest Technologies

404

Convolutional Neural Network (CNN) ব্যবহার করে Image Classification প্রজেক্ট তৈরি করা একটি চমৎকার প্র্যাকটিস প্রজেক্ট। এই প্রজেক্টে আমরা কুকুর এবং বিড়াল চিহ্নিত করতে একটি CNN মডেল তৈরি করব।

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

pip install tensorflow numpy matplotlib

ধাপ ২: ডেটাসেট লোড করা

আপনি Kaggle বা Microsoft-এর Cats vs. Dogs ডেটাসেট ব্যবহার করতে পারেন। ডেটাসেটটি ডাউনলোড করে train এবং validation ফোল্ডারে বিভক্ত করুন।

ফোল্ডার স্ট্রাকচার:

data/
    train/
        cats/
            cat1.jpg
            cat2.jpg
            ...
        dogs/
            dog1.jpg
            dog2.jpg
            ...
    validation/
        cats/
        dogs/

ধাপ ৩: প্রয়োজনীয় লাইব্রেরি এবং ডেটা লোড করা

import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import matplotlib.pyplot as plt

ধাপ ৪: ডেটা প্রি-প্রসেসিং এবং অগমেন্টেশন

ImageDataGenerator ব্যবহার করে ইমেজগুলোকে নরমালাইজ করা এবং ট্রেনিং ডেটাতে কিছু অগমেন্টেশন করা হবে।

# ডেটা অগমেন্টেশন
train_datagen = ImageDataGenerator(rescale=1./255, rotation_range=40, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True)

# ভ্যালিডেশন ডেটা
validation_datagen = ImageDataGenerator(rescale=1./255)

# ডেটা লোড করা
train_generator = train_datagen.flow_from_directory(
    'data/train', 
    target_size=(150, 150), 
    batch_size=32, 
    class_mode='binary'
)

validation_generator = validation_datagen.flow_from_directory(
    'data/validation', 
    target_size=(150, 150), 
    batch_size=32, 
    class_mode='binary'
)

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

CNN মডেলে Convolutional এবং MaxPooling লেয়ার ব্যবহার করে একটি সিম্পল আর্কিটেকচার তৈরি করা।

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout

model = Sequential([
    Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)),
    MaxPooling2D(2, 2),
    
    Conv2D(64, (3, 3), activation='relu'),
    MaxPooling2D(2, 2),
    
    Conv2D(128, (3, 3), activation='relu'),
    MaxPooling2D(2, 2),
    
    Conv2D(128, (3, 3), activation='relu'),
    MaxPooling2D(2, 2),
    
    Flatten(),
    Dense(512, activation='relu'),
    Dropout(0.5),
    Dense(1, activation='sigmoid')
])

model.summary()

ধাপ ৬: মডেল কম্পাইল করা

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

ধাপ ৭: মডেল Training করা

history = model.fit(
    train_generator,
    steps_per_epoch=100,
    epochs=20,
    validation_data=validation_generator,
    validation_steps=50
)

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

Training এবং Validation accuracy এবং loss এর পরিবর্তন দেখতে গ্রাফ আঁকা হবে।

acc = history.history['accuracy']
val_acc = history.history['val_accuracy']
loss = history.history['loss']
val_loss = history.history['val_loss']

epochs = range(1, len(acc) + 1)

plt.plot(epochs, acc, 'b', label='Training accuracy')
plt.plot(epochs, val_acc, 'r', label='Validation accuracy')
plt.title('Training and Validation Accuracy')
plt.legend()
plt.show()

plt.plot(epochs, loss, 'b', label='Training loss')
plt.plot(epochs, val_loss, 'r', label='Validation loss')
plt.title('Training and Validation Loss')
plt.legend()
plt.show()

ধাপ ৯: মডেল সংরক্ষণ করা

model.save("cats_vs_dogs_classifier.h5")

ধাপ ১০: নতুন ইমেজে পূর্বাভাস করা

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

from tensorflow.keras.preprocessing import image
import numpy as np

# মডেল লোড করা
model = tf.keras.models.load_model("cats_vs_dogs_classifier.h5")

# নতুন ইমেজ লোড করা এবং প্রি-প্রসেসিং
img = image.load_img('data/test/cat1.jpg', target_size=(150, 150))
img_array = image.img_to_array(img) / 255.0
img_array = np.expand_dims(img_array, axis=0)

# পূর্বাভাস
prediction = model.predict(img_array)
if prediction[0][0] > 0.5:
    print("It's a Dog!")
else:
    print("It's a Cat!")

সারসংক্ষেপ

  1. ডেটা প্রি-প্রসেসিং ও অগমেন্টেশন: ImageDataGenerator ব্যবহার।
  2. CNN মডেল তৈরি: Conv2D, MaxPooling, এবং Dropout লেয়ার।
  3. মডেল Training: মডেল প্রশিক্ষণ ও মূল্যায়ন।
  4. মডেল সংরক্ষণ ও পূর্বাভাস: .h5 ফরম্যাটে সংরক্ষণ এবং নতুন ইমেজে পূর্বাভাস।

এই প্রজেক্টটি Image Classification-এ প্রাথমিক দক্ষতা অর্জনের জন্য উপযোগী।

Content added By
Promotion

Are you sure to start over?

Loading...