سلام !
متد Siamese Nnetwork رو احتمالا شنیدید . این متد به همراه متد Matching net جزو متد هایی هستند که بر اساس فاصله ، میزان شباهت را تعیین میکنند.اصطلاحا به این متد ها ، متد های Metric learning گفته میشود.
ابتدا با یک تصویر شروع میکنیم :
همینطوری که در تصویر میبینید ، دو عکس به دو شبکه ی کانولوشنی با وزن های مشترک داده شده ، خروجی را به نحوی embedded میکنند که از حالت چند بعدی به یک وکتور تبدیل شود. سپس به یک تابع محاسبه کننده ی فاصله ( مثلا فاصله ی اقلیدسی ) داده شده و نهایتا از یک Activation Function مانند sigmoid یا Relu یا ... استفاده میکنیم تا مقدار را به بازه 0 تا ۱ ببریم.
در چنین مدلی ، هرچه دو تصویر مشابه باشند ، عدد نهایی خروجی به ۱ نزدیک تر و هرچه غیر مشابه باشند به ۰ نزدیک است.
چند نکته :
۱- معماری ، پارامتر ها و وزن های دو شبکه ای که تصاویر به آنها داده میشود عینا یکسان است .
۲- برای اینکه تشخیص دهیم دو تصویر مشابه هستند یا نه باید یکthreshold در نظر بگیریم.
۳- برای train کردن این شبکه میبایست جفت عکس هایی یکسان ( مثلا با برچسب ۱ ) و غیر یکسان با برچسب ۰ به شبکه بدهیم و آنرا train کنیم.
۴- به این متد ، متد مختص one shot learning هم گفته میشود ، زیرا با دیدن یک تصویر هم میتواند مقایسه انجام دهد. ( کاربرد هایی مثل تشخیص امضا )