ما در قبلا در مورد معماری عصبی (Convolutional Net (CNN یاد گرفتیم. یکی از کاربردهای محبوب CNN ، تشخیص چهره است.
در ادبیات تشخیص چهره ، افراد غالباً در مورد تأیید چهره و تشخیص چهره صحبت می کنند.
تأیید صحت چهره: با توجه به تصویر ورودی و همچنین به عنوان نام یا شناسه شخص ، وظیفه سیستم بررسی اینست که آیا تصویر ورودی تصویر شخص ادعا شده است یا خیر.
تشخیص چهره: با توجه به یک پایگاه داده از تصاویر N فرد را به رسمیت می شناسد.
یكی از چالشهای تشخیص چهره این است كه شما باید بتوانید شخصی را كه فقط یك تصویر واحد دارد ، بشناسید یا فقط یك نمونه از چهره آن شخص را نشان دهید. و ، از نظر تاریخی ، الگوریتم های یادگیری عمیق اگر یک تصویر ورودی داشته باشند، خوب کار نمی کنند. بنابراین یکی از رویکردهایی که می توانید امتحان کنید این است که یک تصویر از یک شخص داشته باشید و آن را به یک ConvNet وارد کنید و آن را با استفاده از یک واحد softmax با خروجی N یا خروجی N + 1 متناسب با هریک از افراد N در یک برچسب قرار دهید. اما این واقعاً خوب نیست زیرا اگر چنین مجموعه آموزشی کوچکی دارید ، برای آموزش یک شبکه عصبی قوی برای این کار ، واقعاً کافی نیست. و همچنین اگر شخص جدیدی در بانک اطلاعاتی اضافه شود چه می شود؟ حالا باید مجدداً شبکه را با طبقه بندی های softmax مجدداً آموزش دهید. بنابراین در عوض ، برای ساختن این کار ، از یک تابع تشابه استفاده می کنیم.
کارکرد تابع d ، وارد کردن دو چهره است و به شما می گوید که چقدر مشابه یا چقدر متفاوت هستند. یک راه خوب برای این کار استفاده از شبکه Siamese است: از طریق دنباله ای از لایه های محکم ، استحکام و کاملاً متصل ، ما به یک بردار از ویژگی های 128 عدد می پردازیم.
ما شبکه عصبی را به گونه ای آموزش می دهیم که کدگذاری آن را محاسبه می کند ، در یک تابع d که به ما می گوید وقتی دو عکس از یک شخص هستند ، به ما می گوید.
یکی از راههای یادگیری پارامترهای شبکه عصبی به گونه ای که رمزگذاری مناسبی را برای تصاویر چهره ها به وجود آورد ، استفاده از تابع triplet loss است.
برای اینکه مطمئن شویم که شبکه عصبی فقط برای همه رمزگذاری صفر نمی شود ، ما می خواهیم هدف را به گونهای تغییر دهیم که نیازی به صرفاً کمتر یا مساوی با صفر نباشد ، باید کاملا کوچکتر از صفر باشد، و به این حالت margin ، حاشیه گفته می شود. بنابراین ، اگر یک مجموعه آموزشی از 10،000 تصویر با 1000 نفر مختلف داشته باشیم ، 10،000 (عکس چند نفره از همان شخص) عکس می گیریم ، triplet loss را انتخاب می کنیم و سپس الگوریتم یادگیری را با استفاده از نزول شیب بر روی تابع هزینه triplet loss آموزش می دهیم.
حال ، چگونه ما در واقع این سه گانه را برای شکل گیری مجموعه تمرین انتخاب می کنیم؟
یكی از مشكلات ،اگر A ، P و N را بطور تصادفی از مجموعه تمرینی انتخاب كنیم این است كه محدودیت ضرر برآورده می شود. بنابراین برای ساخت یک مجموعه آموزشی ، کاری که ما می خواهیم انجام دهیم این است که سه قطعه A ، P و N را انتخاب کنیم که آموزش آن دشوار است. بنابراین در این حالت ، الگوریتم یادگیری باید خیلی سخت تلاش کند تا حداقل حاشیه آلفا باشد
سیستم های تشخیص چهره تجاری در این مرحله بر روی مجموعه داده های نسبتاً گسترده ای آموزش می گیرند که دستیابی به آن آسان نیست. بنابراین ، به جای اینکه سعی کنید یکی از این شبکه ها را از ابتدا آموزش دهید ، بهتر است که مدل پیش آموزش داده شده شخص دیگری را دانلود کنید ، نه اینکه همه چیز را از ابتدا انجام دهید.
بیایید ببینیم چگونه تشخیص چهره می تواند به عنوان یک مشکل طبقه بندی دودویی مستقیم مطرح شود.
راه دیگر برای آموزش شبکه عصبی تشخیص چهره ، گرفتن این جفت شبکه عصبی (یعنی شبکه Siamese) است و آنها را مجبور به محاسبه تعبیه شده ، شاید 128 تعبیه ابزاری کرده و سپس اینها را به یک واحد رگرسیون لجستیک وارد کنید. پیش بینی کنید در هر صورت خروجی هدف یک باشد هر دو تصویر با هم یکی هستند و اگر هر دو تصویر از شخص متفاوتی باشند صفر است.
تذکر : این متن ترجمه ای از متن این سایت است در صورت صلاحدید می توانید این را نیز مطالعه کنید.