بینایی کامپیوتر و تفاوت آن با بینایی ماشین
بینایی کامپیوتر به مجموعه اقداماتی گفته میشود که با هدف ایجاد قابلیت دیدن، درک و توصیف تصاویر دیجیتال برای کامپیوترها، شکل گرفته است. محققان فعال در این حوزه در تلاشند تا مفهوم دیدن را برای کامپیوترها تعریف کنند تا از این طریق بتوانند اطلاعات معنادار را از تصاویر دیجیتال استخراج کنند. به دلیل پیچیدگی و ذات تغییرپذیر جهان پیرامون ما و همچنین شناخت محدود دانشمندان نسبت به سیستم زیستی بینایی انسان، درک بصری و فهم محیط اطراف برای کامپیوترها همواره چالشبرانگیز بوده است.
بینایی کامپیوتر یک حوزه مطالعاتی چندرشتهای (multidisciplinary field) است که آن را میتوان زیرشاخهای از موضوعات هوشمصنوعی و یادگیری ماشین درنظر گرفت. برای فعالیت در این حوزه، باید تکنیکهای مختلف مربوط به طیف وسیعی از رشتههای مهندسی و علوم کامپیوتر مورد استفاده قرار گیرد. به عنوان مثال یک مسأله خاص ممکن با یک تحلیل آماری ساده حل شود ولی برای یک مسأله دیگر شاید نیاز به استفاده از الگوریتمهای پیچیده و فراگیر یادگیری ماشین باشد.
هدف بینایی کامپیوتر، شناخت و درک محتوای موجود در تصاویر دیجیتال است. برای رسیدن به چنین هدفی در بینایی کامپیوتر، باید روشهایی پیادهسازی شود که قابلیت سیستم بینایی انسان را داشته باشد. برای درک محتوای موجود در تصاویر دیجیتال، کامپیوتر باید قادر به توصیف صحیح تصویر و استخراج اطلاعات از آن باشد باشد. این اطلاعات میتواند شامل هر نوع موجودیت اطلاعاتی نظیر مدل سهبعدی، موقعیت دوربین، تشخیص و بازشناسی اشیاء و دستهبندی و جستجوی محتویات تصویر باشد.
اهمیت بینایی کامپیوتر
روزانه در سراسر جهان حجم زیادی محتوای تصویری تولید و جابهجا میشود. اکثر افراد گوشی همراه هوشمند مجهز به دوربین دارند و از طریق آن عکس و ویدئو میگیرند و آنها را در شبکههای اجتماعی مانند اینستاگرام و یوتیوب به اشتراک میگذارند.
محتوای موجود در اینترنت ترکیبی از متن و عکس است. موتورهای جستجو معمولا با پیدا کردن محتوای متنی مشکل چندانی ندارند اما به منظور شناسایی تصاویر نیازمند به الگوریتمی هستند که توانایی درک محتوای موجود در تصاویر و ویدئوها را داشته باشد. برای مدتهای طولانی، موتورهای جستجو از طریق توضیحاتی که کاربر هنگام آپلود تصویر در اینترنت برای آن مینوشت، اقدام به پیدا کردن تصاویر میکرد؛ اما امروزه به لطف فناوری بینایی کامپیوتر و پردازش تصویر، موتورهای جستجو قادر خواهند بود تصاویر را از طریق محتوای واقعی موجود در خودشان پیدا کنند.
برای این که کامپیوتر اطلاعات کافی از تصاویر استخراج کند، لازم است که توانایی دیدن و درک تصاویر را داشته باشد. این توانایی باید مشابه با ویژگیهایی باشد که انسانها از آن برخوردار هستند. سه ویژگی اصلی انسانها در فرآیند دیدن به شرح زیر است:
- یک شخص قادر است یک تصویر را ببیند و آن را توصیف کند.
- یک شخص قادر است یک ویدئو را ببیند و خلاصه آن را بیان کند.
- یک شخص قادر است صورت کسی را که فقط یک بار دیده است را شناسایی کند.
این سه مورد، اصلیترین ویژگیهایی هستند که در فرآیند بینایی کامپیوتر باید لحاظ شود.
تفاوت بینایی کامپیوتر و پردازش تصویر
بینایی کامپیوتر و پردازش تصویر دو مفهوم متفاوت هستند. پردازش تصویر فرآیند خلق یک تصویر جدید از تصویر موجود از طریق حذف برخی از جزئیات یا افزایش کیفیت آن است. این فرآیند نوعی از پردازش سیگنالهای دیجیتال است و ارتباطی با درک محتوای موجود در تصویر ندارد. بنابراین تمرکز پردازش تصویر صرفاً بر روی آمادهسازی یک تصویر خام برای یک هدف مشخص است. مثلا فشردهسازی عکس با حذف برخی از جزئیات، بهبود کیفیت عکس با تغییر در رنگ و روشنایی آن و برش عکس. تمرکز بینایی کامپیوتر بر روی استخراج اطلاعات مهم از عکس یا ویدئو از طریق درک آن همانند مغز انسان است. فرآیندی که در فناوری بینایی ماشین صورت میپذیرد به مراتب پیچیدهتر است.
بینایی ماشین (Machine Vision)
از طریق فناوری بینایی کامپیوتر میتوان قابلیت دیدن و تفسیر تصاویر را برای یک ماشین فراهم آورد. برای درک بهتر تفاوت این دو باید به کاربرد آنها توجه کرد. کاربرد بینایی ماشین بیشتر برای مصارف صنعتی است. به بیان دیگر، بینایی ماشین به معنای استفاده از تکنولوژیهای بینایی کامپیوتر برای حل مسالههای دنیای واقعی و در صنعت است. مثلا میتوان از این فناوری در کارخانهها برای مکانیزه ساختن خط تولید محصولات استفاده کرد.
درطی ۲۰ سال اخیر سیستمهای مبتنی بر بینایی ماشین رشد چشمگیری داشتهاند و به یکی از مهمترین بخشها در کارخانهها و مراکز صنعتی تبدیل شدهاند. از طریق فناوری بینایی ماشین میتوان بازدهی در مراکز صنعتی را بالا برد و بدون شک در سالهای آینده این فناوری جایگاه بالاتری از امروز کسب و خواهد کرد.
کاربردهای بینایی ماشین
همانطور که گفته شد، بینایی ماشین در حال تبدیل به یک تکنولوژی شناخته شده با هدف افزایش کارایی مراکز صنعتی و کارخانهها است. از طریق این سیستمها میتوان استفاده از نیروهای انسانی در بخشهای مختلف را به حداقل رساند و درنتیجه بسیاری از خطاهای انسانی قابل حذف است.
به دلیل کاهش خطاهای انسانی، سیستمهای مبتنی بر بینایی ماشین باعث بهبود کیفیت محصولات میشوند و میتوان با اطمینان زیادی تایید کرد که همه محصولاتی که به دست مشتریان میرسید دارای بالاترین میزان کیفیت هستند. این مساله به شدت بر روی کاهش هزینهها تاثیرگذار است.
کاربردهای بینایی ماشین را میتوان در حالت کلی به چهار بخش تقسیمبندی کرد:
۱. هدایت (Guidance)
هدایت اجزاء از طریق بینایی ماشین کاربردهای فراوانی در صنعت دارد. در بیشتر مواقع، این مورد شامل جایگذاری یک قطعه خاص و اطمینان از قرارگیری آن در مکان درست است. درصورت استفاده از بینایی ماشین میتوان این فرآیند را با کمترین میزان خطا انجام داد. علاوه بر این از تکنیکهای بینایی ماشین میتوان برای تعیین مکان و جهت یک قطعه خاص نیز استفاده کرد. این اطلاعات را سپس میتوان با هدف تولید به رباتها یا ماشینهای کنترلگر منتقل نمود.
قابلیت هدایت قطعات از طریق بینایی ماشین، نسبت به روشهای دستی توسط نیروهای انسانی دقیقتر و دارای بازدهی بالاتری است؛ به خصوص در مونتاژ قطعات در خطوط تولید.
۲. تشخیص (Identification)
تکنیکهای بینایی ماشین که در برنامههای شناسایی استفاده میشود بیشتر شامل خواندن بارکد و کدهای ماتریس داده برای شناسایی و دستهبندی محصولات مختلف است. این اقدام باعث به حداقل رسیدن خطاهای مرحله تولید و بستهبندی محصولات میشود. علاوه بر این، سرعت و دقت بستهبندی محصولات نیز افزایش چشمگیری پیدا میکند. با استفاده از فناوری بینایی ماشین بهرهوری در خط تولید محصولات را میتوان افزایش داد.
۳. اندازهگیری (Gauging)
یکی دیگر از مزایای استفاده از بینایی ماشین در فرآیند تولید محصولات، امکان اندازهگیری ابعاد است. معمولا در تولید محصولات صنعتی، ابعاد مقوله بسیار مهمی است؛ زیرا اگر این محصولات دارای ابعاد استانداردی نباشند برای مصارف عملی قابل استفاده نیستند. از طریق بینایی ماشین این مشکل با سرعت و دقت بالایی قابل حل است. در این کاربرد، یک دوربین ثابت در بالای خط تولید تعبیه میشود که میتواند دو یا چند نقطه بر روی محصولات را تشخیص دهد. درصورتی که فاصله بین این نقاط نسبت به اندازههای مجاز متفاوت باشد، محصول از خط تولید خارج میشود.
۴. بازرسی و عیبیابی (Inspection)
مشابه با اندازهگیری، قابلیت اندازهگیری بینایی ماشین عمدتاً جهت عیبیابی در فرآیند خط تولید استفاده میشود. برخلاف قابلیت اندازهگیری، بازرسی در بینایی ماشین انعطافپذیری بیشتری در تشخیص تعداد زیادی از اشیاء در صنایع مختلف دارد؛ شامل فاسد شدن محصولات در محصولات کشاورزی، نقص در محصولات نساجی و ... . بازرسی بینایی ماشین بسیار سریعتر و دقیقتر از فرآیند بازرسی دستی است.
تفاوت بینایی کامپیوتر و بینایی ماشین
بینایی کامپیوتر و بینایی ماشین هر دو تکنولوژیهای مبتنی بر پردازش تصویر هستند. این فناوریها با تحلیل تصاویر سعی میکنند با دقتی نزدیک به دقت چشم انسان، وظایف موردنظرشان را انجام دهند. از آنجایی که بینایی ماشین و بینایی کامپیوتر از جهات مختلف دارای وجه اشتراک فراوانی هستند، برای درک بهتر تفاوت این دو فناوری لازم است کاربردهای آنها را بیان کنیم.
معمولاً، مؤلفههای ابتدایی لازم برای توسعه سیستمهای بینایی کامپیوتر و بینایی ماشین مشابه یکدیگر هستند:
- یک دستگاه تصویربرداری یا دریافت تصویر (معمولا یک دوربین که از یک سنسور تصویر و یک لنز تشکیل شده است.)
- وجود شرایط نوری مناسب برای تعامل با محیط عملیاتی، دریافت تصویر از محیط، تحلیل تصاویر دریافت شده و تولید خروجیهای متناسب با تحلیل انجام شده
- یک سیستم کامپیوتری (البته در سیستمهای تصویربرداری امروز نظیر «دوربینهای هوشمند (Smart Cameras) به دلیل وجود پردازندههای اختصاصی، بسیاری از فرآیندهای پردازش و تحلیل تصویر درون دستگاه تصویربرداری انجام میشود.)
- برنامه پردازش تصویر (برنامه کاربردی کدنویسیشده در زبانهای برنامهنویسی نظیر پایتون، متلب و سایر موارد جهت پردازش و تحلیل تصاویر)
با توجه به این توضیحات، تفاوت اصلی بینایی کامپیوتر و بینایی ماشین در چیست؟ منظور از بینایی کامپیوتر خودکارسازی ثبت و پردازش تصویر با تمرکز بر روی تحلیل تصاویر است. به عبارت دیگر هدف بینایی کامپیوتر نه تنها دیدن است، بلکه پردازش و فراهمسازی نتایج مناسب مبتنی بر مشاهده تصاویر است. منظور از بینایی ماشین استفاده از تکنیکهای بینایی کامپیوتر در محیط صنعتی به منظور ارتقاء کیفیت و سرعت تولید محصولات است.
ابزار توسعه
یکی از معروفترین ابزارهای توسعه برنامههای بینایی کامپیوتر، بینایی ماشین و پردازش تصویر OpenCV است که در صوت علاقه میتوانید دورهی ویدیویی آموزشی OpenCV را مشاهده کنید.
نویسنده: بنیامین زارعی
منابع:
https://machinelearningmastery.com/what-is-computer-vision/
https://www.geeksforgeeks.org/difference-between-image-processing-and-computer-vision/
https://www.phase1vision.com/blog/4-principal-machine-vision-applications
مطلبی دیگر از این انتشارات
تستها، مسئول محافظت از اجرای نیازمندیهای اصلی نرمافزار
مطلبی دیگر از این انتشارات
رابط برنامه نویسی کاربردی یا API (Application Programming Interface)
مطلبی دیگر از این انتشارات
واحد پردازش گرافیکی - GPU