شبکههای عصبی کانولوشنی (CNN) یکی از مهمترین معماریهای یادگیری عمیق هستند که نقش بزرگی در پیشرفت بینایی کامپیوتر داشتهاند. بسیاری از فناوریهایی که امروز با آنها سروکار داریم، از تشخیص چهره و خودروهای خودران گرفته تا تحلیل تصاویر پزشکی و سیستمهای نظارتی، بر پایه CNNها توسعه پیدا کردهاند. این معماریها برخلاف شبکههای عصبی سنتی، میتوانند الگوها و ویژگیهای مهم تصویر را بهصورت خودکار استخراج کنند و به همین دلیل در پردازش دادههای تصویری عملکرد بسیار قدرتمندی دارند.
در این مقاله بررسی میکنیم CNN چیست، چرا به وجود آمد، چگونه کار میکند و چه تفاوتی با شبکههای عصبی سنتی دارد. همچنین با مفاهیمی مانند Convolution، Pooling، Feature Map و نحوه یادگیری ویژگیها در CNN آشنا میشویم و در ادامه، پیادهسازی یک شبکه کانولوشنی ساده با TensorFlow و Keras را نیز بررسی خواهیم کرد.
CNN چیست؟

شبکههای عصبی کانولوشنی یا Convolutional Neural Networks نوعی معماری در یادگیری عمیق هستند که بهطور ویژه برای پردازش دادههای تصویری طراحی شدهاند. این مدلها میتوانند ویژگیهای مهم تصویر را بهصورت خودکار استخراج کرده و الگوهای مختلف را شناسایی کنند. برخلاف روشهای قدیمی Computer Vision که نیازمند طراحی دستی Featureها بودند، CNNها فرایند یادگیری ویژگیها را خودشان انجام میدهند.
ایده اصلی CNN از نحوه عملکرد سیستم بینایی انسان الهام گرفته شده است. مغز انسان هنگام مشاهده یک تصویر، ابتدا الگوهای ساده مانند لبهها و خطوط را تشخیص میدهد و سپس بهتدریج ساختارهای پیچیدهتر مانند اشیا و چهرهها را درک میکند. CNN نیز تقریبا همین روند را دنبال میکند؛ لایههای اولیه ویژگیهای ساده را یاد میگیرند و لایههای عمیقتر به درک مفاهیم پیچیدهتر میرسند.
یکی از مهمترین تفاوتهای CNN با شبکههای Fully Connected در نحوه اتصال نورونها است. در شبکههای Fully Connected، هر نورون به تمام نورونهای لایه بعدی متصل میشود. این موضوع در پردازش تصویر باعث افزایش شدید تعداد پارامترها و هزینه محاسباتی میشود؛ زیرا تصاویر معمولا دادههای بسیار بزرگی دارند.
اما در CNN، بهجای اتصال کامل، از فیلترهایی به نام Kernel یا Filter استفاده میشود که تنها بخش کوچکی از تصویر را در هر مرحله بررسی میکنند. این ویژگی دو مزیت مهم دارد:
- تعداد پارامترها کاهش پیدا میکند.
- مدل میتواند الگوهای فضایی تصویر را بهتر یاد بگیرد.
همین موضوع باعث شده CNNها برای پردازش تصویر بسیار مناسب باشند. این معماری میتواند ویژگیهایی مانند لبهها، بافتها، اشکال و اشیای مختلف را شناسایی کند و در کاربردهایی مانند تشخیص تصویر، تشخیص چهره، تحلیل ویدئو و تصاویر پزشکی عملکرد بسیار قدرتمندی داشته باشد.
چرا CNN به وجود آمد؟
پیش از ظهور CNNها، بسیاری از مدلهای یادگیری ماشین و شبکههای عصبی سنتی در پردازش تصویر عملکرد محدودی داشتند. تصاویر دادههایی بسیار بزرگ و پیچیده هستند و شبکههای Fully Connected نمیتوانستند آنها را بهصورت موثر پردازش کنند. همین محدودیتها باعث شد معماری CNN بهعنوان راهحلی تخصصی برای تحلیل تصاویر توسعه پیدا کند.
یکی از مهمترین مشکلات شبکههای سنتی، تعداد بسیار زیاد پارامترها بود. برای مثال، اگر یک تصویر با ابعاد بالا وارد یک شبکه Fully Connected میشد، هر پیکسل باید به تعداد زیادی نورون متصل میشد. این موضوع باعث افزایش شدید حجم محاسبات، مصرف حافظه و زمان آموزش میشد. علاوه بر این، احتمال Overfitting نیز بالا میرفت و مدل بهسختی میتوانست روی دادههای جدید عملکرد خوبی داشته باشد.
مشکل مهم دیگر، ناتوانی شبکههای سنتی در درک روابط فضایی میان پیکسلها بود. در تصاویر، موقعیت اجزا اهمیت زیادی دارد؛ برای مثال، فاصله و ارتباط میان چشم، بینی و دهان برای تشخیص چهره مهم است. اما شبکههای Fully Connected تصویر را بیشتر بهصورت مجموعهای از اعداد مستقل میدیدند و ساختار فضایی آن را بهخوبی درک نمیکردند.
ضعف در Feature Extraction نیز یکی دیگر از چالشهای اصلی بود. در روشهای قدیمی بینایی ماشین معمولا مهندسان باید ویژگیهای تصویر را بهصورت دستی طراحی میکردند؛ ویژگیهایی مانند لبهها، گوشهها یا بافتها. این فرایند هم زمانبر بود و هم دقت محدودی داشت.
CNNها برای حل همین مشکلات به وجود آمدند. این معماری با استفاده از فیلترهای کانولوشن میتواند بخشهای کوچک تصویر را بررسی کرده و الگوهای مهم را شناسایی کند. بهجای اینکه همه پیکسلها به تمام نورونها متصل شوند، CNN تنها روی بخشهای مرتبط تمرکز میکند و همین موضوع تعداد پارامترها را بهشدت کاهش میدهد.
علاوه بر این، CNNها ساختار فضایی تصویر را حفظ میکنند و قادرند الگوهایی مانند لبهها، اشکال و اشیا را بهصورت سلسلهمراتبی یاد بگیرند. لایههای اولیه ویژگیهای ساده را استخراج میکنند و لایههای عمیقتر به درک ویژگیهای پیچیدهتر میرسند. همین توانایی باعث شد CNNها به معماری اصلی در بینایی کامپیوتر تبدیل شوند و تحول بزرگی در پردازش تصویر ایجاد کنند.
معماری CNN چگونه کار میکند؟

معماری CNN از چند لایه مختلف تشکیل شده که هرکدام وظیفه مشخصی در پردازش تصویر دارند. این لایهها بهصورت مرحلهبهمرحله روی تصویر اعمال میشوند تا مدل بتواند از الگوهای ساده به مفاهیم پیچیدهتر برسد. در نهایت، CNN تصویر را تحلیل کرده و تصمیم نهایی را برای Classification یا سایر وظایف میگیرد.
۱. Convolution Layer
مهمترین بخش CNN، لایه Convolution است. در این لایه، فیلترهایی به نام Kernel یا Filter روی تصویر حرکت میکنند و ویژگیهای مختلف را استخراج میکنند.
برای مثال، فرض کنید میخواهیم لبههای یک تصویر را تشخیص دهیم. فیلتر روی بخشهای کوچک تصویر حرکت میکند و در هر مرحله بررسی میکند آیا الگوی خاصی مانند خط یا لبه وجود دارد یا نه. خروجی این عملیات بهصورت Feature Map ذخیره میشود.
بهصورت مفهومی میتوان این فرایند را اینگونه تصور کرد:
تصویر ورودی
⬇
فیلتر (Kernel)
⬇
تشخیص الگوها
⬇
Feature Map
هر فیلتر معمولا یک نوع ویژگی را یاد میگیرد.
برای مثال:
- یک فیلتر لبهها را تشخیص میدهد
- فیلتر دیگر بافتها را شناسایی میکند
- فیلترهای عمیقتر میتوانند اجزایی مانند چشم یا چرخ خودرو را تشخیص دهند
Stride چیست؟

Stride مشخص میکند فیلتر در هر مرحله چند پیکسل حرکت کند.
- Stride = 1 ← حرکت دقیقتر و Feature Map بزرگتر
- Stride = 2 ← سرعت بیشتر و خروجی کوچکتر
هرچه مقدار Stride بیشتر باشد، ابعاد خروجی کاهش پیدا میکند.
Padding چیست؟

در عملیات Convolution معمولا ابعاد تصویر کوچکتر میشود. Padding برای جلوگیری از این مشکل استفاده میشود.
در Padding، اطراف تصویر با مقدارهای صفر پر میشود تا اطلاعات لبههای تصویر از بین نرود و ابعاد خروجی بهتر حفظ شود.
۲. Activation Function
بعد از Convolution معمولا از تابع فعالسازی یا Activation Function استفاده میشود. رایجترین تابع فعالسازی در CNN، تابع ReLU است.
فرمول ReLU بسیار ساده است:
f(x) = max(0, x)
یعنی:
- اگر مقدار مثبت باشد ← همان مقدار حفظ میشود
- اگر مقدار منفی باشد ← صفر میشود
چرا ReLU مهم است؟
اگر Activation Function وجود نداشته باشد، شبکه تنها یک مدل خطی خواهد بود و توانایی یادگیری الگوهای پیچیده را نخواهد داشت.
ReLU باعث میشود:
- مدل بتواند روابط غیرخطی را یاد بگیرد
- سرعت آموزش بیشتر شود
- مشکل Vanishing Gradient کاهش پیدا کند
به همین دلیل تقریبا در بیشتر CNNهای مدرن از ReLU استفاده میشود.
۳. Pooling Layer
بعد از استخراج ویژگیها، معمولا از Pooling Layer برای کاهش ابعاد داده استفاده میشود. این لایه اطلاعات مهم را حفظ میکند اما حجم داده را کمتر میکند.
دو نوع رایج Pooling عبارتاند از:
Max Pooling

در Max Pooling، بزرگترین مقدار هر ناحیه انتخاب میشود.
مثلا:
2 5
1 3
خروجی:
5
این روش رایجترین نوع Pooling در CNN است.
Average Pooling

در Average Pooling، میانگین مقادیر هر ناحیه محاسبه میشود.
مثلا:
2 6
4 8
خروجی:
5
مزایای Pooling
استفاده از Pooling چند مزیت مهم دارد:
- کاهش ابعاد داده
- کاهش هزینه محاسباتی
- افزایش سرعت آموزش
- کاهش احتمال Overfitting
- تمرکز روی مهمترین ویژگیها
Pooling باعث میشود مدل نسبت به تغییرات کوچک تصویر مقاومتر شود.
۴. Fully Connected Layer

در انتهای CNN، داده وارد Fully Connected Layer میشود. این بخش وظیفه تصمیمگیری نهایی را برعهده دارد.
ویژگیهایی که در مراحل قبل استخراج شدهاند، در این لایه ترکیب میشوند تا مدل بتواند تصویر را دستهبندی کند.
برای مثال، اگر مدل برای تشخیص حیوانات آموزش دیده باشد، Fully Connected Layer تصمیم میگیرد تصویر مربوط به:
- گربه
- سگ
- پرنده
- یا سایر کلاسها است.
در واقع، بخشهای ابتدایی CNN وظیفه استخراج ویژگی را دارند و Fully Connected Layer این ویژگیها را برای Classification نهایی استفاده میکند.
CNN چگونه ویژگیها را یاد میگیرد؟
یکی از مهمترین دلایل موفقیت CNNها، توانایی آنها در یادگیری سلسلهمراتبی ویژگیها (Hierarchical Feature Learning) است. برخلاف روشهای سنتی که در آنها ویژگیها باید بهصورت دستی تعریف میشدند، CNN میتواند بهصورت خودکار ویژگیهای مهم تصویر را در لایههای مختلف یاد بگیرد.
ایده اصلی این است که هر لایه CNN نوع خاصی از اطلاعات را استخراج میکند. هرچه به لایههای عمیقتر شبکه نزدیک میشویم، ویژگیها پیچیدهتر و مفهومیتر میشوند.
لایههای اولیه: تشخیص ویژگیهای ساده
در اولین لایههای CNN، مدل معمولا ویژگیهای بسیار ساده را شناسایی میکند، مانند:
- لبهها (Edges)
- خطوط
- گوشهها
- تغییرات روشنایی
برای مثال، اگر تصویری از یک گربه وارد مدل شود، لایههای ابتدایی ممکن است فقط خطوط اطراف گوش یا چشم را تشخیص دهند.
این مرحله پایه اصلی درک تصویر است، زیرا تقریبا همه اشیا از ترکیب همین الگوهای ساده ساخته شدهاند.
لایههای میانی: تشخیص شکلها و الگوها
در لایههای میانی، CNN شروع به ترکیب ویژگیهای ساده میکند و الگوهای پیچیدهتری را یاد میگیرد.
برای مثال، مدل میتواند موارد زیر را تشخیص دهد:
- دایرهها
- بافتها
- اشکال خاص
- اجزای صورت
- چرخ خودرو
در این مرحله، شبکه دیگر فقط به پیکسلهای منفرد نگاه نمیکند، بلکه ساختارهای بزرگتر تصویر را درک میکند.
لایههای عمیق: درک اشیا و مفاهیم
در لایههای عمیقتر، مدل قادر است مفاهیم کامل و اشیای واقعی را شناسایی کند.
برای مثال، CNN میتواند تشخیص دهد که تصویر مربوط به:
- گربه
- انسان
- خودرو
- ساختمان است.
در این مرحله، شبکه ترکیبی از تمام ویژگیهای قبلی را برای درک نهایی تصویر استفاده میکند. به همین دلیل CNNها میتوانند با دقت بالا تصاویر پیچیده را دستهبندی کنند.
بهصورت خلاصه، فرایند یادگیری CNN را میتوان اینگونه نمایش داد:
Edges → Shapes → Object Parts → Full Objects
این یادگیری سلسلهمراتبی یکی از مهمترین تفاوتهای CNN با روشهای سنتی بینایی کامپیوتر است و دلیل اصلی قدرت این معماری در تحلیل تصاویر محسوب میشود.
مفاهیم مهم در CNN
برای درک بهتر نحوه عملکرد CNN، آشنایی با چند مفهوم فنی مهم ضروری است. این مفاهیم تعیین میکنند شبکه چگونه تصویر را پردازش کند، چه مقدار اطلاعات را ببیند و ابعاد خروجی در هر لایه چگونه تغییر کند.
Receptive Field

Receptive Field به بخشی از تصویر گفته میشود که یک نورون در CNN میتواند آن را مشاهده کند. هرچه شبکه عمیقتر میشود، Receptive Field نیز بزرگتر میشود و مدل میتواند بخش بیشتری از تصویر را تحلیل کند.
برای مثال:
- در لایههای اولیه، مدل فقط بخشهای کوچک مانند لبهها را میبیند.
- در لایههای عمیقتر، مدل میتواند ارتباط میان بخشهای مختلف تصویر را درک کند.
افزایش Receptive Field یکی از دلایل توانایی CNN در تشخیص اشیای پیچیده است.
Parameter Sharing

یکی از مهمترین ویژگیهای CNN، استفاده از Parameter Sharing است. در این روش، یک فیلتر مشخص در بخشهای مختلف تصویر تکرار میشود و همان وزنها دوباره استفاده میشوند.
این ویژگی دو مزیت مهم دارد:
- تعداد پارامترها بهشدت کاهش پیدا میکند.
- مدل میتواند الگوهای مشابه را در هر قسمت تصویر تشخیص دهد.
برای مثال، اگر مدلی بتواند لبه را در گوشه تصویر تشخیص دهد، همان فیلتر میتواند همان الگو را در بخشهای دیگر تصویر نیز شناسایی کند.
محاسبه ابعاد خروجی (Output Size Calculation)
در CNN، ابعاد Feature Mapها پس از هر عملیات تغییر میکند. اندازه خروجی به عواملی مانند:
- اندازه تصویر ورودی
- اندازه Kernel
- Stride
- Padding وابسته است.
فرمول رایج محاسبه ابعاد خروجی به این صورت است:
Output Size = ((W – F + 2P) / S) + 1
در این فرمول:
- W → اندازه ورودی
- F → اندازه فیلتر
- P → مقدار Padding
- S → مقدار Stride
برای مثال، اگر تصویر ۳۲×۳۲ باشد و از فیلتر ۳×۳ با Stride=1 استفاده شود، ابعاد خروجی کوچکتر خواهد شد مگر اینکه Padding اضافه شود.
پیادهسازی CNN با TensorFlow و Keras
بعد از آشنایی با مفاهیم اصلی CNN، بهتر است یک نمونه ساده از پیادهسازی این معماری را نیز بررسی کنیم. در این مثال، با استفاده از TensorFlow و Keras یک مدل CNN برای دستهبندی تصاویر ساخته میشود.
کتابخانه Keras فرایند ساخت شبکههای عصبی را بسیار سادهتر میکند و به همین دلیل یکی از محبوبترین ابزارها برای توسعه مدلهای Deep Learning محسوب میشود.
۱. لود کردن دیتاست
در این مثال از دیتاست Fashion MNIST استفاده میکنیم. این دیتاست شامل تصاویر لباس، کفش و سایر آیتمهای پوشیدنی است.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import tensorflow as tf from tensorflow.keras import datasets, layers, models # Load dataset (train_images, train_labels), (test_images, test_labels) = datasets.fashion_mnist.load_data() # Normalize data train_images = train_images / 255.0 test_images = test_images / 255.0 # Add channel dimension train_images = train_images[..., tf.newaxis] test_images = test_images[..., tf.newaxis] |
در این مرحله:
- دیتاست دانلود میشود
- مقادیر پیکسلها نرمالسازی میشوند
- تصاویر برای ورود به CNN آماده میشوند
۲. ساخت مدل CNN
حالا میتوانیم معماری CNN را تعریف کنیم.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
model = models.Sequential([ # Convolution Layer layers.Conv2D(32, (3,3), activation=‘relu’, input_shape=(28,28,1)), # Pooling Layer layers.MaxPooling2D((2,2)), # Second Convolution Layer layers.Conv2D(64, (3,3), activation=‘relu’), # Second Pooling Layer layers.MaxPooling2D((2,2)), # Flatten output layers.Flatten(), # Fully Connected Layer layers.Dense(64, activation=‘relu’), # Output Layer layers.Dense(10, activation=‘softmax’) ]) |
در این معماری:
- Conv2D برای استخراج ویژگیها استفاده میشود.
- MaxPooling2D ابعاد داده را کاهش میدهد.
- Flatten خروجی را برای لایه Fully Connected آماده میکند.
- لایه نهایی کلاس تصویر را پیشبینی میکند.
۳. کامپایل و آموزش مدل
بعد از تعریف معماری، مدل باید کامپایل و آموزش داده شود.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
model.compile( optimizer=‘adam’, loss=‘sparse_categorical_crossentropy’, metrics=[‘accuracy’] ) history = model.fit( train_images, train_labels, epochs=5, validation_data=(test_images, test_labels) ) |
در این مرحله:
- Optimizer وظیفه بهینهسازی مدل را برعهده دارد.
- Loss Function میزان خطا را محاسبه میکند.
- مدل طی چند epoch روی دادهها آموزش میبیند.
۴. ارزیابی مدل
بعد از آموزش، میتوان عملکرد مدل را بررسی کرد.
|
1 2 3 |
test_loss, test_acc = model.evaluate(test_images, test_labels) print(“Test Accuracy:”, test_acc) |
اگر مدل بهدرستی آموزش دیده باشد، دقت بالایی روی تصاویر تست خواهد داشت.
۵. انجام Prediction
حالا میتوان از مدل برای پیشبینی تصاویر جدید استفاده کرد.
|
1 2 3 4 |
predictions = model.predict(test_images) print(predictions[0]) print(“Predicted class:”, predictions[0].argmax()) |
مدل در این مرحله احتمال تعلق تصویر به هر کلاس را محاسبه میکند و در نهایت کلاسی با بیشترین احتمال انتخاب میشود.
CNN چه کاربردهایی دارد؟

شبکههای عصبی کانولوشنی امروزه یکی از مهمترین فناوریهای مورد استفاده در Computer Vision هستند و در بسیاری از سیستمهای هوشمند واقعی استفاده میشوند. توانایی CNN در استخراج خودکار ویژگیهای تصویری باعث شده این معماری در حوزههای مختلف عملکرد بسیار قدرتمندی داشته باشد.
Image Classification
یکی از رایجترین کاربردهای CNN، دستهبندی تصاویر است. در این کاربرد، مدل تلاش میکند تشخیص دهد تصویر متعلق به چه کلاسی است.
برای مثال:
- تشخیص گربه و سگ
- شناسایی انواع خودرو
- دستهبندی محصولات فروشگاهی
بسیاری از مدلهای معروف Computer Vision ابتدا برای Image Classification توسعه پیدا کردند.
Face Recognition
CNNها نقش مهمی در سیستمهای تشخیص چهره دارند. این مدلها میتوانند ویژگیهای مهم صورت مانند فاصله چشمها، فرم بینی یا ساختار چهره را استخراج کنند و افراد را شناسایی کنند.
کاربردهای رایج:
- باز کردن قفل موبایل
- سیستمهای احراز هویت
- کنترل دسترسی
- شبکههای اجتماعی
Medical Imaging
در حوزه پزشکی، CNNها برای تحلیل تصاویر پزشکی استفاده میشوند و میتوانند در تشخیص بیماریها به پزشکان کمک کنند.
کاربردها:
- تشخیص تومور
- تحلیل MRI و CT Scan
- شناسایی ناهنجاریها در تصاویر پزشکی
- تشخیص بیماریهای ریوی یا پوستی
توانایی CNN در شناسایی الگوهای پیچیده باعث شده دقت این مدلها در برخی کاربردهای پزشکی بسیار بالا باشد.
Autonomous Vehicles
خودروهای خودران برای درک محیط اطراف به CNNها وابسته هستند. این مدلها تصاویر دوربینها را تحلیل میکنند و اطلاعات مهم محیط را استخراج میکنند.
برای مثال:
- تشخیص خطوط جاده
- شناسایی عابران پیاده
- تشخیص تابلوهای راهنمایی
- شناسایی خودروها و موانع
سرعت پردازش و دقت CNN در این حوزه اهمیت بسیار زیادی دارد.
Surveillance Systems
سیستمهای نظارتی و امنیتی نیز از CNN استفاده میکنند. این مدلها میتوانند تصاویر و ویدئوها را تحلیل کرده و رویدادهای مهم را شناسایی کنند.
کاربردها:
- تشخیص افراد مشکوک
- تحلیل رفتار
- شمارش افراد
- تشخیص ورود غیرمجاز
OCR
فناوری OCR یا Optical Character Recognition برای تبدیل متن داخل تصویر به متن قابلخواندن توسط کامپیوتر استفاده میشود و CNN یکی از مهمترین بخشهای این سیستمها است.
نمونه کاربردها:
- خواندن پلاک خودرو
- اسکن اسناد
- استخراج متن از تصاویر
- دیجیتالیسازی کتابها
Video Analysis
CNNها در تحلیل ویدئو نیز استفاده میشوند. در این حوزه، مدل میتواند فریمهای مختلف ویدئو را تحلیل کرده و اطلاعات مهم را استخراج کند.
کاربردها:
- تشخیص فعالیتها
- تحلیل رفتار
- سیستمهای امنیتی
- تحلیل مسابقات ورزشی
- پردازش ویدئوهای هوشمند
در بسیاری از سیستمهای مدرن، CNNها همراه با معماریهایی مانند RNN یا Transformer استفاده میشوند تا هم اطلاعات تصویری و هم اطلاعات زمانی ویدئو تحلیل شوند.
محدودیتهای CNN
با وجود موفقیت بزرگ CNNها در بینایی ماشین، این معماریها محدودیتهایی نیز دارند که باعث شد پژوهشگران به سراغ معماریهای جدیدتری مانند Vision Transformer بروند.
یکی از مهمترین چالشهای CNN، نیاز به حجم زیادی از داده است. هرچه مدل عمیقتر و پیچیدهتر شود، برای یادگیری مناسب به تصاویر بیشتری نیاز دارد. آموزش CNNهای بزرگ بدون دیتاستهای گسترده معمولا به عملکرد ضعیف یا Overfitting منجر میشود.
هزینه محاسباتی نیز یکی دیگر از مشکلات مهم CNNها است. عملیات کانولوشن، بهویژه در شبکههای عمیق، به حافظه و توان پردازشی بالایی نیاز دارد. به همین دلیل آموزش مدلهای بزرگ CNN میتواند زمانبر و پرهزینه باشد.
CNNها همچنین در درک Long-Range Dependency محدودیت دارند. چون فیلترهای کانولوشن فقط بخش کوچکی از تصویر را در هر مرحله میبینند، درک ارتباط میان نواحی دور از هم تصویر برای آنها دشوارتر است. این موضوع در تصاویر پیچیده میتواند محدودیت ایجاد کند.
حساسیت به Rotation و تغییرات زاویه نیز یکی دیگر از مشکلات CNN است. اگر شی در زاویه یا موقعیت متفاوتی قرار بگیرد، مدل ممکن است عملکرد ضعیفتری داشته باشد؛ مگر اینکه دادههای آموزشی بسیار متنوعی وجود داشته باشد.
محدودیت دیگر به Spatial Hierarchy مربوط میشود. CNNها اطلاعات را بهصورت سلسلهمراتبی و محلی پردازش میکنند، اما همیشه نمیتوانند روابط سراسری تصویر را بهخوبی درک کنند.
همین محدودیتها زمینه را برای ظهور Vision Transformer فراهم کرد. برخلاف CNN که بر Convolution متکی است، Vision Transformer از مکانیزم Attention استفاده میکند و میتواند ارتباط میان تمام بخشهای تصویر را بهصورت همزمان تحلیل کند. این معماری تلاش میکند محدودیتهای CNN در درک وابستگیهای بلندبرد و روابط سراسری تصویر را برطرف کند و به همین دلیل به یکی از مهمترین معماریهای مدرن در Computer Vision تبدیل شده است.
CNN در مقابل Vision Transformer

با ظهور Vision Transformer یا ViT، معماریهای جدیدی وارد حوزه Computer Vision شدند که رویکرد متفاوتی نسبت به CNN دارند. اگرچه CNNها همچنان بسیار پرکاربرد هستند، اما Vision Transformerها توانستهاند در بسیاری از مسائل پیچیده عملکرد قدرتمندی ارائه دهند.
مهمترین تفاوت این دو معماری در نحوه درک تصویر است.
CNNها تصویر را بهصورت محلی (Local) پردازش میکنند. فیلترهای کانولوشن روی بخشهای کوچک تصویر حرکت میکنند و بهتدریج ویژگیها را استخراج میکنند. به همین دلیل CNN در تشخیص الگوهای محلی مانند لبهها، بافتها و اشیا بسیار قدرتمند است.
در مقابل، Vision Transformer از مکانیزم Attention استفاده میکند. این معماری تصویر را به بخشهای کوچک تقسیم میکند و سپس ارتباط میان تمام بخشهای تصویر را بهصورت همزمان تحلیل میکند. همین موضوع باعث میشود ViT بتواند وابستگیهای بلندبرد و ارتباط میان نواحی مختلف تصویر را بهتر درک کند.
| CNN | Vision Transformer |
| مبتنی بر Convolution | مبتنی بر Attention |
| استخراج ویژگی محلی | درک سراسری تصویر |
| مناسب داده کمتر | معمولاً نیازمند داده بیشتر |
| محاسبات سبکتر | هزینه محاسباتی بالاتر |
| بسیار مناسب Computer Vision سنتی | قدرتمند در مدلهای مدرن و Multimodal |
با وجود پیشرفت Vision Transformerها، CNNها همچنان در بسیاری از پروژههای واقعی استفاده میشوند؛ زیرا سریعتر، سبکتر و برای بسیاری از مسائل بینایی کامپیوتر کاملا موثر هستند. از طرف دیگر، ViTها بیشتر در مدلهای بزرگ و سیستمهای Multimodal مدرن استفاده میشوند.
جمعبندی
شبکههای عصبی کانولوشنی یکی از پایهایترین و در عین حال تاثیرگذارترین معماریها در یادگیری عمیق هستند که مسیر پیشرفت بینایی کامپیوتری را متحول کردند. این معماری با الهام از ساختار قشر بینایی انسان، امکان استخراج خودکار ویژگیها از تصاویر را فراهم میکند و بهجای وابستگی به ویژگیهای دستی، بهصورت سلسلهمراتبی الگوهای ساده تا پیچیده را یاد میگیرد. با وجود ظهور معماریهای جدیدتر مانند Transformer، CNN همچنان در بسیاری از کاربردهای بینایی کامپیوتری بهعنوان یک انتخاب پایدار و کارآمد مورد استفاده قرار میگیرد و نقش مهمی در ترکیب با مدلهای مدرن ایفا میکند.
منابع
medium.com | arxiv.org | geeksforgeeks.org | developers.google.com
سوالات متداول
چون CNN از ساختار محلی تصویر استفاده میکند و بهجای بررسی کل تصویر بهصورت یکجا، روی نواحی کوچک تمرکز میکند. این کار باعث کاهش محاسبات و افزایش دقت در تشخیص الگوها میشود.
نه. اگرچه کاربرد اصلی آن در بینایی ماشین است، اما در پردازش صدا، تحلیل سیگنال و حتی برخی کاربردهای NLP هم استفاده شده است.
Pooling باعث کاهش ابعاد داده و حفظ مهمترین ویژگیها میشود. این کار هم سرعت مدل را بالا میبرد و هم از overfitting جلوگیری میکند.
شبکههای Fully Connected کل ورودی را بهصورت یکجا پردازش میکنند، اما CNN ساختار فضایی داده را حفظ میکند و ویژگیهای محلی را بهتر یاد میگیرد.


دیدگاهتان را بنویسید