بینایی کامپیوتر چیست و از چه برنامههایی استفاده میکند؟
شاید تا به حال عبارت بینایی کامپیوتری یا computer vision به گوشتان خورده باشد و این سوال برای شما پیش آمده باشد که این عبارت یعنی چه؟ آیا کامپیوتر میتواند ببیند؟ در ادامه با ما همراه باشید تا این مفهوم را درک کنید و ببینید که چگونه یک کامپیوتر میتواند ببیند. بینایی رایانه ای یکی از زیر شاخههای هوش مصنوعی میباشد که در حوزه علمی میان رشتهای جای میگیرد و هدف آن درک تصاویر یا فیلمهاست. در واقع میتوان گفت همانگونه که چشم انسان فقط تصاویر دنیای واقعی را دریافت میکند، این مغز است که که به درک این تصاویر کمک خواهد کرد.
دوربین تصویر برداری دیجیتال فقط ابزاری برای ذخیره سازی است و برای درک تصویر یا ویدیوی ذخیره شده به پردازشی نیاز دارد. به الگوریتمهایی که با این هدف توسعه داده میشوند الگوریتمهای Computer Vision گفته میشود. بینایی کامپیوتر تقریبا مانند بینایی انسان عمل میکند با این تفاوت که بینایی انسان از قابلیت طول عمر بافت برای نحوه تشخیص اشیاء از هم برخوردار است.
بینایی کامپیوتر چیست؟
در بینایی رایانهای یا Computer Vision شاخهای از علم هوش مصنوعی و یادگیری ماشین است که با استفاده از مدلهایی که دارد اطلاعات بصری را درک و دریافت میکند. اطلاعات بصری همان تصاویر و ویدئوهای موجود در دنیای واقعی هستند. در نهایت کامپیوتر باید بتواند سه کار را به درستی انجام دهد. اول اینکه به صورت خودکار اشیای حاظر در تصویر را شناسایی کرده و مکان آنها را مشخص کند. دوم اینکه اشیا دریافتی را دسته بندی کرده و روابط میان آنها را پیدا کند. سوم اینکه بتواند محتوای کلی تصاویر را استخراج کند. این بینایی ارتباط نزدیکی با هوش مصنوعی دارد، زیرا کامپیوتر باید آنچه را که میبیند تفسیر نموده و تجزیه و تحلیل مناسبی از آن تصویر یا ویدئو ارائه دهد یا بر اساس آن عمل کند.
بینایی کامپیوتری حوزهای از هوش مصنوعی (AI) است که رایانهها و سیستمها را قادر میسازد تا اطلاعات معنا داری را از تصاویر دیجیتال، ویدیوها و سایر ورودیهای بصری به دست آورند و بر اساس آن اطلاعات اقداماتی را انجام دهند. هوش مصنوعی رایانهها را قادر میسازد تا فکر کنند و بینایی باعث میشود تا کامپیوتر مشاهده کنند و بفهمند.
برای انجام این کارها، بینایی رایانه آموزشهای لازم را به ماشینها میدهد و این کار را در زمان بسیار کمتری به اتمام میرساند. ماشین این کار را با دوربینها، دادهها و الگوریتمها انجام میدهد. از آنجایی که یک سیستم آموزش دیده هزاران محصول یا فرآیند را در دقیقه تجزیه و تحلیل میکند. و متوجه عیوب یا مسائل نامحسوس میشود، میتواند به سرعت از تواناییهای انسانی پیشی بگیرد.
هدف بینایی کامپیوتر چیست؟
هدف از computer vision شناخت و درک محتوای موجود در تصاویر دیجیتال است. برای رسیدن به چنین هدفی باید روشهایی پیاده سازی شود که قابلیت سیستم بینایی انسان را داشته باشد. کامپیوتر برای درک محتوای موجود در تصاویر دیجیتال باید قادر به توصیف صحیح تصویر و استخراج اطلاعات از آن باشد. این اطلاعات شامل هر نوع موجودیت اطلاعاتی نظیر مدل سه بعدی، موقعیت دوربین، تشخیص و بازشناسی اشیا و دسته بندی و جستجوی محتویات تصویر باشد.
یکی از چالشهای بینایی کامپیوتری
سیستمهای بینایی رایانهای در حال حاضر در زمینه بومی سازی اشیا موجود در تصاویر عملکرد قابل قبولی دارند. اما در اصل، الگوریتمهای یادگیری عمیق که سیستمهای بینایی رایانهای بر اساس آنها کار میکنند مطابق با الگوهای پیکسلی میباشند. به عبارتی دیگر این الگوریتمها هنوز هیچ درکی از آنچه که در تصاویر میگذرد، ندارند. درک روابط بین اشیا به یک دانش عمیق و از پیش تعریف شده نیاز دارد. به عنوان مثال شبکههای اجتماعی هنوز نمیتوانند تفاوت تصویر یک فرد برهنه را با شیر دادن یک مادر تشخیص دهند و هر دو تصویر را به نوعی ممنوعه میدانند و از انتشار آن جلوگیری میکنند.
مغز انسان در مواجه شدن با پدیدههایی که قبلا آنها را ندیده است به دانش و اطلاعات خود در موارد مشابه رجوع میکند. در حالی که سیستمهای بینایی رایانه در مواجهه با یک شی جدید، باید کاملا آموزش دیده باشند. این سیستمها در برخورد با مواردی که قبلا آموزش و شناختی نسبت به آنها ندارند کاملا منحرف میشوند و نمیتوانند نتیجه مطلوبی ارائه دهند. در حال حاضر تنها راه حل این مشکل آموزش سیستمهای رایانهای با مثالهای بیشتر میباشد.
بینایی کامپیوتر چگونه کار میکند؟
قبل از اینکه کامپیوترها قابلیت تشخیص اشیا را داشته باشند باید با صدها و هزاران نمونه تصویر کار کنند و آموزش ببینند. این کار باعث میشود تا در صورت مواجه شدن با یک تصویر جدید آن را با هزاران نمونه دیگر مقایسه کرده تا با نزدیکترین نوع خود ارتباط برقرار کند. عبارت بینایی کامپیوتری همان طور که از نامش پیداست از دو واژه بینایی و کامپیوتر تشکیل شده است. این مفهوم برای یک ماشین دارای سخت افزار و نرم افزار عملیات درک بصری را انجام میدهد یا به عبارت سادهتر به او بینایی میبخشد. به همین ترتیب، ماشین قادر خواهد بود محیط اطراف خود را درک کند یا ببیند.
نرم افزارهای بینایی رایانهای
OpenCV
نرم افزار OpenCV یک ابزار بینایی رایانهای عالی است که با C++ و همچنین پایتون به خوبی کار میکند. OpenCV با تمام تکنیکها و الگوریتمهای لازم برای انجام چندین کار پردازش تصویر و فیلم ساخته شده است و استفاده از آن بسیار آسان میباشد. این ابزار محبوبترین کتابخانه بینایی کامپیوتر در حال حاضر است. نرم افزار OpenCV چند پلتفرمی است و به شما این امکان را میدهد تا برنامههایی برای لینوکس، ویندوز و اندروید بسازید. اما در عین حال اشکالاتی نیز دارد و هنگام کار با مجموعه دادههای عظیم یا تصاویر بسیار بزرگ کمی کند عمل میکند. علاوه بر این، این ابزار از GPU پشتیبانی نمیکند و برای پردازش GPU به CUDA متکی است.
MATLAB
ابزاری عالی برای ایجاد برنامههای پردازش تصویر است و در تحقیقات بسیار مورد استفاده قرار میگیرد. ابزار MATLAB امکان نمونه سازی سریع را فراهم میکند. جنبه جالب دیگر نرم افزار MATLAB این است که کد آن نسبت به ++C مختصر است و باعث میشود خواندن راحتتر شود. این برنامه قبل از اجرا با ارائه راهکارهایی با خطاها مقابله میکند. ابزار MATLAB در یک محیط تولید واقعی تولید نمیشود، زیرا در اصل برای نمونه سازی و تحقیق ساخته شده است.
TensorFlow
این نرم افزار به دلیل قدرت و سهولت استفاده طی چند سال اخیر محبوبیت زیادی کسب کرده است. TensorFlow این امکان را به شما میدهد تا قدرت یادگیری عمیق را به بینایی رایانه منتقل کنید. این ابزار دارای قابلیتهای عالی برای پردازش و طبقه بندی تصویر میباشد و در واقع یک تانسور گرافیکی مشابه API است. علاوه بر این، میتوانید از API Python برای انجام تشخیص چهره و گفتار استفاده کنید. شما همچنین میتوانید طبقه بندی را با استفاده از تکنیکهایی مانند رگرسیون انجام دهید. TensorFlow همچنین به شما امکان میدهد بینایی را با ابعاد فوق العادهای را انجام دهید. علاوه بر این، اگر میخواهید یاد بگیرید که چگونه میتوانید با TensorFlow پردازش تصویر را انجام دهید، باید مفهوم یادگیری عمیق را درک کنید، الگوریتمهای خود را بنویسید و اقدامات لازم را انجام دهید.
تفاوت بینایی ماشین یا بینایی کامپیوتر چیست؟
اگر چه در مفاهیم اولیه بینایی ماشین و بینایی رایانه ای شباهتهای بسیاری وجود دارد ولی تفاوتهای اساسی میان این دو حوزه مطرح است. دید رایانهای بیشتر بر تحلیل تصاویر، تجزیه و درک اشیا و استخراج دادههای جدید و سودمند تمرکز میکند، در حالی که بینایی ماشین از تکنیکهای سادهتر این تکنولوژی در کاربردهای صنعتی بهره میبرد.
از تفاوتهای قابل ذکر میان بینایی کامپیوتر و بینایی ماشین میتوان به الگوریتمی بودن روشهای Computer Vision در مقابل روشهای غیر الگوریتمی بینایی ماشین، پیچیدهتر بودن سیگنالهای خروجی دید رایانهای در قیاس با سیگنالهای خروجی بینایی ماشین، و در نهایت به مبتنی بودن بینایی ماشین بر استفاده از سخت افزارهای متعدد، اشاره کرد. همان طور که مشاهده کردید با وجود اینکه بینایی ماشین و بینایی کامپیوتر مفاهیم مشترکی با یکدیگر دارند اما محدوده فعالیت دید رایانهای بسیار گسترده از بینایی ماشین است و پردازش تصویر تمامی دستگاهها و اپلیکیشنها بر عهده آن میباشد.
کاربرد بینایی کامپیوتر در صنایع مختلف
در این حوزه پیشرفتهای بسیاری رخ داده است که ما در این مقاله به تعدادی از پیشرفتها اشاره نمودهایم.
- بازشناسی نوری کاراکترها
- بازرسی ماشینی
- ساخت مدلهای سه بعدی
- تصویر برداری پزشکی
- امنیت خودرو
- سیستمهای نظارتی
- بازشناسی اثر انگشت و بیومتریک
- واقعیت مجازی و واقعیت افزوده
- رباتهای صنعتی
- فروش خودکار محصولات در فروشگاههای بزرگ
نتیجه گیری
بینایی کامپیوتر به مجموعه اقداماتی گفته میشود که با هدف ایجاد قابلیت دیدن، درک و توصیف تصاویر دیجیتال برای کامپیوترها شکل گرفته است. محققان در تلاشند مفهوم دیدن را برای کامپیوترها تعریف کنند تا از این طریق بتوانند اطلاعات معنادار را از تصاویر دیجیتال استخراج کنند. تا کنون کاربردهای هیجان انگیزی از بینایی رایانهای توسعه داده شده است. البته با وجود تمام پیشرفتهای انجام شده باز هم رسیدن به یک سیستم Computer Vision با قابلیتهای مشابه سیستم بینایی انسان، راه درازی باقی مانده است.