Convolution এবং Pooling Layers

Convolutional Neural Networks (CNN) - থিয়ানো (Theano) - Machine Learning

318

কনভোলিউশনাল লেয়ার (Convolutional Layer) এবং পুলিং লেয়ার (Pooling Layer) কনভোলিউশনাল নিউরাল নেটওয়ার্ক (CNN) এর দুটি গুরুত্বপূর্ণ উপাদান। CNN সাধারণত চিত্র (image) বা ভিজ্যুয়াল ডেটা প্রক্রিয়া করতে ব্যবহৃত হয়, যেখানে কনভোলিউশনাল লেয়ার চিত্রের বৈশিষ্ট্যগুলি এক্সট্র্যাক্ট করতে সাহায্য করে এবং পুলিং লেয়ার মূল বৈশিষ্ট্যগুলোকে সংক্ষেপিত করতে সহায়ক হয়।

১. কনভোলিউশনাল লেয়ার (Convolutional Layer):

কনভোলিউশনাল লেয়ার হল একটি লেয়ার যা ইনপুট চিত্রে কনভোলিউশন অপারেশন ব্যবহার করে। এটি ইনপুট ডেটার মধ্যে স্থানীয় বৈশিষ্ট্যগুলি (যেমন আকার, রং, কোণ) সনাক্ত করতে সাহায্য করে। কনভোলিউশনাল লেয়ারে একটি ফিল্টার বা কানভ (kernel) ব্যবহার করা হয় যা ইনপুট চিত্রের উপর স্লাইড করে এবং বিভিন্ন বৈশিষ্ট্য বের করে।

কনভোলিউশন অপারেশন:

কনভোলিউশন অপারেশনে, ফিল্টারটি ইনপুট ইমেজে স্লাইডিং অপারেশন করে এবং এর প্রতিটি স্থানীয় অংশের সাথে গুণফল এবং যোগফল করে।

  • ফিল্টার (Kernel): এটি ছোট আকারের ম্যাট্রিক্স যা ইনপুটের উপরে স্লাইড করে।
  • স্টাইড (Stride): এটি হল একটি প্যারামিটার যা ফিল্টারটি ইনপুটে স্লাইড করার সময় এক ধাপ কতটুকু করবে তা নির্ধারণ করে।
  • জিপ (Zero Padding): এটি ইনপুটের চারপাশে শূন্য (zero) যোগ করার প্রক্রিয়া, যা আউটপুটের আকারে কোনো হ্রাস না ঘটিয়ে ফিল্টারটি ইনপুটের মধ্যে ভালোভাবে ফিট হতে সাহায্য করে।

কনভোলিউশনাল লেয়ারের কাজ:

  1. ফিল্টার (Kernel) ইনপুট চিত্রের প্রতি স্লাইডিং পজিশনে গুণফল এবং যোগফল করতে থাকে।
  2. এই গুণফল এবং যোগফলের ফলে একটি নতুন ফিচার ম্যাপ তৈরি হয়, যা ইনপুট চিত্রের বৈশিষ্ট্যগুলি উপস্থাপন করে।

উদাহরণ:

একটি 3x3 ফিল্টার এবং 5x5 ইনপুট চিত্র এর সাথে কনভোলিউশন অপারেশন চালানোর উদাহরণ:

import numpy as np
import theano
import theano.tensor as T

# ইনপুট চিত্র
input_image = np.array([[1, 2, 3, 0, 1],
                        [4, 5, 6, 1, 0],
                        [7, 8, 9, 1, 1],
                        [1, 2, 3, 4, 5],
                        [5, 6, 7, 8, 9]])

# 3x3 ফিল্টার
filter_kernel = np.array([[1, 0, -1],
                           [1, 0, -1],
                           [1, 0, -1]])

# কনভোলিউশন অপারেশন
input_tensor = T.dmatrix('input')
filter_tensor = T.dmatrix('filter')

convolution_output = T.nnet.conv2d(input_tensor, filter_tensor)

# ফাংশন তৈরি করা
f = theano.function([input_tensor, filter_tensor], convolution_output)

# ইনপুট ও ফিল্টার প্রদান করা
result = f(input_image, filter_kernel)
print(result)

এখানে কনভোলিউশনাল লেয়ার 3x3 ফিল্টার ব্যবহার করে ইনপুট চিত্রে বৈশিষ্ট্যগুলির এক্সট্র্যাকশন করবে।


২. পুলিং লেয়ার (Pooling Layer):

পুলিং লেয়ার কনভোলিউশনাল লেয়ারের পরে আসে এবং এটি চিত্রের আকার ছোট করতে সাহায্য করে। পুলিং লেয়ারের প্রধান কাজ হল স্পেসিফিক বৈশিষ্ট্যগুলির সেরা মান বের করা এবং আউটপুটের আকার কমিয়ে আনা। এটি ইনপুট চিত্রের গুরুত্বপূর্ণ বৈশিষ্ট্যগুলো সংক্ষেপিত করার মাধ্যমে পরবর্তী লেয়ারের জন্য একটি সহজলভ্য এবং শক্তিশালী ইনপুট প্রদান করে।

প্রকারভেদ:

  1. Max Pooling: এটি সবচেয়ে বড় মানটি নির্বাচন করে। এটি একটি ডোমেইন থেকে সর্বোচ্চ মান বের করে, সাধারণত একটি 2x2 বা 3x3 স্লাইডিং উইন্ডো ব্যবহার করে।
  2. Average Pooling: এটি একটি ডোমেইন থেকে গড় মান বের করে।

Max Pooling উদাহরণ:

import numpy as np
import theano
import theano.tensor as T

# ইনপুট চিত্র
input_image = np.array([[1, 2, 3, 0],
                        [4, 5, 6, 1],
                        [7, 8, 9, 1],
                        [1, 2, 3, 4]])

# 2x2 ম্যাক্স পুলিং অপারেশন
input_tensor = T.dmatrix('input')

# Max pooling অপারেশন
pool_output = T.signal.pool.pool_2d(input_tensor, (2, 2), ignore_border=True)

# ফাংশন তৈরি করা
f = theano.function([input_tensor], pool_output)

# ইনপুট প্রদান করা
result = f(input_image)
print(result)

এটি 2x2 উইন্ডো ব্যবহার করে Max Pooling অপারেশন চালাবে, এবং প্রতিটি উইন্ডো থেকে সর্বোচ্চ মান বেছে নেবে।


৩. কনভোলিউশনাল লেয়ার এবং পুলিং লেয়ার এর সংমিশ্রণ (Combination):

CNN মডেলগুলিতে কনভোলিউশনাল লেয়ার এবং পুলিং লেয়ার একে অপরের পরে আসে এবং এটি মডেলকে ইনপুট চিত্রের প্রধান বৈশিষ্ট্যগুলো বের করতে সাহায্য করে। প্রথমে কনভোলিউশনাল লেয়ার ইনপুট চিত্রের বৈশিষ্ট্য সনাক্ত করে, তারপর পুলিং লেয়ার আউটপুটের আকার কমিয়ে দেয় এবং মূল বৈশিষ্ট্যগুলি সংরক্ষণ করে।

কনভোলিউশন এবং পুলিং লেয়ার একত্রে:

  1. কনভোলিউশনাল লেয়ার ইনপুট চিত্রে বিভিন্ন বৈশিষ্ট্য সনাক্ত করবে।
  2. পুলিং লেয়ার আউটপুটের আকার ছোট করবে, কিন্তু গুরুত্বপূর্ণ বৈশিষ্ট্যগুলি বজায় রাখবে।

এই সংমিশ্রণ ব্যবহার করে, CNN মডেল চিত্রের বৈশিষ্ট্যগুলি সংক্ষেপিত করে এবং তারপর ক্লাসিফিকেশন বা অন্য কাজের জন্য তা প্রক্রিয়া করে।


সারাংশ:

  • কনভোলিউশনাল লেয়ার ইনপুট চিত্রের বৈশিষ্ট্যগুলো এক্সট্র্যাক্ট করতে ব্যবহৃত হয় এবং এটি একটি ফিল্টার (kernel) ব্যবহার করে ইনপুটে কনভোলিউশন অপারেশন চালায়।
  • পুলিং লেয়ার চিত্রের আকার ছোট করে, কিন্তু গুরুত্বপূর্ণ বৈশিষ্ট্যগুলো সংরক্ষণ করে এবং max pooling বা average pooling অপারেশন ব্যবহার করে।
  • কনভোলিউশনাল লেয়ার এবং পুলিং লেয়ার একসাথে ব্যবহৃত হয় একটি CNN মডেলে, যাতে ডিপ লার্নিংয়ে কার্যকরভাবে বৈশিষ্ট্যগুলো এক্সট্র্যাক্ট করা যায় এবং পরবর্তী লেয়ারে তথ্য প্রক্রিয়া করা যায়।

এই দুটি লেয়ার মিলে CNN মডেল তৈরি করে যা চিত্র বা ভিজ্যুয়াল ডেটা বিশ্লেষণে অত্যন্ত কার্যকর।

Content added By
Promotion

Are you sure to start over?

Loading...