Gesponsert

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

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)

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

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

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

 

Gesponsert
Suche
Kategorien
Mehr lesen
Nulled
WhatsMine v1.8.0 Nulled - AI Omnichannel Marketing, Automation & Chatbot SaaS (WhatsApp, Messenger, SMS & Email) Script
WhatsMine v1.8.0 Nulled – AI Omnichannel Marketing, Automation & Chatbot SaaS...
Von Nettumi 2026-09-17 17:44:05 0 726
Hacking Course
SSD vs HDD – পার্থক্য কতটা? Upgrade করার পর যেটা সবচেয়ে বেশি খেয়াল করেছি
SSD vs HDD – পার্থক্য কতটা? Upgrade করার পর যেটা সবচেয়ে বেশি খেয়াল করেছি আসসালামু...
Von Nettumi 2026-09-25 16:44:22 0 28
Nulled
PicLooks - AI দিয়ে তৈরি করুন মনের মতো Avatar, ডিজাইনকে দিন নতুন রূপ! | Techtunes | টেকটিউনস
ওয়েবসাইট তৈরী এবং হোস্টিং এর কয়েকটি ফ্রি অনলাইন টুল দুঃসাহসী টিনটিন
Von Nettumi 2026-09-21 05:29:49 0 44
Hacking Course
মোবাইল স্ক্রিনের ক্ষতিকর ব্লু-লাইট থেকে চোখ বাঁচানোর সহজ উপায় (Android ও PC-র জন্য)
আসসালামু আলাইকুম, ট্রিকবিডি বাসি! আশা করি সবাই ভালো আছেন। আজকাল আমাদের বেশিরভাগ সময় কাটে মোবাইল...
Von Nettumi 2026-09-25 16:47:09 0 18
Tech
মনিটর কেনার গাইডলাইন - সঠিক Monitor নির্বাচন করার ৮ টি টিপস | Techtunes | টেকটিউনস
এনজাইম, হরমোন ও ভবিষ্যৎ চিকিৎসা জাকির হোসাইন
Von Nettumi 2026-09-25 04:01:35 0 42
Gesponsert
‎ ‎ ‎
Nettumi https://nettumi.com