شبکه VGG
شبکه VGG یکی از معماریهای موفق و معروف در حوزه یادگیری عمیق است که در سال 2014 معرفی شد. این شبکه به دلیل عملکرد خوب و معماری ساده، به یکی از شبکههای کانولوشنی محبوب در جامعه هوش مصنوعی تبدیل شد. در این پست، به آموزش شبکه VGG همراه با تئوری و کدنویسی پرداختهام. با هوسم همراه باشید…
شبکه VGG چیست؟
شبکه VGG، یکی از برجستهترین معماریهای شبکه عصبی کانولوشنی (CNN) در یادگیری عمیق است. این شبکه توسط گروه تحقیقاتی Visual Geometry Group دانشگاه آکسفورد توسعه داده شده است (VGG هم مخفف اسم همین گروه هست!). VGG بهطور خاص برای رقابت در چالش ImageNet در سال 2014 طراحی شده بود و توانست رتبه دوم مسابقه در بخش طبقهبندی و رتبه اول در تشخیص اشیا را کسب کند. همچنین، این معماری در مقالهای تحت عنوان “Very Deep Convolutional Networks for Large-Scale Image Recognition“ تشریح شده است. تا زمان نگارش این متن، مقاله شبکه عصبی VGG حدود ۱۳۶٬۰۰۰ ارجاع (Citation) داشته است. این میزان ارجاع، نشاندهنده تاثیر عمیق و گسترده VGG در تحقیقات مرتبط با یادگیری عمیق و بینایی کامپیوتر از سال 2014 به بعد است. باتوجه به پیشرفتهای دهه اخیر یادگیری عمیق، شاید دیگر نتوان شبکه VGG را یک شبکه مدرن دانست؛ اما، شبکه VGG به یکی از مباحث آموزشی پایه در یادگیری عمیق تبدیل شده و یادگیری آن برای تازهواردها ضروری است.
ساختار ساده، یکنواخت، عمق زیاد و فیلتر کانولوشنی با سایز کوچک 3×3 از جمله مهمترین ویژگیهای معماری VGG است. شبکه VGG شامل نسخههای مختلف با تعداد لایههای متفاوت است؛ در مقاله VGG از نسخههای VGG19 VGG16 VGG13 VGG11 نام برده شده است. عدد همراه نام آنها نشاندهنده تعداد لایههای پارامتری (قابل آموزش) شبکه هست. بهعنوان نمونه، معماری VGG13 در شکل زیر نشان داده شده است؛ بدون اینکه وارد جزئیات شویم، کاملا مشخص است که با یک شبکه ساده و با الگوی یکنواخت سروکار داریم. کل شبکه از سه بخش تشکیل شده است: لایه کانولوشنی، پولینگ و فولیکانکتد. همه لایههای کانولوشنی 3×3 و همه لایههای پولینگ 2×2 هستند. ساختار کلی معماری VGG13 هم مشخص است: هر دو لایه کانولوشنی متوالی، یک لایه پولینگ، همین!

چنانچه با مسابقه ImageNet آشنایی ندارید و دوست دارید دربارهاش بیشتر بدانید، زیربخش زیر مطالعه کنید.
مسابقه ImageNet بینایی کامپیوتر
مسابقه ImageNet یکی از معروفترین و تاثیرگذارترین رقابتها در حوزهی بینایی کامپیوتر و یادگیری عمیق بود که از سال ۲۰۱۰ تا ۲۰۱۷ سالانه برگزار میشد. هدف اصلی این مسابقه، ارزیابی الگوریتمهای طبقهبندی و تشخیص اشیا در تصاویر بود. این مسابقه، دیتاست بزرگ ImageNet شامل میلیونها تصویر با هزاران دسته (Class) مختلف را ارائه کرده است. مسابقه ImageNet نقش بسیار مهمی در پیشرفت شبکههای عصبی عمیق (Deep Neural Networks) و به ویژه شبکه کانولوشن داشت. مدلهای اثرگذاری مانند ResNet VGGNet GoogleNet AlexNet در ادوار مختلف همین مسابقه معرفی شدند. اگرچه برگزاری مسابقه سالانه در سال ۲۰۱۷ به پایان رسید، اما دیتاست ImageNet همچنان به عنوان یک معیار استاندارد برای ارزیابی مدلهای جدید در تحقیقات بینایی کامپیوتر مورد استفاده قرار میگیرد.

در بخش معرفی شبکه VGG اشاره شد که این شبکه به رتبه دوم مسابقه ImageNet در بخش طبقهبندی در سال 2014 رسید. شاید برای شما این سوال پیش آمده باشد که رتبه اول چه رهیافتی بوده؟ شبکه GoogleNet! درادامه، مختصری درباره ماجرای شبکه VGG و GoogleNet گفتهام…
شبکه GoogleNet
در مسابقه ImageNet سال ۲۰۱۴، گوگلنت (GoogLeNet) مقام اول و VGG مقام دوم را در بخش طبقهبندی تصویر کسب کردند. با این حال، در سالهای بعد، VGG شهرت و محبوبیت بیشتری پیدا کرد. این نکته، حتی از روی تعداد ارجاع مقالات این دو شبکه هم مشخص است؛ مقاله گوگلنت (64٬۰۰۰) تقریبا نصف مقاله VGG (۱۳۶٬۰۰۰) ارجاع دارد. به دلایلی که در ادامه تشریح کردم، VGG شهرت بیشتری پیدا کرد:
- معماری ساده و یکنواخت: شبکه VGG از بلوکهای تکراری لایه کانولوشنی 3×3 و لایه ماکس پولینگ 2×2 تشکیل شده است. در مقابل، گوگلنت معماری پیچیدهتری با ماژولهای Inception دارد که درک و پیادهسازی آن دشوارتر از VGG است.
- قابلیت تعمیم و استفاده گسترده: ساختار ساده این شبکه باعث شد که بیشتر در سایر تسکهای بینایی کامپیوتر مورد استفاده قرار گیرد. بهعنوان مثال، شبکه ResNet معروف و قدرتمند، توسعهیافته شبکه VGG است.
- امکان درک و تحلیل آسان معماری: سادگی و یکنواختی شبکه باعث شده است که من کار راحتی در آموزش این شبکه به شما داشته باشم! 😜
در ادامه، درباره معماری شبکه VGG توضیح دادهام…
معماری شبکه VGG
شبکه VGG در چهار معماری مختلف VGG19 VGG16 VGG13 VGG11 ارائه شده است. ساختار این معماریها مشابه هم هست و تنها تفاوت در تعداد لایههای کانولوشنی است. شکل زیر، هر چهار معماری شبکه VGG را نشان میدهد.

حالا برویم سراغ توضیحات شکل بالا که بسیار مهم است:
- هر چهار معماری از سه لایه فولی کانکتد با تعداد نورونهای یکسان بهره میبرند.
- همه معماریها شامل پنج ماکس پولینگ 2×2 با استراید 2 هستند. مشابه با بسیاری از شبکههای کانولوشنی دیگر!
- هر چهار معماری شامل لایههای کانولوشنی 3×3 با تعداد فیلترهای 64 128 256 512 هستند.
- تنها تفاوت بین معماریها، تعداد لایههای کانولوشنی است.
- روال کلی طراحی، قراردادن چند لایه کانولوشنی متوالی بدون پولینگ هست. معمولا، 1 الی 3 لایه کانولوشنی.
- با نزدیک شدن به خروجی، تعداد لایههای کانولوشنی بیشتر میشود.
- بعد از هر لایه کانولوشنی، تابع فعالساز ReLU استفاده شده است.
- در زمان ارائه شبکه VGG، لایه نرمالیزیشن وجود نداشت. این باعث میشود، آموزش مدل VGG مشکل باشد.
- آخرین لایه، لایه خروجی است و میتواند برای کار طبقهبندی و رگرسیون تغییر کند.
میخواهم درباره کدنویسی شبکه VGG هم توضیح بدهم. اما، یک استراحتی کنم و بعد ادامه میدهم! 🤞 اگر از این آموزش خوشتان آمد، لطفا برای کامنت بگذارید. 🙏😊
دیدگاهتان را بنویسید