تمرین ML: طبقه بندی تصویر

معرفی شبکه های عصبی کانولوشنال

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

برای شروع، CNN یک نقشه ویژگی ورودی دریافت می کند: یک ماتریس سه بعدی که در آن اندازه دو بعد اول با طول و عرض تصاویر در پیکسل مطابقت دارد. اندازه بعد سوم 3 است (مطابق با 3 کانال یک تصویر رنگی: قرمز، سبز و آبی). CNN شامل مجموعه‌ای از ماژول‌ها است که هر کدام سه عملیات را انجام می‌دهند.

1. پیچیدگی

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

  • اندازه کاشی های استخراج شده (معمولاً 3x3 یا 5x5 پیکسل).
  • عمق نقشه ویژگی خروجی که با تعداد فیلترهای اعمال شده مطابقت دارد.

در طول یک پیچیدگی، فیلترها (ماتریس هایی به اندازه اندازه کاشی) به طور موثر بر روی شبکه نقشه ویژگی ورودی به صورت افقی و عمودی، یک پیکسل در یک زمان می لغزند و هر کاشی مربوطه را استخراج می کنند (شکل 3 را ببینید).

پیچیدگی 3x3 روی نقشه ویژگی 4x4 شکل 3. پیچیدگی 3x3 از عمق 1 روی نقشه ویژگی ورودی 5x5 و همچنین عمق 1 انجام می شود. 9 مکان ممکن 3x3 برای استخراج کاشی ها از نقشه ویژگی 5x5 وجود دارد، بنابراین این پیچیدگی یک نقشه ویژگی خروجی 3x3 تولید می کند.

برای هر جفت فیلتر-کاشی، CNN ضرب عنصری ماتریس فیلتر و ماتریس کاشی را انجام می دهد و سپس تمام عناصر ماتریس حاصل را جمع می کند تا یک مقدار واحد به دست آید. سپس هر یک از این مقادیر به‌دست‌آمده برای هر جفت فیلتر-کاشی در ماتریس ویژگی درهم‌پیچ خروجی داده می‌شود (شکل‌های 4a و 4b را ببینید).

یک نقشه ویژگی 5x5 و یک پیچیدگی 3x3 شکل 4 الف. سمت چپ : یک نقشه ویژگی ورودی ۵×۵ (عمق ۱). سمت راست : یک پیچش 3×3 (عمق 1).

شکل 4b. سمت چپ : پیچیدگی 3x3 روی نقشه ویژگی ورودی 5x5 انجام می شود. سمت راست : ویژگی پیچیده حاصل. روی یک مقدار در نقشه ویژگی خروجی کلیک کنید تا ببینید چگونه محاسبه شده است.

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

2. ReLU

پس از هر عملیات کانولوشن، CNN یک تبدیل واحد خطی اصلاح شده (ReLU) را به ویژگی پیچیدگی اعمال می کند تا غیرخطی بودن را به مدل معرفی کند. تابع ReLU، \(F(x)=max(0,x)\)، x را برای تمام مقادیر x > 0 برمی گرداند و 0 را برای همه مقادیر x ≤ 0 برمی گرداند.

3. ادغام

پس از ReLU یک مرحله ادغام می آید، که در آن CNN از ویژگی پیچیده (برای صرفه جویی در زمان پردازش) نمونه برداری می کند، تعداد ابعاد نقشه ویژگی را کاهش می دهد، در حالی که همچنان حیاتی ترین اطلاعات ویژگی را حفظ می کند. الگوریتم رایجی که برای این فرآیند استفاده می شود حداکثر ادغام نامیده می شود.

Max Pooling به روشی مشابه کانولوشن عمل می کند. روی نقشه ویژگی اسلاید می کنیم و کاشی هایی با اندازه مشخص استخراج می کنیم. برای هر کاشی، حداکثر مقدار به یک نقشه ویژگی جدید خروجی می‌شود و همه مقادیر دیگر کنار گذاشته می‌شوند. حداکثر عملیات ادغام دو پارامتر دارد:

  • اندازه فیلتر حداکثر ادغام (معمولا 2x2 پیکسل)
  • گام : فاصله، بر حسب پیکسل، جدا کردن هر کاشی استخراج شده. برخلاف کانولوشن، که در آن فیلترها بر روی نقشه ویژگی پیکسل به پیکسل می لغزند، در حداکثر ادغام، گام، مکان‌هایی را که هر کاشی استخراج می‌شود، تعیین می‌کند. برای یک فیلتر 2x2، یک گام 2 مشخص می کند که عملیات ادغام حداکثر، تمام کاشی های 2x2 غیر همپوشانی را از نقشه ویژگی استخراج می کند (شکل 5 را ببینید).

انیمیشن حداکثر ادغام بر روی نقشه ویژگی 4x4 با فیلتر 2x2 و گام 2

شکل 5. سمت چپ : حداکثر ادغام بر روی نقشه ویژگی 4x4 با فیلتر 2x2 و گام 2 انجام می شود. راست : خروجی عملیات ادغام حداکثر. توجه داشته باشید که نقشه ویژگی به دست آمده اکنون 2x2 است و فقط حداکثر مقادیر را از هر کاشی حفظ می کند.

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

در انتهای یک شبکه عصبی کانولوشن، یک یا چند لایه کاملاً متصل وجود دارد (وقتی دو لایه "کاملاً متصل هستند"، هر گره در لایه اول به هر گره در لایه دوم متصل است). کار آنها انجام طبقه بندی بر اساس ویژگی های استخراج شده توسط کانولوشن ها است. به طور معمول، لایه نهایی کاملا متصل حاوی یک تابع فعال سازی softmax است که یک مقدار احتمال از 0 تا 1 را برای هر یک از برچسب های طبقه بندی که مدل سعی در پیش بینی آن دارد، خروجی می دهد.

شکل 6 ساختار سرتاسر یک شبکه عصبی کانولوشن را نشان می دهد.

نمودار انتها به انتها یک شبکه عصبی کانولوشن، که ورودی، دو ماژول کانولوشن و دو لایه کاملاً متصل را برای طبقه‌بندی نشان می‌دهد.

شکل 6. CNN نشان داده شده در اینجا شامل دو ماژول پیچیدگی (convolution + ReLU + pooling) برای استخراج ویژگی، و دو لایه کاملاً متصل برای طبقه بندی است. سایر CNN ها ممکن است دارای تعداد بیشتر یا کمتری از ماژول های کانولوشنال، و بیشتر یا کمتر لایه های کاملا متصل باشند. مهندسان اغلب آزمایش می کنند تا پیکربندی را پیدا کنند که بهترین نتایج را برای مدل آنها ایجاد می کند.