راهنمای جامع CNN (A Comprehensive Guide to Convolution Neural Networks — the ELI5 way)

راهنمای جامع شبکه های عصبی کانولوشن (Convolution Neural Networks – CNN)

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

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

مقدمه

دنباله ConvNet برای طبقه‌بندی(دسته‌بندی) اعداد دست‌نویس

شبکه عصبی کانولوشن (ConvNet/CNN) یک الگوریتم ساد/یری عمیق است که می‌تواند یک تصویر ورودی را بگیرد و اهمیت (وزن‌های قابل یادگیری) را به ابعاد/اشیاء مختلف در تصویر اختصاص دهد و بتواند یکی را از دیگری متمایز کند. پیش‌پردازش‌های موردنیاز در یک ConvNet بسیار کمتر از سایر الگوریتم‌های طبقه بندی است. در حالی که در روش‌های ابتدایی، فیلترها بصورت دستی ساخته می‌شوند، اما با آموزش کافی، ConvNet توانایی یادگیری این فیلترها/ویژگی‌ها را دارد.

معماری یک ConvNet شبیه به اتصال نورون‌های مغز انسان است و از ساختار Visual Cortex الهام گرفته شده است. نورون‌ها بصورت منحصربفرد و تنها در یک منطقه محدود از میدان بینایی که به نام Receptive Field معروف است، به محرک‌ها پاسخ می‌دهند. این مجموعه‌ها در قسمت‌هایی با یکدیگر همپوشانی دارند تا بتوانند کل تصویر را پوشش دهند.

 

چرا ConvNet بیش از یک شبکه عصبی Feed-Forward است؟

تبدیل یک ماتریس 3*3 به یک بردارد 9*1

یک تصویر، چیزی جز یک ماتریس از مقادری پیکسل‌ها نیست. آیا این جمله درست است؟ پس چرا تصویر را مسطح نکنیم؟ به عنوان مثال ماترسی تصویر 3*3 را به یک بردار 9*1 تبدیل کرده‌ایم و برای اهداف طبقه بندی، آن ر به یک شبکه عصبی پرسپترون چندلایه تزریق می کنیم.در تصاویر ابتدایی، این روش با دقت متوسط طبقه‌بندی را انجام می دهد، ولی در تصاویر پیچیده که دارای وابستگی پیکسلی هستند، دقت و صحت بسیار پایینی دارد.

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

 

تصویر ورودی:

4x4x3 RGB Image

در شکل ، یک تصویر RGB داریم که با سه صفحه رنگی آن – قرمز ، سبز و آبی از هم جدا شده است. انواع (فرمت‌های) دیگری برای ذخیره سازی تصاویر رنگی نیز وجود دارند. Grayscale ، RGB ، HSV ، CMYK و غیره.

میتوانید تصور کنید که پردازش تصاویر، زمانی که ابعاد تصویر بزگ می شوند چقدر پیچیده می شوند (برای مثال زمانی که تصویری با ابعاد 7680×4320 داریم). نقش ConvNet در فشرده‌سازی تصاویر برای تسهیل پردازش بسیار روشن است، بدون از دست دادن ویژگی‌هایی که برای بدست اوردن یک پیش‌بینی خوب ضروری است. این مهم است که ما می خواهیم معماری را طراحی کنیم که نه تنها از ویژگیهای یادگیری خوب برخوردار باشد بلکه در مجموعه های داده عظیم نیز مقیاس پذیر باشد.

 

هسته لایه‌ی کانولوشن (Convolution Layer — The Kernel)

Convoluting a 5x5x1 image with a 3x3x1 kernel to get a 3x3x1 convolved feature

ترکیب یک تصویر 5x5x1 با یک هسته 3x3x1 برای به دست آوردن یک ویژگی حل شده 3x3x1.

در نمایه فوق ، بخش سبز شبیه به تصویر ورودی 5x5x1 ما است. عنصر دخیل در انجام عملیات پیچشی در اولین قسمت از یک لایه Convolutional نام دارد که Kernel/Filter K نام دارد و در رنگ زرد نشان داده شده است. ما K را به عنوان ماتریس 3x3x1 انتخاب کرده ایم.

Kernel/Filter, K = 

1    0    1
0    1    0
1    0    1

به این دلیل که گام حرکت برابر یک است، هسته 9 بار شیفت داده می‌شود. هربار پنجره‌ی P از ماترسی تصویر را در ماتریس هسته (K) ضرب می کنیم.

Movement of the Kernel

هسته (K) را از بالاترین نقطه سمت چپ برروی تمامی نقاط ماترسی تصویر حرکت می دهیم و این کار را تا زمانی انجام می‌هیم که تمامی نقاط ماتریس تصویر را پوشش دهد.

Convolution operation on a MxNx3 image matrix with a 3x3x3 Kernel

درمورد تصاویری که چندین صفحه/کانال دارند (مانند RGB)، هسته دارای عمق همسان با عمق تصویر ورودی است، ماتریس هسته Kn درتمامی صفحات ضرب شده و نتیجه را با یکدیگر جمع می کنیم تا یک صفحه/کانال یک‌پارچه را به عنوان ویژگی در خروجی داشته باشیم.

Convolution Operation with Stride Length = 2

هدف از اجرای Convolution استخراج ویژگی های سطح بالا مانند لبه ها از تصویر ورودی است. لازم نیست ConvNets فقط به یک لایه Convolutional محدود شود. به طور معمول، اولین ConvLayer وظیفه ضبط ویژگی های سطح پایین مانند لبه ها، رنگ، جهت گیری شیب و غیره را دارد. با لایه های بعدی، این معماری با ویژگی های سطح بالا نیز سازگار می‌شود و به ما شبکه ای می دهد که درک کاملی از تصاویر ورودی داشته باشد، شبیه به آنچه ما می خواهیم.

 

ادامه این بحث را در اینجا مطالعه کنید.

 

یک دیدگاه بگذارید

آدرس ایمیل شما منتشر نخواهد شد.


*