CNN و Convolutional Layer | Filter، Feature Map و Conv2D - فصل ۱۴

فصل ۱۴: CNN، قشر بینایی، Convolution، Filter و Feature Map

توسط admin | گروه هوش مصنوعی | 1405/06/01

نظرات 0

فصل ۱۴: CNN، قشر بینایی، Convolution، Filter و Feature Map

کتاب
Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow
بخش منبع
Chapter 14: Deep Computer Vision Using CNNs; Visual Cortex; Convolutional Layers; Filters; Stacking Feature Maps; Implementing Conv Layers with Keras
صفحات این PDF
77-86
صفحات چاپی کتاب
479-488
جایگاه در مجموعه
بخش ۵۴ از مجموعهٔ Machine_Learning_405_06؛ مادر: Machine_Learning_405_06_01.html

فصل ۱۴: بینایی ماشین عمیق با شبکه‌های عصبی کانولوشنی

کارهایی مثل تشخیص یک حیوان در تصویر برای انسان بدیهی به نظر می‌رسند، اما بخش بزرگی از ادراک پیش از رسیدن اطلاعات به آگاهی ما در سامانه‌های تخصصی مغز انجام می‌شود. شبکه‌های عصبی کانولوشنی یا CNN از ساختار سلسله‌مراتبی سامانهٔ بینایی الهام گرفته‌اند و در بسیاری از Taskهای Visual به عملکرد بسیار بالایی رسیده‌اند. فصل ۱۴ ابتدا اجزای اصلی CNN را توضیح می‌دهد، سپس Architectureهای مشهور را بررسی می‌کند و در ادامه به Object Detection و Semantic Segmentation می‌رسد.

معماری قشر بینایی

پژوهش‌های David Hubel و Torsten Wiesel نشان داد بسیاری از Neuronهای Visual Cortex فقط به Stimulusهای واقع در ناحیهٔ کوچکی از میدان دید پاسخ می‌دهند؛ این ناحیه Local Receptive Field نام دارد. Receptive Fieldهای Neuronهای مختلف هم‌پوشانی دارند و در مجموع کل Field را می‌پوشانند. برخی Neuronها فقط به Lineهای افقی یا جهت‌های خاص پاسخ می‌دهند و Neuronهای سطح بالاتر Patternهای پیچیده‌تر را از ترکیب Outputهای سطح پایین می‌سازند.

ساختار سلسله‌مراتبی میدان‌های پذیرنده در قشر بینایی
شکل 14-1. Local Receptive Fieldهای Neuronهای Visual Cortex

این مشاهده‌ها الهام‌بخش Neocognitron در سال ۱۹۸۰ شد و بعدها به CNNهای امروزی تکامل یافت. LeNet-5 در سال ۱۹۹۸ یک نقطهٔ عطف عملی بود و برای تشخیص رقم‌های دست‌نویس روی Checkها استفاده شد. دو Building Block مهم آن Convolutional Layer و Pooling Layer بودند.

Convolutional Layer

در Dense Layer هر Neuron به تمام Inputها وصل است؛ در Convolutional Layer هر Neuron فقط به Pixelهای داخل یک Receptive Field کوچک از Layer قبلی متصل می‌شود. Neuronهای یک Layer در موقعیت‌های مختلف Image قرار می‌گیرند و همین Local Connectivity اجازه می‌دهد Featureهای کوچک سطح پایین در Layerهای ابتدایی و Featureهای بزرگ‌تر سطح بالا در Layerهای بعدی ساخته شوند.

اتصال محلی بین Input و Layerهای کانولوشنی متوالی
شکل 14-2. Layerهای CNN با Receptive Field مستطیلی

در CNN، Layerها معمولاً به شکل Grid دو‌بعدی نمایش داده می‌شوند و Image لازم نیست پیش از Convolution به Vector یک‌بعدی Flatten شود.

Zero Padding و Stride

اگر Receptive Field با اندازهٔ f_h × f_w در لبه‌های Image حرکت کند، بدون Padding اندازهٔ Output کوچک‌تر می‌شود. با افزودن Zero Padding اطراف Input می‌توان اندازه را حفظ کرد یا کنترل بیشتری روی Output داشت.

Receptive Field با Padding در مرزهای Feature Map
شکل 14-3. اتصال Layerها و Zero Padding

Stride فاصلهٔ حرکت Receptive Field در هر Step است. Stride برابر ۲ یعنی Layer هر بار دو Pixel جلو می‌رود و در نتیجه Height/Width Output تقریباً نصف می‌شود. این Downsampling می‌تواند Compute و Memory را کاهش دهد، ولی Resolution مکانی را نیز کم می‌کند.

اثر Stride دو بر اندازه Feature Map خروجی
شکل 14-4. کاهش Dimension با Stride برابر ۲

Filter یا Convolution Kernel

Weightهای یک Neuron را می‌توان به شکل Matrix کوچکی هم‌اندازهٔ Receptive Field دید که Filter یا Kernel نام دارد. اگر همهٔ Neuronهای یک Feature Map از یک Kernel مشترک استفاده کنند، Pattern مشخصی را در هر موقعیت Image تشخیص می‌دهند. مثال کتاب دو Kernel سادهٔ عمودی و افقی را روی یک Image اعمال می‌کند؛ Outputهای حاصل لبه‌ها یا Structureهای متناظر را برجسته می‌کنند.

فیلترهای عمودی و افقی روی تصویر ورودی
شکل 14-5. اعمال دو Filter و تولید دو Feature Map

در شبکهٔ واقعی Kernelها دستی تعیین نمی‌شوند؛ Weightها Random Initialize و با Training یاد گرفته می‌شوند. شبکه ممکن است در Layer اول Edge، Line یا Color Transition بیاموزد و در Layerهای بعدی این Featureها را به Shape و Object ترکیب کند.

چند Feature Map و Weight Sharing

Convolutional Layer معمولاً چند Filter دارد و برای هر Filter یک Feature Map Output تولید می‌کند. بنابراین Tensor Layer سه‌بعدی است: Height، Width و Depth یا تعداد Feature Mapها. هر Neuron در یک Feature Map Kernel و Bias مشترک دارد، اما Feature Mapهای مختلف Parameterهای متفاوت دارند. Receptive Field هر Neuron تمام Channelهای Layer قبلی را دربر می‌گیرد.

Feature Mapهای چندکاناله و Kernelهای مشترک در CNN
شکل 14-6. دو Convolutional Layer با چند Filter روی تصویر رنگی

Weight Sharing تعداد Parameterها را به‌شدت کاهش می‌دهد و Translation Equivariance ایجاد می‌کند: Patternی که در یک Location یاد گرفته شود در Locationهای دیگر نیز با همان Filter شناسایی می‌شود. Input Image رنگی سه Channel قرمز، سبز و آبی دارد و Kernel هر Feature Map روی هر سه Channel Weight دارد.

معادلهٔ Convolution

برای Neuron واقع در Row i، Column j و Feature Map k از Layer l، Output از مجموع Weightدار تمام Inputهای Receptive Field در همهٔ Feature Mapهای Layer قبل به‌علاوهٔ Bias ساخته می‌شود و سپس Activation Function اعمال می‌شود:

z[i,j,k] = b[k] + Σ(u) Σ(v) Σ(k') x[i',j',k'] × w[u,v,k',k]

Indexهای i' و j' با Stride و Padding تعیین می‌شوند. نکتهٔ مهم این است که تعداد Parameterها به Spatial Size Input وابسته نیست؛ به Kernel Size، تعداد Input Channel و تعداد Filter بستگی دارد.

پیاده‌سازی Convolution با Keras

در Keras از Conv2D استفاده می‌شود. مثال پایه:

conv = tf.keras.layers.Conv2D(
    filters=32,
    kernel_size=7,
    strides=1,
    padding="valid",
    activation="relu")

output = conv(images)

filters=32 یعنی ۳۲ Kernel مستقل و در نتیجه ۳۲ Feature Map Output. kernel_size=7 Kernel هفت‌درهفت را تعیین می‌کند. با padding="valid" Padding انجام نمی‌شود و Spatial Size کاهش می‌یابد. اگر padding="same" و Stride برابر ۱ باشد، Keras به اندازهٔ لازم Zero Padding اضافه می‌کند تا Height/Width Output با Input برابر بماند.

Shape معمول Input به صورت [batch_size, height, width, channels] است. برای مثال دو Image با Shape [2, 70, 120, 3] پس از Conv2D با ۳۲ Filter، Outputی با Depth برابر ۳۲ تولید می‌کنند. اگر Padding معتبر باشد Height/Width کاهش می‌یابد و با Same Padding حفظ می‌شود. جزئیات دقیق رابطهٔ Padding و Stride در ادامهٔ فصل بررسی می‌شود.

امتیاز کاربران به این مقاله

☆☆☆☆☆

0 نفر امتیاز داده اند. میانگین: 0.0 از 5

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

0 / 500

اطلاعات تماس

  • آدرس:اصفهان-خیابان ام کلثوم غربی - بعد خیابان تخم چی - بیست متر بعد از پیتزا ننه شب - کوچه تعمیر گاه سمار زغالی - پلاک 354 - درب مشکی - طبقه هفتم
  • آدرس ایمیل:najafzade@gmail.com
  • وب سایت:http://www.a00b.com/
  • تلفن ثابت:(+98)9131253620
  • تلفن همراه:09131253620