درک دنیای بصری برای انسانها آنقدر ساده است که تقریبا تمامی عکسالعملهای ما نسبت به محیط بصری اطراف بهصورت ناخودآگاه انجام میگیرد. وقتی چیزی را میبینیم، اغلب اوقات برای تشخیص آن نیازی به مطالعه (ذهنی) نداریم. اما این مساله در مورد کامپیوترها بسیار پیچیده است. تشخیص چهره انسان از دیگر اجسام و موجودات محیط، برای کامپیوترها یک مشکل بسیار بزرگ محسوب میشود.
علاوهبر این، حل این مساله نیز نیازمند تلاش و هزینه بسیار بالایی خواهد بود. امروزه تکنولوژی تشخیص چهره و بینایی کامپیوتر از اصلیترین نیازهای علم و صنعت بهشمار میآیند. پیشرفت بسیاری از تکنولوژیهای امروزی از جمله خودروهای بدون راننده، نرمافزارهای تشخیص چهره، کارخانههای هوشمند که بتوانند وجود خطا و ناهماهنگی در خط تولید را تشخیص دهند و نرمافزارهایی که به شرکتهای بیمه امکان پردازش و دستهبندی اتوماتیک اسناد را بدهند، همگی به پیشرفت سیستم تشخیص تصویر و بینایی کامپیوتر بستگی دارند.
تعلیم بینایی به کامپیوتر سخت و پرهزینه است
یکی از راههای موثر برای حل این مشکل بهکارگیری فرادادهها برای دیتاهای بدون ساختار است. شاید استخدام یک متخصص برای طبقهبندی و جداسازی آرشیو فیلمها از آرشیو موسیقی کمی سخت بهنظر برسد اما بهکارگیری همین افراد متخصص برای آموزش سیستم مسیریابی یک خودروی بدون راننده جهت تشخیص عابرین پیاده از دیگر خودروها یا شناسایی، دستهبندی و فیلترکردن تصاویر روزانه میلیونها کاربر شبکههای اجتماعی تقریبا غیرممکن است.
بنابراین اولین راهحل این مشکل استفاده از شبکه های عصبی است. با اینکه از لحاظ تئوریک استفاده از شبکه های نورونی مرسوم جهت تحلیل تصاویر ممکن است، اما از لحاظ عملی و محاسباتی بسیار پرهزینه خواهد بود. برای مثال تحلیل یک تصویر نسبتا کوچک (۵۰ × ۵۰ پیکسل) نیازمند ۹۰۰ داده ورودی و بیش از نیم میلیون پارامتر خواهد بود. شاید انجام این کار برای ماشینهای محاسباتی امکانپذیر باشد اما زمانی که بخواهیم تصاویر بزرگتر (۵۰۰ × ۵۰۰ پیکسل) را تحلیل و پردازش کنیم، تعداد ورودی و شبکه های نورونی مورد نیاز برای انجام این کار تقریبا غیرقابل شمارش خواهد بود.
چاره چیست؟
خوشبختانه با اعمال یکسری تغییرات در ساختار شبکه های عصبی، میتوان تصاویر بزرگتر را نیز پردازش کرد. این نوع شبکههای عصبی تغییر یافته را «شبکه های عصبی پیچیده» (CNNs) مینامند. یکی از مزایای شبکههای عصبی، کاربردپذیری آنها در مصارف مختلف است؛ اما پس از بهکارگیری آنها در پردازش تصاویر میبینیم که این مزیت به یک مشقت تبدیل میشود. اما با طراحی شبکههای عصبی مختص پردازش تصاویر، میتوانیم این ماموریت غیرممکن را تا حدی ممکن بسازیم.
یکی از مزیتهای شبکههای عصبی پیچیده، تشخیص دو پیکسل مجاور یکدیگر بهعنوان دو پیکسل مرتبط است به همین دلیل برای پردازش پیکسلهای مجاور از یک سلول عصبی استفاده میشود. به بیان فنیتر، شبکه های عصبی پیچیده با فیلتر و تلفیق پیکسلهای مجاور در تصاویر، پردازش تصاویر از لحاظ حجم محاسباتی را تا حد زیادی کاهش میدهند.
این در حالی است که در شبکههای عصبی معمولی برای پردازش هر پیکسل از یک سلول عصبی استفاده میشود که همین مساله یکی از دلایل اصلی افزایش تعداد نورونهای عصبی مورد نیاز برای پردازش تصویر خواهد بود. ناگفته نماند که افزایش تعداد نورونهای عصبی موجب افزایش بار محاسباتی و درنتیجه کاهش دقت در محاسبات خواهد شد.
شبکه های عصبی پیچیده به جای اتصال هر ورودی به یک نورون، با محدود کردن روابط بین پیکسلهای تصاویر، هر نورون را مسوول پردازش یک دسته از پیکسلها میکند (۳×۳ یا ۵×۵ پیکسل برای هر نورون). به این ترتیب، هر نورون مسوولیت پردازش بخش کوچکی از تصویر را به عهده میگیرد. این ساختار کم و بیش به ساختار عصبی نورونهای مغز که در آن هر سلول عصبی مسوولیت پاسخگویی به بخش خاصی از بدن را به عهده میگیرند، شباهتهایی دارد.
ساختار درونی شبکه های عصبی
فیلترینگ پیکسلها چگونه انجام میگیرد؟ راز انجام این کار در اضافه شدن دو لایه جدید به این شبکه عصبی است: لایههای درهم پیچیده و لایههای ادغام کننده. در پایین مراحل پردازش را بهطور کامل شرح دادهایم. این مراحل در اصل به یک شبکه عصبی طراحی شده برای تشخیص اینکه یک زن سالخورده در تصاویر وجود دارد یا خیر، مربوط میشود. قدم اول مربوط به لایه درهم پیچیده است که این قدم خود شامل چند مرحله مجزا میشود.
ابتدا تصویر یک پیرزن را به یکسری قطعات ۳×۳ پیکسلی تبدیل میکنیم. در قدم بعدی هریک از این قطعات را برای پردازش به درون یک نورون عصبی تک لایه میفرستیم. سپس مقادیر خروجی را به شکلی که از لحاظ عددی محتوای قسمت خاصی از تصاویر را معرفی میکنند، دستهبندی میکنیم. هر پیکسل وظیفه تعریف ارتفاع، طول و رنگ (سه بعد مختلف) را برعهده دارد. بنابراین در این مورد، هر قطعه تعریفی ۳×۳×۳ خواهد داشت. در ضمن برای پردازش ویدئوها، بُعد زمان نیز درنظر گرفته میشود.
حال نوبت به لایه ادغامکننده میرسد که این دستههای سهبعدی یا چهار بعدی را دریافت کرده سپس آنها را به دستههایی با سایز و ابعاد کوچکتر تبدیل میکند. محصول بهدست آمده، دستههای ادغام شدهای هستند که تنها شامل بخشهای با اهمیت میشوند و بخشهای مشابه به یکدیگر و کماهمیت حذف شدهاند. این مرحله موجب کاهش حجم محاسبات تا بیشترین حد ممکن خواهد شد.
در مرحله پایانی، دسته های تغییر سایز یافته (کوچک شده) را بهعنوان ورودی برای شبکه های عصبی استفاده میکنیم. از آنجایی که سایز دادههای ورودی در مرحله اول و دوم تاحد قابلتوجهی کاهش داده شد، شبکههای عصبی معمولی هم میتوانند بدون هیچ دردسری این دادهها را پردازش کنند. خروجیهای بهدست آمده از این مرحله پایانی نشاندهنده مقدار کارآیی سیستم در تشخیص تصاویر فرد سالخورده داخل تصاویر خواهد بود.
به کارگیری شبکه های عصبی
ساخت شبکه های عصبی پیچیده ممکن است زمانبر و بسیار پرهزینه باشد. ناگفته نماند که اخیرا رابطهای برنامه نویسی مختلفی برای سازمانها طراحی شدهاند که به آنها امکان پردازش و تشخیص چهره را بدون نیاز به سیستم بینایی کامپیوتر شخصی یا تخصص در بخش یادگیری ماشینی میدهد. در پایین مهمترین برنامههای کاربردی در این بخش را برایتان نام بردهایم.
Google Cloud Vision: این محصول شرکت گوگل که برپایه فریمورک TensoFlow و رابط برنامه نویسی REST عمل میکند، قادر است اشیا و چهره افراد را تشخیص دهد. این رابط میتواند با استفاده از موتور جستوجوی تصویری گوگل، تصویر مشابه به یکدیگر در سراسر وب را جستوجو و پیدا کند.
IBM Watson Visual Recognition: این برنامه که بهعنوان بخشی از پروژه Watson Developer Cloud شناخته میشود، از امکانات پیشفرض خوب و کارآمدی برخوردار است. این برنامه نیز همچون رابط کاربری گوگل از سیستم OCR و تشخیص NSFW برخوردار است. Clarif.ai میگوید: این سرویس تازه وارد به عرصه تشخیص تصاویر است که از رابط برنامه نویسی REST نیز پشتیبانی میکند. یکی از نکات جالب این برنامه، پشتیبانی از ماژولهای مختلفی است که میتوانند در ساخت الگوریتمهایی که قابلیت تشخیص شرایط مختلف از جمله جشن عروسی، مسافرت و غذا و رستوران را دارند، کمک کنند.
با اینکه این رابطهای برنامهنویسی و طراحی برای کاربردهای عمومی مناسب هستند، اما برای انجام وظایف تخصصی احتمالا به تهیه تجهیزات و دستگاههای حرفهای نیاز خواهد بود. خوشبختانه کتابخانههای الکترونیکی امروزی با ارائه دیتاها بهصورت از پیش محاسبه و بهینه شده، کار را برای دانشمندان امروزی بسیار آسان کردهاند و متخصصان میتوانند بدون نیاز به محاسبه و پردازش گام به گام دادهها، با خیال راحت روی آموزش مدلها تمرکز کنند. بسیاری از این مراکز از جمله TensorFlow، DeepLearning4J، Torch و Theano سالها است که با موفقیت و در زمینههای مختلف مورد استفاده قرار میگیرند.
- 17
- 3