VGG Architecture

معرفی

Visual Geometry Group (VGG) یک مدل یادگیری عمیق مشهور است که سهم قابل توجهی در وظایف تشخیص تصویر داشته است. VGG که در دانشگاه آکسفورد توسعه داده شده است، به دلیل سادگی و کارایی خود شناخته شده است.

نمای کلی معماری

VGG از چندین لایه convolutional و max-pooling تشکیل شده است. بینش کلیدی پشت VGG استفاده مکرر از فیلترهای convolutional کوچک 3x3 با معماری عمیق است که منجر به استخراج ویژگی قدرتمند می شود. پیکربندی های استاندارد، VGG16 و VGG19 هستند که در تعداد لایه ها متفاوت هستند.

VGG 16 & 19

keras.applications.VGG16(
include_top=True,
weights="imagenet",
input_tensor=None,
input_shape=None,
pooling=None,
classes=1000,
classifier_activation="softmax",
)
#It's also used for keras.applications.VGG19
کد بالا یک فراخوانی تابعی به keras.applications.VGG16 است که برای VGG19 نیز میتواند استفاده شود و بخشی از Keras و یک API شبکه های عصبی سطح بالا است. این تابع برای نمونه سازی مدل VGG16 با گزینه های مختلف پیکربندی استفاده میشود. در بررسی پارامترهای آن داریم:

include_top:

اگر True باشد، لایه کاملاً متصل در بالای شبکه که مسئول طبقه بندی است شامل می شود. اگر False باشد، این لایه را حذف می کند. در بسیاری از موارد، اگر می خواهید از مدل VGG16 از پیش آموزش دیده به عنوان استخراج کننده ویژگی برای کار دیگری استفاده کنید، ممکن است این را روی False تنظیم کنید.

weights:

اگر روی "imagenet" تنظیم شود، وزن های از پیش آموزش داده شده را در مجموعه داده ImageNet بارگیری می کند. این اغلب برای یادگیری انتقال استفاده می شود.

input_tensor:

تانسور اختیاری Keras (یعنی خروجی ()layers.Input) برای استفاده به عنوان ورودی تصویر برای مدل.

input_shape:

فقط در صورتی که include_top با مقدار False مقداردهی شده باشد، مشخص می شود (در غیر این صورت شکل ورودی باید (224، 224، 3) یا (3، 224، 224) باشد. باید دقیقاً 3 کانال ورودی داشته باشد و عرض و ارتفاع نباید کمتر از 32 باشد. به عنوان مثال (200، 200، 3) یک مقدار معتبر خواهد بود.

pooling:

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

classes:

تعداد اختیاری کلاس ها برای طبقه بندی تصاویر، فقط در صورتی که include_top با True مقداردهی شده باشد، و اگر هیچ آرگومان weight مشخص نشده باشد، مشخص می شود.

classifier_activation:

هنگام بارگیری وزن های از پیش آموزش دیده، classifier_activation فقط می تواند None یا "softmax" باشد.
from tensorflow.keras.applications import VGG16

#Instantiate VGG16 with pre-trained weights on ImageNet
model = VGG16(weights='imagenet')

#Summary of the model architecture
model.summary()
کد بالا نمونه ای از مدل VGG16 را با وزن های از پیش آموزش دیده از ImageNet ایجاد می کند و خلاصه ای از معماری مدل را چاپ می کند. سپس می توانید از این مدل برای کارهای مختلف بینایی کامپیوتری یا تنظیم دقیق بیشتر دیتاست های خاص خود استفاده کنید.  

معماری VGG

معماری VGG16  دارای 16 لایه است (13 لایه کانولوشن و 3 لایه کاملاً متصل). در اینجا یک نمای کلی از معماری VGG۱۶ آورده شده است:

1- لایه ورودی: یک تصویر با اندازه ثابت را به عنوان ورودی می پذیرد (به عنوان مثال 224x224x3 برای تصاویر RGB).
2- لایه های کانولوشن: 13 لایه کانولوشن با فیلترهای کوچک (3×3) و گامی 1. تعداد فیلترها در هر لایه با عمیق تر شدن شبکه افزایش می یابد و به آن امکان می دهد ویژگی های پیچیده تر را یاد بگیرد.
3- حداکثر لایه‌های ادغام: 5 لایه حداکثر با لایه‌های کانولوشن درهم می‌آیند تا وضوح فضایی نقشه‌های ویژگی کاهش یابد و میدان دریافتی افزایش یابد.
4-لایه های کاملا متصل: 3 لایه کاملا متصل که خروجی آخرین لایه کانولوشن را به خروجی نهایی شبکه متصل می کند.
5- لایه خروجی: یک لایه کاملاً متصل نهایی که احتمالات پیش‌بینی‌شده برای کلاس‌های مسئله طبقه‌بندی را خروجی می‌دهد.

سوالات:

1. چرا VGG از فیلترهای کوچک 3x3 در لایه‌های کانولوشن استفاده می‌کند؟ الف) برای افزایش پارامترها ب) برای کاهش پارامترها ج) برای افزایش پیچیدگی زمانی د) برای استخراج ویژگی‌های قدرتمند 2. چرا تعداد فیلترها در هر لایه کانولوشن با عمق شبکه افزایش می‌یابد؟ الف) برای افزایش پارامترها ب) برای کاهش پارامترها ج) برای افزایش پیچیدگی زمانی د) برای یادگیری ویژگی‌های پیچیده‌تر 3. چرا لایه‌های حداکثر ادغام (Max-Pooling) در VGG استفاده می‌شوند؟ الف) برای افزایش پارامترها ب) برای کاهش پارامترها ج) برای افزایش پیچیدگی زمانی د) برای کاهش وضوح فضایی نقشه‌های ویژگی 4. چند لایه کاملاً متصل در معماری VGG16 وجود دارد؟ الف) 1 ب) 2 ج) 3 د) 4 5. چه نوع خروجی را لایه خروجی در معماری VGG16 تولید می‌کند؟ الف) وضوح فضایی نقشه‌های ویژگی ب) خروجی نهایی شبکه ج) احتمالات پیش‌بینی‌شده برای کلاس‌ها د) خروجی لایه‌های کانولوشن