اصطلاح «بینایی کامپیوتر» (Computer Vision)، به حوزهای از مطالعات مرتبط با مبحث «هوش مصنوعی» (Artificial Intelligence) و «یادگیری ماشین» (Machine Learning) اطلاق میشود که با هدف ایجاد چارچوبهای لازم برای پیادهسازی قابلیت «بینایی» (Vision) در کامپیوترها و سیستمهای کامپیوتری شکل گرفته است. دانشمندان فعال در حوزه بینایی کامپیوتر، سعی در تولید تکنیکها و روشهایی دارند که مفهوم «دیدن» (Seeing) را برای یک کامپیوتر تعریف میکنند. از این طریق، کامپیوترها توانایی شناسایی و درک محتوای موجود در «تصاویر دیجیتال» (Digital Image) و ویدئوها را پیدا میکنند.
فهرست مطالب این نوشته
1. گرایش سیستمهای کامپیوتری به همانندسازی فرایند درک بصری
3. مفاهیم «دیدن»، «توصیف کردن» و «درک کردن» در حوزه بینایی کامپیوتر
3.1. مفهوم دیدن در بینایی کامپیوتر
3.2. مفهوم توصیف کردن در بینایی کامپیوتر
3.3. مفهوم درک کردن در بینایی کامپیوتر
4. بینایی کامپیوتر و پردازش تصویر
6. وظایف و کاربردهای حوزه بینایی کامپیوتر
اصطلاح بینایی کامپیوتر از دو مؤلفه «بینایی» و «کامپیوتر» تشکیل شده است. کامپیوتر، یک ماشین الکترونیکی است که قادر به انجام فرایندها، محاسبات و عملیات مختلف با توجه به دستعورالعملهای «نرمافزاری» (Software) و «سختافزاری» (Hardware) است. بینایی، یا به شکل دقیقتر «درک بصری» (Visual Perception) از طریق بینایی، به درک و فهم محیط اطراف، از طریق «آشکارسازی» (Illumination) اشیاء درون آن با استفاده از «طیف نوری مرئی» (Visible Light Spectrum) اطلاق میشود. بینایی کامپیوتر، که ترکیب این مؤلفهها محسوب میشود، سعی دارد روشها و سیستمهایی پدید آورد که با استفاده از آنها کامپیوتر بتواند محیط اطراف را درک و از این طریق، هدف نهایی خود را محقق کند.
در نگاه اول، مسأله بینایی کامپیوتر، مسأله سادهای به نظر میآید؛ زیرا، به راحتی توسط سیستم زیستی بینایی انسانها و دیگر موجودات زنده حل شده است. با این حال، به دلیل درک بسیار محدود انسانها از سیستم زیستی بینایی و پیچیدگی بیش از حد فرایند «درک بصری» در یک جهان فیزیکی پویا و مدام در حال تغییر، بینایی کامپیوتر هنوز به عنوان یک مسئله حل نشده در جامعه علمی باقی مانده است.
در این مطلب، هدف، ارائه مقدمه مختصری از حوزه بینایی کامپیوتر و مفاهیم موجود در آن است. مهمترین مفاهیمی که در این مطلب مورد بررسی قرار میگیرند، عبارتند از:
جهان پیرامون ما، غرق در تصاویر است. امروزه، تمامی تلفنهای همراه دوربین دارند. به اشتراکگذاری آسان تصاویر و ویدئوها، سبب ایجاد شبکههای اجتماعی نظیر اینستاگرام شده است. «یوتیوب» (Youtube) بزرگترین پلتفرم به اشترکگذاری ویدئو است. هر دقیقه، هزاران ساعت ویدئو در این پلتفرم به اشتراک گذاشته میشوند و کاربران، روزانه میلیاردها ساعت ویدئو در آن تماشا میکنند. بیشتر محتوای موجود در اینترنت را «متن» (Text) و «تصویر» (Image) تشکیل میدهد. «شاخصگذاری» (Indexing) و جستجوی محتوای متنی، پیچیدگی کمی دارد؛ با این حال، شاخصگذاری و جستجوی ویدئو نیازمند این است که الگوریتمهای بینایی کامپیوتر، محتویات آنها را بازشناسی کنند. پیش از این، محتویات تصاویر و ویدئوها برای کامپیوترها بسیار مبهم بود و تنها اطلاعات در دسترس از محتویات آنها، توصیفات ارائه شده توسط کاربر هنگام «بارگذاری» (Upload) آنها بود.
برای استفاده بیشینه از دادههای موجود در تصاویر، سیستمهای کامپیوتری نیاز است که بتوانند تصاویر را «ببینند»، توصیف کنند و محتوای موجود در آنها را درک کنند. به عنوان نمونه، انسانها (در سادهترین حالت، کودکان) قادرند:
برای رسید به هدف نهایی این حوزه، لازم است که سیستمهای بینایی کامپیوتر، چنین ویژگیهایی را شبیهسازی کنند.
بینایی کامپیوتر، حوزهای مطالعاتی است که هدف آن ایجاد چارچوبهای لازم برای پیادهسازی قابلیت بینایی در کامپیوتر و سیستمهای کامپیوتری است. در سطح انتزاع، هدف سیستمهای بینایی کامپیوتر، استفاده از دادههای تصاویر مشاهده شده برای استنتاج در رابطه با جهان پیرامون یا محیط عملیاتی است. بینایی کامپیوتر، یکی از زیرحوزههای «چند رشتهای» (Multidisciplinary) از هوش مصنوعی و یادگیری ماشین محسوب میشود که از روشهای خاص و الگوریتمهای عمومی یادگیری برای رسیدن به هدف خود استفاده میکند.
بینایی کامپیوتر به عنوان یک حوزه مطالعاتی چند رشتهای، بسیاری از روشها و تکنیکهای خود را از رشتههای مختلفی نظیر مهندسی کامپیوتر، علوم کامپیوتر، آمار و دیگر رشتههای مهندسی به قرض گرفته است. حوزه بینایی کامپیوتر، یکی از حوزههای «مرز دانش و روشنفکری» (Knowledge and Intellectual Frontier) محسوب میشود و به مانند بسیاری از این حوزهها، جذاب و نامنظم است. بعضی از ایدههای مفید در آن ممکن است جایگاه نظری نداشته باشند و برخی از نظریهها، در کاربرد بیفایده هستند. حوزههای توسعه یافته بینایی کامپیوتر بسیار پراکنده هستند و همبستگی معناداری میان آنها احساس نمیشود.
هدف بینایی کامپیوتر، شناخت و درک محتوای موجود در تصاویر دیجیتالی است. برای رسیدن به چنین هدفی در بینایی کامپیوتر، باید روشهایی برای «دوبارهسازی» (Reproduce) قابلیتهای سیستم بینایی انسان پیادهسازی شوند. شناخت و درک محتوای موجود در تصاویر دیجیتالی، ممکن است شامل استخراج متادیتای توصیف کننده از تصاویر باشد. این متادیتا میتواند یک شیء، یک توصیف متنی، یک مدل سهبعدی و سایر موارد باشد. به عبارت دیگر، بینایی کامپیوتر به فرایند استخراج خودکار اطلاعات از تصویر اطلاق میشوند. این اطلاعات میتواند شامل هر نوع موجودیت اطلاعاتی نظیر مدل سهبعدی، موقعیت دوربین، تشخیص و بازشناسی اشیاء و دستهبندی و جستجوی محتویات تصویر باشد.
درک بصری از طریق بینایی، یکی از پیچیدهترین فرایندهایی است که نه تنها درک و فهم آن برای انسانها بسیار سخت است، بلکه، بازسازی کامل آن توسط سیستمهای کامپیوتری، در حال حاضر غیر ممکن است. پیادهسازی یک سیستم کامپیوتری که بتواند مانند انسان ببیند و محیط اطراف خود را درک کند، فرآیند به شدت دشواری است.
به عنوان نمونه، فرض کنید که شخصی، توپی را به سمت شما پرتاب میکند و شما آن را دریافت میکنید. در چنین حالتی، تصویر توپ از چشم شما عبور میکند و به «شبکیه چشم» (Eye’s Retina) شما برخورد میکند. شبکیه، تحلیل ابتدایی بر روی این تصویر انجام میدهد و آن را به سمت «قشر بصری» (Visual Cortex) هدایت میکند. در این ناحیه، تصویر با دقت بیشتری تحلیل میشوند. سپس، تصویر توپ، با تمامی اشیاء شناخته شده توسط مغز انسان مقایسه، ابعاد و اشیاء موجود در آن دستهبندی و در نهایت، تصمیم برای انجام یک سری عملیات خاص اتخاذ میشود. پس از این فرایند، دست شما بلند شده و توپ را دریافت میکنید. چنین حجم عظیمی از فرایندهای پردازشی، تنها در کسری از ثانیه و به صورت کاملا «ناخودآگاه» (Unconscious) اتفاق میافتند. بنابراین، بازسازی درک بصری انسانی نه تنها سخت است، بلکه از مجموعهای از فرآیندها تشکیل شده است که همگی به هم وابسته هستند.
بازسازی مفهوم «چشم» (Eye) یا همان دیدن، یکی از حوزههایی است که بیشترین موفقیتهای علمی و تحقیقاتی در آن حاصل شده است. در طول چند دهه اخیر، «حسگرها» (Sensors) و «پردازندههای تصویری» (Image Processors) تولید شدهاند که نه تنها قابلیتهای آنها با قابلیتهای چشم انسان برابری میکنند، بلکه در برخی موارد از آن پیشی میگیرند. پیشرفتهای صورت گرفته در زمینه توسعه لنزها و «زیرپیکسلهای نیمههادی» (Semiconductor Subpixels) در مقیاس نانو سبب شده که دقت و حساسیت دوربینهای کنونی فوقالعاده باشد.
دوربینها میتوانند هزاران تصاویر را در ثانیه ضبط کنند و عمق و فاصله را با دقت باور نکردنی بسنجند. با این حال و با وجود تولید خروجیهای بسیار با کیفیت، این دستگاهها تفاوت چندانی با دوربینهای قرن 19 ندارند؛ زیرا، این دستگاهها تنها توزیع فوتونهای صادر شده از یک جهت خاص را ضبط میکنند. بهترین سنسورهای دوربین ساخته شده، حتی قادر به تشخیص یک توپ نیستند. به عبارت دیگر، قابلیتهای موجود در سختافزارهای کنونی بدون نرمافزار به شدت محدود هستند. مسألهای که برای همانندسازی سیستم بینایی انسان باید بر آن فائق آمد.
شاید این مطلب جای مناسبی برای بحث در رابطه با مفاهیم «نوروآناتومی» (Neuroanatomy) سیستم بینایی نباشد، اما ذکر این نکته بسیار مهم است که مغز انسان، از پایه، برای قابلیت بینایی شکل گرفته است. به عبارت دیگر، اکثر قابلیتهای مغز انسان، برای انجام فعالیتهای مربوط به سیستم بینایی انسان در نظر گرفته شدهاند. میلیاردها سلول عصبی موجود در مغز انسان، برای استخراج الگوها از سیگنالهای «نویزی» (Noisy) و نامنظم صادر شده از شبکیه چشم، در کنار یکدیگر به فعالیت میپردازند.
مجموعهای از نرونها، وقتی که «الگوی کنتراستی» (Contrast Pattern) دیده شده در راستای یک خط و یا یک حرکت سریع در یک جهت خاص را شناسایی کنند، یکدیگر را برانگیخته میکنند. شبکههای عصبی مرتبه بالاتر، الگوهای شناسایی شده را در قالب یک «فرا الگو» (Metapattern) نظیر دایره و یا جهت حرکتی تجمیع میکنند. شبکههای عصبی دیگر نیز فعال شده و تشخیص میدهند که مثلا دایره شناسایی شده سفید رنگ است و خطوط قرمز دارد. یک شبکه عصبی دیگر، افزایش سایز الگوی شناسایی شده در یک جهت خاص (حرکت اشیاء) را شناسایی میکند. در نتیجه چنین فعالیتهایی و شناسایی الگوهای خام ولی مکمل یکدیگر، یک تصویر خاص در مغز انسان و به طور خاص، سیستم بینایی انسان شکل میگیرد.
تحقیقات اولیه در حوزه بینایی کامپیوتر، منجر به ایجاد «رویکردهای بالا به پایین» (Top-Down Approaches) شد. چنین دیدگاهی در بینایی کامپیوتر، رویکردی متفاوت نسبت به فرایند درک بصری در سیستم بینایی انسان، برای شناسایی و توصیف اشیاء و فعالیتها اتخاذ میکند. چنین رویکردی، تنها در شرایطی که چند شیء در یک محیط کنترل شده قرار داشته باشند، خوب عمل میکند. در محیطهایی که اشیاء مختلف، با درجه روشنایی متفاوت و الگوهای حرکتی گوناگون، در اطراف سیستم بینایی کامپیوتر قرار گرفته باشند، چنین رویکردی به خوبی عمل نخواهد کرد. بدون شک، تشخیص اشیاء و الگوهای حرکتی در چنین محیطهایی، توسط سیستم بینایی کامپیوتر، به دادههای بسیار زیاد (بعضا، به دلیل حجم بالا پردازش این دادهها غیر ممکن است) نیاز دارد.
برای رفع نقیصههای ذکر شده، «رویکردهای پایین به بالا» (Bottom-Up Approaches) پدید آمدند. این دسته از رویکردها، فرایندهای سیستم بینایی انسان را به شکل بهتری «همانندسازی» (Mimic) میکنند. در روشهای پیادهسازی شده با رویکرد پایین به بالا، یک کامپیوتر میتواند مجموعهای از «تبدیلات» (Transformation) را روی تصاویر اعمال و از این طریق، «لبهها» (Edges)، اشیاء محصور در لبهها، چشمانداز و حرکت حاصل از چندین تصویر را شناسایی کند. از طریق چنین روشهایی، کامپیوترها قادر خواهند بود تا اشیاء و شکلهای موجود در تصاویر ورودی را، با اشیاء و تصاویری که بر اساس آنها آموزش دیدهاند، تطابق دهند و عناصر موجود در تصویر را تشخیص دهند. چنین کاری تا حدودی شبیه به نحوه عملکرد سیستم بینایی مغز انسان در هنگام تفسیر تصاویر است.
اشیاء نمایش داده شده با رنگ مشابه، با درجه اطمینان آماری خاصی، رفتار و ویژگیهای مشابهی از خود نشان میدهند. توسعه سیستمهای «یادگیری عمیق» (Deep Learning)مبتنی بر «شبکههای عصبی مصنوعی» (Artificial Neural Networks) و پیشرفت چشمگیر در حوزه «پردازش موازی» (Parallel Processing)، سبب افزایش حجم تحقیقات در حوزه سیستمهای بینایی کامپیوتر و «بازشناسی الگو» (Pattern Recognition) شده است.
در حال حاضر، سیستمهای بینایی کامپیوتر قادر به شناسایی انواع اشیاء، در جهتگیریهای (Orientation) مختلف و در شرایط متفاوت (ایستاده و در حال حرکت) هستند. تنها کافی است دادههای کافی برای آموزش در اختیار چنین سیستمهایی قرار بگیرند و مدلهای یادگیری قدرتمندی طراحی شوند. اما نکته جالب در این زمینه این است که محققان قادر هستند سیستمهای بینایی کامپیوتر پیچیدهای برای شناسایی انواع سیب (در حالتها و شکلهای مختلف) آموزش دهند؛ ولی این سیستمها قادر نخواهند بود تا مثلا پرتقال را شناسایی کنند. این سیستمها حتی قادر نخواهند بود اندازه سیب، خوردنی بودن آن (مصنوعی یا طبیعی) و یا موارد مصرف آن را برای کاربران توصیف کنند. به بیان سادهتر، مسأله اصلی در حوزه بینایی کامپیوتر این است که یک سختافزار و نرمافزار خوب و قوی، در غیاب «سیستم عامل» (Operating System)، قادر به ارائه عملکرد مناسب نخواهند بود.
سیستم عامل در سیستم بینایی انسان، حافظه بلند مدت و کوتاه مدت، ورودی و خروجی حسهای پنجگانه، «شناخت» (Cognition) و ارتباطات میان میلیاردها نرون به هم متصل را شامل میشود. این مفهوم (پیادهسازی سیستم عامل برای سیستم بینایی کامپیوتر)، نقطه تلاقی مرزهای «علوم کامپیوتر» (Computer Science) و «هوش مصنوعی عمومی یا قوی» (General or Strong Artificial Intelligence) در آینده خواهد بود. تاکنون، دانشمندان و مهندسان کامپیوتر، «روانشناسان» (Psychologists)، «دانشمندان علوم اعصاب» (Neuroscientists) و فلاسفه نتوانستهاند یک تعریف دست و پا شکسته از نحوه عملکرد مغز انسان ارائه دهند، چه برسد به شبیهسازی آن. با این حال، بینایی کامپیوتر یکی از شاخههای نوظهور در هوش مصنوعی است و در این مدت کم، تاثیرات مهمی در شیوه زندگی انسانها گذاشته است. امروزه، بینایی کامپیوتر در دوربینها (بازشناسی چهره و لبخند)، ماشینهای خودران (خواندن علائم ترافیکی و تشخیص عابران پیاده) و رباتهای کارخانهای (نظارات برای مشکلیابی و مسیریابی اطراف کارکنان انسانی) وجود دارد.
حوزه بینایی کامپیوتر، متمایز از حوزه پردازش تصویر است. پرداز تصویر، فرایند تولید تصاویر جدید از یک تصویر موجود است. در این فرایند، محتویات تصاویر به نحوی «سادهسازی» (Simplify) یا «تقویت» (Enhance) میشوند. پردازش تصویر، به نوعی «پردازش سیگنال دیجیتال» (Digital Signal Processing) محسوب میشود و با فرایندهای شناخت و درک محتوای تصاویر دیجیتال سروکار ندارد. با این حال، یک سیستم بینایی کامپیوتر، ممکن است برای انجام وظایف خود، برخی از روشهای پردازش تصویر را روی «ورودیهای خام» (Raw Inputs) اعمال کند. برخی از فرایندهای پردازش تصویر که در بینایی کامپیوتر کاربرد دارند، عبارتند از:
ایجاد چارچوبهای لازم برای تولید قابلیت بینایی در کامپیوترها و سیستمهای کامپیوتری، بسیار پیچیده و سخت است. هدف بینایی کامپیوتر، استخراج اطلاعات مفید از تصاویر است. به نظر میآید که چنین کاری برای سیستمهای کامپیوتری امروزی، بسیار چالش برانگیز باشد. در طول دهههای اخیر، برخی از روشنفکرترین و خلاقترین دانشمندان و محققان حوزه علوم کامپیوتر و هوش مصنوعی در این زمینه فعالیت کردهاند؛ با این حال، پیشرفت چشمگیری در راستای تولید یک سیستم بینایی کامپیوتر «همه منظوره» (General Purpose) حاصل نشده است. دلیل اصلی به نظر ساده آمدن سیستمهای بینایی کامپیوتر، سادگی بی حد و وصف فرایندهای مرتبط با بینایی برای سیستم عصبی مغز انسان است. با اینکه چندین دهه از آغاز فعالیتها در حوزه بینایی کامپیوتر میگذرد، اما بینایی کامپیوتر هنوز هم یک مسأله حل نشده در حوزه علوم کامپیوتر و هوش مصنوعی محسوب میشود.
دلیل دیگر عدم پیشرفت در حوزه بینایی کامپیوتر، نبود درک و فهم مناسب از نحوه عملکرد سیستم بینایی انسان است. مطالعه سیستم بینایی زیستی انسان، مستلزم برخورداری از دانش اولیه در مورد اندامهایی نظیر چشم و همچنین تفسیر و همانندسازی قابلیت ادراک در مغز انسان است. با اینکه تاکنون پیشرفتهای خوبی در زمینه شناسایی سازوکارهای بینایی در مغز انسان صورت گرفته است، اما جامعه علمی نتوانسته است به رؤیای تولید یک سیستم بینایی کامپیوتر، با قابلیتهایی مشابه سیستم بینایی انسان، جامه عمل بپوشاند. «روانشناسان ادراکی» (Perceptual Psychologists) دهههای زیادی را صرف مطالعه و درک نحوه عملکرد سیستم بینایی انسان کردند و علیرغم ابداع آزمایشات «توهمات نوری» (Optical Illusions) برای نمایش برخی از اصول اولیه نحوه عملکرد سیستم بینایی، هنوز در مسیر ابتدایی حوزه بینایی کامپیوتر قرار داریم.
دلیل دیگر چالش برانگیز بودن مسائل حوزه بینایی کامپیوتر، «پیچیدگی ذاتی» (Inherent Complexity) جهان بصری است. در واقعیت، اشیاء موجود در جهان پیرامون، در جهتهای مختلف، شرایط نوری متفاوت و موقعیتهای همپوشانی گوناگون با دیگر اشیاء، میتوانند توسط سیستم بینایی انسان قابل مشاهده باشند. بنابراین، یک سیستم بینایی باید قادر باشد در تمامی «صحنههای» (Scene) ممکن، اشیاء را ببیند، آنها را شناسایی و اطلاعات معنادار از آنها استخراج کند. در شرایط کنونی، کامپیوترها قادرند به خوبی «مسائل به شدت مقید» (Tightly Constrained Problems) را حل کنند، ولی در حل مسائل باز بیکران نظیر «درک بصری» (Visual Perception) عاجز هستند.
اگرچه روند پیشرفت تحقیقات در حوزه بینایی کامپیوتر ایدهآل نیست، اما در برخی از زمینهها به مرحله توسعه و کاربرد رسیده است. به عنوان نمونه، سیستمهای «بازشناسی نوری کاراکترها» (Optical Character Recognition) و «تشخیص چهره» (Face Detection) در دوربینها و تلفنهای هوشمند، از جمله کاربردهای موفق بینایی کامپیوتر در حال حاضر هستند. تحقیقات در حوزه بینایی کامپیوتر، از دهه 60 میلادی آغاز شده است. اما این حوزه، در طی یک دهه اخیر، پیشرفتهای خوبی در زمینه پیادهسازی سیستمهای کامپیوتری، بر پایه مفاهیم بینایی کامپیوتر به خود دیده است. برخی از مسائل سطح بالا در حوزه هوش مصنوعی که با کمک بینایی کامپیوتر، پیشرفتهای خوبی در زمینه حل آنها حاصل شده است، عبارتند از:
بینایی کامپیوتر، حوزه مطالعاتی بسیار وسیعی است. غالب سیستمهای بینایی کامپیوتر، برای حل مسائل در یک دامنه کاربردی خاص طراحی میشوند. با این حال، این امکان وجود دارد که با ایجاد تغییرات در سیستمهای پیادهسازی شده، آنها را با دامنه جدیدی از مسائل سازگار کرد. بینایی کامپیوتر برای دامنه وسیعی از کاربردها در حوزه علوم کامپیوتر و هوش مصنوعی قابل استفاده خواهند بود. این کاربردها، در دو دسته کاربردهای قدیمی مانند:
و کاربردهای نوین نظیر:
طبقهبندی میشوند. در ادامه، برای درک بهتر موضوع، برخی از کاربردهای سادهتر بینایی کامپیوتر که برای خوانندگان و علاقهمندان به این حوزه جذاب است، معرفی میشوند. محبوبترین کاربردهای بینایی کامپیوتر (جهت شناسایی و استخراج اطلاعات مفید و معنادار از تصاویر) عبارتند از:
کاربردهای دیگری نظیر پیدا کردن تصاویر مشابه یک تصویر دیگر و یا یافتن تصاویر حاوی یک شیء خاص، در حوزه بینایی کامپیوتر وجود دارند که به طور مستقیم به حوزه «بازیابی اطلاعات» (Information Retrieval) مرتبط هستند.
در این مطلب، مقدمهای بر حوزه بینایی کامپیوتر ارائه شد. با اینکه چیزی حدود شش دهه از پیدایش حوزه بینایی کامپیوتر میگذرد، اما عملا یک حوزه نوظهور در هوش مصنوعی محسوب میشود. هدف بینایی کامپیوتر، استفاده از دادههای تصویری مشاهده شده، برای استنتاج اطلاعات مفید در رابطه با جهان پیرامون است. مسائل موجود در این حوزه بسیار چالش برانگیز هستند. تاکنون کاربردهای ملموس و هیجانانگیزی از بینایی کامپیوتر توسعه داده شده است؛ با این حال، تا رسیدن به یک سیستم بینایی کامپیوتر با قابلیتهای مشابه سیستم بینایی انسان، راه درازی در پیش است.