کامپیوتر چطور چهرهها را تشخیص میدهد؟
عصر کالا- درک دنیای بصری برای انسان ها آنقدر ساده است که تقریبا تمامی عکس العمل های ما نسبت به محیط بصری اطراف به صورت ناخودآگاه انجام میگیرد.
عصر کالا- درک دنیای بصری برای انسان ها آنقدر ساده است که تقریبا تمامی عکس العمل های ما نسبت به محیط بصری اطراف به صورت ناخودآگاه انجام میگیرد.
به گزارش پایگاه خبری «عصر کالا» به نقل از اقتصاد آنلاین، وقتی چیزی را میبینیم، اغلب اوقات برای تشخیص آن نیازی به مطالعه (ذهنی) نداریم. اما این مساله در مورد کامپیوتر ها بسیار پیچیده است. تشخیص چهره انسان از دیگر اجسام و موجودات محیط، برای کامپیوتر ها یک مشکل بسیار بزرگ محسوب میشود. علاوهبر این، حل این مساله نیز نیازمند تلاش و هزینه بسیار بالایی خواهد بود. امروزه تکنولوژی تشخیص چهره و بینایی کامپیوتر از اصلیترین نیاز های علم و صنعت به شمار میآیند. پیشرفت بسیاری از تکنولوژی های امروزی از جمله خودرو های بدون راننده، نرمافزار های تشخیص چهره، کارخانه های هوشمند که بتوانند وجود خطا و ناهماهنگی در خط تولید را تشخیص دهند و نرمافزار هایی که به شرکت های بیمه امکان پردازش و دسته بندی اتوماتیک اسناد را بدهند، همگی به پیشرفت سیستم تشخیص تصویر و بینایی کامپیوتر بستگی دارند.
تعلیم بینایی به کامپیوتر سخت و پرهزینه است
یکی از راه های موثر برای حل این مشکل به کارگیری فراداده ها برای دیتا های بدون ساختار است. شاید استخدام یک متخصص برای طبقه بندی و جداسازی آرشیو فیلم ها از آرشیو موسیقی کمی سخت به نظر برسد اما به کارگیری همین افراد متخصص برای آموزش سیستم مسیریابی یک خودروی بدون راننده جهت تشخیص عابرین پیاده از دیگر خودرو ها یا شناسایی، دسته بندی و فیلترکردن تصاویر روزانه میلیون ها کاربر شبکه های اجتماعی تقریبا غیرممکن است. به گزارش دنیای اقتصاد، بنابراین اولین راهحل این مشکل استفاده از شبکه های عصبی است. با اینکه از لحاظ تئوریک استفاده از شبکه های نورونی مرسوم جهت تحلیل تصاویر ممکن است، اما از لحاظ عملی و محاسباتی بسیار پرهزینه خواهد بود. برای مثال تحلیل یک تصویر نسبتا کوچک (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 سال ها است که با موفقیت و در زمینه های مختلف مورد استفاده قرار میگیرند.