<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های Ahmadreza Sezavar</title><link>https://virgool.ir/feed/@sezavar.1997</link><description></description><language>fa</language><pubDate>2026-11-11 00:50:17</pubDate><image><url>https://files.virgool.ir/upload/users/94583/avatar/avatar.png</url><title>Ahmadreza Sezavar</title><link>https://virgool.ir/@sezavar.1997</link></image><item><title>LoCo: Local Contrastive Representation Learning</title><link>https://virgool.ir/@sezavar.1997/loco-local-contrastive-representation-learning-hnp6vljsvc69</link><description>مقدمهاکثر الگوریتم های یادگیری عمیق، امروزه توسط روش back-propagation آموزش پیدا می کنند، ایده بر این اساس است که خطای آموزش در انتهای شبکه محاسبه می شود و وزن های شبکه براساس گرادیانی که از لایه انتهایی به سمت ابتدای شبکه جریان پیدا می کند، بروزرسانی می شوند. در نتیجه لایه های ابتدایی برای بروزرسانی پارامتر های خود باید منتظر لایه های انتهایی بمانند و این هماهنگی برای فرآیند های محاسباتی موازی مناسب نمی باشد.الگوریتم پس انتشار خطا (Back propagation)فرض کنید که یک شبکه عصبی داریم، پارامتر های این شبکه عصبی شامل وزن ها و بایاس هستند، می خواهیم با بروزرسانی این پارامتر ها دقت نهایی شبکه را افزایش دهیم و خروجی دقیق تری تولید کنیم.اینکار به این صورت انجام می شود که ورودی وارد شبکه می شود و خروجی در نهایت از شبکه تولید می شود، مثلا خروجی شده 0.33 در حالیکه باید 0.9 می شد، پس یک خطایی داریم، از این خطا برای بروزرسانی استفاده می شود. به این صورت که این مقدار خطا از انتهای شبکه به سمت ابتدا شبکه می رود برای بروزرسانی وزن ها از این خطا نسبت به وزن مورد نظر مشتق گرفته می شود که آن را گرادیان گویند، در عملیات مشتق گیری نیز چون وزن ممکن است به صورت مستقیم در رابطه خطا نباشد از مشتق زنجیره ای برای عملیات پس انتشار خطا استفاده می شود، بروزرسانی نیز به کمک رابطه زیر انجام می شود:رابطه (1)در رابطه (1) E تابع خطا و گرادیان در نرخ یادگیری ضرب شده و نتیجه آن از وزن کم شده و وزن بروزرسانی می شود.مقدمه ای بر روش های یادگیریمفهوم Representation Learning یعنی فرآیند یادگیری یک نگاشت پارامتریک از دامنه ورودی داده خام به فضای ویژگی به این امید که بتوان انتزاع و جنبه های مفیدتری را استخراج کرد و عملکرد را به خصوص در نمونه برداری کاهشی افزایش داد.در شبکه های عصبی اولیه، از قوانین یادگیری انجمنی محلی که از شبکه های عصبی بیولوژیکی الهام گرفته شده بود، استفاده می شد و براین اساس بود که تغییر وزن سیناپس ها به فعال ساز های قبل و بعد از آن وابسته بود. یکی از مثال های کلاسیک آن روش hebbian است، که ارتباط بین دو نورون وقتی تقویت خواهد شد که هر دو نورون با هم فعال شده باشند. روش های یادگیری محلی در ماشین های محدود کننده بولتزمن (RBM) نیز بکار گرفته شده اند. نکته قابل توجه دیگر آن است که با ارائه روش های مختلف در این زمینه، عملکرد آنها با در مقایسه با روش های مرسوم مانند الگوریتم پس انتشار خطا فاصله زیادی داشتند. با این حال روش های جدیدتر از قبیل GIM و LoCo که در ادامه توضیح داده می شوند، یک تفاوت اصلی با متد های قبلی دارند و این است که آنها برای عملیات نمونه برداری کاهشی، بخش های بزرگی از شبکه عصبی را به عنوان یک واحد (unit) در نظر می گیرند در حالیکه روش های پیشین یک واحد را یک لایه کانولوشنی در نظر می گرفتند.با موفقیت AlexNet، روش های متعددی مبتنی بر عدم استفاده از برچسب گذاری داده ها معرفی شدند، یکی از آنها آموزش self-supervised می باشد که در پیش بینی محتوا، رنگ و شمارش شی ورودی بکار می رود. روش های یادگیری رقابتی بدون نظارت نیز با پیشرفت خود، فاصله ی بین متد های مبتنی بر نظارت و بدون نظارت را تا حد زیادی پر کرده اند. روش Greedy InfoMax (GIM) برای یادگیری هر stageمحلی با ازبین بردن وابستگی ها روبه عقب مطرح شده اند که به صورت بدون نظارت کار می کنند.با حذف وابستگی داده ها در مرحله عقب گرد، مدل می تواند یادگیری موازی داشته باشد و نیازی به منتظر بودن برای رسیدن اطلاعات از لایه های بالایی را نداشته باشند. بیشتر آموزش های موازی شبکه های یادگیری عمیق به صورت موازی سازی داده ها (data parallel training) انجام می شود، در این روش هر GPU بخشی از داده ورودی را گرفته و سپس گرادیان های محاسبه شده میانگین گرفته می شوند. به طور خلاصه روش های مبتنی بر پس انتشار عقب، نیاز به ذخیره محاسبات انجام شده دارند تا بتوانند گرادیان های جدیدتر را به دست آورند، در حالیکه در روش های یادگیری محلی نیازی به ذخیره این محاسبات و انتظار زمانی وجود ندارد.یادگیری رقابتی (Contrastive learning)اگر به مقاله “Supervised Contrastive Loss” که در سال 2020 چاپ شده است، نگاهی کنیم، در بخشی از آن که مربوط به نتایج است، اشاره شده که در ارزیابی که برروی دیتاست ImageNet انجام داده اند، تابع خطا پیشنهادی supervised contrastive lossآنها به مراتب عملکرد بهتری از cross entropy loss داشته است. چنین ادعایی واقعا یک پیشرفت برای تمام روش های یادگیری بانظارت می باشد، اما با مطالعه بیشتر مقاله متوجه خواهید شد که تابع خطای معرفی شده یک تابع خطای کاملا جدیدی نیست که جایگزین تابع cross-entropy شده، و درواقع یک راه جدید برای Pre-train کردن شبکه عصبی برای مساله طبقه بندی می باشد. در واقع در مساله طبقه بندی یک تصویر به شبکه داده می شود و در انتهای شبکه یک بازنمایی (Representation) از آن ایجاد شده و به کمک تابع Softmax یک احتمال که تصویر ورودی به کدام کلاس متعلق است تولید می شود. اما آنچه در مقاله فوق اشاره شده، این است که بتوان ابتدا در فضای ویژگی ها، ویژگی های مربوط به هرکلاس را تا جای ممکن به هم نزدیک و ویژگی های مربوط به کلاس های مختلف را از هم دور کرد، در چنین شرایطی می توان به کمک یک لایه جداساز خطی نیز طبقه بندی را انجام داد، بر این اساس الگوریتم پیشنهادی آنها دارای دو stage می باشد، در stage 1، با استفاده از روش contrastive سعی در یادگیری یک بازنمایشی می باشد که بدون اعمال هیچ مرزی بین کلاس ها، فضای ویژگی گفته شده مورد نظر ایجاد شود، و در stage 2، شبکه ای که در stage 1 بود را freeze کرده و دیگر آموزش نمی دهند و تنها لایه مربوط به طبقه بندی در stage 2 را آموزش می دهند که این آموزش نیز بر اساس همان روش سنتی مبتنی بر cross-entropy است.شکل 1- supervied contrastive learningپس نکته مهمی که وجود داشت contrastive pre-training بود، برای درک بهتر باید به موضوعاتی که در زمینه Unsupervised Contrastive learning وجود دارد، وارد شویم. نویسندگانی که در این حوزه هستند، معتقدند که می توان یک شبکه عصبی را با ابتدا pre-trainکردن آن به صورت unsupervised ارتقا داد، یکی از متد هایی که وجود دارد، یادگیری خود نظارتی یا Self Supervised Learning می باشد. همان طور که قبلا بیان شد، مهم ترین مزیت این روش ها این است که داده ها نیازی نیست برچسب گذاری شده باشند، و هدف این است که شبکه یک بازنمایشی از ویژگی ها را یادگیرد که معنا دار باشد، بدین منظور وقتی یک تصویر گرفته می شود، بر روی آن افزونگی هایی مثل crop،  Flip و غیره صورت می گیرد، و تصویر را positive می نامند، هم چنین نیاز به یک تصویر negativeاست، تصویر negative می تواند هر تصویری از مجموعه داده باشد و تنها بایستی متفاوت از تصویر positiveباشد، و هدف این است که در فضای بازنمایش ویژگی ها، ویژگی مربوط به تصویر positive و تصویر های augment شده آن به هم نزدیک شده و تصویر های negative تاجای ممکن از آنها دور باشند. اما یک نکته مهم که وجود دارد این است که چون داده ها برچسب ندارند ممکن است تصویر negative نیز دارای کلاس مشابهی با positiveباشد و چنین رخدادی کار طبقه بندی برای لایه نهایی که از فضای بازنمایش ویژگی ها استفاده می کند را دشوار می کند در حالیکه این مشکل در supervised contrastive learning وجود ندارد (چون داده ها برچسب دارند)به طور خلاصه، زمانی که داده های زیاد و با برچسب های کافی داشته باشیم، یادگیری با نظارت عملکرد بسیار مناسبی دارد، با این حال جمع آوری داده و برچسب گذاری آنها کاری امری دشوار است و مقیاس پذیری آنها سخت است، ولی استفاده نکردن از حجم انبوهی از داده ها که برای مثال در اینترنت وجود دارد نیز درست نیست. هم چنین در بسیاری از موارد برچسب زدن همه داده ها غیرممکن و بسیار زمان بر می باشد.یادگیری خود نظارتی از این جهت که از داده های بدون برچسب استفاده می کند مشابه با یادگیری بدون نظارت است ولی با این تفاوت که یادگیری بدون نظارت برروی کاربرد هایی مثل کاهش ابعاد، گروه بندی و خوشه بندی استفاده می شود، یادگیری خود نظارتی سعی در حل مسائلی از قبیل طبقه بندی و رگرسیون دارد. از جمله دلایلی که چرا به یادگیری خود نظارتی نیاز است می توان به خاصیت قابل مقیاس بودن آن به دلیل اینکه نیاز نیست حجم عظیمی از داده ها را به صورت دستی برچسب گذاریم و در کاربرد هایی از قبیل رنگ آمیزی تصویر و چرخش 3 بعدی که لیبل گذاری آنها برای روش های یادگیری نظارت شده دشوار است را به خوبی انجام می دهد. البته در کنار این مزیت ها معایبی نیز دارد که عبارتند از جنبه پیچیدگی و سنگینی محاسبات و دقت فرآیند برچسب گذاری.در مقاله “LoCo” بیان شده که یادگیری رقابتی بر این اساس که یک زوج داده مشابه یا غیرمشابه را دریافت می کند، در طی روند آموزش، یک encoder برای یادگیری بازنمایش های معنادار و یک decoder برای تمایز دادن positive از negative از طریق تابع خطا InfoNCEاستفاده می کند. تابع خطا InfoNCE که در رابطه (2) نشان داده شده، در واقع یک تابع cross-entropy است که برای طبقه بندی استفاده می شود که دارای یک پارامتر مقیاس زمانی    است و بردار های q و k بردار های بازنمایش نرمال شده encoder می باشند.رابطه (2)اخیرا نیز چارچوب SimCLR برای یادگیری رقابتی پیشنهاد شده که دارای تکنیک های مختلفی برای پرکردن فاصله بین بازنمایش یادگیری در روش های بانظارت و بدون نظارت می باشد. از مزیت های آن می توان به استفاده از batch sizeهای با سایز بزرگ (2k to 8k)، افزونگی داده قوی تر و به جای استفاده از یک لایه خطی به عنوان decoder، از یک سر غیر خطی MLPاستفاده می کند. چارچوب SimCLR، با وجود سادگی اش، به شدت وضعیت جاری را در یادگیری خود نظارت شده و نیمه نظارت شده بر روی تصویر برداری اینترنت پیشرفت می‌دهد.Greedy infomaxاین روش برای یادگیری بازنمایی در هر stage یک شبکه مطرح شده است، به این صورت که encoder را به چندین ماژول تقسیم کرده که هریک در انتها دارای تابع خطا Contrastive loss است. ورودی به همان صورت عادی روبه جلو منتشر شده ولی گرادیان ها به صورت عقبگرد بین ماژول ها منتشر نمی شوند، درعوض، هر ماژول به صورت حریصانه توسط یک تابع خطا محلی Contrastive lossآموزش پیدا می کند. آنچه باعث شده نویسندگان به دنبال چنین روشی بروند، الهام گرفتن از یادگیری نورون ها در مغز انسان است، که براساس اطلاعات محلی است و خبری از یک خطای سراسری نمی باشد. برای بازنمایش ویژگی های یادگرفته شده نیز از تابع خطا از نوع self supervised lossاستفاده شده است. به طور خلاصه Greedy InfoMax معماری موجود شبکه عصبی را به چندین ماژول که گرادیان های آنها از هم مستقل هستند تقسیم کرده و اطلاعات بین patchهایی که با هم در ارتباط هستند را افزایش می دهد.Locoاین روش برای پوشاندن فاصله بین یادگیری رقابتی و یادگیری مبتنی بر پس انتشار عقب پیشنهاد شده است. در شکل 2، ما یک شبکه عصبی که با متد پس انتشار عقبگرد که هر مستطیل یک downsample stage است، نمایش داده ایم (شکل 2سمت چپ). در میانه شکل 2، متد GIM نمایش داده شده که تابع خطا InfoNCE در انتهای هر stageمحلی اضافه شده و گرادیان ها از stageهای بالایی به stage های پایینی جریان پیدا نمی کنند، چنین روندی وقتی که دیتاست با مقیاس بالا داریم، مانند ImageNet، عمکلرد را بسیار پایین می آورد. یکی از دلایلی که باعث کاهش عمکلرد شده می تواند به دلیل نبود هیچ گونه فیدبکی از لایه های بالایی و نداشتن عمق در decoder های لایه های پایینی و تلاش برای برای حل حریصانه مساله طبقه بندی می باشد. برای حل چنین مشکلاتی، روش LoCo پیشنهاد شده (شکل 2 سمت راست) که هر دو stage به عنوان یک unit گروه بندی شده و هر stage میانی به طور همزمان بین stage ها به اشتراک گذاشته می شود.شکل 2 - مقایسه بین روش های پس انتشار عقبگرد، GIM و LoCo پوشاندن فاصله بین بلوک های منحصر گرادیانیدر GIM فیدبک از ویژگی های سطح بالا وجود ندارد. زمانی که یادگیری رقابتی با سختی روبه رو می شود، کیفیت بازنمایش از لایه های ابتدایی روی عملکرد نهایی لایه های بالایی اثرگزار است در حالیکه لایه های ابتدایی از اینکه چه بازنمایشی در لایه های انتهایی اتفاق می افتد، با خبر نیستند. در نتیجه نیاز است یک پلی بین stage های بالایی و پایینی وجود داشته باشد تا لایه های پایینی از یک فیدبک از لایه های بالایی برخورددار باشند، برای همین همان طور که در شکل 2 نشان داده شده، به جای اینکه encoder را به چندین بخش که هم پوشانی با هم ندارند، تقسیم کنیم، می توانیم بین stage های محلی یک همپوشانی ایجاد کنیم. لازم به یادآوری است که روند انتشار رو به جلو در شبکه تغییری نخواهد کرد.دیکدر عمیق ترنویسندگان مقاله در مورد اینکه respective field مربوط به stage های اولیه در encoder به دلیل کوچک بودن بیش از حد، آنقدر روی حل مساله به کمک روش رقابتی موثر نباشند، نگرانی های خود را مطرح کردند. در واقع تابع InfoNCE روی تمامی بلوک های یادگیری محلی اعمال می شود و برای decoder دشوار است که از بازنمایش های میانی گرفته شده از stage های اولیه برای طبقه بندی درست نمونه های positive استفاده کند که دلیل آن محدودیت مربوط به respective field انها می باشد. در نتایج نیز نویسندگان نشان دادند که با افزایش تعداد لایه های کانولوشنی به decoder برای افزایش گستره respective field امری ضروری برای یادگیری محلی است. هم چنین با داشتن stage هم پوشان بین unitهای محلی باعث می شود تا decoder به طور موثری عمیق تر شده بدون اینکه هزینه اضافی ای در مرحله انتشار رو به جلو داشته باشیم.جمع بندیروش پس انتشار عقبگرد متداول ترین الگوریتم برای آموزش شبکه های عصبی می باشد، با این حال وقتی که سایز مدل افزایش پیدا می کند، این روش از نظر محاسباتی، حافظه و سربار سنکرون سازی افزایش پیدا می کند. یکی از راه حل هایی که وقتی با چنین مشکلی برخورد می کنیم و استفاده از روش پس انتشار عقبگرد را بهینه تر می کند، موازی سازی داده (data parallelism) است که اجازه می دهد از سایز دسته بزگتر و آموزش روی چند ماشین استفاده کرد. با این حال، در forward pass هر لایه تنها می تواند ورودی خود را در یک دنباله ای اجرا کند که آن را forward locking گویند و استفاده از پس انتشار عقبگرد وقتی است که کل فرآیند forward pass به پایان رسیده باشد و نیز در طی روند بروزرسانی لایه های پایینی باید منتظر لایه های بالایی بمانند که باعث سربار حافظه شده و موازی سازی مناسبی به ما نمی دهد. چنین چالش هایی باعث شد که روش های مبتنی بر یادگیری محلی مطرح شوند. روش های مبتنی بر یادگیری محلی بروز رسانی را براساس اطلاعات محلی انجام می دهند و تعریف محلی بودن را براساس تعریف همسایگی که انجام می دهند که وابسته به لایه ها و یا گروه بندی لایه ها است، می باشد.یکی از روش های جدیدی که در این زمینه مطرح شده LoCo نام دارد، یک الگوریتم یادگیری محلی برای یادگیری رقابتی بدون نظارت. LoCoنشان داد که با داشتن یک بازخورد ضمنی گرادیانی بین بلوک های ایجاد شده و عمیق تر کردن decoder روش های یادگیری رقابتی محلی را به خوبی روش های یادگیری رقابتی رساند. آزمایش هایی که برروی مجموعه داده عظیم ImageNet و سایر کارها صورت گرفته نشان می دهد که به خوبی بازنمایش های مناسبی را مدل یادگرفته است. هم چنین با بهتر تعریف کردن همسایگی و stage ها عملکرد را نسبت به روش های پیشین مبتنی بر یادگیری محلی افزایش داده است.به صورت خلاصه وقتی فرآیند سرعت آموزش یک مورد مهم برای ما می باشد استفاده از روش های موازی سازی محلی بسیار مفید است. از نظر میزان حافظه مصرفی و سربار ایجاد شده روش های یادگیری محلی عملکرد بالایی دارند و به کمک آنها می توان از سایز دسته بزرگتری برای آموزش استفاده کرد. روش های یادگیری محلی در کاربرد های مختلفی از جمله بینایی ماشین، پردازش متن و معماری های شبکه های عصبی مختلفی مانند MLP, ResNets, Transformers قابل استفاده و به کار گیری هستند.</description><category>Ahmadreza Sezavar</category><author>Ahmadreza Sezavar</author><pubDate>Thu, 02 Jun 2022 13:47:49 +0430</pubDate></item><item><title>Siamese NN for one shot Image Recognition</title><link>https://virgool.ir/@sezavar.1997/siamese-nn-for-one-shot-image-recognition-yqzgimintt3k</link><description>مقدمهدر ابتدا به بررسی مفهوم Siamese Neural Network می پردازیم.این نوع شبکه عصبی دوقلو نوع خاصی از شبکه های عصبی هستند که شامل دو شبکه کانولوشنی با وزن های به اشتراک گذاشته شده اند و دو تصویر در ورودی دریافت کرده و هر یک از تصویر ها از یکی از شبکه های کانولوشنی عبور کرده و در انتها برای هر تصویر یک بردار ویژگی تولید می شود، سپس یک فاصله بین این دو بردار ویژگی به کمک تابع خطا محاسبه می شود، اگر این فاصله مقدار کوچکی باشد (یا از یک مقدار آستانه تعیین شده کمتر باشد) می گوید دو تصویر متعلق به یک کلاس است.ONE SHOT IMAGE RECOGNITIONممکن است این سوال در ذهن رخ دهد که با وجود روش های متعدد مانند شناسایی به کمک مدل های کانولوشنی و Learning Program Bayesian Hierarchical چرا از روش shot one برای شناسایی استفاده می شود، اصلی ترین دلیل برای استفاده از این روش کمبود داده است، روش های مبتنی بر یادگیری عمیق در زمانی که داده های بسیار زیادی وجود دارد کارایی و عملکرد بالایی از خود نشان می دهند ولی زمانی که داده ها کم باشند عملکرد آنها افت پیدا خواهد کرد.در مقاله مورد بررسی، روشی مطرح شده که فرضیه ها را روی ساختار ورودی محدود کرده در حالیکه به طور خودکار در تلاش برای کسب ویژگی هایی است که قابلیت تعمیم بخشی مدل را افزایش دهد. برای همین مدل پیشنهادی را برروی یک چارچوب یادگیری عمیق ایجاد کرده اند که دارای لایه های متعدد 4 غیر خطی است تا نسبت به تغییرپذیری ها در فضای ویژگی پایدار باشد و ویژگی های تغییرناپذیر را کسب کند.ONE SHOT VS CLASSIFICATIONدر یک مساله طبقه بندی استاندارد، یک تصویر ورودی از چندین لایه متوالی عبور کرده و سرانجام در خروجی، یک احتمال برای عضویت در هر یک از کلاس های موجود برای آن تولید می شود، برای مثال فرض کنید می خواهیم یک طبقه بندی برای کلاس های گربه، سگ، فیل و اسب انجام دهیم، برای هر تصویر ورودی 4 احتمال تولید می شود (در واقع در لایه آخر تعداد چهار نورون قرار می گیرند که هریک از آنها یک احتمال متناسب برای یک کلاس تولید می کند) و بیشترین احتمال متعلق به کلاسی است که تصویر ورودی به آن تعلق دارد. دو نکته در این مسائل مهم است: یک وجود یک دیتاست مناسب و با تعداد تصاویر زیاد که از هریک از کلاس ها تعداد تصاویر مناسبی وجود داشته باشند، دو شبکه تنها برای 4 کلاس گفته شده آموزش دیده است، پس اگر یک تصویری در ورودی بیاید که مربوط به هیچ یک از کلاس ها نمی باشند نمی توان شبکه گفته شده را به کار برد و باید برای کلاس جدید دوباره تعداد تصاویر مناسب و کافی جمع آوری کرده و دوباره شبکه را از ابتدا آموزش داد. در طرف دیگر classification shot one نیازی به تعداد داده های زیاد ندارد، همان طور که از اسم آن پیداست می تواند تنها با یک تصویر از هر کلاس نیز کار کند، هم چنین وجود کلاس های جدید نیز مشکل ساز نمی باشد و نیازی نیست دوباره از ابتدا شبکه را آموزش داد. چنین روشی در کاربرد های مثل شناسایی چهره افراد یک سازمان که تعداد کارکنان آن بیشتر از هزار نفر است و در هر ماه ممکن است تعداد افراد جدیدی به سازمان اضافه شده و یا تعدادی از آنجا بروند، بسیار مناسب است. در واقع در کاربرد گفته شده، اگر فرض کنیم از متد classification استفاده کنیم، سیستم طراحی شده دارای ساختاری مانند شکل 2 را خواهد داشت، سیستمی که برای آموزش نیاز به تصاویر زیادی برای هر کلاس دارد و اگر کلاسی اضافه یا کم شود شبکه باید re-train شود. اما متدی که روش های shot one دارند، به کار گیری شبکه های Siamese می باشد، دو تصویر ورودی یکی متعلق به یک تصویر مرجع موجود در پایگاه داده و دیگری متعلق به تصویری است که می خواهیم تست کنیم. خروجی شبکه یک معیار شباهت بین دو ورودی است که اگر میزان شباهت بسیار بالا باشد، خروجی نزدیک به یک است. اگر کلاس جدیدی نیز اضافه شده تنها یک تصویر آن را در پایگاه داده ذخیره کرده و برای عملیات تست از آن یک تصویر به عنوان یکی از ورودی ها استفاده می کنیم (شکل 3 را برای درک بهتر مشاهده کنید)الگوریتم مطرح شدهدر این بخش به الگوریتم و مدل پیشنهادی می پردازیم. ابتدا مجموعه داده مورد استفاده و در ادامه جزییات مدل به همراه فرآیند آموزش شرح داده خواهند شد. به طور کلی، بازنمایی تصاویر به کمک یک روش نظارت شده مبتنی بر متریک به همراه شبکه عصبی Siamese آموزش داده شده و سپس از ویژگی های شبکه برای فرآیند learning shot one استفاده می شود.مجموعه داده (DATASET)برای آموزش و ارزیابی مدل پیشنهاد شده از مجموعه داده Omniglot استفاده شده است. این مجموعه شامل 1623 کاراکتر های دست نوشت مختلف از 50 حرف الفبایی می باشد.مدل پیشنهادیدر مدل پیشنهادی از شبکه عصبی Siamese که دارای یک ساختار دوقلو که دو تصویر مختلف را دریافت می کند و یک تابع محاسبه انرژی است، استفاده شده و وزن های این دو شبکه با هم به اشتراک گذاشته می شود. مدل یک شبکه عصبی Network Neural Convolutional Siamese است که دارای L لایه با N1 واحد عصبی (unit) است و (l, 1(h منظور نمایش دهنده بردار مخفی در لایه l از شبکه دوقلو اول و (l,2(h برای نمایش بردار مخفی در لایه l شبکه دوقلو دوم استفاده می شود. در لایه های ابتدایی به همراه کانولوشن از تابع فعال ساز Relu استفاده و در عمق انتهایی به همراه لایه های کامال متصل از تابع sigmoid استفاده می شود. مدل پیشنهادی از ترکیب دنباله ای از لایه های کانولوشنی که هر کدام تنها دارای یک کانال و با سایز کرنل مختلف و اندازه stride ثابت برابر 1 تشکیل شده و بعد از انجام عمل کانولوشن و اعمال تابع فعال ساز از لایه های Pooling Max با اندازه stride برابر 2 استفاده می کند. k امین فیلتر مپ در هر لایه در واقع از رابطه زیر ایجاد می شود:ساختار شبکه کانولوشنی به کار رفته در مدل پیشنهادی در شکل 5 نشان داده شده است.فرآیند آموزشنویسندگان مقاله از روش های مختلفی برای آموزش مدل استفاده کرده اند تا مطمئن شوند تا شبکه به خوبی همه چیز را یاد می گیرد. تابع خطا (function loss)تابع خطا استفاده شده در مدل entropy cross regularized می باشد که در شبکه های عصبی مختلفی استفاده شده است. در این تابع خطا همان طور که از رابطه 2 مشاهده می شود، یک پارامتر تنظیم به آن اضافه شده تا از بزرگ شدن بیش از حد پارامتر های شبکه جلوگیری کرده و شبکه را از overfit شدن دور سازد.مقدار دهی اولیه وزن (initialization weight) : وزن ها در شبکه کانولوشنی از یک توزیع نرمال با میانگین صفر و انحراف معیار 01.0 مقدار دهی می شوند. مقادیر bias از یک توزیع نرمال با میانگین 5.0 و انحراف معیار 01.0 مقداردهی شده ولی در لایه های کاملا متصل مقادیر bias از یک توزیع نرمال با میانگین صفر و انحراف معیار 2.0 مقداردهی می شوند. بهینه سازی (optimization): از بهینه ساز momentum و سایز دسته برابر با 128 استفاده شده است. تکانه (momentum) با هدفِ کاهش واریانس در گرادیان کاهشی تصادفی ابداع شده و همگرایی به جهت مورد نظر را تسریع می بخشد و از گرایش به جهات نامربوط پیشگیری میکند. در این روش به جای اینکه تنها از مقدار گرادیان در مرحله ی فعلی به منظور هدایت جستجو استفاده شود، تکانه گرادیان مراحل گذشته را نیز محاسبه می کند و از آن برای تعیین جهت گرادیان استفاده می کند.زمان بندی یادگیری (schedule Learning): مدل از نرخ های یادگیری مختلفی برای هر لایه استفاده کرده اما نرخ ها ی یادگیری به طور یکنواخت به صورت یک درصد در هر دوره آموزشی (epoch) کاهش پیدا می کنند. مقدار momentum در هر لایه از 5.0 شروع می شود و به طور خطی افزایش می یابد تا زمانی که به ارزش uj برسد. این مدل برای 200 دوره آموزش پیدا می کند و نرخ خطای ارزیابی shot one روی tasks learning shot one 320 که به صورت رندوم از مجموعه داده ارزیابی تولید می شود، محاسبه می گردد.بهینه سازی هایپرپارامتر ها (optimization Hyperparameter): مدل از ورژن بتا Whetlab که یک چارچوب بهینه سازی بیزین می باشد استفاده کرده تا مقادیر هایپرپارامتر ها را انتخاب کند، سایز کرنل های کانولوشنی از 3*3 تا 20*20 متغیر بوده و تعداد کرنل های کانولوشنی نیز از 16 تا 256( با مقادیر مضرب 16) مختلف بوده است. مقدار واحد ها در لایه های کاملا متصل نیز در محدوده 128 تا 4096 تنوع داشته است. مدل هم چنین از روش distortion affine برای افزونگی داده آموزشی استفاده کرده است.نتایج و جمع بندیبا توجه به موارد مطرح شده فوق، مشاهده شد که در بسیاری از کاربرد های دنیای واقعی وجود مجموعه داده بزرگ و جمع آوری آن ممکن نمی باشد، از طرفی با توجه به اینکه ممکن است تعداد کلاس هایی که داریم کم یا زیاد شوند و تغییر کنند، آموزش شبکه از ابتدا امری هزینه بر و دشوار خواهد بود، چنین اهدافی باعث می شوند تا از استفاده از روش های طبقه بندی متداول به سراغ روش هایی چون shot one classification برویم. برای افزایش دقت و کیفیت خروجی تولید شد این روش می توان از شبکه های کانولوشنی استفاده کرد و همان طور که در جدول 1 نشان داده شده است، استفاده از روش Net Siamese Convolution عملکرد بسیار بالایی در شناسایی تصاویر داشته است. هم چنین یکی دیگر از مزیت های این مقاله استفاده از تابع های بهینه سازی با عملکرد بالا، استفاده از روش های نوین برای انتخاب بهترین هایپر پارامتر ها (method Whetlab) استفاده از روش افزونگی تصاویر برای افزایش تعداد داده های آموزشی و نیز استفاده از پارامتر تنظیم در تابع خطا برای جلوگیری از overfitting و نیز بزرگ شدن بیش از حد مقادیر وزن در شبکه عصبی می باشد.  نکته دیگر حائز اهمیت نیز این است که روش می توانست از تابع های خطا متفاوتی نسبت به مساله طبقه بندی نیز استفاده کند و تنها متکی بر entropy cross نباشد و اینکه خود متناسب با مساله و فضای داده ای که در اختیار دارد، یک تابع خطا تعریف کنید که براساس learning metric باشد. با توجه به معماری شبکه کانولوشنی به کار رفته نیز می توان دریافت که هدف اصلی نویسندگان مقاله این نبوده که به بهترین دقت ممکن دست یابند و بیشتر به معرفی روش خود پرداخته اند، با این حال می توان با استفاده از متد های مختلفی چون learning Transfer دقت نهایی مدل را افزایش داد و نیز با توجه به اینکه چند سال از ارائه مقاله می گذرد می توان تابع های خطای بهتری را نیز استفاده کرد.</description><category>Ahmadreza Sezavar</category><author>Ahmadreza Sezavar</author><pubDate>Tue, 31 May 2022 18:15:58 +0430</pubDate></item><item><title>Mask R-CNN, DeepLab, U-NET</title><link>https://virgool.ir/@sezavar.1997/mask-r-cnn-deeplab-u-net-k7lb2q7yzmsx</link><description>مطالعه ای در مورد معماری و نحوه کارکرد شبکه های Mask R-CNN, DeepLab, U-NET که برای بخش بندی تصویر پیشنهاد شده اند.مقدمهدر این مطالعه به بررسی مقاله های با موضوعات Mask RCNN، U-Net و DeepLab می پردازیم. زمینه ای که این شبکه های عصبی نام برده شده بکار رفته اند، بخش بندی (قطعه بندی) تصاویر می باشد.در پردازش تصاویر دیجیتالی، منظور از بخش بندی تصویر (image segmentation)یعنی تخصیص دادن یک لیبل به هر پیکسل در تصویر، به طوری که پیکسل ها با لیبل های یکسان دارای مشخصه های مشابهی باشند.بخش بندی تصویر دارای انواع مختلفی است که در زیر اشاره شده است.· بخش بندی معنایی (semantic segmentation): تخصیص دادن یک لیبل به هر پیکسل موجود در تصویر، این لیبل ها می تواند شامل شخص، ماشین، چتر، گل و غیره باشند.· بخش بندی نمونه (instance segmentation): نوعی بخش بندی است که شی هایی که تحت یک لیبل هستند را هر یک را به عنوان یک شی بخصوص و منحصر به فرد تلقی می کند.· بخش بندی پانوپتیک (Panoptic segmentation): ترکیب بخش بندی معنایی و بخش بندی نمونه است. به هر یک از پیکسل های درون تصویر دو لیبل واگذار می کند که شامل برچسب معنایی و شناسه نمونه می باشد.شاید این سوال در ذهن خطور کند که چرا تنها از الگوریتم های شناسایی شی (object detection)استفاده نمی کنیم و چه نیازی به الگوریتم های بخش بندی می باشد، جواب این است که در کاربرد هایی مانند خودروهای خودران، وقتی تنها از الگوریتم های شناسایی شی استفاده کنیم، جعبه های محدود کننده (Bounding Box) مختلف ممکن است با هم هم پوشانی داشته باشند و این باعث سردگمی سیستم خودرو می شود در حالیکه استفاده از الگوریتم های بخش بندی چنین ضعفی را از بین می برد.در ادامه به تحلیل هر یک از شبکه های عصبی معرفی شده می پردازیم.Mask RCNNچارچوب Mask R-CNNبه منظور بخش بندی نمونه اشیا به کار می رود. لازم به یادآوری است که در بخش بندی معنایی ماسکی که به شی های تحت یک لیبل می دهیم، یکسان است، مثلا همگی رنگ یکسانی دارند ولی در بخش بندی نمونه شی های تحت یک لیبل، ماسک متفاوتی می گیرند. برای معرفی Mask R-CNN ابتدا لازم است چارچوب ها و الگوریتم های قبلی مرتبط با آن را با هم مرور کنیم.R-CNNشناسایی اشیا با کمک R-CNN، در این روش محققان با استفاده از الگوریتمی با نام selective searchبه شناسایی 2000 پیشنهاد ناحیه (Region Proposals)که کادر هایی حاوی شی می باشند، می پرداختند و سپس یک طبقه بند مبتنی بر روش CNN+ SVMرا بر روی این 2000 کادر اعمال می کردند. R-CN دقت بسیار خوبی داشت ولی سرعت آن بسیار پایین بود، برای مثال برای هر تصویر به کمک GPUحدود 18 تا 20 ثانیه زمان برای شناسایی می برد.Fast R-CNNشناسایی اشیا با کمک Fast R-CNN: مشکلی روش R-CNN داشت زمان بر بودن آن بود. برای هر پیشنهاد ناحیه، یک فضای ویژگی تولید می شد که با توجه به اینکه روش 2000 پیشنهاد ناحیه از تصویر تولید می کرد، این روند هزینه بر می شد. به همین دلیل در این روش، یک فضای ویژگی واحد برای کل تصویر در ابتدا تولید می کردند، یعنی به جای اینکه CNN را 2000 بار به کار ببریم تنها یکبار روی تصویر ورودی آن را به کار می گیریم و الگوریتم selective search را بعد از آن استفاده می کنیم. پیشنهاد های ناحیه تولید شده توسط selective search برروی فضای ویژگی تولید شده پروجکت شده و این فرآیند را ROI Projection می نامند. در شکل زیر یک نمونه مثال نشان داده شده که چگونه یک ROI Proposal مشخص شده روی تصویر، به روی فضای ویژگی تولید شده، با توجه به نرخ نمونه برداری نگاشت و پروجکت شده است. با توجه به معماری Fast R-CNN که در شکل 3 نشان داده شده، سپس از ROI Pooling استفاده می شود، این لایه ادغامی وظیفه اش این است که ویژگی با سایز مختلف را گرفته و آن را به یک سایز ثابت تبدیل می کند، دلیل استفاده از یک سایز ثابت وجود لایه های کاملا متصل (fully connected layers) می باشد. خروجی لایه ROI Pooling به دو لایه کاملا متصل داده می شود تا عملیات طبقه بندی و تعیین Bounding Box صورت گیرد. در این روش از یک multi task loss function برای آموزش شبکه استفاده می شود.شکل 2- یک نمونه از پروجکشن ROI Proposal از تصویر به فضای ویژگیشکل 3- معماری Fast R-CNNFaster R-CNNشناسایی اشیا با Faster R-CNN: مشکلی که در Fast R-CNN وجود دارد این است که هنوز از روش selective search برای تولید ناحیه های پیشنهادی استفاده می شود که روشی وقت گیر است. در این روش مانند قبل، تصویر ورودی از یک شبکه CNN عبور کرده و فضای ویژگی مرتبط با آن تولید می شود، سپس این فضای ویژگی تولید شده به یک ماژول بنام RPN (Region Proposal Network) داده می شود، RPN در واقع نوآوری Faster R-CNN است که از چندین جعبه های محصورکننده آماده و از پیش تعیین شده بنام anchor استفاده می کند و می آموزد که ناحیه مورد نظر که شی در آن هست را به طور مستقیم پیشنهاد دهد. این anchor ها که هر کدام در اندازه های مختلف می باشند، درکنارشان یک متغیر بنام objectness می باشد که احتمال وجود شی در آن را می گوید. خروجی RPN به همراه فضای ویژگی را به ROI Pooling داده می شود که خروجی اش یک سایز ثابت است و سپس به لایه های کاملا متصل داده می شود و در نهایت عملیات طبقه بندی و تعیین جعبه محدود کننده انجام می شود. مشکلی که این روش دارد، این است که پیشنهاد شی زمان بر هست و سیستم های مختلف یکی پس از دیگری کار میکنند (به صورت توالی) که این باعث میشود کارایی کلی سیستم وابسته به توالی بین لایه ها داشته باشد.Mask R-CNNچارچوب Mask R-CNN: یک مدل تعمیم یافته از Faster R-CNN است و در اینجا علاوه بر ارسال فضای ویژگی به RPN و طبقه بند، از آن برای پیش بینی یک ماسک باینری برای شی درون جعبه محصور کننده نیز استفاده می شود. در واقع Mask R-CNN یک نسخه تعمیم یافته از Faster R-CNN است که شامل یک شاخه اضافه برای پیشبینی ماسک های بخش بندی روی ROI ها می باشد. هم چنین به جای استفاده از ROI Pooling از ROI Align استفاده شده تا از اطلاعات spatial که در روش ROI Pool ممکن بود در نظر گرفته نشوند، بهره ببرد. خروجی ROI Align به Mask head داده می شود که شامل دو لایه کانولوشنی برای تولید ماسک برای هریک از ROI ها می باشد. توجه کنید که همانطور که در مقاله اشاره شده، عمل طبقه بندی، به پیشبینی ماسک ها بستگی دارد. تابع خطا نیز مانند قبل یک multi task loss می باشد که در آموزش استفاده می شود (یک تابع خطا مشترک برای طبقه بندی، تعیین جعبه محصور کننده و نیز پیش بینی ماسک). شاخه پیش بینی ماسک، دارای بعد خروجی km^2   برای هر ROI می باشد، که در واقع k ماسک باینری با رزولوشن   m*m را انکد می کند.شکل 4- Mask R-CNN frameworkU-Netبرای اینکه یک شبکه عصبی عمیق به خوبی آموزش ببیند، نیاز است که هزاران داده آموزشی برچسب گذاری شده وجود داشته باشد. در مقاله U-Net سعی شده راه حلی ارائه شود که استفاده زیادی از افزونگی تصاویر داشته باشد و به کمک آن شبکه عصبی عمیق را به خوبی آموزش دهد. از دلایلی که باعث شده تا الگوریتم U-Netدر سال های اخیر در امر شناسایی اجزای تصویر و بخش بندی کردن آنها بخصوص در زمینه پردازش تصاویر پزشکی، مورد توجه قرار گیرد، می توان به پاسخ دهی با دقت بالا، سرعت بالا فرآیند آموزش و عدم نیاز به مجموعه داده بزرگ و نیز سخت افزار پیچیده و گران قیمت می باشد.الگوریتم U-Netالگوریتم U-Netدر سال 2015 در دانشگاه فرایبورگ المان توسط اولاف رنه برگر، فیلیپ فیشر و توماس بروکس برای افزایش دقت و سرعت پردازش و یادگیری، با استفاده از شبکه های کانولوشنی طراحی شد، از نکات قابل توجه در معماری این شبکه، می توان به عدم وجود لایه های کاملا متصل اشاره کرد، که باعث شده میزان پیچیدگی شبکه را کاهش دهد. ایده نهفته در این الگوریتم، ایجاد یک مسیر انقباضی متوالی است که با جایگزین کردن لایه های Pooling به جای لایه های samplingرخ داده است. در ادامه پس از گرد آوری ویژگی های مورد نظر، از یک مسیر انبساطی متوالی استفاده می شود. هدف از به کارگیری چنین مسیری، بازسازی تصویر اولیه و انتشار اطلاعات پس زمینه به درون آن می باشد. به طور خلاصه می توان گفت که شبکه U-Netدارای دومسیر انقباضی و انبساطی متقارن و نظیر هم می باشد که هر آنچه در مسیر انقباضی حذف شده، در مسیر انبساطی بازیابی می شود.جزئیات معماری U-Netهمان طور که در شکل 5 مشخص است، مسیر انقباضی مانند یک شبکه عصبی کانولوشنی است، لایه کانولوشنی در این شبکه با استفاده از کرنل سایز های    فیلتر های مورد نظر را اعمال می کنند. در ادامه از تابع فعال ساز Relu استفاده شده و سپس از لایه MaxPooling با سایز    و اندازه گام 2 استفاده می شود. استفاده متوالی این سه لایه در کنار هم، یک نمونه برداری کاهنده (downsampling) ایجاد می کند. هر طبقه نمونه بردار کاهنده، کانال های ویژگی را دوبرابر می کند. حال در مسیر انبساطی ما با یک طبقه نمونه بردار افزاینده (upsampling) طرف هستیم، که یک لایه کانولوشنی با سایز    وجود دارد که کانال های ویژگی را کاهش می دهد، هم چنین داده هایی که قرار است به تصویر اضافه شوند را از طبقه نظیر خود در مسیر انقباضی دریافت می کند. سپس یک لایه کانولوشنی با سایز    به همراه تابع فعال سایز Reluوجود دارد. در لایه آخر نیز از لایه کانولوشنی    استفاده شده که هر 64 بردار ویژگی را به یک طبقه مورد نظر نگاشت می کند. شبکه U-Net دارای 23 لایه کانولوشنی می باشد.شکل 5- معماری شبکه عصبی U-Netآموزش شبکه U-Netتصویر مورد نظر در مجموعه داده به عنوان ورودی شبکه و طرح بخش بندی شده آنها در فایل های جداگانه قرار گرفته، تابع انرژی شبکه یک تابع Softmax که با تابع هزینه cross-entropy ترکیب شده و به نقشه خروجی اعمال می شود، محاسبه می گردد. هم چنین الگوریتم بهینه سازی، گرادیان کاهشی تصادفی می باشد و اندازه حرکت با مومنتوم اعمال شده به شبکه باید حداکثر و در حدود 0.99 باشد، این عمل باعث می شود شبکه از تصاویری که پیشتر مشاهده کرده در بروزرسانی ها بیشترین استفاده را نماید. نکته مورد توجه بعد، مقدار دهی اولیه به شبکه و لایه ها می باشد، اگر این کار به خوبی انجام نشود، بخش هایی از شبکه بیش از حد فعال می شوند و بخش هایی دیگر غیرفعال شده و اصلا در محاسبات درگیر نمی شوند، برای محاسبه مقدار اولیه هر نورون از فرمول 1 استفاده می شود که در آن N تعداد ورودی های نورون است.Initial weight = sqrt(2/N)    فرمول-1متد افزونگی داده به کار رفته در U-netزمانی که برای آموزش شبکه با داده کمی در دسترس است، این روش، متدی بسیار کارآمد برای آموزش شبکه می باشد. توسط افزونگی داده می توانیم تغییرات مختلفی همچون، چرخش، دوران زاویه، روشنایی و تاریکی تصویر، تغییر اندازه، افزودن نویز و محو کردن و غیره را به تصویر اصلی اعمال کنیم و تصاویر جدیدی تولید کرده و برای آموزش استفاده کنیم. برای مثال استفاده از لایه Dropout خود نوعی اعمال تغییر در ورودی است که در آخر مسیر انقباضی اضافه شده است. به طور کلی الگوریتم U-Net از انواع مختلف افزونگی داده استفاده کرده که علاوه بر تامین داده آموزشی بزرگ برای عمل یادگیری، مزیت دیگری همچون: تغییر فرم بافت تصویر را نیز داشته است که رایج ترین نوع تغییر در پزشکی می باشد که با این افزونگی باعث آشنایی بیشتر شبکه با انواع مختلف تغییر فرم بافت می شود.DeepLabاین مقاله در مورد بخش بندی معنایی است که دارای سه نوآوری اصلی است: اول اینکه از کانولوشن با فیلتر های از نوع up sampled استفاده کرده که آنها را atrous convolution نامیده، این ویژگی برای کنترل رزولوشنی که ویژگی ها از آن تولید می شوند، طراحی شده است. دوم، طراحی atrous spatial pyramid pooling می باشد، تا بخش بندی پایدار تری در مقیاس های مختلف برای اشیا داشته باشد. سوم، ارتقا محلی سازی مرزبندی های اشیا با ترکیب روش های DCNN و مدل های گرافیکی احتمالی می باشد. در ادامه به توضیح روش های اصلی به کار رفته در مقاله می پردازیم.Atrous Convolutionاین نوع از کانولوشن که در برخی از مقالات بنام dilated convolution نیز به کار رفته است، نحوه کارکرد جالبی دارد، برای درک بهتر شکل 6 را مشاهده کنید، در شکل سمت چپ حالت استاندارد استفاده از کانولوشن نشان داده شده که rate = 1 دارد، در حالت atrous مقدار rate افزایش پیدا می کند، همان طور که در شکل میانی و سمت راست نشان داده شده وقتی rate را افزایش می دهیم، میزان گسترش respective field زیاد می شود، منظور از respective field یعنی ناحیه ای از تصویر ورودی که کرنل (فیلتر) کانولوشنی روی آن اعمال می شود، فضای خالی ایجاد شده را نیز با صفر می پوشانند.شکل 6- atrous (dilated) convolution kernelsمزیتی که این روش ایجاد می کند این است که چون respective field گسترده تری دارد، پس اطلاعات global تری را جمع آوری می کند و میزان context بیشتری را کسب می کند. این روش باعث افزایش دقت در کاربرد هایی مانند بخش بندی ارائه می دهد.Atrous spatial pyramid pooling (Aspp)این لایه به این صورت عمل می کند که بر روی فضای ویژگی تولید شده، atrous convolution ها با rate های مختلف و به صورت موازی اعمال می شوند، و در نهایت با هم همجوشی (fuse) پیدا می کنند. به دلیل اینکه اشیا متعلق به یک کلاس، ممکن است مقیاس های متفاوتی داشته باشند، ASPP کمک می کند تا شبکه با مقیاس های مختلف یک شی آشنا شود و دقت نهایی افزایش پیدا کند.شکل 7- ASPPFully connected crfیک میدان تصادفی مشروط (CRF) یک روش مدل سازی آماری است که زمانی مورد استفاده قرار می گیرد که برچسب های کلاس برای ورودی های مختلف مستقل نیستند. برای مثال در زمینه بخش بندی تصویر، برچسب کلاس برای یک پیکسل به برچسب کلاس پیکسل های همسایه اش نیز بستگی دارد. در چنین مواقعی با استفاده از CRF می توان یک پیشبینی برای برای یک پیکسل موجود در تصویر انجام داد به طوری که برچسب کلاس پیکسل های که به پیکسل ما بستگی دارند نیز در نظر گرفته می شود. در CRF هر پیکسل یک نقطه (data point) در نظر گرفته می شود، این نقاط با یک دیگر یک گراف را تشکیل می دهند که توسط یال هایی با یک دیگر مرتبط هستند، اگر بین نقطه i و j یک یال باشد، به این معناست که برچسب کلاس های این دو نقطه به همدیگر وابسته اند. معمولا گراف ایجاد شده یک گراف sparce است و عملیات های محاسباتی با سرعت بالایی انجام می شوند.وقتی که با یک fully-connected CRF طرف هستیم، هر نود در گراف همسایه نود دیگری است، این باعث می شود که عملیات های محاسباتی با پیچیدگی بیشتر انجام شوند، البته اشاره شده است که بهینه سازی انجام شده با کمک وزن هایی گاوسی می تواند به بهبود آن کمک شایانی کند که اشاره شده که دو کرنل گاوسی استفاده شده، کرنل اولی باعث می شود که پیکسل ها با رنگ ها و مکان مشابه یک برچسب کلاس مشابه داشته باشند و کرنل دوم برای در نظر گیری spatial proximity وقتی که smoothness ایجاد می شود، می باشد. به طور کلی استفاده از این روش باعث تولید لبه های تیزتر و گوشه های با دقت تر در تصویر می شود.جزئیات معماری Deeplabبه طور خلاصه، همان طور که در شکل 8 نشان داده شده، تصویر ورودی به یک شبکه کانولوشنی عمیق مانند VGG-16 و یا ResNet-101 داده می شود، از atrous convolution جهت کاهش درجه down sampling استفاده شده، سپس از یک bilinear interpolation برای اینکه نقشه ویژگی را به رزولوشن تصویر ورودی ارتقا دهند، استفاده شده و درنهایت به کمک fully-connected CRF برای بهبود نتایج بخش بندی و مرزبندی بهتر کمک گرفته می شود.شکل 8- ساختار مدل برای بخش بندی تصویرجمع بندی و نتیجه گیریهمان طور که بیان شد، روش Mask RCNN نسبت به روش های پیشین خود که دارای پیشرفت هایی می باشد، از مهم ترین مزیت های آن می توان به موارد رو به رو اشاره کرد: سادگی در آموزش شبکه، برتری در عملکرد نسبت به روش های موجود در زمان ارائه مقاله، بهینه بودن (efficient) و داشتن سربار بسیار کم نسبت به روش قبلی (Faster RCNN)، قابلیت تعمیم بخشی و اینکه به آسانی در کاربرد های دیگر مانند pose estimation, object detection استفاده می شود. از معایب آن می توان به این نکته اشاره کرد که به خوبی جزئیات نمونه (instance details) را پیش بینی نمی کند و شبکه به خوبی ارتباط بین پیکسل ها در لبه ها را درک نمی کند که روش هایی از جمله Mask Refined RCNN برای غلبه براین مشکلات ارائه شده اند.الگوریتم U-NET که در سال 2015 برای بخش بندی تصاویر پزشکی ارائه شده بود، دارای مشخصه های مفیدی از قبیل: مناسب بودن برای عملیات بخش بندی و تولید خروجی به صورت pixel-wise می باشد، معماری ساده که بلاک هایی ساده در آن تکرار شده بودند، عملکرد خوب و مناسب که در چندین ارزیابی و benchmark برنده شده بود و نیز اینکه با مجموعه داده کوچکی قابلیت کار کردن داشت، می توان اشاره کرد. از نقاط ضعف آن می توان به این نکته اشاره کرد که فرآیند یادگیری در لایه های میانی کند می شود و نیز داشتن redundancy های زیاد به دلیل هم پوشانی patch ها.روش DeepLab یکی از روش های مطرح در زمینه بخش بندی تصویر می باشد که خصوصیت های اصلی آن از جمله کانولوشن atrous و پولینگ ASPP معرفی شدند که به ترتیب باعث جمع آوری اطلاعات global تر و کسب context بیشتر و آشنایی شبکه با scale های مختلف اشیا موجود در تصویر می شوند. خروجی نیز به کمک fully connected CRF بهتر و با کیفیت تر شده و لبه ها و گوشه ها به خوبی شناسایی می شوند، همگی این موارد دقت نهایی شبکه را افزایش می دهد، در ادامه ورژن های مختلفی از این روش ارائه شدند. برای مثال DeepLab v3 از ماژول parallel atrous convolution استفاده کرد تا بتواند محتوا در scale های مختلف را دریافت کند و نیز اینکه CRF را از شبکه خود کنار گذاشت، نتایج نیز نشان دادند که شبکه نسبت به ورژن های قبلی دارای بهبود هایی شده است. DeepLab v3+ ورژن قبلی خود را بهبود هایی داد، به این صورت که ماژول decoder ای برای بهبود نتایج بخش بندی به شبکه اضافه کرد و نیز از نقشه ویژگی های لایه میانی شبکه برای تولید تصویر خروجی استفاده کرد.گردآورنده: احمدرضا سزاوار</description><category>Ahmadreza Sezavar</category><author>Ahmadreza Sezavar</author><pubDate>Fri, 08 Apr 2022 19:18:28 +0430</pubDate></item></channel></rss>