بینایی کامپیوتری چیست ؟ همه چیز درباره Computer Vision
یکی از داغترین زمینههای علوم کامپیوتری مبحث بینایی کامپیوتری یا همان ” Computer vision ” میباشد. به بیان بسیار ساده، بینایی کامپیوتری که در پارهای از موارد به عنوان بینایی ماشین نیز شناخته میشود؛ به دنبال نزدیک کردن بینایی هوشمند به بینایی انسان میباشد. در زمینه تکنولوژی و هوش مصنوعی کمتر شاخهای را میتوان پیدا کرد که به اندازه این مقوله، ذهن دانشمندان حوزه کامپیوتر را به خود مشغول کرده باشد. امروز و در این مطلب سعی میکنیم بیان کنیم که بینایی کامپیوتری چیست و اهداف این شاخه از علم کامپیوتر شامل چه مواردی میشوند؛ تا پایان با ما همراه باشید.
قبل از هر چیزی و برای نزدیک شدن به این مفهوم در ظاهر پیچیده، بیایید با یک مثال شروع کنیم. خوب به عکس زیر دقت کنید؛ چه چیزهایی میبینید و چه برداشتهایی از دیدههای خود دارید؟ در نگاه اول شما مردم، اشیاء و ساختمانهایی را مشاهده میکنید. مغز شما از کجا متوجه این موضوع شد که در حال تماشای انسان، اشیاء و ساختمان است؟ کاملا درست حدس زدید: مغز دادههایی که از طریق چشم دریافت کرده است را با خاطرات و تجربیات مشابهی که در حافظه قرار دارند مقایسه کرده و به این نتیجه رسید که در حال مشاهدهی تعدادی از انسانها، اشیاء و ساختمانها است.
در نگاه بعدی، شما جمعیتی را دیدید که همگی به یک سمت نگاه میکنند و اکثریت آنها گوشی به دست مشغول فیلمبرداری هستند. در نتیجه بخش آنالیز مغز شما به این نتیجه رسید که این گردهمایی، احتمالا یک رویداد مهم مانند جشن، سخنرانی و یا مواردی مانند اینهاست. فردی در نزدیکی دوربین ایستاده و تیشرتی پوشیده که میتواند به ما کمک کند که بفهمیم این مردم برای چه رویدادی اینجا جمع شدهاند. به همین ترتیب هرچقدر شما در جزئیات این تصویر، به اصطلاح بیشتر ریز شوید؛ به دادههای بیشتری دست پیدا میکنید.
از نظر یک رایانه، این تصویر به مانند تمام تصاویر دیگر، یک آرایه از پیکسلها و مقادیر عددی است که سایههایی به رنگهای سبز، قرمز و آّبی ایجاد کرده است. در واقع یک رایانه هیچ درکی از مفاهیم نهفته در این عکس ندارد. از اوایل سال 1950 یک دغدغه جدید در نزد دانشمندان حوزهی کامپیوتر شکل گرفت: ساخت یک ماشین که بتواند مانند انسان با دیدن عکسهای مختلف، مفاهیم نهفته در آنها را استخراج و شناسایی کند. قطعا و بدون تردید در دهههای آینده ما پیشرفتهای چشمگیری در این زمینه داشتهایم و احتمالا با نرمافزارهایی برخورد خواهیم کرد که به راحتی مفاهیم یک عکس را استخراج مینمایند.
یک تاریخچه مختصر از بینایی کامپیوتری
در سال 1966 دو پیشگام عرصه هوش مصنوعی، آقایان “Seymour Papert ” و ” Marvin Minsky ” یک پروژه 2 ماهه را راه اندازی نمودند. این پروژه با هدف تشخیص اشیاء داخل یک عکس توسط کامپیوتر شروع شد. هدف پروژه این بود که در نهایت کامپیوتر، تشخیص دهد کدام پیکسل متعلق به کدام شی میباشد. ذهن انسان با بهرهگیری از دانش گستردهی ما از جهان و میلیاردها سال تکامل، به راحتی این مورد را تشخیص میدهد. اما برای کامپیوترهایی که سراسر جهان آنها را اعداد تشکیل میدهند، یک کار بسیار چالش برانگیز است.
در زمان اجرای این پروژه، برنامهنویسان به طور دستی قواعد تشخص اشیاء را تعیین میکردند. اما مسئله مهم این بود که اشیاء موجود در تصاویر، می توانند از زوایای متفاوت و در نورپردازیهای مختلف ظاهر شوند. ممکن است این جسم در برابر طیفهای مختلف از پس زمینههای متفاوت ظاهر و یا توسط اشیاء دیگر تا حدی مسدود شود. هر یک از این سناریوها مقادیر پیکسل متفاوتی تولید می کردند و ایجاد قوانین دستی برای هر یک از آنها، تقریباً غیرممکن بود.
ظبیعتا این پروژه تابستانی و دو ماهه تقریبا به هیچ نتیجهای نرسید و عملا شکست خورد. چند سال بعد و در سال 1979، یک دانشمند ژاپنی به اسم ” Kunihiko Fukushima ” یک سیستم بینایی رایانه ای را بر اساس تحقیقات علوم عصبی انجام شده بر روی بینایی انسان پیشنهاد داد.اگرچه این دانشمند نتوانست به یک نتیجه قبال قبول در زمینه وظایف پیچیدهی بصری برسد؛ اما زمینه یکی از بزرگترین پیشرفتهای بشر در زمینه بینایی رایانهای را فراهم کرد.
انقلابی به نام یادگیری عمیق
در دهه 80 میلادی، یک دانشمند فرانسوی به نام ” Yan LeCun ” شبکه عصبی کانونشنال ( CNN ) را با الهام از طرح نئوکینیترون، ارائه داد. نئوکینیترون همان طرحی بود که دانشمند ژاپنی یعنی آقای فوکوشیما، آن را بیان کرده و هیچوقت نتوانست آن را به نتیجه برساند. CNN شامل تعدادی نورون عصبی و البته اجزاء ریاضی بود که تا حد زیادی عملکرد همتایان بیولوژیکی خود را تقلید میکردند. وقتی CNN تصویر را پردازش میکند؛ هر یک از لایههای آن، ویژگیهای خاصی از پیکسلها را استخراج میکنند. لایه اول موارد بسیار اساسی مانند لبههای عمودی و افقی را تشخیص میدهد. با ورود به لایههای پایینتر این شبکه، ویژگیهای پیچیدهتری از جمله شکلها و گوشهها استخراج میشوند. لایههای نهایی CNN چیزهای خاصی مانند صورت ، درب و اتومبیل را تشخیص میدهد. لایه خروجی CNN، جدولی از مقادیر عددی را نشان میدهد که احتمال کشف یک شی خاص در تصویر را بیان میکند.
طرح CNN آقای ” Yan LeCun ” بسیار درخشان بود و نوید پیشرفتهای بزرگی را میداد. اما این طرح با یک مشکل جدی روبهرو شد: استفاده از دادههای به دست آمده، نیاز به منابع محسباتی پیچیدهی داشت که در آن زمان در دسترس نبودند. سرانجام CNNها در چند حوزه محدود، مانند بانکداری و خدمات پستی، مورد استفاده قرار گرفتند. در تیم مکانها از آنها برای پردازش ارقام و حروف دستنویس روی پاکتها و چک استفاده میشد. اما در زمینه کشف اشیاء که هدف اصلی طراحی آنها بود، مورد استفاده قرار نگرفتند و با مرور زمان جای خود را به الگوریتمهایی مانند: ” support vector machines ” و ” random forests ” دادند.
در سال 2012 محققان هوش مصنوعی در تورنتو، یک شبکه عصبی حلقوی به نام ” AlexNet ” را که بر پایه رقابت تشخیص چهره بنا شده بود را گسترش دادند. موفقیت این شبکه نشان داد که به توجه به دسترسی بیشتر به دادهها و همچنین گسترش منابع، شاید وقت آن رسیده است که دوباره ” CNN ” ها مورد بررسی قرار بگیرند. در واقع این رویداد انقلابی در زمینه یادگیری عمیق ایجاد کرد. ” deep learning ” یا همان یادگیری عمیق، یک شبکه یادگیری و تشخیص ماشینی میباشد که بر پایه شبکههای مصنوعی چند لایه بنا شده است. از سال 2012 و به لطف پیشرفت شبکههای عصبی حلقوی و همچنین فناوری ” deep learning “، بینایی رایانهای با پیشرفتهای چشمگیری مواجه شده است.
کاربرد بینایی رایانهای در نرم افزارها
بسیاری از نرمافزارهایی که به صورت روزانه با آنها سروکار دارید؛ از فناوری بینایی رایانهای استفاده میکنند. یکی از مهمترین کاربردهای این تکنولوژی را در موتور جستجوی گوگل شاهد هستیم. به طور مثال زمانی که شما برای کلمه ” سگ ” جستجو میکنید؛ گوگل با استفاده از بینایی رایانهای از کتابخانه خود تصاویر مربوط به این کلمه را به شما نشان خواهد داد. یکی دیگر از کابردهای بینایی رایانهای را میتوان در نرم افزار “ Adobe Lightroom CC ” مشاهده کرد. در این نرم افزار برای تقویت جزئیات تصاویر بزرگنمایی شده از بینایی رایانهای کمک گرفته میشود.
یکی از زمینههایی که به لطف بینایی رایانهای پیشرفت چشمگیری داشته است، حوزه تشخیص چهره میباشد. برای مثال شرکت اپل از الگوریتم تشخیص چهره برای باز کردن قفل گوشیهای خود استفاده میکند. در پستهایی که در فیسبوک منتشر میکنید، به کمک تشخیص چهره، افرادی که عکس آنها در آن پست به کار رفته است شناسایی میشوند. البته پیشرفتهای حوزه تشخیص چهره مسائلی مانند حفظ حریم شخصی و حقوق بشر را به خطر انداخته است. دلیل این اتفاق هم راحتتر شدن کنترل و نظارت بر مردم، توسط دولتها میباشد.
بینایی رایانهای در حوزه تعدیل و کاهش محتوا میباشد. برنامههایی مانند فیسبوک و اینستاگرام باید روزانه میلیاردها پست را بررسی کرده و از انتشار مطالبی که حاوی تصاویر مستهجن، نژادپرستانه و خشونت هستند؛ جلوگیری نمایند. اکثر شبکههای اجتماعی از فناوری ” deep learning ” برای تحلیل پستها و پرچمگذاری محتواهایی که حاوی موارد ممنوعه هستند استفاده میکنند. در سالهای آینده و پیشرفت هرچه بیشتر بینایی رایانهای، این تکنولوژی در زمینههای پزشکی نیز کاربرد خود را نشان خواهد داد. الگوریتمهای یادگیری عمیق در مقایسه با تصاویر پزشکی، از دقت بسیار بیشتری برخوردار هستند. بیمارستانها و دانشگاهها با بررسی اسکنهای X و اسکن MRI از بینایی رایانهای برای پیشبینی انواع مختلف سرطان استفاده میکنند.
محدودیتهای بینایی رایانهای
سیستمهای بینایی رایانهای در حال حاضر در زمینه دستهبندی و بومیسازی اشیاء موجود در تصاویر عملکرد قابل قبولی دارند. اما در اصل، الگوریتمهای یادگیری عمیق که سیستمهای بینایی رایانهای بر اساس آنها کار میکنند؛ مطابق با الگوهای پیکسلی هستند. به عبارتی دیگر این الگوریتمها هنوز هیچ درکی از آنچه که در تصاویر میگذرد ندارند. درک روابط بین اشیاء در تصاور، نیاز به یک دانش عمیق و از پیش تعریف شده دارد. به عنوان مثال شبکههای اجتماعی هنوز نمیتوانند تفاوت تصویر یک فرد برهنه را با شیر دادن یک مادر تشخیص دهند و هر دو تصویر را به نوعی ممنوعه میدانند و از انتشار آن جلوگیری میکنند.
مغز انسان در مواجه شدن با پدیدههایی که قبلا آنها را ندیده است؛ به دانش و اطلاعات خود در مورد موارد مشابه رجوع میکند. در حالی که سیستمهای بینایی رایانهای در مواجهه با یک شیء جدید، باید کاملا آموزش داده شود. این سیستمها در برخورد با مواردی که قبلا آموزش و شناختی نسبت آنها ندارند کاملا منحرف میشوند و نمیتوانند نتیجه مطلوبی ارائه دهند. در حال حاضر تنها راه حل این مشکل آموزش بیشتر سیستمهای رایانهای با مثالهای بیشتر و بیشتر میباشد.
خواندن مطالب زیر نیز توصیه میشود:
اجرای ویندوز ۱۰ از روی فلش مموری
تفاوت MBR و GPT ؛ کدام یک انتخاب بهتری است ؟