از زمان پیدایش شبکه کانولوشنی AlexNet در بینایی کامپیوتر و برنده شدن مسابقه ILSVRC 2012، شبکههای عصبی کانولوشنی بسیار محبوب شده و در بسیاری از زمینههای بینایی کامپیوتر تحول ایجاد کرده اند. با گذر زمان، شبکههای عمیقتر، پهنتر و البته پیچیدهتر مانند GoogleNet، ResNet، ResNext و غیره برای رسیدن به دقت بالاتر مطرح شد. با وجود پیچیدگی شبکهها، تلاش بر این بوده که تعداد پارامترهای کل شبکه کمتر شود و انصافا همواره طراحی کارآمدتری را شاهد بودیم. اما تمرکز اصلی در طراحی این شبکهها دقت بود. همواره جای خالی شبکههای با سایز کوچک و سرعت بالابا قابلیت استفاده در سیستمهای با منابع محدود نظیر سیستمهای تعبیه شده و موبایلها احساس میشد. بر همین اساس، دسته جدیدی از شبکههای کانولوشنی سبک با پارامترهای کمتر، سرعت اجرای بیشتر و البته دقت قابلقبول شکل گرفت. یکی از شاخصترین شبکههای سبک، شبکه عصبی موبایل نت (MobileNet) نام دارد. این شبکه توسط محققان شرکت گوگل و با هدف طراحی شبکههای کارآمد، سبک، سریع و با دقت قابلقبول مطرح شده است. محققان امیدوارند با کاهش میزان محاسبات (با طراحی و یا اصلاح لایههای موجود) و عمیقتر کردن شبکهها به توازن مناسبی بین دقت و سرعت شبکهها دست یابند.
2 ساختار کلی شبکه های موبایل نت:
معرفی کانولوشن استاندارد:
برای آشنایی حداقلی با موضوع، توضیح مختصری دربارهی لایهی کانولوشن استاندارد ارائه میکنیم. لایهی کانولوشن استاندارد شامل دو مرحلهی فیلتر و ادغام است که طی آن در مرحلهی اول (فیلتر) از m عدد کرنل با ابعاد k*k استفاده کرده و در تصویر ورودی ضرب میکند و در ادامه (ادغام) خروجی حاصل از هر یک از m کرنل حاصل را با هم جمع میکند. در نتیجه، به ازای اعمال یک مرحله کانولوشن معمولی m عدد فیچر جدید داریم که هر یک از آنها از اعمال یک کرنل مجزا با ابعاد k*k بدست امده است.
همان گونه که در مقدمه اشاره کردیم، محققان شرکت گوگل به منظور طراحی شبکهای کارآمد با قابلیت اجرا بر روی سیستمهای با منابع محدود، اقدام به طراحی شبکهی موبایلنت کردند. یکی از مشکلات کانولوشن استاندارد میزان محاسبات بالای آن میباشد که امکان استفاده از آن را در این نوع سیستمها کاهش میدهد. درنتیجه، محققان از نوع دیگری از لایهی کانولوشن به نام کانولوشن Depthwise Separable که به محاسبات کمتری در مقایسه با کانولوشن استاندارد نیاز دارد استفاده کردند.
کانولوشن Depthwise separable(dws):
کانولوشن depthwise separable(dws) قلب تپندهی شبکهی موبایل نت است. این مدل از کانولوشن به منظور کاهش بار محاسبات از دو لایه با نامهای کانولوشن عمقی (depthwise convolution) و کانولوشن نقطه ای (pointwise convolution) به جای کانولوشن استاندارد استفاده میکند. نحوهی کار به این صورت است که در ابتدا و در لایهی depthwise convolution از یک عدد کرنل k*k استفاده شده و نتیجهی حاصل را برخلاف کانولوشن استاندارد با هم ترکیب نمیکنیم. در ادامه، لایهی pointwise convolution از m عدد کرنل c*1*1 (c تعداد کانالهای رنگی تصویر ورودی است) به منظور تولید فیچرهای جدید استفاده میکند. depthwise separable convolution محاسبات مورد نیاز را به میزان قابل توجهی به نسبت کانولوشن معمولی کاهش میدهد. در این رابطه، k و m به ترتیب سایز کرنل کانولوشن عمقی و تعداد فیچرمپهای (کانالهای رنگی) مربوط به خروجی است. شکل زیر نمای کلی یک بلاک کانولوشن depthwise separable را نشان میدهد.
برای مشاهدهی ساختار کلی شبکهی موبایلنت نسخهی یک، میتوانید به این لینک مراجعه کنید:
این شبکه از کنار هم قرار دادن 13 بلوک پایه تشکیل شده و در مجموع 4.2 میلیون پارامتر دارد. به منظور شهود بهتر ساختار شبکه، لایههای BatchNorm و ReLU در طراحی آن ذکر نشده است.
اگرچه این شبکه به اندازهی کافی کوچک و سریع میباشد ولی در بسیاری از مواقع امکان دارد برای کاربردهای خاص به شبکهی کوچکتری نیاز داشته باشیم. لذا، نویسندگان این مقاله با معرفی دو ضریب تحت عنوان فاکتور پهنا و فاکتور وضوح این امکان را فراهم کردند. شیوهی کار به این صورت است که با استفاده از فاکتور پهنا میتوان کانالهای رنگی تصویر ورودی و خروجی را کاهش داد. در ادامه و با استفاده از فاکتور وضوح میتوان اندازهی تصویر ورودی و درنتیجه اندازهی تصاویر ورودی به لایههای بعد را کنترل کرده و کاهش داد. درنتیجه، با اعمال این تغییرات شبکهی کوچکتر و سریعتری حاصل میشود.
این طراحی جدید در سال 2019 و توسط محققان شرکت گوگل صورت گرفته است. در طراحی این نسخه از شبکهی موبایلنت، از یک ساختار جدید پسماند معکوس به عنوان بلاک پایه استفاده شده است که شکل زیر جزئیات آن را نمایش میدهد.
این بلاک پایه، همانند نسخه اول شبکه موبایل نت، از کانولوشن عمقی و سطحی استفاده کرده است. اگر به شکل بالا توجه کنید مشخص است که علارقم استفاده از کانولوشنهای عمقی و سطحی، یک سری تفاوتهای با ساختار پایهی قبلی دارد که در ادامه آنها را شرح میدهیم.
تفاوتهای موجود در این ساختار و علت آن:
1- استفاده از اتصال پرشی یا skip connection: این اتصال به منظور بهبود عملکرد شبکه در عملیات پس انتشار خطا اضافه شده است. درواقع، این اتصال امکان آن را فراهم میآورد که گرادیان از مسیرهای میانبر عبور کرده و عملکرد شبکه در عملیات پس انتشار خطا بهبود یابد. همچنین با وجود این اتصالات، مدل میتواند تابع همانی را یاد بگیرد که تضمین میکند لایههای بالاتر حداقل به خوبی لایهی پایینتر عمل میکنند و نه بدتر از آن.
2- اضافه کردن یک لایه تحت عنوان expansion layer: این لایه یک لایهی کانولوشن نقطهای است که موجب غنای هرچه بیشتر تصویر ورودی میشود. درواقع، افزایش فیچرمپهای ورودی موجب میشود شبکه، در مرحلهی بعد و زمانی که از کانولوشن سطحی استفاده میکند، تابع پیچیدهتری را بیاموزد.
3- عدم استفاده از تابع غیرخطی ReLU در انتهای لایهی Projection: نویسندگان این مقاله با انجام یک سری آزمایش متوجه شدند که اضافه کردن لایهی غیرخطی، زمانی که تعداد فیچرمپهای ورودی کم است، موجب از دادن اطلاعات میشود. درنتیجه، در بلاک دیاگرام پایه، بعد از لایهی Projection که یک کانولوشن نقطهای بوده و تعداد فیچرمپهای خروجی هر بلاک را کاهش میدهد از لایهی غیرخطی ReLU استفاده نمیشود.
ذکر دو نکته:
نکته اول: شرط وجود اتصال پرشی (skip connection) در این شبکه آن است که گام و یا stride در شبکهی کانولوشن یک بوده و در ادامه تعداد فیچرمپها (کانالهای رنگی) یکسان باشد. درغیر اینصورت مجاز به استفاده از اتصال پرشی در این ساختار نمیباشیم. درنتیجه، بسته به اندازهی گام از یکی از دو شکل زیر به عنوان بلاک پایه در ساختار شبکه استفاده میکنیم.
نکته دوم: در این شبکه از نسخهی محدود شدهی تابع غیرخطی ReLUاستفاده میشود. در واقع، نویسندگان مقاله در آزمایشهای خود با تابع غیرخطی ReLU6 به نتایج بهتری دست یافتند.
برای مشاهدهی ساختار کلی شبکهی موبایلنت نسخهی دو، میتوانید به این لینک مراجعه کنید:
این شبکه از 17 بلوک پایه تشکیل شده و در مجموع 3.4 میلیون پارامتر دارد.
این نسخه از شبکهی موبایلنت، یک پیشرفت و گام رو به جلو برای طراحی شبکههای عمیق با قابلیت اجرا بر روی سیستمهایی با منابع محدود، از جمله موبایل و سیستمهای تعبیه شده، میباشد. در این مقاله، محققان از دو منظر مختلف اقدام به اصلاح معماریهای موجود و بهبود نتایج حاصل کردهاند. ابتدا، از Network Search به عنوان ابزاری بسیار قدرتمند برای کشف (طراحی) و بهینه سازی معماری شبکه بهره بردهاند. سپس، چندین مؤلفه جدید را نیز برای بهبود بیشتر نتایج مدل نهایی معرفی و به آن اضافه کردند که در ادامه خلاصهای از هر دو منظر ارائه میکنیم.
منظر اول: استفاده از Network Search
همان طور که در بالا اشاره شد، Network search ابزاری قدرتمند در طراحی و بهینهسازی معماری شبکههای عصبی میباشد. محققان در این مقاله از ترکیبی از Platform-aware NAS و الگوریتم NetAdapt برای این منظور استفاده کردند. با این ترتیب که ابتدا، از Platform-aware NAS برای جستجوی ساختار کلی شبکه بوسیلهی بهینهسازی هر بلاک آن بهره میگیرد. سپس، از الگوریتم NetAdapt به منظور جستجوی هر لایه برای تعیین تعداد فیلترهای مناسب استفاده میکنند.
منظر دوم: بهبود شبکه
به منظور بهبود عملکرد شبکهی طراحی شده، لایههای پرهزینهی موجود در ابتدا و انتهای شبکه را بازطراحی کرده و در ادامه از یک تابع غیرخطی جدید، h-swish، به جای تابع غیر خطی ReLU استفاده میشود که تاثیر زیادی در بهبود عملکرد شبکه دارد.
علاوه بر لایههای ابتدایی یک سری لایههای انتهایی در این نسخه وجود دارند که نیاز به محاسبات زیاد داشته و موجب کندی هرچه بیشتر شبکه میشوند. محققان برای کاهش میزان این محاسبات و افزایش سرعت شبکه، لایهی average pooling بلاک آخر را جابجا کرده و قبل از لایهی Expantsion بلاک آخر قرار میدهند. با این کار، میزان محاسبات به دلیل استفاده از لایهی Average poolingبه شدت کاهش مییابد. همچنین، لایههای Depthwiseو pointwise convolutionدر بلاک آخر بلااستفاده شده و آنها را از شبکه حذف میکنیم. شکل حاصل به صورت زیر است:
بازطراحی لایه آخر، میزان تاخیر را به اندازهی 7 میلی ثانیه کاهش میدهد که معادل 11% زمان اجرا میباشد. از طرف دیگر، این تغییرات 30 میلیون از تعداد جمع و ضربهای کل شبکه میکاهد و هیچ افت دقتی را به شبکه تحمیل نمیکند.
لایهی دیگری که موجب تاخیر در شبکه میشود، لایه ابتدایی شبکه است که از 32 کرنل 3*3 برای ساخت فیچرمپهای ابتدایی استفاده میشود که با توجه به بررسیهای انجام شده این ویژگیها شامل افزونگی زیادی میباشد. نویسندگان مقاله به منظور بهبود عملکرد شبکه، در لایهی ابتدایی از تعداد کمتری کرنل (16) بهره گرفتند و در ادامه با استفاده از تابع فعالساز جدید اقدام به کاهش افزونگیهای موجود در شبکهی حاصل کردند.
یکی از توابع غیرخطی که استفاده از آن موجب بهبود دقت شبکههای عصبی میشود، تابع swish است که از طریق رابطهی 1 محاسبه میشود:
از آنجایی که محاسبهی تابع سیگموید در موبایل بسیار هزینهبر است، لذا استفاده از این تابع بسیار هزینهبر است. لذا محققان سعی کردند با تمهیداتی این مشکل را برطرف کنند که در ادامه به آنها اشاره میکنیم.
تمهید اول:
به جای استفاده از تابع swish، از تابع h-swish استفاده میشود که رفتاری تقریبا مشابه با تابع swish دارد و از طر یق رابطه 2 محاسبه میشود.
تمهید دوم:
محققان ادعا کردند که استفاده از تابع غیرخطی swish در لایههای انتهایی شبکه موثرتر است. درنتیجه، از تابع h-swish تنها در نیمهی دوم معماری پیشنهادی خود استفاده کرده و در سایر موارد از تابع ReLU بهره گرفتند.
دو طراحی مختلف با نامهای MobileNet V3- Large & Small برای موبایلنت نسخهی سوم وجود دارد که بسته به میزان منابع موجود یکی از آنها انتخاب میشوند. برای مشاهدهی ساختار کلی هر یک از آنها میتوانید به این لینک مراجعه کنید:
در حالت کلی از شبکههای ارائه شده برای اهداف مختلفی از جمله دستهبندی، تشخیص و شناسایی اشیاء، تقسیمبندی معنایی و مواردی از این دست استفاده میشود. در این قسمت با توجه به محدودیتهای موجود به مقایسهی نتایج حاصل در مسئلهی دستهبندی بسنده خواهیم کرد.
بررسی نتایج نسخهی اول شبکهی موبایلنت:
نسخهی اول شبکهی موبایلنت از جمله تجربههای موفقی است است که توانسته تعادل خوبی بین تعداد پارامترها و دقت خروجی برقرار کند. درواقع این شبکه با استفاده از لایهی depthwise separable convolution توانسته تعداد پارامترهای شبکههای کانولوشنی را به طور چشمگیری کاهش داده و درمقابل به دقت مناسبی نیز دست یابد. این شبکه در حالت کلی 4.9 میلیون پارامتر دارد، در صورتی است که اگر در این ساختار از لایههای کانولوشن معمولی استفاده میشد تعداد پارامترهای آن به 29 میلیون میرسید. از طرف دیگر، این شبکه با تعداد پارامترهای اندک به دقتهای بسیار مناسبی دست یافته است. به عنوان مثال، موبایل نت با تعداد پارامترهای کمتر نسبت به شبکهی GoogleNet (6.8 میلیون پارامتر) به دقت بیشتری (حدود یک درصد) بر روی دادهی ImageNet دست یافته است. همچنین شبکهی خوشنام VGG، با 140 میلیون پارامتر، فقط به دقتی حدود یک درصد بهتر از شبکهی موبایل نت با 4.2 میلیون پارامتر دست یافته است. نتایج حاصل از این شبکه در جدول زیر نمایش داده شده است.
بررسی نتایج نسخهی دوم شبکهی موبایلنت:
جدول زیر دقت نسخهی دوم شبکهی موبایل نت را با دیگر شبکههای موجود و بر روی مجموعه داده ImageNetگزارش میکند.
با توجه به جدول بالا، این شبکه توانسته با تعداد پارامتر (و در زمان) کمتر نسبت به نسخهی قبلی خود، به دقت بیشتری دست یابد که نشان دهندهی طراحی مناسب و کارامد آن است. همچنین، نسخهی دوم شبکهی موبایل نت عملکرد بهتری در مقابل شبکهی shufleNet با تعداد پارامترهای یکسان داشته و با افزایش تعدا پارامترها توانسته به دقت بیشتری نسبت به شبکهی NasNet-A دست یابد.
بررسی نتایج نسخهی سوم شبکهی موبایلنت:
جدول زیر دقت نسخهی سوم شبکهی موبایل نت را با دیگر شبکههای موجود و بر روی مجموعه داده ImageNetگزارش میکند.
با توجه به جدول بالا، این شبکه توانسته با تعداد پارامتر (و در زمان) کمتر نسبت به نسخهی قبلی خود، به دقت بیشتری دست یابد که نشان دهندهی طراحی مناسب و کارامد آن است. همچنین، نسخهی دوم شبکهی موبایل نت عملکرد بهتری در مقابل شبکهی shufleNet با تعداد پارامترهای یکسان داشته و با افزایش تعدا پارامترها توانسته به دقت بیشتری نسبت به شبکهی NasNet-A دست یابد.
همان گونه که در جدول بالا مشخص است، نسخهسوم شبکهی موبایلنت 3.2% نتایج نسخهی قبلی را بهبود داده است و نتایج حاصل با نتایج شبکهی MnasNet-A1 و Proxyless، بهترین شبکههای موجود با قابلیت اجرا بر روی سیستمهای محدود، قابل مقایسه است. همان گونه که از جدول بالا مشخص است، نسخهی محدود شدهی این شبکه (V3-large 0.75)، به نتایج بهتری نسبت هر دو نسخهی قبلی دست یافته که نشان دهندهی کارایی هرچه بیشتر این شبکه میباشد.
یکی از نتایج قابل توجه در این نمودار، مربوط به نسخهی کوچک این شبکه (V3-Small) میباشد که نسبت به نمونهی Mnas-small به نتایج بهتری دست یافته است. درواقع، این شبکه توانسته به دقتی بیشتری، حدود 2.5 درصد، نسبت به Mnas-small دست یابد که بسیار جالب توجه میباشد، زیرا شبکهی Mnas-small یکی از بهترین شبکههای طراحی شده برای سیستمهای محدود میباشد.
در این گزارش ایدهی طراحی نسخه اول شبکهی MobileNet با قابلیت اجرا بر روی سیستمهای با منابع محدود مورد بررسی قرار گرفت. در این گزارش، ابتدا لایهی کانولوشن depthwise separable به عنوان هستهی اصلی این شبکه معرفی و چگونگی استفاده از آن شرح داده شد.
در گام بعد، ایدهی نسخهی دوم این شبکه، در اضافه کردن یک لایه پرشی (Skip Connection) و کانولوشن نقطهای تحت عنوان Expansion layer به بلاک پایه، شرح داده شده است.
در انتها نیز ایدهی نسخهی سوم این شبکه مورد بررسی قرار گرفت که از Network Search به منظور طراحی و بهینه سازی معماری شبکه بهره برده است. سپس، چندین مؤلفه جدید را نیز برای بهبود بیشتر نتایج مدل نهایی معرفی و به آن اضافه کرده است.
در انتهای این گزارش، عملکرد این شبکه برای مسئلهی دستهبندی بر روی مجموعه دادهی ImageNet مورد ارزیابی قرار گرفته است.