«هوش مصنوعی» (Artificial Intelligence) در سال‌های اخیر شاهد رشد بسیار بزرگ و مهمی در پر کردن شکاف بین توانایی‌های انسان و ماشین بوده است. پژوهشگران و علاقمندان به این حوزه، روی جنبه‌های گوناگون آن کار می‌کنند تا اتفاقات ویژه‌ای به وقوع بپیوندد. یکی از این جنبه‌ها، «بینایی ماشین» (Machine Vision) است. هدف این زمینه قادر ساختن ماشین‌ها به دیدن جهان به صورتی است که انسان‌ها می‌بینند، و درک آن به گونه‌ای مشابه با انسان‌ها و حتی استفاده از دانش حاصل از این بینایی برای وظایف بسیاری مانند «بازشناسی تصویر و ویدئو» (Image & Video recognition)، «تحلیل تصویر» (Image Analysis)، «دسته‌بندی تصاویر» (Image Classification)، «سیستم‌های توصیه‌گر» (Recommendation Systems) و «پردازش زبان طبیعی» (Natural Language Processing) است. پیشرفت‌های حاصل شده در «بینایی کامپیوتری» (Computer Vision) با ظهور «یادگیری عمیق» (Deep Learning) در طول زمان ایجاد و کامل شده و در درجه اول برمبنای الگوریتم خاصی به نام «شبکه عصبی پیچشی» (Convolutional Neural Network) بوده است.

مقدمه

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

«شبکه عصبی پیچشی» (Convolutional Neural Network | CNN / ConvNet) یک الگوریتم یادگیری عمیق است که تصویر ورودی را دریافت می‌کند و به هر یک از اشیا/جنبه‌های موجود در تصویر میزان اهمیت (وزن‌های قابل یادگیری و بایاس) تخصیص می‌دهد و قادر به متمایزسازی آن‌ها از یکدیگر است. در الگوریتم ConvNet در مقایسه با دیگر الگوریتم‌های دسته‌بندی به «پیش‌پردازش« (Pre Processing) کمتری نیاز است. در حالیکه فیلترهای روش‌های اولیه به صورت دستی مهندسی شده‌اند، شبکه عصبی پیچشی (ConvNets)، با آموزش دیدن به اندازه کافی، توانایی فراگیری این فیلترها/مشخصات را کسب می‌کند.

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

چرا شبکه عصبی پیچشی به جای شبکه عصبی پیش‌خور؟

شبکه عصبی پیچشی یا شبکه عصبی پیش‌خور؟

یک تصویر چیزی به جز یک ماتریس با مقادیر پیکسل‌ها نیست. بنابراین چرا تصویر را مسطح نکرده (با تبدیل ماتریس ۳×۳ به بردار ۱×۹ در این مثال) و به یک «پرسپترون چند لایه» (Multilayer Perceptron | MLP) به منظور انجام دسته‌بندی خورانده نشود؟ در تصاویر دودویی بسیار پایه‌ای، این روش در انجام پیش‌بینی کلاس‌ها ممکن است رتبه دقت متوسط را داشته باشد، اما هنگامی که صحبت از تصاویر پیچیده دارای وابستگی میان پیکسل‌ها می‌شود دقت ندارد یا دقت بسیار کمی دارد.

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

در تصویر بالا، یک شکل RGB وجود دارد که بر اساس پانل‌های رنگ – قرمز، سبز و آبی – جداسازی شده است. چنین فضاهای رنگی در تصاویر «سیاه و سفید»، CMYK ،HSV ،RGB و دیگر موارد نیز وجود دارد. می‌توان تصور کرد هنگامی که ابعاد غنی، برای مثال (۸K (۷۶۸۰×۴۳۲۰ شوند، کارها چقدر به لحاظ محاسباتی فشرده می‌شود. نقش ConvNet کاهش تصاویر به شکلی است که پردازش آن‌ها آسان‌تر و بدون از دست دادن ویژگی‌هایی باشد که برای انجام یک پیش‌بینی خوب حیاتی هستند. این مساله هنگامی حائز اهمیت می‌شود که کاربر قصد طراحی معماری را دارد که صرفا در یادگیری ویژگی‌ها خوب نیست، بلکه برای مجموعه داده‌های بزرگ مقیاس‌پذیر نیز هست.

لایه پیچشی – کرنل

شبکه عصبی پیچشی
پیچش یک تصویر ۱×۵×۵ با یک کرنل ۱×۳×۳ به منظور دریافت یک ویژگی پیچانده شده ۱×۳×۳

ابعاد تصویر = ۵ (ارتفاع) × ۵ (وسعت) × ۱ (تعداد کانال‌ها، برای مثال RGB)

در ارائه بالا، ناحیه سبز شبیه تصویر ورودی ۱×۵×۵ است. عنصری که در نگهداری عملیات پیچشی در اولین بخش از لایه پیچشی قرار دارد کرنل/فیلتر، K نامیده می‌شود و به رنگ زرد نشان داده شده است. اکنون، K به عنوان یک ماتریس ۱×۳×۳ فراخوانی می‌شود.

کرنل ۹ بار شیفت پیدا می‌کند زیرا Stride Length = 1 (یعنی Non-Strided)، هر بار عملیات ضرب ماتریس بین K و P قسمت از تصویر که هسته در آن شناور (Hover) است انجام می‌شود.

بازشناسی تصویر با شبکه عصبی پیچشی

فیلتر از راست با مقدار طول گام مشخصی حرکت می‌کند تا به طول کامل عرض را «تجزیه» (Parse) کند. در ادامه مسیر، به پایین و آغاز سمت چپ تصویر  رفته و با مقدار گام مشابهی حرکت می‌کند و این فرآیند را تا هنگامی که کل تصویر را بپیماید ادامه می‌دهد.

شبکه عصبی پیچشی
عملیات پیچش در یک ماتریس MxNx3 تصویر با کرنل 3x3x3

در تصاویری با چندین کانال (برای مثال تصاویر RGB)، کرنل دارای عمق مشابهی با تصویر ورودی می‌شود. ضرب ماتریس‌ها بین پشته Kn و In (به صورت [K1, I1]; [K2, I2]; [K3, I3]) انجام می‌شود و نتایج با بایاس جمع می‌شوند تا یک ویژگی کانال با عمق یک پیچانده شده را در خروجی ارائه کند.

شبکه عصبی پیچشی
فرآیند پیچش با طول گام ۲

هدف عملیات پیچش، استخراج ویژگی‌های سطح بالا مانند «لبه‌ها» (edges) از تصاویر ورودی است. ConvNets نیاز دارد که صرفا به یک «لایه پیچشی» (Convolutional Layer) محدود نشود. به طور معمول، اولین ConvLayer مسئول ثبت ویژگی‌های سطح پایین مانند لبه‌ها، رنگ، جهت گرادیان و دیگر موارد است. با لایه‌های افزوده، معماری با ویژگی‌های سطح بالا نیز سازگار می‌شود، و شبکه‌ای را به دست می‌دهد که دارای درک کاملی از تصاویر موجود در مجموعه داده به صورتی است که انسان‌ها  تصاویر را درک می‌کنند. دو نوع نتیجه برای عملیات وجود دارد، یکی برای آنکه ابعاد ویژگی پیچانده شده در مقایسه با ورودی کاهش پیدا می‌کند، و دیگری آنکه ابعاد افزایش پیدا می‌کند یا برابر با مقدار پیشین باقی می‌ماند. این کار با اعمال Valid Padding در حالت پیشین یا Same Padding در حالت بعدی انجام می‌شود.

بازشناسی تصویر با شبکه عصبی پیچشی
SAME padding: یک تصویر 5x5x1 با 0s برای ساخت یک تصویر 6x6x1 پدگذاری می‌شود.

هنگامی که تصویر 5x5x1 به یک تصویر 6x6x1 تقویت می‌شود و سپس کرنل 3x3x1 بر فراز آن اعمال می‌شود، ماتریس پیچانده شده به ابعاد 5x5x1 تبدیل می‌شود. بنابراین آن را Same Padding نامیده‌اند. از سوی دیگر، اگر عملیات مشابهی بدون پدگذاری انجام شود، ماتریسی حاصل می‌شود که دارای ابعاد کرنل (3x3x1) است و به آن Valid Padding گفته می‌شود. مخزن گیت‌هاب vdumoulin (+) شامل تعداد زیادی از تصاویر متحرک (Gif) مشابه آنچه در بالا وجود دارد است که به درک بهتر چگونگی پدگذاری و طول گام کمک می‌کند.

لایه تجمعی

بازشناسی تصویر با شبکه عصبی پیچشی
تجمع 3×3 بر فراز یک ویژگی پیچانده شده 5×5

مشابه با «لایه پیچشی» (Convolutional Layer)، «لایه تجمعی» (Pooling layer) نیز مسئول کاهش سایز فضای ویژگی پیچانده شده است. این امر برای کاهش قدرت محاسباتی مورد نیاز برای پردازش داده‌ها از طریق کاهش ابعاد است. علاوه بر این، برای استخراج ویژگی‌های «غالب» (Dominant) که چرخش و موقعیت ثابت دارند مفید است، بنابراین فرآیند آموزش موثر مدل را حفظ می‌کند.

دو نوع تجمع وجود دارد: Max Pooling و Average Pooling. تجمع Max Pooling مقدار بیشینه را از قسمتی از تصویر که توسط کرنل پوشش داده شده باز می‌گرداند. از سوی دیگر، Average Pooling میانگین همه مقادیر را از قسمت تصاویر پوشش داده شده توسط کرنل باز می‌گرداند.

Max Pooling همچنین کار «حذف نویز» (Noise Suppressant) را انجام می‌دهد. این تجمع، همه فعالیت‌های نویزی را هم‌زمان ترک می‌کند و همچنین در طول کاهش ابعاد با حذف نویز اجرا می‌شود. از سوی دیگر، Average Pooling به سادگی کاهش ابعاد را به عنوان مکانیزم حذف نویز اجرا می‌کند. بنابراین می‌توان گفت که Max Pooling خیلی بهتر از Average Pooling کار می‌کند.

Max Pooling و Average Pooling
انواع Pooling

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

دسته‌بندی — لایه کاملا متصل (لایه FC)

لایه کاملا متصل

افزودن یک «لایه کاملا متصل» (Fully-Connected layer) (معمولا) راهی ارزان برای یادگیری ترکیب‌های غیر خطی سطح بالای ویژگی‌ها به صورتی است که به وسیله خروجی لایه پیچشی ارائه شد. لایه کاملا متصل در آن فضا یک تابع احتمالا غیر خطی را می‌آموزد. اکنون که تصویر ورودی به شکل مناسبی از پرسپترون چند لایه مبدل شد، باید تصویر را در یک بردار ستونی مسطح کرد. خروجی مسطح شده به یک شبکه عصبی پیش‌خور خورانده می‌شود و «بازگشت به عقب» (Backpropagation) در هر تکرار از آموزش اعمال می‌شود.

پس از یک مجموعه از دوره‌ها، مدل قادر به ایجاد تمایز بین ویژگی‌های غالب و برخی ویژگی‌های مشخص سطح پایین در تصویر و دسته‌بندی آن‌ها با استفاده از روش دسته‌بندی «بیشینه همواره» (Softmax) است. معماری‌های گوناگونی از شبکه عصبی پیچشی موجود است که نقش کلیدی در ساخت الگوریتم‌هایی که به «هوش مصنوعی» (Artificial Intelligence) به عنوان یک کل در آینده پیش‌رو قدرت می‌بخشند و باید قدرت ببخشند دارد. برخی از این موارد در ادامه بیان شده‌اند.

  • LeNet
  • AlexNet
  • VGGNet
  • GoogLeNet
  • ResNet
  • ZFNet

اگر نوشته بالا برای شما مفید بوده، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

telegram
twitter

الهام حصارکی

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

بر اساس رای 1 نفر

آیا این مطلب برای شما مفید بود؟

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *