کامپیوتر چطور چهره‌ها را تشخیص می‌دهد؟

عصر کالا- درک دنیای بصری برای انسان‏ ها آنقدر ساده است که تقریبا تمامی عکس ‏العمل‏ های ما نسبت به محیط بصری اطراف به‏ صورت ناخودآگاه انجام می‏گیرد.

کامپیوتر چطور چهره‌ها را تشخیص می‌دهد؟
نسخه قابل چاپ
سه شنبه ۲۶ ارديبهشت ۱۳۹۶ - ۱۰:۱۹:۰۰

    به گزارش پایگاه خبری «عصر کالا» به نقل از اقتصاد آنلاین، وقتی چیزی را می‏بینیم، اغلب اوقات برای تشخیص آن نیازی به مطالعه (ذهنی) نداریم. اما این مساله در مورد کامپیوتر ها بسیار پیچیده است. تشخیص چهره انسان از دیگر اجسام و موجودات محیط، برای کامپیوتر ها یک مشکل بسیار بزرگ محسوب می‏شود. علاوه‌بر این، حل این مساله نیز نیازمند تلاش و هزینه بسیار بالایی خواهد بود. امروزه تکنولوژی تشخیص چهره و بینایی کامپیوتر از اصلی‏ترین نیاز های علم و صنعت به‏ شمار می‏آیند. پیشرفت بسیاری از تکنولوژی‏ های امروزی از جمله خودرو های بدون راننده، نرم‏افزار های تشخیص چهره، کارخانه ‏ های هوشمند که بتوانند وجود خطا و ناهماهنگی در خط تولید را تشخیص دهند و نرم‏افزار هایی که به شرکت‌ های بیمه امکان پردازش و دسته‏ بندی اتوماتیک اسناد را بدهند، همگی به پیشرفت سیستم تشخیص تصویر و بینایی کامپیوتر بستگی دارند.
    تعلیم بینایی به کامپیوتر سخت و پرهزینه است
    یکی از راه ‏ های موثر برای حل این مشکل به‏ کارگیری فراداده ‏ ها برای دیتا های بدون ساختار است. شاید استخدام یک متخصص برای طبقه‏ بندی و جداسازی آرشیو فیلم‏ ها از آرشیو موسیقی کمی سخت به‏ نظر برسد اما به‏ کارگیری همین افراد متخصص برای آموزش سیستم مسیریابی یک خودروی بدون راننده جهت تشخیص عابرین پیاده از دیگر خودرو ها یا شناسایی، دسته‏ بندی و فیلترکردن تصاویر روزانه میلیون‏ ها کاربر شبکه ‏ های اجتماعی تقریبا غیرممکن است. به گزارش دنیای اقتصاد، بنابراین اولین راه‏حل این مشکل استفاده از شبکه ‏ های عصبی است. با اینکه از لحاظ تئوریک استفاده از شبکه ‏ های نورونی مرسوم جهت تحلیل تصاویر ممکن است، اما از لحاظ عملی و محاسباتی بسیار پرهزینه خواهد بود. برای مثال تحلیل یک تصویر نسبتا کوچک (50 × 50 پیکسل) نیازمند 900 داده ورودی و بیش از نیم میلیون پارامتر خواهد بود. شاید انجام این کار برای ماشین‏ های محاسباتی امکان‏پذیر باشد اما زمانی که بخواهیم تصاویر بزرگ‌تر (500 × 500 پیکسل) را تحلیل و پردازش کنیم، تعداد ورودی و شبکه ‏ های نورونی مورد نیاز برای انجام این کار تقریبا غیرقابل شمارش خواهد بود.

    چاره چیست؟
    خوشبختانه با اعمال یکسری تغییرات در ساختار شبکه ‏ های عصبی، می‏توان تصاویر بزرگ‌تر را نیز پردازش کرد. این نوع شبکه ‏ های عصبی تغییر یافته را «شبکه ‏ های عصبی پیچیده» (CNNs) می‏نامند. یکی از مزایای شبکه ‏ های عصبی، کاربردپذیری آن ها در مصارف مختلف است؛ اما پس از به‏ کارگیری آن ها در پردازش تصاویر می‏بینیم که این مزیت به یک مشقت تبدیل می‏شود. اما با طراحی شبکه ‏ های عصبی مختص پردازش تصاویر، می‏توانیم این ماموریت غیرممکن را تا حدی ممکن بسازیم. یکی از مزیت‏ های شبکه ‏ های عصبی پیچیده، تشخیص دو پیکسل مجاور یکدیگر به‌عنوان دو پیکسل مرتبط است به همین دلیل برای پردازش پیکسل‏ های مجاور از یک سلول عصبی استفاده می‏شود. به بیان فنی‏تر، شبکه ‏ های عصبی پیچیده با فیلتر و تلفیق پیکسل‏ های مجاور در تصاویر، پردازش تصاویر از لحاظ حجم محاسباتی را تا حد زیادی کاهش می‏دهند.
    این در حالی است که در شبکه ‏ های عصبی معمولی برای پردازش هر پیکسل از یک سلول عصبی استفاده می‏شود که همین مساله یکی از دلایل اصلی افزایش تعداد نورون‏ های عصبی مورد نیاز برای پردازش تصویر خواهد بود. ناگفته نماند که افزایش تعداد نورون‏ های عصبی موجب افزایش بار محاسباتی و درنتیجه کاهش دقت در محاسبات خواهد شد. شبکه ‏ های عصبی پیچیده به جای اتصال هر ورودی به یک نورون، با محدود کردن روابط بین پیکسل‏ های تصاویر، هر نورون را مسوول پردازش یک دسته از پیکسل‏ ها می‏کند (3×3 یا 5×5 پیکسل برای هر نورون). به این ترتیب، هر نورون مسوولیت پردازش بخش کوچکی از تصویر را به عهده می‏گیرد. این ساختار کم و بیش به ساختار عصبی نورون‏ های مغز که در آن هر سلول عصبی مسوولیت پاسخگویی به بخش خاصی از بدن را به عهده می‏گیرند، شباهت‏ هایی دارد.

    ساختار درونی شبکه ‏ های عصبی
    فیلترینگ پیکسل‏ ها چگونه انجام می‏گیرد؟ راز انجام این کار در اضافه شدن دو لایه جدید به این شبکه عصبی است: لایه ‏ های درهم پیچیده و لایه ‏ های ادغام کننده. در پایین مراحل پردازش را به‏ طور کامل شرح داده‏ایم. این مراحل در اصل به یک شبکه عصبی طراحی شده برای تشخیص اینکه یک زن سالخورده در تصاویر وجود دارد یا خیر، مربوط می‏شود. قدم اول مربوط به لایه درهم پیچیده است که این قدم خود شامل چند مرحله مجزا می‏شود. ابتدا تصویر یک پیرزن را به یکسری قطعات 3×3 پیکسلی تبدیل می‏کنیم. در قدم بعدی هریک از این قطعات را برای پردازش به درون یک نورون عصبی تک لایه می‌فرستیم. سپس مقادیر خروجی را به شکلی که از لحاظ عددی محتوای قسمت خاصی از تصاویر را معرفی می‏کنند، دسته‏ بندی می‏کنیم. هر پیکسل وظیفه تعریف ارتفاع، طول و رنگ (سه بعد مختلف) را برعهده دارد. بنابراین در این مورد، هر قطعه تعریفی 3×3×3 خواهد داشت. در ضمن برای پردازش ویدئو ها، بُعد زمان نیز درنظر گرفته می‏شود.
    حال نوبت به لایه ادغام‌کننده می‏رسد که این دسته ‏ های سه‏ بعدی یا چ هار بعدی را دریافت کرده سپس آن ها را به دسته ‏ هایی با سایز و ابعاد کوچک‌تر تبدیل می‏کند. محصول به‏ دست آمده، دسته ‏ های ادغام شده‏ای هستند که تن ها شامل بخش‏ های با اهمیت می‏شوند و بخش‏ های مشابه به یکدیگر و کم‏اهمیت حذف شده‏اند. این مرحله موجب کاهش حجم محاسبات تا بیشترین حد ممکن خواهد شد. در مرحله پایانی، دسته ‏ های تغییر سایز یافته (کوچک شده) را به‌عنوان ورودی برای شبکه ‏ های عصبی استفاده می‏کنیم. از آنجایی که سایز داده ‏ های ورودی در مرحله اول و دوم تاحد قابل‌توجهی کاهش داده شد، شبکه ‏ های عصبی معمولی هم می‏توانند بدون هیچ دردسری این داده ‏ ها را پردازش کنند. خروجی‏ های به‏ دست آمده از این مرحله پایانی نشاندهنده مقدار کارآیی سیستم در تشخیص تصاویر فرد سالخورده داخل تصاویر خواهد بود.

    به‏ کارگیری شبکه ‏ های عصبی
    ساخت شبکه ‏ های عصبی پیچیده ممکن است زمان‏بر و بسیار پرهزینه باشد. ناگفته نماند که اخیرا رابط‏ های برنامه‏نویسی مختلفی برای سازمان‏ ها طراحی شده‏اند که به آن ها امکان پردازش و تشخیص چهره را بدون نیاز به سیستم بینایی کامپیوتر شخصی یا تخصص در بخش یادگیری ماشینی می‏دهد. در پایین مهم‏ترین برنامه ‏ های کاربردی در این بخش را برایتان نام برده‏ایم.
    Google Cloud Vision: این محصول شرکت گوگل که برپایه فریم‏ورک TensoFlow و رابط برنامه‏نویسی REST عمل می‏کند، قادر است اشیا و چهره افراد را تشخیص دهد. این رابط می‏تواند با استفاده از موتور جست‌وجوی تصویری گوگل، تصویر مشابه به یکدیگر در سراسر وب را جست‌وجو و پیدا کند.
    IBM Watson Visual Recognition: این برنامه که به‌عنوان بخشی از پروژه Watson Developer Cloud شناخته می‏شود، از امکانات پیش‏فرض خوب و کارآمدی برخوردار است. این برنامه نیز همچون رابط کاربری گوگل از سیستم OCR و تشخیص NSFW برخوردار است. Clarif.ai می‏گوید: این سرویس تازه‏ وارد به عرصه تشخیص تصاویر است که از رابط برنامه نویسی REST نیز پشتیبانی می‏کند. یکی از نکات جالب این برنامه، پشتیبانی از ماژول‏ های مختلفی است که می‏توانند در ساخت الگوریتم‏ هایی که قابلیت تشخیص شرایط مختلف از جمله جشن عروسی، مسافرت و غذا و رستوران را دارند، کمک کنند.
    با اینکه این رابط‏ های برنامه‏نویسی و طراحی برای کاربرد های عمومی مناسب هستند، اما برای انجام وظایف تخصصی احتمالا به تهیه تجهیزات و دستگاه ‏ های حرفه‏ای نیاز خواهد بود. خوشبختانه کتابخانه ‏ های الکترونیکی امروزی با ارائه دیتا ها به‏ صورت از پیش محاسبه و بهینه شده، کار را برای دانشمندان امروزی بسیار آسان کرده‏اند و متخصصان می‏توانند بدون نیاز به محاسبه و پردازش گام به گام داده ‏ ها، با خیال راحت روی آموزش مدل‏ ها تمرکز کنند. بسیاری از این مراکز از جمله TensorFlow، DeepLearning4J، Torch و Theano سال‌ ها است که با موفقیت و در زمینه ‏ های مختلف مورد استفاده قرار می‏گیرند.

    برچسب ها
    پورسعیدخلیلی
    مطالب مرتبط
    مطالب مرتبط بیشتر