در متون مختلف، “بینایی کامپیوتر” اغلب به شکل مخفف (CV –Computer Vision) نام برده میشود. این زمینه مطالعاتی به دنبال توسعه تکنیکهایی است که به کامپیوترها کمک می کند؛ تصاویر دیجیتال مثل عکسها و ویدیوها را ببیند و بتواند درک درستی از محتوای آن داشته باشد.
وقتی به مسئله بینایی کامپیوتر نگاه می کنیم؛ معمولاَ ساده به نظر میرسد اما همچنان به دلیل درک محدود از ساز و کار فیزیولوژیکی بینایی و همچنین بخاطر پیچیدگی های بینایی در دنیای فیزیکی عمدتاَ بحثی چالش زا، گسترده و پویا بوده و تا حد زیادی حل نشده باقی مانده است.
در انتها شما مقدمهای برای آشنایی با حوزه بینایی کامپیوتر را مطالعه خواهید کرد و پس از آن شما این اطلاعات را بدست خواهید آورد:
- هدف حوزه بینایی کامپیوتر و تمایز آن با پردازش تصویر
- چه چیزی مسئله بینایی کامپیوتر را چالشبرانگیزتر میکند
- مشکلات و وظایفی که بینایی کامپیوتر به دنبال آن است
این آموزش به چهار بخش تقسیم شده است:
میل کامپیوترها برای دیدن #
امروزه ما لبریز از تصاویر شدهایم. گوشیهای هوشمند دارای دوربین هستند و عکس و ویدیو گرفتن و به اشتراک گذاشتن آن هیچوقت به این سادگی نبوده است. همین مسئله منجر به رشد باورنکردنی شبکههای اجتماعی مدرن همچون توییتر، اینستاگرام و … شده است.
هرروزه از موتور جستجوی یوتیوب استفاده می کنیم که در هر دقیقه صدها ساعت ویدیو در آن آپلود میشود و میلیاردها ویدیو روزانه تماشا میشود.
بخش بزرگی از فضای اینترنت شامل متن و تصاویر است. جستجوی متون در اینترنت به لطف موتورهای جستجو مانند گوگل عمدتاَ کار نسبتاً سادهای شده است. اما چالش اساسی موتورهای جستجو بزرگ و پرکاربرد، جستجوی تصاویر در فضای وب است.
برای داشتن عملکردی مناسب در الگوریتمهای جستجو تصاویر، لازم است این الگوریتمها درک محتوایی درستی از تصاویر موجود را داشته باشند. تا به حال محتوای عکسها و ویدیوهایی که در اینترنت آپلود می شدند؛ مبهم بوده و بهترین شیوه برای توضیح آنها، توصیفات افرادی که آن را آپلود کرده اند، بوده است.
برای استفاده بهینه از داده تصویری، ما نیاز داریم که کامپیوترها عکس را ببینند و محتوای آن را درک کنند. این کار برای انسان ها حتی یک کودک خردسال یک مسئله بدیهی و نسبتاَ ساده است.
- فرد میتواند محتوای عکسی را که روزی دیده است، توصیف کند
- فرد میتواند ویدیویی را که روزی دیده است، خلاصه کند
- فرد میتواند چهره فردی را که قبلاً یکبار دیده است، تشخیص دهد
ما نیازمند حداقل همین قابلیتها در کامپیوترها هستیم تا عکسها و ویدیوها برای آنها قابل درک باشد.
هدف بینایی کامپیوتر چیست؟ #
در مرحلهای انتزاعی، هدف بینایی کامپیوتر این است که از داده تصویری برای استنتاج کردن چیزی درباره جهان استفاده نماید.
بینایی کامپیوتر، حوزهای چندرشتهای را شامل میشود که به طور کلی زیرشاخهای از هوش مصنوعی و یادگیری ماشینی به حساب می آید که ممکن است از روشهای مختص خود و الگوریتمهای کلی یادگیری استفاده کند.
این حوزه به عنوان یک عرصه چندرشتهای، ممکن است کمی بینظم به نظر برسد چرا که از تکنیکهایی استفاده می کند؛ که در محدودههای ناهمگون مهندسی و علوم کامپیوتر مورد استفاده قرار میدهد.
برخی از مسائل و اطلاعات بینایی ممکن است با روشهای آماری دستی و ساده قابل حل باشد، درحالی که ممکن است برای حل مسائل دیگر، از الگوریتمهای پیچیده یادگیری ماشینی استفاده شود.
بینایی ماشین به عنوان یک رشته، خط مقدم علمی هیجانانگیز، شلوغ و نامرتب است و معمولاً متخصص قابل اتکایی برای آن وجود ندارد. بسیاری از ایدههای مفید هیچ پایه تئوریای ندارند و برخی ایدهها در عمل بیفایدهاند. بخشهای توسعه یافته آن به طور گستردهای دارای پراکندگی هستند و اغلب این بخش ها با یکدیگر، تعامل و ارتباط قابل توجهی ندارند.
هدف بینایی کامپیوتر درک محتوای دادههای بصری است که مشخصاً نیاز به توسعه الگوها و روشهایی برای بینایی و همچنین شبیهسازی بینایی انسانی دارد. درک محتوای دادههای تصویری شامل استخراج توصیفی میشود.
تصاویر میتواند شامل اطلاعات مختلفی باشند که در بینایی کامپیوتر این اطلاعات بهصورت خودکار استخراج میشوند. اطلاعات موجود در تصاویر میتواند بهصورت مدلهای سهبعدی، موقعیت دوربین، شناسایی و تشخیص اشیاء تا گروهبندی و جستجوی محتوای عکس باشد.
بینایی کامپیوتر و پردازش تصویر #
بینایی کامپیوتر با پردازش تصویر متفاوت است. پردازش تصویر، فرایند خلق تصویری جدید از یک تصویر موجود است که عموماً سادهسازی یا بهبود محتوا را شامل میشود و نوعی از پردازش سیگنال دیجیتال است و به درک محتوای تصویر ارتباطی ندارد.
سیستم بینایی کامپیوتر ممکن است برای بررسی تصاویر در ابتدا به الگوریتمهای پردازش تصویر نیاز داشته باشد و اعمالی را برای بهبود عملکرد خود بر روی تصاویر انجام دهد مانند:
- نرمالیزه کردن خصلتهای فتومتریک عکس مثل نور و رنگ.
- برش زدن کنارههای تصویر مثل در مرکز قرار دادن شیئی در عکس
- حذف کردن اختلالهای دیجیتال از عکس مثل اختلالات دیجیتال در سطوح کم نور
چالش بینایی کامپیوتر #
شاید به این دلیل، بینایی کامپیوتر ساده به نظر میرسید که انسانها بدون تلاش خاصی آن را انجام میدهند. علارغم تصور سادگی مسئله بینایی ماشین، اما ایجاد توانایی دیدن برای کامپیوترها کار بسیار سختی از آب درآمد و چالش بزرگی برای متخصصین حوزه هوش مصنوعی بود.
هدف بینایی کامپیوتر استخراج اطلاعات مفید از عکسها است که این هدف به طور غافلگیرکنندهای مشکل و دشوار بود. این هدف در چهار دهه گذشته ذهن هزاران نفر از مهندسین و متخصصین باهوش و خلاق این حوزه را به خود مشغول کرده است اما با این وجود انسان هنوز با ساختن ماشینی کارآمد با قابلیت دیدن و درک کردن تصاویر فاصله خیلی زیادی دارد.
دید کامپیوتری در ابتدا مسئله سادهای تصور میشد که توسط یک دانشجو با متصل کردن دوربین به کامپیوتر قابل حل به نظر میرسید. پس از دههها پژوهش، بینایی کامپیوتر، حداقل در مقام مقایسه با بینایی انسان، همچنان مسئله ای حل نشده باقی مانده است.
در دهه شصت میلادی توانایی دیدن یک کامپیوتر چیزی بود که متخصصین حوزه هوش مصنوعی انتظار داشتند در درجه سختیِ یک پروژه تابستانی دانشجویی باشد. اما بعد از چهل سال هنوز مسئله ای حل نشده است و دشوار به نظر میآید.
یکی از دلایل این موضوع این است که با وجود توسعه علوم پزشکی در حوزه بینایی و مغز و اعصاب، ما همچنان اطلاعات کافی از عملکرد و ساز و کار بینایی و تجزیه و تحلیل آن در مغز انسان نداریم و مثل هر پژوهش دیگری در زمینه مغز و اعصاب، راه طولانی برای فهم این موضوع وجود دارد.
روانشناسان ادراکی دههها تلاش کردند متوجه شوند که سیستم بصری چگونه کار میکند اما علارغم دستاوردهای قابل توجه خود، راه حل کامل این معما همچنان مبهم باقی مانده است.
دلیل دیگری که این موضوع را چالش برانگیزه تر کرده است؛ پیچیدگی ذاتی دنیای بصری است. یک شیء را تصور کنید. میتوان از هر جهتی، در هر شرایط نوری، با انواع همپوشانی از طرف اشیاء دیگر دیده شود. یک سیستم بینایی واقعی مثل چشم انسان باید بتواند در تعداد بیشماری از حالات ببیند و محتوایی معنادار را استخراج نماید.
این در شرایطی است که کامپیوترها در مسائل پیچیده اما محدودشده به خوبی عمل میکنند و در مسائل باز و بدون حدومرز مثل درک بینایی عمل کرد بهینه ای را به نمایش نمی گذارند که این بزرگترین چالش دید ماشینی به حساب می آید.
وظایف بینایی کامپیوتر #
با این حال، در این حوزه پیشرفتهایی رخ داده است، علی الخصوص در سالیان اخیر که با کمک سیستمهای تشخیص نوری در دوربین ها و گوشیهای هوشمند موبایل، تشخیص چهره توسط الگوریتمهای بینایی کامپیوتری پیشرفت های اساسی داشته است.
بینایی کامپیوتر در نقطه خارقالعادهای از روند توسعه خود قرار دارد. این حوزه از حدود دهه 1960 مطرح شده است اما اخیراً بواسطه توانایی مناسب سیستمهای کامپیوتری، ایده بینایی کامپیوتر داغ تر شده و زمینه توسعه و تحقیق آن فراهم شده است.
بینایی کامپیوتر دارای کاربردهای بسیاری است که مهمترین آن بینایی ماشین است. اغلب بینایی ماشین را با بینایی کامپیوتر اشتباه می گیرند. اما اگر دقیق تر صحبت کنیم متوجه می شویم بینایی ماشین به گونه ای زیر مجموعه بینایی کامپیوتر به حساب می آید.
دید ماشین در واقع همان دید کامپیوتر است که بواسطه عملکرد و کاربرد های متفاوتی که دارد در ماشین ها و دستگاههای مختلف بکار گرفته می شود. به لحاظ تکنیکی تفاوت زیادی بین این دو وجود ندارد. اما از نظر طراحی محصول نهایی و دستگاه مورد نظر و کاربرد آن می توان بینایی ماشین را به برخی از سامانه های ماشینی اطلاق کرد.
در بینایی ماشین سیستم طوری طراحی شده است که سنسور های مشخصی وظیفه تصویر برداری را به عهده دارند. این در حالی است که در سامانه های کامپیوتر ویژن سامانه می تواند فاقد سنسور جذب نور یا همان دوربین باشد.
کاربرد بینایی کامپیوتر #
در زیر به برخی از کاربرد های بینایی کامپیوتر اشاره شده است.
- تشخیص نوری کاراکتر (OCR) (optical character recognition)
- معاینه ماشینی
- فروش (مثل وارسی اتوماتیک)
- ساخت مدل سه بعدی (فوتوژئومتری)
- تصویربرداری پزشکی
- ایمنی اتوماتیک
- یکسانسازی حرکت (مثل ترکیب تصویرسازی کامپیوتری با بازیگران زنده در فیلمها)
- ضبط حرکت (mocap- motion capture)
- نظارت
- تشخیص اثر انگشت و روشهای امنیتی از ویژگیهای بدن (بیومتریک)
بینایی کامپیوتر کاربردهای بسیار گستردهای دارد، کاربردهای آن در سیستمهای قدیمی مثل جهتیابی روبات متحرک، عیب یابی صنعتی و اطلاعات نظامی مشهود است و همچنین در سامانه های جدید تر می توان به تعامل انسان و کامپیوتر، بازیابی عکس در کتابخانههای دیجیتال، تحلیل عکس پزشکی و رندر واقع گرایانه صحنههای مصنوعی در گرافیک کامپیوتر اشاره کرد.
با توجه به تعداد زیاد عکسها و ویدیوهای دیجیتال ، شاید بهتر است بر برخی از کاربردهای سادهتر بینایی کامپیوتر متمرکز شویم.
عمده ترین کارکرد بینایی کامپیوتری شامل تشخیص اشیاء در عکسها میشود؛ مثل:
- طبقهبندی اشیاء: چه گسترهای از اشیاء در این عکس وجود دارند؟
- شناسایی اشیاء: چه نوعی از یک شیء مورد نظر در این عکس وجود دارد؟
- تایید حضور اشیاء: آیا شیء در عکس حضور دارد؟
- تشخیص اشیاء: اشیاء در کجای عکس هستند؟
- تشخیص نقاط برجسته شیء: نقاط برجسته شیء در عکس کجاها هستند؟
- تقسیمبندی شیء: کدام پیکسلها در عکس متعلق به شیء هستند؟
کاربردهای معمول دیگری در ارتباط با بازیابی اطلاعات هستند که از جمله کارکردهای بینایی کامپیوترها است مانند پیدا کردن عکسی مشابه با یک عکس یا پیدا کردن عکسی که حاوی یک شیء خاص و مشخص باشد.