Προωθημένο

কনভল্যুশন নিউরাল নেটওয়ার্ক ব্যবহার করে ইমেজ ক্লাসিফিকেশন

0
32

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

কনভল্যুশন

কনভল্যুশন হচ্ছে ফিচার এক্সট্রাক্ট করার পদ্ধতি। ইনপুট হিসেবে থাকে ইমেজ ম্যাট্রিক্স এবং কার্নেল ম্যাট্রিক্স বা ফিল্টার, যা ব্যবহার করে ফিচার এক্সট্রাক্ট করা হবে। আউটপুট হিসেবে পাওয়া যাবে ফিচার ম্যাপ। এক এক ফিল্টার ব্যবহার করে এক এক ধরণের ফিচার এক্সট্রাক্ট করা যায়। যেমন এজ ডিটেকশন, ব্লার, শার্পেন ইত্যাদি।

পুলিং

কনভল্যুশন নিউরাল নেয়ার্কে কনভল্যুশন লেয়ার ছাড়াও আরেকটি লেয়ার থাকে। যা হচ্ছে পুলিং লেয়ার। পুলিং এর কাজ হচ্ছে ফিচার ম্যাপের মূল ফিচার ঠিক রেখে ডাউন স্যাম্পলিং করা। সাধারণত ইমেজ ম্যাট্রিক্স বড় হলে ফিচার ম্যাপও বড় হয়। তখন ট্রেইনিং এর সময় কমিয়ে আনার জন্য এই লেয়ার। বিভিন্ন ধরণের পুলিং রয়েছে। এর মধ্যে জনপ্রিয় হচ্ছে ম্যাক্স পুলিং। এখানেও একটা কার্ণেল বা ফিল্টার নেওয়া হয়। যেমন 2*2 অথবা 3*3 ইত্যাদি। এরপর ফিচার ম্যাপ ম্যাট্রিক্সের উপর বসিয়ে ঐ ফিল্টার ম্যাট্রিক্সের মধ্যে সবচেয়ে বড় পিক্সেল ভ্যালুটা নেওয়া হয়। এভাবে মূল ইমেজের সাইজ অনেক ছোট হয়ে আসে।

আমি এখানে বিস্তারিত আলোচনা করলাম না কনভল্যুশন নিয়ে। কনভল্যুশন কি, কিভাবে কাজ করে ইত্যাদি সম্পর্কে ব্যাসিক জ্ঞান থাকলে সব কিছু বুঝতে সুবিধে হবে। এখান থেকে ধারণা গুলো পাওয়া যাবে।

কিভাবে CNN ব্যবহার করে ইমেজ ক্লাসিফিকেশন করা যায়, তাই দেখি। আর এ জন্য আমরা ব্যবহার করব CIFAR10 dataset। যা আমরা টেনসরফ্লো API ব্যবহার করে ইম্পোর্ট করে নিতে পারব। এই ডেটাসেটে ১০ প্রকারের মোট ৬০ হাজার কালার ইমেজ রয়েছে। এই ডেটা সেট ৫০ হাজার রয়েছে ট্রেইন ইমেজ এবং ১০ হাজার টেস্টিং ইমেজে ভাগ করা রয়েছে। নিচের দশ প্রকারের ইমেজ রয়েছে এই ডেটা সেটেঃ

class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']

প্রথমে ডেটা লোড করে নিব। তার জন্যঃ

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

(train_images, train_labels), (test_images, test_labels) = datasets.cifar10.load_data()

ডেটাসেট ঠিক মত ইম্পোর্ট হয়েছে কিনা, তা দেখতে পারি একটা ইমেজ প্লট করেঃ

img_index = 1
plt.imshow(train_images[img_index])
plt.xlabel(class_names[train_labels[img_index][0]])
plt.show()

ডেটা নরমালাইজ করাঃ

train_images, test_images = train_images / 255.0, test_images / 255.0

মডেল তৈরিঃ

model = tf.keras.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'])


model.fit(train_images, train_labels, epochs=10, 
                    validation_data=(test_images, test_labels))

মডেল ইভ্যালুয়েশনঃ

model.evaluate(test_images,  test_labels)

আমরা দেখব আমাদের মডেল টেস্ট ডেটার উপর ৭০% অ্যাকুরেসি দিচ্ছে। কনভল্যুশন নিউরাল নেটওয়ার্ক ব্যবহার করাই হচ্ছে বেটার অ্যাকুরেসির জন্য। আর এই জন্য আমাদের মডেলকে আরেকটূ ইম্প্রুভ করতে হবে। নেক্সট টাইম আমরা জানব কিভাবে ইম্প্রুভ করা যায়।

কোড গুলো।  এখানে গিয়ে গুগল কোল্যাবে কোড গুলো রান করে দেখা যাবে।

টেনসরফ্লো নিয়ে আরো কিছু লেখাঃ

 

Προωθημένο
Αναζήτηση
Κατηγορίες
Διαβάζω περισσότερα
Hacking Course
ফোন গরম হয়ে যায় কেন? Android ফোন Overheating হওয়ার কারণ ও সমাধান!
স্মার্টফোন ব্যবহার করতে করতে হঠাৎ হাতে গরম লাগা—এটা এখন খুবই পরিচিত একটা ব্যাপার। বিশেষ করে...
από Nettumi 2026-09-25 16:17:24 0 49
Tech
দৈনন্দিন যে ১০ টি ক্রিয়েটিভ কাজে ChatGPT ব্যবহার করা যায়, তা আপনি ভেবেছেন কী? | Techtunes | টেকটিউনস
মজিলার নির্বাচিত সাতটি বেস্ট ফায়ারফক্স 3 অ্যাডঅন দুঃসাহসী টিনটিন
από Nettumi 2026-09-25 03:52:04 0 38
Nulled
রুটেড স্মার্টফোনের জন্য ১৩ টি অসাধারণ অ্যাপ। আপনার স্মার্টফোনের গোপন ফিচারগুলো ব্যবহার করুন খুব সহজে | Techtunes | টেকটিউনস
অনলাইন ফ্রিল্যান্স আউটসোর্সিং এর মাধ্যমে আয় করুন ঘরে বসেই darklord
από Nettumi 2026-09-21 05:17:59 0 51
Nulled
Android LUKS - তোলপাড় করা এক অ্যাপ! USB Accessory Mode এবং Biometrics দিয়ে Password ছাড়াই Secure LUKS Unlocking ফিচারে এটি এখন পুরো Linux মার্কেটের এক অপ্রতিরোধ্য আগ্নেয়গিরি! | Techtunes | টেকটিউনস
jQuery দিয়ে লিখার পেছনে চলমান ছবি মেহেদী.কম.বিডি
από Nettumi 2026-09-25 03:20:27 0 37
Nulled
Help অনলাইন এ কাজ করতে ইচ্ছুক | Techtunes | টেকটিউনস
তৈরী করুন উইন্ডোজের লাইভ সিডি এস এম মেহেদী আকরাম
από Nettumi 2026-09-25 03:21:06 0 55
Προωθημένο
‎ ‎ ‎
Nettumi https://nettumi.com