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-এর তিনটি মূল ধারণা
- Local Receptive Field: প্রতিটি neuron ছোট patch দেখে, পুরো ইমেজ নয়।
- Weight Sharing: একই filter পুরো ইমেজে স্লাইড — parameter বহুগুণ কম।
- 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।