کافه‌تدریس

MobileNet چیست و طرز بهینه سازی شبکه عصبی برای دستگاه‌هایی با منابع محدود چگونه است؟

MobileNet Architecture

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

فهرست مطالب پنهان‌کردن فهرست
  1. 1. MobileNet چیست
  2. 2. تاریخچه و توسعه MobileNet چیست
  3. 3. ایده‌های اصلی پشت MobileNet
    1. 3.1. کانولوشن Depthwise
    2. 3.2. کانولوشن Pointwise
    3. 3.3. مقایسه تعداد پارامترهای کانولوشن استاندارد و کانولوشن Depthwise
  4. 4. معماری MobileNet چیست
  5. 5. پیاده‌سازی MobileNet در Keras
    1. 5.1. تعریف کانولوشن‌های Depthwise و Pointwise
    2. 5.2. تعیین لایه‌های کلاس‌بندی
  6. 6. نکات مهم درمورد معماری MobileNet
    1. 6.1. ضریب پهنا و ضریب وضوح
    2. 6.2. ضریب پهنا (Width Multiplier)
    3. 6.3. ضریب وضوح (Resolution Multiplier)
  7. 7. ارزیابی MobileNet
  8. 8. کاربردهای MobileNet
    1. 8.1. تشخیص چهره
    2. 8.2. شناسایی اشیا
    3. 8.3. تجزیه‌وتحلیل ویدئو
    4. 8.4. برنامه‌های کاربردی واقعی
  9. 9. مزایا و معایب MobileNet چیست
    1. 9.1. مزایا
    2. 9.2. معایب
  10. 10. خلاصه مطلب
  11. 11. پرسش‌های متداول
    1. 11.1. MobileNet چگونه به بهینه‌سازی کاربردهای هوش مصنوعی در دستگاه‌های موبایلی کمک می‌کند؟
    2. 11.2. چرا MobileNet برای توسعه‌دهندگان نرم‌افزار موبایل مهم است؟
    3. 11.3. تفاوت اصلی میان MobileNet و دیگر معماری‌های عمیق‌تر مانند ResNet در چیست؟
    4. 11.4. چه نوع پروژه‌هایی می‌توانند از قابلیت‌های MobileNet برای بهبود عملکرد خود بهره ببرند؟
    5. 11.5. کدام پارامترها در تنظیمات MobileNet می‌توانند برای بهینه‌سازی عملکرد آن در شرایط مختلف تعدیل شوند؟
  12. 12. یادگیری دیتا ساینس ماشین لرنینگ را از امروز شروع کنید!

MobileNet چیست

MobileNet یک معماری شبکه عصبی است که برای موارد کاربرد موبایلی و دستگاه‌های دارای محدودیت‌های محاسباتی و حافظه طراحی شده است. همان‌طور که از اسمش پیداست، این شبکه جزو شبکه‌های خفیف یا Lightweight محسوب می‌شود که با هدف اجرا با سرعت بالا و با مصرف پایین منابع بهینه‌سازی شده است. MobileNet با توجه به توانایی‌های محدود دستگاه‌های موبایل راه‌حلی عملی برای تجزیه‌وتحلیل داده‌های بصری در لحظه (Real Time) فراهم می‌کند.

تاریخچه و توسعه MobileNet چیست

طراحی و توسعه MobileNet را تیمی از محققان در Google انجام داده است. این شبکه برای اولین بار در سال ۲۰۱۷ معرفی شد و به‌دلیل قابلیت‌های برتر خود در تجزیه‌وتحلیل تصویرهای با سرعت بالا و دقت قابل‌قبول، به‌سرعت جایگاه خود را در میان فناوری‌های پیشرفته هوش مصنوعی تثبیت کرد.

ایده‌های اصلی پشت MobileNet

MobileNet براساس دو ایده کلیدی شکل گرفته است: استفاده از کانولوشن‌های جداگانه برای کاهش تعداد محاسبات و استفاده از ضرایب پهنا و وضوح برای تنظیم دقت و سرعت شبکه. این ایده‌ها امکان اجرای سریع و کارآمد شبکه را در دستگاه‌هایی با قدرت پردازشی محدود فراهم می‌کند. در ادامه هر یک از این ایده‌ها را با جزییات بررسی خواهیم کرد.

قبل از اینکه ایده استفاده‌شده در MobileNet را بررسی کنیم، بیایید یک بار دیگر مرحله‌های اعمال یک لایه کانولوشنی را مرور کنیم. برای درک بهتر این کار را به دو مرحله تقسیم می‌کنیم:

برای مثال در شکل بالا فیلتر ما ۳ کرنل دارد که با عمق Feature map ورودی برابر است.

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

کانولوشن Depthwise

در این قسمت، به‌جای استفاده از فیلترهای کانولوشنی که روی کانال‌ها عمل می‌کنند، برای هر کانال ورودی یک فیلتر جداگانه استفاده می‌شود.

کانولوشن Pointwise

پس از اعمال کانولوشن Depthwise، کانولوشن Pointwise که از فیلترهای 1×1 استفاده می‌کند، برای ترکیب ویژگی‌های استخراج‌شده از کانال‌های مختلف به کار می‌رود. این مرحله به ترکیب اطلاعات کانال‌ها و تولید خروجی نهایی کمک می‌کند.

این روش ابتکاری در معماری MobileNet در عین حفظ کارایی لازم برای پردازش تصویر در دستگاه‌های با منابع نه‌چندان قدرتمند، اندازه مدل و محاسبات لازم را کاهش می‌دهد. برای اثبات این موضوع بیایید تعداد پارامترهای لازم برای آموزش دیدن هر دو حالت را محاسبه کنیم.

مقایسه تعداد پارامترهای کانولوشن استاندارد و کانولوشن Depthwise

با دقت به این تصویر که در مقاله معرفی MobileNet آمده است توجه کنید:

همان‌طور که از شکل پیداست، در صورت استفاده از یک کانولوشن استاندارد برای اعمال فیلتر به ابعاد DK * DK * M به آموزش DK * DK * M * N پارامتر نیاز داریم، اما در در مدل پیشنهادشده در معماری MobileNet، برای قسمت مربوط به کانولوشن Depthwise به آموزش DK * DK * M پارامتر و برای قسمت مربوط به کانولوشن Pointwise به آموزش M * N پارامتر نیاز است. با تقسیم مجموع پارامترهای این روش بر تعداد پارامترهای روش استاندارد می‌توان میزان کاهش تعداد پارامترها را محاسبه کرد:

که برابر است با:

این عبارت نشان می‌دهد معماری معرفی‌شده چقدر می‌تواند در مقایسه با حالت عادی از پیچیدگی محاسبتی کمتری داشته باشد.

معماری MobileNet چیست

همان‌طور که گفتیم، کانولوشن‌های Depthwise و Pointwise تفاوت معماری MobileNet با دیگر معماری‌ها را تشکیل می‌دهد. در MobileNet اولین لایه از کانولوشن استاندارد ۳x۳ استفاده می‌کند، اما لایه‌های بعدی از این رویکرد جدید بهره می‌برند که به کاهش پیچیدگی محاسباتی و بهبود کارایی مدل کمک زیادی می‌کند. نمای کلی معماری MobileNet را می‌توانید در این تصویر مشاهده کنید:

در هر یک از لایه‌های این معماری بعد از اجرای کانولوشن یک عملیات Batch Normalization و تابع فعال‌سازی ReLU روی Feature mapها اعمال می‌شود، البته به‌جز لایه آخر که بعد از یک Fully Connected با ۱۰۲۴ نورون، مستقیماً به یک Softmax برای طبقه‌بندی وصل می‌شود. ترتیب قرارگیری این مرحله‌ها در یک لایه در این تصویر آمده است:

در این معماری از Max Pooling استفاده نشده است، اما برای Down Sampling در کانولوشن لایه اول و لایه‌های شامل کانولوشن Depthwise، گام (Stride) را برابر ۲ قرارداده‌‌اند. درمجموع و با درنظرگرفتن کانولوشن‌های Depthwise  و Pointwise به‌عنوان دو لایه‌ جداگانه MobileNet شامل ۲۸ لایه است.

همچنین درباره معماری U-Net و نقش آن در پردازش تصاویر دیجیتال بخوانید.

پیاده‌سازی MobileNet در Keras

در این قسمت می‌توانید یک نمونه از پیاده‌سازی این معماری را ببینید. ابتدا کتابخانه‌های موردنیاز را فراخوانی می‌کنیم:

حال باید کد مربوط به معماری مدنظر را بزنیم. برای این کار تابع mobilenet را به‌این صورت تعریف می‌کنیم:

ابتدا یک لایه کانولوشن استاندارد با ۳۲ فیلتر با کرنلی به اندازه ۳x۳ و گام (Stride) ۲ قرار می‌دهیم. توجه کنید که در مقاله بررسی‌شده ذکر شده است که در تمامی لایه‌های کانولوشنی این معماری فرض می‌کنیم ابعاد Feature map بعد از عبور از لایه‌های کانولوشنال تغییر نمی‌کند و این یعنی همواره padding باید same باشد. بعد از این لایه یک Batch Normalization و یک تابع فعال‌ساز Relu نیز قرار می‌دهیم:

تعریف کانولوشن‌های Depthwise و Pointwise

در ادامه داخل تابع mobilenet یک تابع دیگر تعریف می‌شود که کانولوشن‌هایDepthwise  و Pointwise را در آن پیاده‌سازی کنیم. برای این منظور در این تابع یک لایه کانولوشن Depthwise با کرنلی به اندازه ۳x۳ تعریف کنیم و بعداً بسته به لایه‌ای که در آن قرار داریم گام (stride) را برابر یک یا دو مشخص می‌کنیم. stride در ادامه و با یک حلقه for روی فهرستی از تاپل‌های اندازه گام و تعداد فیلتر تعیین می‌شود. مجدداً یک Batch Normalization و یک تابع فعال‌ساز Relu می‌زنیم:

در خط بعدی کانولوشن Pointwise را تعریف می‌کنیم. برای این منظور یک لایه کانولوشن دوبعدی با کرنلی به اندازه ۱x۱ و با تعداد فیلتر مدنظر (این مورد هم براساس عنصر دوم تاپل گفته‌شده تعیین می‌شود) و گام یک قرار می‌دهیم. مجدد یک Batch Normalization و یک تابع فعال‌ساز Relu دیگر نیز می‌زنیم. نهایتاً Feature map خروجی را return می‌کنیم:

برای تعیین قسمت‌های پایانی این تابع، با استفاده از یک حلقه for روی فهرستی از configهای مشخص‌شده تعداد فیلترها و گام‌های هر لایه را مشخص می‌کنیم:

نکته چشمگیر این تابع نحوه انتخاب تعداد فیلترهای کانولوشن Pointwise است که با شکل ارائه‌شده از مدل MobileNet هم‌خوانی دارد. با کمی دقت در کانفیگ‌های مشخص‌شده در کد و حلقه for زیر آن متوجه این هم‌خوانی می‌شوید؛ برای مثال، در سطر دوم عکس لایه‌های MobileNet یک کانولوشن Depthwise می‌بینید که Stride آن یک است و همین موضوع در اولین تاپل کانفیگ‌های مشخص‌شده نیز دیده می‌شود. بعد از آن یک کانولوشن Pointhwise داریم که تعداد فیلترهای آن ۶۴ تا است و عنصر دوم اولین تاپل فهرست مذکور هم همین عدد را نشان می‌دهد. این تناظر میان همه تاپل‌ها و معماری موردبحث برقرار است.

تعیین لایه‌های کلاس‌بندی

در ادامه تابع mobilenet مانند مدل اصلی، یک لایه GlobalAveragePooling2D و سپس یک لایه Fully Connected با ۱۰۰۰ نورون (تعداد کلاس‌های دیتاست ImageNet) و تابع فعال‌ساز Softmax قرار داده‌ایم:

مدل مدنظر را با تابع هزینه Categorical Cross Entropy و بهینه‌ساز Adam کامپایل می‌کنیم:

با فراخوانی تابع model.summary می‌توان خلاصه این معماری و تعداد پارامترهای قابل‌آموزش هر لایه را مشاهده کرد. به‌علت زیادبودن تعداد لایه‌ها، فقط مجموع تعداد پارامترها را در این شکل آورده‌ایم:

نکات مهم درمورد معماری MobileNet

با پیشروی در این معماری می‌توانیم سه تغییر عمده را مشاهده ‌کنیم. اول اینکه با استفاده از گام‌های دوتایی (Stride=2) ابعاد تصویر به‌تدریج کاهش می‌یابد. نکته بعدی تعداد فیلترهاست که به‌تدریج افزایش می‌یابد. مورد سوم افزایش تعداد لایه‌های فیلترهای مشابه دارد، به‌طوری که ۱ لایه با ۳۲ فیلتر، ۱ لایه با ۶۴ فیلتر، ۲ لایه با ۱۲۸ فیلتر، ۲ لایه با ۲۵۶ فیلتر و ۶ لایه با ۵۱۲ فیلتر دیده می‌شود.

ضریب پهنا و ضریب وضوح

در معماری MobileNet دو ضریب کلیدی به‌نام‌های ضریب پهنا و ضریب وضوح وجود دارد که به تنظیم و بهینه‌سازی عملکرد شبکه کمک می‌کنند. این دو ضریب امکان سفارشی‌سازی مدل را براساس نیازهای خاص پردازشی و محدودیت‌های دستگاه فراهم می‌آورند. در ادامه توضیح دقیق‌تری از هر یک از این ضریب‌ها آمده است:

ضریب پهنا (Width Multiplier)

ضریب پهنا که گاهی با نماد α نشان داده می‌شود برای تغییر تعداد کانال‌های فیلترهایی است که در هر لایه کانولوشنی استفاده می‌شوند. با کاهش تعداد کانال‌ها می‌توان مصرف منابع محاسباتی و حافظه مدل را کاهش داد؛ برای مثال، ضریب ۰.۷۵ به‌معنی استفاده از ۷۵ درصد از کانال‌های موجود در هر لایه است.

ضریب وضوح (Resolution Multiplier)

ضریب وضوح تأثیر مستقیم بر اندازه ورودی‌های شبکه می‌گذارد. با کاهش اندازه تصویر ورودی، محاسبات موردنیاز برای پردازش تصاویر در شبکه کمتر می‌شود؛ زیرا هر لایه با داده‌های کمتری سروکار دارد. این ضریب به‌ویژه برای دستگاه‌هایی با منابع محدود مفید است؛ زیرا امکان پردازش سریع‌تر و کم‌هزینه‌تر تصویرها را فراهم می‌کند.

ارزیابی MobileNet

در مقاله مربوط به معرفی MobileNet این معماری با نسخه استاندارد خود مقایسه شده، یعنی به‌جای استفاده از کانولوشن Depthwise، از کانولوشن‌های استاندارد استفاده شده است.

نکته قابل‌تأمل در جدول بالا این است که تعداد پارامترهای مدل استاندارد بیش از ۷ برابر تعداد پارامترهای مدل اصلی MobileNet است، اما دقت آن تنها ۱ درصد بیشتر است. از طرفی تعداد عملیات جمع و ضرب حالت استاندارد حدود ۴.۹ میلیارد است، اما در حالت اصلی این تعداد به ۵۶۹ میلیون کاهش می‌یابد.

مقایسه دیگری که می‌توان انجام داد روی دقت این مدل و دیگر مدل‌هایی است که در رقابت ILSVRC خودی نشان داده‌اند. به این جدول توجه کنید:

همان‌طور که می‌بینید، شبکه عصبی VGG حدود ۱۴۰ میلیون پارامتر دارد، اما فقط یک درصد بهتر از شبکه MobileNet با ۴.۲ میلیون پارامتر است. MobileNet در مقایسه با شبکه عصبی GoogleNet نیز به‌رغم داشتن تعداد پارامترهای کمتر، دقت بیشتری را ثبت کرده است.

کاربردهای MobileNet

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

تشخیص چهره

MobileNet قادر است تا چهره‌های افراد را در تصویرها و ویدئوها با دقت بالا تشخیص دهد. این ویژگی در برنامه‌هایی مانند قفل‌گشایی دستگاه‌ها با استفاده از تشخیص چهره، سیستم‌های نظارتی و حتی در برنامه‌هایی که به شخصی‌سازی تجربه کاربر نیاز دارند بسیار مفید است.

شناسایی اشیا

با استفاده از MobileNet می‌توان اشیای مختلف را در یک تصویر شناسایی کرد. این کاربرد می‌تواند در سیستم‌های خودران، برنامه‌های خرده‌فروشی برای شناسایی محصولات و حتی در برنامه‌های تعاملی که به شناسایی و تفسیر محیط اطراف نیاز دارند به کار رود.

تجزیه‌وتحلیل ویدئو

MobileNet قادر است تا اطلاعات مفید را از ویدئوهای جریانی استخراج کند. این قابلیت امکان پایش ویدئویی را فراهم می‌کند و می‌تواند در سیستم‌های امنیتی، تجزیه‌وتحلیل ورزشی و موقعیت‌های دیگر که نیاز به تجزیه‌وتحلیل سریع و دقیق ویدئو دارند استفاده شود.

برنامه‌های کاربردی واقعی

به‌دلیل توانایی کار با منابع محدود، MobileNet به‌خوبی در دستگاه‌های موبایل و دستگاه‌های هوشمند خانگی عمل می‌کند. این امر به کاربران امکان می‌دهد تا از قابلیت‌های پیشرفته هوش مصنوعی بدون نیاز به سخت‌افزارهای قدرتمند یا مصرف بالای انرژی بهره‌مند شوند.

مزایا و معایب MobileNet چیست

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

 مزایا

 معایب

خلاصه مطلب

MobileNet، با تمرکز بر کاربردهای موبایلی و دستگاه‌هایی با محدودیت‌های منابع محاسباتی، راه‌حلی نوآورانه در زمینه یادگیری ماشین و تجزیه‌وتحلیل داده‌های بصری ارائه می‌کند. این معماری با استفاده از تکنیک‌هایی نظیر کانولوشن‌های جداگانه و ضرایب پهنا و وضوح، امکان دستیابی به سرعت بالا و کارآمدی محاسباتی را حتی در دستگاه‌های با قدرت پردازشی محدود فراهم می‌کند.

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

پرسش‌های متداول

 MobileNet چگونه به بهینه‌سازی کاربردهای هوش مصنوعی در دستگاه‌های موبایلی کمک می‌کند؟

این مدل با استفاده از تکنیک‌های مانند کانولوشن‌های Depthwise به کاهش تعداد پارامترها و محاسبات می‌پردازد. این امر امکان استفاده از قابلیت‌های پیشرفته‌ی هوش مصنوعی را بدون افزایش قابل توجه در مصرف باتری فراهم می‌کند.

چرا MobileNet برای توسعه‌دهندگان نرم‌افزار موبایل مهم است؟

توسعه‌دهندگان می‌توانند با استفاده ازMobileNet برنامه‌های کاربردی مانند تشخیص چهره، شناسایی اشیا و تجزیه و تحلیل ویدئو را با سرعت بالا و دقت قابل‌قبول، حتی روی دستگاه‌های دارای محدودیت‌های سخت‌افزاری عرضه کنند.

تفاوت اصلی میان MobileNet و دیگر معماری‌های عمیق‌تر مانند ResNet در چیست؟

بزرگ‌ترین تفاوت در ساختار و کارایی آن‌ها نهفته است؛ MobileNet با تمرکز بر کارایی و سرعت در دستگاه‌های با سخت‌افزار ضعیف طراحی شده است، درحالی‌که ResNet به دقت بالا در مدل‌سازی پیچیده‌تر می‌پردازد که نیازمند قدرت پردازشی بیشتری است.

چه نوع پروژه‌هایی می‌توانند از قابلیت‌های MobileNet برای بهبود عملکرد خود بهره ببرند؟

پروژه‌هایی که به پردازش تصویر یا ویدئو در زمان واقعی نیاز دارند، مانند برنامه‌های نظارتی، دوربین‌های امنیتی هوشمند و سیستم‌های کمکی رانندگی، می‌توانند از MobileNet برای سرعت‌بخشیدن به تشخیص و کاهش زمان پاسخ استفاده کنند.

کدام پارامترها در تنظیمات MobileNet می‌توانند برای بهینه‌سازی عملکرد آن در شرایط مختلف تعدیل شوند؟

ضرایب پهنای شبکه (Width Multiplier) و وضوح تصویر (Resolution Multiplier) دو پارامتر قابل‌تنظیم هستند که به کاربران اجازه می‌دهند تا میزان پیچیدگی و توان محاسباتی شبکه MobileNet را متناسب با نیازهای خاص پروژه و قابلیت‌های دستگاه‌های خود تنظیم کنند. با تغییر ضریب پهنای شبکه، تعداد کانال‌ها در لایه‌های کانولوشنی تغییر می‌کند و با افزایش یا کاهش این ضریب، پهنای باند محاسباتی شبکه به ترتیب افزایش یا کاهش می‌یابد؛ همچنین ضریب وضوح تصویر تأثیر مستقیم بر ابعاد تصاویر ورودی می‌گذارد که بر دقت و سرعت پردازش مؤثر است.

یادگیری دیتا ساینس ماشین لرنینگ را از امروز شروع کنید!

دنیای داده‌ها جذاب است و دانستن علم داده، توانایی تحلیل داده‌ یا بازاریابی مبتنی بر داده و ماشین لرنینگ، شما را برای فرصت‌های شغلی بسیاری مناسب می‌کند. فارغ از رشته‌ و پیش‌زمینه‌، می‌توانید حالا شروع کنید و از سطح مقدماتی تا پیشرفته بیاموزید. اگر دوست دارید به این حوزه وارد شوید، پیشنهاد می‌کنیم با کلیک روی این لینک قدم اول را همین حالا بردارید.

مشاوران کافه‌تدریس به شما کمک می‌کنند مسیر یادگیری برای ورود به این حوزه را شروع کنید:

دوره جامع دیتا ساینس و ماشین لرنینگ

خروج از نسخه موبایل