→ بازگشت به بینایی کامپیوتری

شبکه‌های عصبی پیچشی

پیشتر مشاهده کرده‌ایم که شبکه‌های عصبی در پردازش تصاویر به خوبی عمل می‌کنند و حتی یک پرسپترون تک‌لایه قادر است اعداد نوشته‌شده را از مجموعه داده MNIST با دقت قابل قبولی شناسایی کند. با این حال، مجموعه داده MNIST بسیار خاص است و تمامی اعداد در مرکز تصویر قرار دارند، که این امر تشخیص آن‌ها را ساده‌تر می‌کند.

در زندگی واقعی، ما به دنبال قابلیت شناسایی اشیاء در یک تصویر بدون توجه به موقعیت دقیق آن‌ها هستیم. بینایی ماشین با تقسیم‌بندی عمومی متفاوت است، زیرا در زمانی که تلاش می‌کنیم یک شیء خاص را در تصویر بیابیم، در حال اسکن تصویر به دنبال الگوها و ترکیب‌های خاصی هستیم. برای مثال، هنگامی که به دنبال یک گربه هستیم، ممکن است ابتدا به دنبال خطوط افقی باشیم که می‌توانند سبیل‌ها را تشکیل دهند و سپس یک ترکیب خاص از سبیل‌ها به ما می‌گوید که تصویر موجود در واقع یک گربه است. در اینجا، اهمیت موقعیت نسبی و حضور الگوهای خاص بیشتر از موقعیت دقیق آن‌ها در تصویر است.

برای استخراج الگوها، ما از مفهوم فیلترهای پیچشی بهره خواهیم برد. هر تصویر به وسیله یک ماتریس دو بعدی یا یک تنسور سه بعدی با عمق رنگ نمایش داده می‌شود. اعمال فیلتر به معنای آن است که ما یک ماتریس کرنل فیلتر نسبتاً کوچک را انتخاب کرده و برای هر پیکسل در تصویر اصلی، میانگین وزنی را با نقاط همسایه محاسبه می‌کنیم. می‌توانیم این عمل را به گونه‌ای در نظر بگیریم که یک پنجره کوچک بر روی کل تصویر حرکت کرده و تمام پیکسل‌ها را بر اساس وزن‌ها در ماتریس کرنل فیلتر میانگین می‌گیرد.

فیلتر لبه عمودیفیلتر لبه افقی

تصویر از دیمیتری سوشنیکوف

برای نمونه، اگر فیلترهای لبه عمودی و افقی ۳x۳ را بر روی اعداد MNIST اعمال کنیم، می‌توانیم قسمت‌هایی (مانند مقادیر بالا) را که لبه‌های عمودی و افقی در تصویر اصلی ما وجود دارند، شناسایی کنیم. بنابراین، این دو فیلتر می‌توانند برای "جستجوی" لبه‌ها استفاده شوند. به طور مشابه، می‌توانیم فیلترهای متنوعی طراحی کنیم تا به دنبال الگوهای سطح پایین دیگر بگردیم.

تصویر از بانک فیلتر لئونگ-مالیک

با این حال، اگرچه می‌توانیم فیلترها را به صورت دستی برای استخراج الگوهای خاص طراحی کنیم، امکان طراحی شبکه‌ها به گونه‌ای که به صورت خودکار الگوها را یاد بگیرند نیز وجود دارد. این یکی از ایده‌های اصلی پشت CNN است.

ایده‌های اصلی پشت CNN

روش عملکرد CNNها بر اساس ایده‌های کلیدی زیر است:

  • فیلترهای پیچشی قادر به استخراج الگوها هستند.
  • می‌توانیم شبکه را به گونه‌ای طراحی کنیم که فیلترها به صورت خودکار آموزش ببینند.
  • همین روش می‌تواند برای شناسایی الگوها در ویژگی‌های سطح بالا نیز به کار رود، نه فقط در تصویر اصلی. بنابراین، استخراج ویژگی‌های CNN بر روی سلسله‌مراتب ویژگی‌ها عمل می‌کند و شامل ترکیبات پیکسل‌های سطح پایین تا ترکیب‌های بالاتر از بخش‌های تصویر می‌شود.

استخراج ویژگی‌های سلسله‌مراتبی

تصویر از مقاله‌ای توسط هیسلاپ-لینچ، بر اساس تحقیقات آن‌ها

✍️ تمرینات: شبکه‌های عصبی پیچشی

بیایید به بررسی چگونگی عملکرد شبکه‌های عصبی پیچشی ادامه دهیم و ببینیم چگونه می‌توانیم فیلترهای قابل آموزش را به دست آوریم:

معماری هرم

بیشتر CNNهای مورد استفاده در پردازش تصویر دارای معماری به اصطلاح هرم هستند. اولین لایه پیچشی که بر روی تصاویر اصلی اعمال می‌شود، معمولاً دارای تعداد نسبتاً کمی از فیلترها (۸-۱۶) است که به ترکیب‌های مختلف پیکسل، مانند خطوط افقی و عمودی مربوط می‌شود. در سطح بعدی، ابعاد فضایی شبکه کاهش یافته و تعداد فیلترها افزایش می‌یابد که به ترکیب‌های بیشتر از ویژگی‌های ساده مربوط می‌شود. با هر لایه، همان‌طور که به سمت طبقه‌بندی‌کننده نهایی پیش می‌رویم، ابعاد فضایی تصویر کاهش پیدا کرده و تعداد فیلترها افزایش می‌یابد.

برای مثال، به معماری VGG-16، شبکه‌ای که در سال ۲۰۱۴ دقت ۹۲.۷٪ را در طبقه‌بندی ۵-برتر ImageNet به دست آورد، نگاهی بیندازیم:

لایه‌های ImageNet

هرم ImageNet

تصویر از Researchgate

بهترین معماری‌های غالب CNN

به مطالعه خود در مورد بهترین معماری‌های CNN ادامه دهید