خانه » بهبود عملکرد معماری CondenseNet با روش یادگیری خودناظر

بهبود عملکرد معماری CondenseNet با روش یادگیری خودناظر

هدف از انجام این پروژه پیاده سازی و بهبود روش CondenseNet است که در مقاله معرفی شده است. به همین منظور در ابتدا اصل مقاله پیاده سازی شد و سپس روش جدیدی برای بهبود عملکرد آن ارایه شد. این پروژه در جز پروژه های پردازش تصویر طبقه بندی می شود.

برای پیاده سازی این پروژه با چالش های مختلفی روبرو بودیم. در ابتدا درک روش پیشنهادی و پیاده سازی آن به راحتی قابل انجام نبود. به این دلیل که روش نسبتا جدیدی ارایه شده بود و برای رسیدن به دقت اشاره شده در مقاله بایستی تمامی مراحل با جزیات رعایت می شد . چالش اصلی این پروژه بهبود عملکرد روش پیشنهادی بود. چون در این مقاله معماری جدیدی ارایه شده بود که دقتی بالا(بیش از ۹۰٪) بر روی مجموعه دادی cfar10 (سیفار 10) ارایه کرده بود. به همین دلیل رسیدن به دقتی بالاتر از دقت ارایه شده سخت ترین قسمت کار بود. که در نهایت با ترکیب روش ارایه شده در مقاله CondenseNet: An Efficient DenseNet using Learned Group Convolutions و روش یادگیری خود ناظر توانسیتم به دقتی بالاتر برسیم.

این پروژه با زبان پایتون و فریم ورک pytorch نوشته شده است. pytorch دست ما را برای کار با داده های حجیم و تغییر ساختار در معماری Condensenet باز می گذارد. در ادامه خلاصه ای از ایده موجود در مقاله، روش پیشنهادی و نتایج بدست آمده ارایه می شود.

مدل Densnet

‫مدل‬‫های‬ ‫شبکه‬ ‫عصبی‬ ‫به‬ ‫طور‬ ‫روز‬ ‫افزونی‬ ‫در‬ ‫موبایلها‬ ‫و‬ ‫سیستم‬ ‫های‬‫ مختلفی‬ ‫که‬ ‫قدرت‬ ‫پردازش‬ ‫محدود‬ ‫تری‬‫ دارند‬ فراگیر‬‫می شود‪.‬‬ ‫در‬ ‫این‬ ‫راستا‬ ‫در‬ ‫کنار‬ ‫دقت‬ ‫‪،‬‬‫مدلهایی‬ ‫که‬ ‫بتوانند‬ ‫به‬ ‫نحوی‬ ‫تعداد‬ ‫پارامترهای‬ ‫این‬ ‫شبکه‬ ‫ها‬‫را‬ ‫کاهش‬ دهند‬‫ از‬ ‫اهمیت‬ ‫و‬ ‫جایگاه‬ ‫ویژه‬ ‫ای ‬‫برخوردار‬ ‫شده‬ ‫اند‬‫‪.‬‬
‫در‬‫این‬ ‫طرح‬ ‫پژوهشی‬ ‫به‬ ‫سراغ‬ ‫مدل‬ ‫‪CondeseNet‬‬ ‫خواهیم‬ ‫رفت‬ ‫که‬ ‫اگر‬ ‫بخواهیم‬ ‫به‬ ‫طور‬ ‫خلاصه ‫به‬ ‫ویژگی‬ ‫های‬ این‬‫ مدل‬ ‫اشاره‬ ‫کنیم‬ ‫می‬ ‫توانیم ‬‫بگوییم‬ ‫که‬ ‫در‬ ‫این‬ ‫مدل‬ ‫با‬ ‫به‬ ‫کارگیری‬‫ دو‬ ‫مفهوم‬ ‫اتصالات‬ ‫متراک‬م(Dense layers) و‬ ‫گروه‬ ‫های‬ یادگرفته‬‫ شده‬ ‫کانولوشن‬ ‫‪،‬‬ ‫تلاش ‫شده‬ ‫است‬ ‫ساختار‬ ‫معروف‬ ‫‪densnet‬‬ ‫بهبود‬ ‫داده‬ ‫شود‪.‬‬ ‫اتصالات‬ ‫متراکم‬ ‫به‬ ‫کارگیری‬ مجدد ‬‫فیچر‬ ‫ها‬‫در‬ ‫شبکه‬ ‫را‬ ‫میسر‬ ‫میسازند‬ ‫در‬ ‫حالیکه‬ ‫که‬ ‫‪convolutions‬‬ ‫‪group‬‬ ‫‪learned‬‬ ‫اتصالاتی ‫که‬ ‫در‬ ‫آن‬ ‫ها‬‫به‬ کارگیری ‬‫مجدد‬ ‫فیچرها‬ ‫ضرورتی‬ ‫ندارد‬ ‫‪،‬‬‫را‬ ‫حذف‬ ‫می‬ ‫نماید‪.‬‬

‫همانطور‬‫که‬ ‫بیان‬ ‫شد‪،‬‬ ‫مدل‬ ‫مورد‬ ‫بحث‬ ‫در‬ ‫این‬ ‫طرح‬ ‫پژوهشی‬ ‫بر‬ ‫اساس‬ ‫ساختار‬ ‫معروف‬ ‫‪Densnet‬‬ ‫توسعه‬ ‫یافته‬ است. ‬‬‫ویژگی‬ ‫منحصر‬ ‫به‬ ‫فرد‬ ‫‪Densnet‬‬ ‫معرفی‬ ‫بلوک‬ ‫های ‬‫‪dense‬‬ ‫در‬ ‫ساختار‬ ‫شبکه‬ ‫عصبی‬ ‫می‬ ‫باشد‪.‬‬‫در‬ ‫نتیجه‬ ‫ای‬‫ن ‬‫امر‬ ورودی‬‫ مربوط‬ ‫به‬ ‫هر‬ لایه‬ ‫در‬ ‫واقع‬ ‫مجموع‬ ‫فیچر‬ ‫مپ‬ های ‬‫تمام‬ ‫لایه ‫های‬‫ پیشین‬ ‫می‬ ‫باشد‪.‬‬‫(‬ ‫برای‬‫ مشخص‬ ‫تر‬‫شدن‬ ساختار‬‫‪densnet‬‬ ‫به‬ ‫شکل‬ ‫زیر ‫یک‬ ‫توجه‬ ‫کنید)‬

شکل ۱: نحوه اتصال لایه‌ها به یک‌دیگر در ساختار DensNet

معرفی معماری Condensenet:

در مدل CondensNet که در این پژوهش مورد استفاده قرار گرفته است ساختار نسبت به Densnet تغییراتی نموده است. لازم به توجه است که مدل مد نظر ما از دو منظر نسبت به مدل اولیه تغییر نموده است. در وهله نخست ساختار هر بلوک dense تغییراتی نموده است که تغییر مربوط به هر بلوک از ساختار را می‌توان در شکل شماره ۲ مشاهده نمود. علاوه بر تغییر ساختار هر بلوک به طور کلی ساختار شبکه که از کنار هم قرار گرفتن بلوک‌های متعدد حاصل می‌شود نیز با تغییراتی همراه بوده است که این موضوع در شکل شماره 3 به بحث گذاشته شده است.

شکل 2 مقایسه ساختار یک لایه از مدل معروفdensnet (سمت چپ) و یک لایه از condensnet .(وسط ساختار متناظر با وضعیت یادگیری این شبکه و سمت راست ساختار این شبکه را به هنگام تست نشان می‌دهد.)

موضوع دیگری که در اینجا لازم است به آن اشاره داشته باشیم مبحث گروه‌‌ کانولوشن‌هاست(Group Convolution) که در تصویر شماره 4 این موضوع نشان داده شده است. این ساختار که نخستین بار در مدل معروف AlexNet (الکس نت)به کارگرفته شده است می‌تواند تاثیر قابل ملاحظه‌ای در کاهش هزینه محاسباتی یک مدل شبکه عصبی داشته باشد

شکل 3 ساختار به کار گرفته شده در مدل Condensnet

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

شکل 4: مقایسه ساختار کانلوشن عادی(سمت چپ)و ساختار کانلوشنگروهی(سمت راست)

در این بخش با کلیت روش condensnet و برخی از ایده‌های کلی این روش که آن‌را نسبت به روش‌های پیشین متمایز می‌سازد آشنا شدیم. در ادامه با مروری بر کلیت روش‌های یادگیری خود ناظر به سراغ به کارگیری این روش در کنار مدل condensnet به منظور بهبود دقت خواهیم رفت.

یادگیری خود ناظر

آشنایی با مفاهیم کلی

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

  • Context Encoder
  • Rotation Prediction
  • SimCLR
  • Using Representations for Downstream Tasks

بحث در رابطه با چگونگی کارکرد این روش‌ها خارج از هدف گزارش فعلی است و در صورت لزوم می‌توان به منابع مربوطه مراجعه نمود. در اینجا تمرکز خود را صرفا به روش پیش‌بینی زاویه دوران (مورد دوم ) متمرکز می‌کنیم. در این روش تصویر ورودی به ازای مقادیر مشخصی دوران داده می‌شود. (این مقادیر عموما برابر با ضرایب 90 درجه می‌باشند یعنی 0-90- 180-270) با توجه به اینکه دوران برابر با کدام یک از این مقادیر باشد یک لیبل به تصویر داده می‌شود که می‌توان از این لیبل در آموزش شبکه استفاده نمود.

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

شکل 5- به کارگیری دوران به عنوان تسک جانبی در حل یک مساله سلف سوپروایزد. به ازای مقادیر مختلف دوران تصویر دارکوب انتظار داریم شبکه بتواند زاویه دوران داده شده را تشخیص دهد.

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

به کارگیری روش یادگیری خود ناظر

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

شکل 6 به کارگیری تسک سلف سوپروایزد در کنار تسک اصلی(در اینجا تشخیص اشیا)به عنوان رگولارایزر

بررسی نتایج

در وهله اول مدل condensnet به عنوان یک مدل که با تعداد پارامترهای بهینه‌ شده می‌تواند به دقت مناسبی برسد را در نظر گرفته‌ایم. در گام نخست بدون استفاده از هیچ روش جانبی صرفا خود این مدل را بر روی دیتاست Ciafar10 پیاده سازی نمودیم. پارامترهای مهم دخیل در این پیاده سازی در جدول شماره 1 مشخص شده‌اند.

 

epoch Lr_type mometum Learning rate Batch size دیتاست
33 cosine 0.9 0.1 32 Cifar 10
جدول 1 پارامترهای به کارگرفته شده در پیاده سازی Condesnset بدون تسک جانبی

به منظور به کارگیری تسک خود ناظر به عنوان عامل رگولایزر در کنار تسک اصلی نیاز به یک دیتاست دیگر داریم. بدین منظور می بایست به سراغ جمع‌آوری تصاویری متناسب با دیتاست cifa10 رفته و با برچسب زنی مجازی آن‌ها، از تصاویر جدید استفاده نماییم. با توجه به اینکه در اینجا به طور کلی قصد بررسی کلیت ایده را داریم، به منظور انجام تسک سوپروایزد نیز مجددا از خود دیتاست cifar10‌ استفاده خواهیم نمود. با این تفاوت که در دیتاست فراخوانی شده در این تسک از تمام لیبل‌ها صرف نظر میکنیم و لیبل‌های مد نظر خود را به تصاویر الصاق می‌کنیم که همان زاویه دوران نسبت به وضعیت اولیه است. به منظور مقایسه بیشتر این پیاده‌سازی را یک‌بار نیز بر اساس دیتاست cifar100‌ تکرار خواهیم نمود.( یعنی در واقع به شبکه آموزش می‌دهیم که تصاویر دیتاست cifar10 را به درستی در گروه‌های مختلف قرار دهد و در کنار این آموزش اصلی به همان شبکه آموزش می‌دهیم که بتواند دوران عکس‌ها در دیتاست cifar 100‌ را نیز به درستی پیش‌بینی کند)

پارامترهای به کار گرفته شده برای پیاده سازی مدل پیشنهادی

epoch Lr_type mometum Learning rate Batch Size جانبی Batch size اصلی دیتاست جانبی دیتاست اصلی
33 cosine 0.9 0.1 32 32 Cifar 10 Cifar 10
33 cosine 0.9 0.1 64 32 Cifar100 Cifar10
پارامترهای به کار گرفته شده برای پیاده سازی مدل پیشنهادی

 

روش Best test_set accuracy
condensnet 87.43
condensnet with cifar10 supervised 88.58
condensnet with cifar100 supervised 89.14
نتایج نهایی

همانطور که در جدول مربوط به نتایج مشاهده می‌شود در تعداد ایپاک مورد استفاده جهت‌یادگیری، به کارگیری تسک خود ناظر توانسته تا حدودی نسبت به افزایش دقت مدل موثر واقع شود. به کارگیری دیتاست cifar 100‌ جهت تسک جانبی توانسته تاثیر مناسب‌تری نسبت به بکارگیری دیتاست cifar10 داشته باشد.

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

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

مدل condensnet
condensnet به همراه تسک سوپروایزد

نمودارهای بالا میانگین loss و دقت بر حسب تعداد epoch در پیاده‌سازی‌های مختلف را نشان می دهد. (نارنجی : دیتای ترین، آبی :دیتای تست)

نتیجه گیری

در این پروژه تلاش شد مدل condensnet پیاده سازی شود سپس با روش یادگیری خودناظر(Selfsupervise) بهبود داده شود. برای اینکار ابتدا اصل مقاله مورد اشاره پیاده سازی شد سپس با کمک یادگیری خود ناظر بهبود داده شد. نتایج دقت بر روی داده Cifar10 با روش condensnet به مقدار 87.43 رسیدیم. این معیار بعد از بهبود روش با مقدار 88.58 رسیده است که نشان دهنده بهبود در عملکرد روش پیشنهادی است.

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

code

به بالای صفحه بردن