راهنمای کامل عملیات کانولوشن در یادگیری عمیق
راهنمای کامل عملیات کانولوشن در یادگیری عمیق
در یادگیری عمیق و پردازش تصویر، عملیات کانولوشن (Convolution) یکی از ابزارهای کلیدی برای استخراج ویژگیهای مهم از دادههای تصویری یا متوالی است. این عملیات بهعنوان یک استخراجکننده ویژگی عمل میکند و نمایشی فشرده و مفید از دادهها تولید میکند. برخلاف روشهای سنتی که ویژگیها را بهصورت دستی طراحی میکنند، شبکههای عصبی کانولوشنی (CNNها) ویژگیهای بهینه را مستقیماً از دادههای آموزشی یاد میگیرند. این ویژگیها میتوانند شامل لبهها، گوشهها، بافتها یا الگوهای پیچیدهتری مانند اجزای اشیاء (مثل سر، چشم یا دم) باشند. در این مقاله، به معرفی انواع کانولوشنها، نحوه عملکرد انواع مختلف آن، مزایا، معایب و کاربردهای عملی آن میپردازیم.
کانولوشن چیست و چگونه کار میکند؟
کانولوشن یک عملیات ریاضی است که در آن یک ماتریس یا بردار کوچک (به نام کرنل یا فیلتر) روی داده ورودی (مانند تصویر یا سری زمانی) حرکت میکند و با هر ناحیه همپوشانی، ضرب عنصری (Dot Product) انجام میدهد. هدف اصلی، استخراج ویژگیهای کلیدی و حذف جزئیات غیرضروری است، که منجر به نمایشی فشردهتر میشود.
مراحل عملیات کانولوشن:
- قرار دادن کرنل روی داده: از ابتدای داده (مثلاً گوشه بالا-چپ تصویر) شروع کنید و کرنل را با ناحیه فعلی همتراز کنید.
- ضرب عنصری: هر عنصر کرنل را در عنصر متناظر داده ضرب کنید.
- جمع ضرب ها: مجموع ضرب ها را محاسبه کنید تا یک مقدار در نقشه ویژگی خروجی (Feature Map) تشکیل شود.
- حرکت کرنل: کرنل را با گام مشخص به ناحیه بعدی منتقل کنید و فرآیند را تکرار کنید.

در CNNها، چندین لایه کانولوشنی با لایههای عصبی ترکیب میشوند:
- لایههای پایین: ویژگیهای پایه مانند لبهها و بافتها را استخراج میکنند.
- لایههای عمیقتر: الگوهای پیچیدهتری مانند اجزای اشیاء یا کل اشیاء را شناسایی میکنند.
- یادگیری: فیلترها در طول آموزش تنظیم میشوند تا خطا (Loss) به حداقل برسد.
- لایههای Pooling: اندازه فضایی را کاهش میدهند و اطلاعات مهم را حفظ میکنند.
- توابع فعالسازی: مانند ReLU برای معرفی غیرخطی بودن و یادگیری الگوهای پیچیده.
اصطلاحات کلیدی:
- اندازه کرنل (Kernel Size): معمولاً ماتریس یا بردار مربعی مانند 3×3 یا 5×5. کرنلهای بزرگتر زمینه بیشتری را پوشش میدهند اما رزولوشن را کاهش داده و محاسبات را افزایش میدهند.
- گام (Stride): تعداد واحدهایی که کرنل حرکت میکند. گام 1 خروجی با رزولوشن بالا تولید میکند، اما گامهای بالاتر ابعاد خروجی را کاهش میدهند.
- حاشیهسازی (Padding): افزودن مقادیر صفر به مرزهای داده برای حفظ اندازه خروجی، که برای انباشت لایههای عمیق ضروری است.
انواع عملیات کانولوشن
1. کانولوشن یک بعدی (1D Convolution)
در کانولوشن تک بعدی، یک کرنل یکبعدی (مانند [1, 0, -1]) روی دادههای متوالی (مانند سری زمانی یا سیگنال صوتی) حرکت میکند. کرنل با هر بخش از داده همپوشانی کرده، ضرب عنصری انجام میدهد و مجموع را بهعنوان خروجی تولید میکند. این فرآیند ویژگیهای زمانی یا الگوهای متوالی را استخراج میکند.
- مزایا:
- کارآمد برای دادههای یکبعدی و متوالی.
- محاسبات سادهتر نسبت به کانولوشنهای چندبعدی.
- معایب: محدود به دادههای یکبعدی، نمیتواند روابط فضایی پیچیده را استخراج کند.
- کاربردها:
- پردازش صوتی (تشخیص گفتار، طبقهبندی صدا، تحلیل موسیقی برای شناسایی زیر و بم یا تمپو).
- پردازش زبان طبیعی (NLP) مانند تحلیل احساسات یا طبقهبندی موضوعات.
- سریهای زمانی مالی برای پیشبینی روندها.
- تحلیل دادههای حسگر در IoT برای تشخیص ناهنجاری یا نگهداری پیشبینیکننده.

تصویر بالا: نمایش عملیات کانولوشن 1D که نشان میدهد چگونه کرنل روی دادههای متوالی حرکت کرده و ویژگیها را استخراج میکند.(در فریمورکهای TensorFlow یا PyTorch، برای دسترسی به “1D Convolution” از لایه Conv1D استفاده کنید.)
2. کانولوشن دو بعدی (2D Convolution)
در کانولوشن دو بعدی، یک کرنل دو بعدی (مانند ماتریس 3×3) روی تصویر ورودی (ارتفاع × عرض) حرکت میکند. در هر مرحله، کرنل با ناحیه همپوشانی تصویر ضرب عنصری انجام داده و مجموع محصولات را بهعنوان یک پیکسل در نقشه ویژگی خروجی تولید میکند. این فرآیند ویژگیهای فضایی مانند لبهها، گوشهها یا بافتها را استخراج میکند.
- مزایا:
- استخراج مؤثر ویژگیهای فضایی مانند لبهها و الگوهای بصری.
- پایهای برای اکثر معماریهای CNN مانند VGG، ResNet و AlexNet.
- مناسب برای تصاویر دو بعدی مانند عکسها یا فریمهای ویدیو.
- معایب:
- محدود به دادههای دو بعدی، نمیتواند اطلاعات عمقی یا زمانی را مستقیماً پردازش کند.
- کرنلهای بزرگتر هزینه محاسباتی را افزایش میدهند.
- کاربردها:
- تشخیص اشیاء در مدلهایی مانند YOLO یا Faster R-CNN.
- طبقهبندی تصاویر (مانند تشخیص گربه در مقابل سگ).
- پردازش تصویر عمومی مانند فیلترهای تار کردن یا تشخیص لبه.

تصویر بالا: نمایش شماتیک عملیات کانولوشن که نشان میدهد چگونه کرنل روی تصویر حرکت کرده و با ضرب عنصری و جمع، نقشه ویژگی تولید میکند.(در فریمورکهای TensorFlow یا PyTorch، برای دسترسی به “Standard Convolution” از لایه Conv2D استفاده کنید.)
3. کانولوشن سه بعدی (3D Convolution)
نحوه عملکرد: کانولوشن 3D مفهوم 2D را با افزودن بعد سوم (عمق) گسترش میدهد. کرنل سهبعدی (ارتفاع × عرض × عمق) روی دادههای حجمی حرکت میکند و ویژگیهایی از هر سه محور استخراج میکند. این فرآیند برای دادههایی با بعد زمانی یا فضایی اضافی مناسب است.
- مزایا: مدیریت مؤثر دادههای حجمی با زمینه زمانی یا فضایی.
- معایب: هزینه محاسباتی بالا، نیاز به سختافزار قدرتمند.
- کاربردها:
- تحلیل ویدیو AI (مانند مدل Sora از OpenAI برای پردازش ویدیو).
- تصویربرداری پزشکی (تحلیل اسکنهای 3D مانند MRI یا CT).
- محاسبات علمی (شبیهسازی پدیدههای فیزیکی).

3D Convolution
تصویر بالا نمایش کانولوشن 3D که حرکت کرنل سهبعدی روی دادههای حجمی را نشان میدهد.(در فریمورکهای TensorFlow یا PyTorch، برای دسترسی به “3D Convolution” از لایه Conv3D استفاده کنید.)
4. کانولوشن مبسوط (Dilated Convolution)
نحوه عملکرد: کرنل با افزودن شکاف (دایلاسیون) بین عناصر خود، میدان دریافتی را گسترش میدهد. نرخ دایلاسیون (مانند d=2) تعیین میکند که کرنل چند پیکسل را رد کند، که امکان پوشش ناحیه بزرگتری از داده بدون افزایش پارامترها را فراهم میکند.
- مزایا:
- افزایش نمایی میدان دریافتی با عمق شبکه.
- حفظ رزولوشن بدون کاهش ابعاد.
- کارآمد بدون افزایش چشمگیر پارامترها.
- معایب: ممکن است در دادههای پرنویز، زمینههای نامرتب را نادیده بگیرد.
- کاربردها:
- تقسیمبندی معنایی (مانند DeepLab برای طبقهبندی پیکسلبهپیکسل).
- پردازش صوتی (مانند WaveNet برای تولید صدا).
- پردازش ویدیو (پیشبینی فریم یا تشخیص ناهنجاری).

مقایسه کانولوشن استاندارد و گشاد، که تأثیر نرخ دایلاسیون بر میدان دریافتی را در شکل بالا نشان میدهد.(در فریمورکهای TensorFlow یا PyTorch، برای دسترسی به “Dilated Convolution” از لایه Conv2D با پارامتر dilation_rate استفاده کنید.)
5. کانولوشن معکوس (Transposed Convolution)
نحوه عملکرد: برای افزایش ابعاد فضایی دادههای ورودی (Upsampling) از کانولوشن معکوس استفاده میشود. برخلاف کانولوشن استاندارد که ابعاد داده را کاهش میدهد، در این روش داده ورودی با افزودن صفرها بین عناصر (پراکندهسازی) گسترش مییابد و سپس کرنل (فیلتر) روی این داده اعمال میشود. کرنل با انجام ضرب عنصری و جمع، نقشه ویژگی بزرگتری تولید میکند، که هر پیکسل ورودی را به چندین پیکسل خروجی نگاشت میکند.
- مزایا: مناسب برای تولید دادههای با رزولوشن بالاتر، کارآمد در مدلهای generative.
- معایب: ممکن است الگوهای شطرنجی ایجاد کند، نیاز به تنظیم دقیق گام و پدینگ.(تعداد صفرهای اضافهشده به گام s−1 و اندازه کرنل بستگی دارد.)
- کاربردها:
- ژنراتور GANها (تولید تصاویر از نویز).
- دیکودر AutoEncoderها در بازسازی تصاویر.

تصویر بالا، نمایش عملیات کانولوشن ترانسپوز که نحوه افزایش ابعاد داده را نشان میدهد.هر ارایه ورودی در تمام عناصر فیلتر ضرب شده و ماتریس 3 در 3 مجزای خود را تولید می کند. در نهایت با جمع همه انها ماتریس خروجی با ابعاد بالاتر تولید می شود. (در فریمورکهای TensorFlow یا PyTorch، برای دسترسی به “Transposed Convolution” از لایه Conv2DTranspose استفاده کنید)
6. کانولوشن جداییپذیر عمقی (Depthwise Separable Convolution)
نحوه عملکرد: این نوع کانولوشن را به دو مرحله تقسیم میکند:
1) عمقی (depthwise)، که هر کانال ورودی با کرنل جداگانه پردازش میشود؛
2) نقطهای (point)، که با کرنل 1×1 کانالها را ترکیب میکند. این روش تعداد پارامترها را کاهش میدهد.
- مزایا:
- با جدا کردن عملیات فضایی (Depthwise) و کانالی (Pointwise)، هزینه محاسباتی بهطور قابلتوجهی کاهش مییابد.
- ایدهآل برای مدلهایی مثل MobileNet که در موبایل، IoT یا لبه (Edge Computing) استفاده میشوند.
- با وجود کاهش پارامترها (مثال: از 18432 به 2336)، میتواند دقت مشابه کانولوشن استاندارد را حفظ کند، بهخصوص با تنظیم دقیق فیلترها.
- معایب: چون هر کانال بهصورت جداگانه پردازش میشود، ممکن است روابط پیچیده بین کانالها بهخوبی استخراج نشود. عملکرد بهینه نیازمند انتخاب مناسب تعداد فیلترها و معماری است.
- کاربردها:
- در معماری مدلهای MobileNet برای پردازش تصویر و ویدیو.
- به دلیل نیاز کم به منابع، در سیستمهای با محدودیت حافظه و قدرت محاسباتی بهکار میرود (Edge Computing).
- کاربرد های بلادرنگ مانند تشخیص چهره، AR/VR در اپلیکشن های موبایل.

تصویر بالا نمایش مراحل کانولوشن جداسازیپذیر عمقی، شامل پردازش عمقی و نقطهای را نشان می دهد.:
(در فریمورکهای TensorFlow یا PyTorch، برای دسترسی به “Depthwise Separable Convolution” از لایه DepthwiseConv2D (برای بخش عمقی) و Conv2D (برای بخش نقطهای با 1×1) یا مستقیماً از لایه SeparableConv2D استفاده کنید.)
7. کانولوشن تغییرپذیر (Deformable Convolution)
این نوع کانولوشن، پارامترهای قابل یادگیری برای تنظیم مکانهای نمونهبرداری را اضافه میکند. آفستهای کرنل در طول آموزش یاد گرفته میشوند تا بهصورت دینامیک با شکل و موقعیت ویژگیهای ورودی تطبیق یابند.
- مزایا:
- انعطافپذیری بالا در برابر تغییرات اندازه، شکل یا جهت اشیاء.
- افزایش robustness مدل.
- معایب: پیچیدگی بیشتر در آموزش، هزینه محاسباتی بالاتر.
- کاربردها:
- تشخیص اشیاء (مانند Faster R-CNN یا YOLO).
- تحلیل ویدیو (ردیابی اشیاء در حال حرکت).
- شناسایی تصویر با تغییرات ظاهری.

تصویر بالا نمایش معماری کانولوشن تغییرپذیر با کرنل 3×3 و آفستهای قابل یادگیری را نشان می دهد .

مقایسه کانولوشن استاندارد و تغییرپذیر، در تصویر فوق به خوبی نشان داده شده است که انعطافپذیری کانولوشن تغییر شکل پذیر را در نمونهبرداری نشان میدهد.
(در فریمورکهای TensorFlow یا PyTorch، برای دسترسی به “Deformable Convolution” از پیادهسازیهای سفارشی (مثل DeformableConv2D در TensorFlow Addons یا کتابخانههای شخص ثالث مثل DCNv2 در PyTorch) استفاده کنید، زیرا این لایه بهصورت پیشفرض در هسته اصلی وجود ندارد.)
نتیجهگیری و نکات پایانی
عملیات کانولوشن پایه و اساس شبکههای عصبی کانولوشنی است و انواع مختلف آن، از 1D برای دادههای متوالی تا تغییرپذیر برای دادههای پیچیده، برای حل چالشهای خاص طراحی شدهاند. کانولوشن 1D و 2D برای دادههای سادهتر، 3D برای دادههای حجمی، و انواع پیشرفته مانند Dilated و Deformable برای وظایف پیچیدهتر مناسباند. انتخاب نوع مناسب به نوع داده، منابع محاسباتی و کاربرد بستگی دارد. تصاویر ارائهشده به درک بهتر نحوه عملکرد هر نوع کمک میکنند. با پیشرفت تحقیقات، تکنیکهای جدید کانولوشن مدلها را کارآمدتر و دقیقتر میکنند، که در کاربردهایی مانند تشخیص اشیاء، تحلیل ویدیو و تصویربرداری پزشکی تأثیرگذار است.

دیدگاه (2)
هادی زیانی
بررسی جامعی روعملگر کانولوشن در شبکه های عصبی کانولوشنی شده است. شاید بتوان از ترکیبی از عملکردهای کانولوشنی در کاربردی خاص استفاده کرد و باز هم عملکرد شبکه عصبی کانولوشنی را بهبود داد.
مینا ناصری نسب
دقیقا جناب دکتر حتی بهتر از این می شه با موازی کردن انواع روش های کانولوشنی روی ویژگی های دو بعدی ساختار ویژگی های جدیدی رو بسازیم. حتی به این موضوع فکر می کردم ک چرا تعریف کرنل رو روی عمق کانال ویژگی نمی بریم مشابه کاری که با کرنل های 1X1 در معماریها (مثل ResNet یا Inception) انجام شده .