Chapter 18

CNN-এর মূল

CNN Fundamentals
🎬 মেশিনকে চোখ দেওয়া
Convolutional Neural Network (CNN) হলো সেই আর্কিটেকচার যা ইমেজ থেকে spatial pattern শেখে — প্রান্ত (edge) → আকৃতি (shape) → অবজেক্ট (object)। আজকের প্রায় সব computer vision মডেলের ভিত্তি এটি।

কেন ANN ইমেজে ব্যর্থ?

২২৪×২২৪ RGB ইমেজ = ১,৫০,৫২৮ feature। Fully-connected hidden layer-এ ১০০০ unit হলে ১৫ কোটি+ parameter — প্রচুর memory, overfit, এবং পিক্সেলের spatial relation হারিয়ে যায়। CNN তিনটি ধারণায় এই সমস্যা সমাধান করে।

CNN-এর তিনটি মূল ধারণা

  1. Local Receptive Field: প্রতিটি neuron ছোট patch দেখে, পুরো ইমেজ নয়।
  2. Weight Sharing: একই filter পুরো ইমেজে স্লাইড — parameter বহুগুণ কম।
  3. Translation Invariance: বিড়াল উপরে-বামে হোক বা নিচে-ডানে — একইভাবে চিনে।

সাধারণ CNN পাইপলাইন

Input Image (H × W × C)
   ↓ Conv + ReLU
   ↓ Pooling
   ↓ Conv + ReLU
   ↓ Pooling
   ↓ Flatten
   ↓ Fully Connected
   ↓ Softmax → Class probabilities

মূল Layer-গুলো এক নজরে

Layer
কাজ
আউটপুট পরিবর্তন
Conv2D
Feature extraction
Channel বাড়ে
Pooling
Downsample
H, W কমে
BatchNorm
Stabilize
একই shape
Dropout
Regularize
একই shape

Hierarchical Feature Learning

শুরুর layer শেখে edge ও color, মাঝখানে texture ও pattern, শেষে পুরো object part — চোখ, চাকা, মুখ। এই hierarchy-ই CNN-এর শক্তি।

সরল Keras CNN

from tensorflow.keras import layers, models

model = models.Sequential([
    layers.Conv2D(32, 3, activation="relu", input_shape=(28,28,1)),
    layers.MaxPooling2D(2),
    layers.Conv2D(64, 3, activation="relu"),
    layers.MaxPooling2D(2),
    layers.Flatten(),
    layers.Dense(64, activation="relu"),
    layers.Dense(10, activation="softmax"),
])
model.summary()
🔑 পরিসংখ্যান
উপরের মডেলে মাত্র ~৫৫,০০০ parameter — একই accuracy-র জন্য fully-connected মডেলে কয়েক মিলিয়ন লাগবে।

অনুশীলন

১. ANN বনাম CNN-এ MNIST train করে parameter count ও accuracy তুলনা করুন।

২. CNN-এর কোন layer-এ কত % parameter আছে — analyze করুন।

সারসংক্ষেপ

✨ এই অধ্যায়ে যা শিখলাম
  • CNN local receptive field, weight sharing ও translation invariance ব্যবহার করে।
  • Conv → Pool → Conv → Pool → FC — সাধারণ স্ট্রাকচার।
  • Feature hierarchy: edge → texture → part → object।