Siamese NN for one shot Image Recognition

مقدمهدر ابتدا به بررسی مفهوم 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 دقت نهایی مدل را افزایش داد و نیز با توجه به اینکه چند سال از ارائه مقاله می گذرد می توان تابع های خطای بهتری را نیز استفاده کرد.