بینایی ماشین – از صفر تا صد

۷۲۷۱ بازدید
آخرین به‌روزرسانی: ۲۲ اسفند ۱۴۰۲
زمان مطالعه: ۴۰ دقیقه
دانلود PDF مقاله
بینایی ماشین – از صفر تا صدبینایی ماشین – از صفر تا صد

در این مطلب، با حوزه «بینایی ماشین» (Machine Vision) از منظر «علوم کامپیوتر» (Computer Science) آشنا خواهید شد. مطلب پیش رو را می‌توان به عنوان مقدمه‌ای جامع بر حوزه بینایی ماشین قلمداد کرد. علاوه بر این، جهت درک بهتر این حوزه و آشنایی بیشتر با جنبه‌های کاربردی آن، پیاده‌سازی‌های خاص انجام شده از سیستم‌های بینایی ماشین در این حوزه، برای خوانندگان و مخاطبان این مطلب نمایش داده خواهد شد.

997696

بینایی ماشین، یکی از حوزه‌های نوظهور، پیچیده و در حال توسعه (Developing) در علوم کامپیوتر و «هوش مصنوعی» (Artificial Intelligence) محسوب می‌شود. حوزه بینایی ماشین به سه زیر شاخه مهم تقسیم‌بندی می‌شود:

  • مطابقت دو سویی (Stereo Correspondence).
  • بازسازی صحنه (Scene Reconstruction)
  • بازشناسی یا تشخیص اشیاء (Object Recognition)

در این مطلب، «تکنیک‌ها» (Techniques) و رویکردهای عمومی مرتبط با هر کدام از این زیر شاخه‌ها مورد بحث و بررسی قرار می‌گیرند.

بینایی ماشین

مقدمه‌ای بر بینایی ماشین

تا چند دهه پیش بسیاری از مردم، حوزه بینایی ماشین را متناظر با داستان‌های «علمی-تخیلی» (Science Fiction) تصور می‌کردند. ولی در یک دهه گذشته، بینایی ماشین تبدیل به یکی از حوزه‌های تحقیقاتی بالغ در علوم کامپیوتر، هوش مصنوعی و زیر شاخه‌های مرتبط آن تبدیل شده است. تحقیقات بنیادی و اساسی که توسط محققان و دانشمندان پیشین در حوزه بینایی ماشین انجام شده است، بنیان مستحکمی را برای تحقیقات بدیع و مدرن در این زمینه فراهم آورده است.

در این مطلب، مرور جامعی بر رویکردهای پیشین و رویکردهای مدرن در حوزه بینایی ماشین ارائه خواهد شد. همچنین، ساختار مورد انتظار برای تحقیقات، جهت‌گیری‌های پژوهشی و تکنیک‌هایی که ممکن است در آینده، در این حوزه توسعه داده شوند، ارائه خواهد شد.

شاید سؤالی که برای بسیاری از خوانندگان و مخاطبان این مطلب پدید آمده باشد این است که چرا حوزه بینایی ماشین اهمیت دارد؟ دلیل اهمیت روز افزون حوزه تحقیقاتی بینایی ماشین برای دانشمندان و شرکت‌های صنعتی و تجاری چیست؟ بینایی ماشین از این جهت حائز اهمیت است که به برنامه‌های کامپیوتری اجازه می‌دهد تا وظایف و کاربردهای مختلف را به صورت «خودکار» (Automated) انجام دهند؛ وظایفی که پیش از این و برای انجام‌ آن‌ها، بهره‌گیری از فاکتور «نظارت انسانی» (Human Supervision) ضروری بود.

پیش از ادامه این مبحث لازم است یادآور شویم که می‌توانید بینایی ماشین را با استفاده از مجموعه آموزش بینایی ماشین فرادرس یاد بگیرید.

وظایفی نظیر «بازشناسی قطعات در خط تولید» (Assembly Line Part Recognition)، «بازشناسی چهره» (Face Recognition)، «وسایل نقلیه هوایی بدون سرنشین» (Unmanned Aerial Vehicles)، «بازسازی صحنه جرم» (Crime Scene Reconstruction) و حتی «وسایل نقلیه بدون سرنشین» (Unmanned Automobiles)، از جمله وظایف و کاربردهایی هستند که توسط سیستم‌های بینایی ماشین و تکنیک‌های توسعه داده شده در این حوزه کاربردی، قابلیت خودکارسازی دارند.

هدف کنونی سیستم‌های بینایی ماشین، پیاده‌سازی یک «چارچوب کلی» (Generic Framework) برای حل بسیاری از مسائل باز (و پیش از این حل نشده) در این حوزه و در نهایت، ایجاد یک سیستم عملیاتی و کاربردی در حوزه هوش مصنوعی و «روباتیکز» (Robotics) است.

تاکنون رویکردهای مختلفی برای حل مسائل موجود در زیر مجموعه‌های مختلف حوزه بینایی ماشین و جهت رسیدن به هدف نهایی آن (پیاده‌سازی یک سیستم بینایی ماشین عملیاتی و کاربردی در حوزه هوش مصنوعی و روباتیکز) ارائه شده است. با این حال، یکی از نقیصه‌های اصلی در پیاده‌سازی سیستم‌های مرتبط با بینایی ماشین، عدم وجود یک فرایند جامع و عمومی برای تولید مؤلفه‌های مدل‌‌سازی سه‌بُعدی‎، «تشخیص یا بازشناسی اشیاء» (Object Recognition) و سایر موارد است. در حال حاضر، بینایی در سیستم‌های بینایی ماشین به دو دسته زیر طبقه‌بندی می‌شوند:

  • «بینایی فعال» (Active Vision)
  • «بینایی غیر فعال یا منفعل» (Passive Vision)

در بینایی فعال، سیستم بینایی ماشین به طور مستقیم با محیط ارتباط برقرار می‌کند و به دریافت اطلاعات از محیط مبادرت می‌ورزد. تکنیک‌های نظیر RADAR ،LIDAR ،SONAR و سایر موارد، سیگنال‌هایی نظیر «صوت» (Audio)، «نور» (Light) یا «موج‌های رادیویی» (Radio Waves) را از خود ساطع می‌کند و سپس از طریق گوش دادن به سیگنال منعکس شده، سعی می‌کنند تا یک تصویر خاص را دریافت و مدل‌سازی کنند.

در این مطلب، روی تکنیک‌های بینایی غیر فعال یا بینایی منفعل تمرکز می‌شود؛ به عنوان نمونه، جمع‌آوری نور از محیط عملیاتی (همانند فرایندی که در سیستم بینایی انسان انجام می‌شود). این دسته از تکنیک‌های بینایی ماشین از آن جهت حائز اهمیت هستند که به صورت «مخفیانه» (Stealthy) عمل می‌کنند و محیط را با انتشار صدا، نور و یا موج ناهنجار مختل نمی‌کنند. علاوه بر این، پیاده‌سازی سخت‌افزار موردنیاز برای راه‌اندازی این دسته از سیستم‌های بینایی ماشین به مراتب ارزان‌تر از سیستم‌های بینایی فعال است.

بنابراین می‌توان گفت که یکی از اهداف اصلی سیستم‌های بینایی ماشین، پیاده‌سازی سیستم‌های خودکار «بازسازی صحنه» (Scene Reconstruction) و «بازشناسی اشیاء» (Object Recognition) است (خودکارسازی وظایف). در نتیجه، تحقیقات موجود در حوزه بینایی ماشین را می‌توان به سه دسته مطابقت دو سویی (Stereo Correspondence)، بازسازی صحنه و بازشناسی اشیاء تقسیم‌بندی کرد. برای آشنایی بهتر خوانندگان و مخاطبان این مطلب با مؤلفه‌های سیستم‌های بینایی ماشین، این مطلب به بخش‌های مختلفی تقسیم‌بندی می‌شود تا هر کدام از سه زیر شاخه تحقیقاتی ذکر شده مورد بررسی قرار بگیرند و در نهایت، جهت‌دهی تحقیقاتی آینده در حوزه بینایی ماشین مشخص شود.

بینایی ماشین

تفاوت بینایی ماشین و بینایی کامپیوتر

بسیاری از افراد گمان می‌کنند که بینایی ماشین و «بینایی کامپیوتر» (Computer Vision) دو اصطلاح معادل یکدیگر هستند. در حالی که بینایی ماشین و بینایی کامپیوتر اصطلاحات متفاوتی هستند که برای توصیف فناوری‌های هم‌پوشان مورد استفاده قرار می‌گیرند.

به صورت کلی، بینایی کامپیوتر به فرایند خودکارسازی «دریافت» (Capture) و «تحلیل تصاویر» (Image Analysis) گفته می‌شود. در دامنه وسیع کاربردهای عملی و تئوری حوزه بینایی کامپیوتر، تأکید سیستم‌های بینایی کامپیوتر بیشتر روی قابلیت‌های تحلیل تصاویر، استخراج اطلاعات مفید از آن‌ها و درک و فهم اشیاء یا موجودیت‌های موجود در آن‌ها است.

در نقطه مقابل، بینایی ماشین اصطلاحی است که برای توصیف سیستم‌هایی به کار گرفته می‌شود که از تکنیک‌های بینایی کامپیوتر در کاربردهای صنعتی و عملی استفاده می‌کنند. همچنین، در صورتی که از تکنیک‌های بینایی کامپیوتر در سیستم‌ها یا فرایندهایی استفاده شود که جهت تضمین عملکرد بهینه آن‌ها، اجرای یک تابع تحلیل تصویر یا دست‌یابی به یک خروجی خاص (مبتنی بر تحلیل تصویر) ضروری باشد، عملا یک سیستم بینایی ماشین پیاده‌سازی شده است.

معمولا، مؤلفه‌های ابتدایی لازم برای توسعه سیستم‌های بینایی کامپیوتر و بینایی ماشین مشابه یکدیگر هستند:

  • یک دستگاه تصویربرداری یا دریافت تصویر (معمولا یک دوربین که از یک سنسور تصویر و یک لنز تشکیل شده است)
  • وجود شرایط نوری مناسب برای تعامل با محیط عملیاتی، دریافت تصویر از محیط، تحلیل تصاویر دریافت شده و تولید خروجی‌های متناسب با تحلیل انجام شده
  • یک سیستم کامپیوتری (البته در سیستم‌های تصویربرداری امروز نظیر «دوربین‌های هوشمند» (Smart Cameras)، به دلیل وجود پردازنده‌های اختصاصی، بسیاری از فرایندهای پردازش و تحلیل تصویر درون دستگاه تصویربرداری انجام می‌شود)
  • برنامه پردازش تصویر (برنامه کاربردی کد نویسی شده در زبان‌های برنامه‌نویسی نظیر پایتون، متلب و سایر موارد جهت پردازش و تحلیل تصاویر)

در طی چند سال اخیر، مرز میان سیستم‌های بینایی کامپیوتر و بینایی ماشین باریک شده است و در حال از بین رفتن است. با این حال، امروزه از اصطلاح بینایی ماشین، علاوه بر اینکه در محیط‌های صنعتی استفاده می‌شود، در محیط‌های غیر صنعتی نظیر «نظارت پیشرفته و دست بالا» (High-end Surveillance)، «بیوپزشکی» (Biomedical) و یا کاربردهای «علوم حیاتی» (Life Science) نیز مورد استفاده قرار می‌گیرد. همچنین، برای توصیف تکنیک‌هایی که با هدف بهبود قابلیت‌های «موتورهای جستجو» (Search Engines) و ارائه سرویس‌های «بازشناسی مبتنی بر تصویر» (Image-based Recognition) در جستجو ارائه شده‌اند، از اصطلاح بینایی ماشین استفاده می‌شود.

بینایی ماشین

مطابقت دو سویی (Stereo Correspondence) در بینایی ماشین

در فرایند مطابقت دو سویی، ورودی (تصویر دیجیتال یا فریم‌های ویدئویی) از دو دوربین دریافت می‌شود و «ویژگی‌های مشترک» (Shared Features) میان آن‌ها شناسایی می‌شود. خروجی فرایند مطابقت دو سویی (Stereo Correspondence)، یک «نقشه ناهمخوانی» (Disparity Map) از تصویر است. نقشه ناهمخوانی، با نام‌های دیگری نظیر نقشه نابرابری یا نقشه تمایز نیز شناخته می‌شود. نقشه ناهمخوانی یک تصویر، در اصل، یک «نقشه عمق معکوس» (Inverse Depth Map) از آن تصویر به حساب می‌آید که فاصله (دور بودن) هر کدام از پیکسل‌های موجود در تصویر، از «صفحه دوربین‌ها» (Plane of Cameras) را نشان می‌دهد.

برای این که محاسبات سیستم‌های بینایی ماشین و عملکرد آن‌ها به شکل بهینه‌ای انجام شود، دوربین‌ها باید فاصله ثابتی با یکدیگر داشته باشند و جهت آن‌ها نسبت به یکدیگر مشخص باشد. محققان معمولا با انجام آزمایشات «کالیبره کردن» (Calibration)، فاصله و زاویه دوربین‌ها از یکدیگر را به طور خودکار مشخص می‌کنند. ورودی فرایند مطابقت دو سویی، معمولا داده‌های خام دریافت شده توسط دوربین‌ها است که باید فرایندهای پردازشی خاصی به نام «اصلاح تصویر» (Image Rectification) روی آن‌ها انجام شود.

اصلاح تصویر فرایندی است که در آن یک تصویر ورودی، روی یک «سطح معمولی» (Common Surface) «نگاشت» (Map) یا «تبدیل» (Transform) می‌شود تا تصاویری که شکل طبیعی خود را از دست داده‌اند، «نرمال‌سازی» (Normalize) شوند. چنین امری بیشتر در مورد تصاویری که توسط «دوربین‌های چشم ماهی» (Fish-Eye Cameras) ضبط شده‌اند و یا تصاویری که توسط دوربین‌های با ارتفاع نابرابر گرفته شده‌اند، صدق می‌کند. نتیجه خروجی فرایند اصلاح تصویر، یک تصویر نرمال‌سازی شده از هر دوربین است. پس از اتمام فرایندهای پردازشی اصلاح تصویر، تصاویر حاصل شده را می‌توان به عنوان ورودی، به یک الگوریتم مطابقت دو سویی (Stereo Correspondence) داد تا اشتراکات موجود میان آن‌ها شناسایی شود.

فرایند مطابقت دو سویی معمولا روی تصاویر گرفته شده از دو دوربین انجام می‌شود، ولی برخی از محققان از چندین (حتی ده‌ها) دوربین جهت بهبود کیفیت خروجی استفاده می‌کنند. استفاده از تعداد دوربین بیشتر، دقت خروجی‌های نهایی را بهبود می‌بخشد ولی مدت زمان بیشتری برای انجام فرایند مطابقت دو سویی صرف خواهد شد.

برای مشخص‌تر شدن این مطلب، یک حادثه رانندگی را در نظر بگیرید. استفاده از تصاویر گرفته شده توسط تنها دو دوربین، مانند این است که دو عابر پیاده نحوه رخ دادن تصادف را توصیف کنند. در چنین حالتی، دو عابر پیاده نحوه رخ دادن تصادف را به سرعت شرح خواهند داد و به همان سرعت، روی جزئیات حادثه به توافق می‌رسند. حال فرض کنید که از پنجاه شاهد خواسته شود تا نحوه وقوع حادثه رانندگی را شرح دهند. اگرچه این پنجاه شاهد زمان زیادی لازم دارند تا در مورد جزئیات حادثه رانندگی به توافق برسند، ولی جزئیات حاصل از شهادت این پنجاه نفر به مراتب دقیق‌تر خواهد بود.

در کاربردهای جهان واقعی و با در نظر گرفتن جنبه‌های اقتصادی موضوع، پیشنهاد می‌شود که به جای استفاده از دو دوربین پیشرفته و گران (جهت ثبت تصاویر)، از 6 دوربین با کارایی مناسب (و قیمت معقول) استفاده شود.

در ادامه، گام‌های لازم برای انجام فرایند مطابقت دو سویی نمایش داده شده است:

  • مرحله «تطبیق» (Matching):
    • روش مجموع مربعات فاصله‌ها (Sum of Squared Distances | SSD)
    • روش مجموع فاصله‌های مطلق (Sum of Absolute Distance | SAD)
    • روش «همبستگی متقابل نرمال شده» (Normalized Cross Correlation | NCC)
  • مرحله «تجمیع» (Aggregation):
    • روش «پنجره قابل انتقال» (Shiftable Window)
    • روش «پنجره تطابقی» (Adaptive Window)
  • مرحله «بهینه‌سازی» (Optimization):
    • رویکرد «همه برای برنده» (Winner-Take-All)
    • رویکرد «برنامه‌نویسی پویا» (Dynamic Programming)
    • رویکرد «شبیه‌سازی تبرید» (Simulated Annealing)
    • رویکرد «برش‌های گرافی» (Graph Cuts)
    • رویکرد بهینه‌سازی Scanline
  • مرحله «اصلاح یا پالایش» (Refinement):

بنابراین، الگوریتم‌های مطابقت دو سویی مرسوم را می‌توان بر اساس پیاده‌سازی آن‌ها، نوع الگوریتم‌های استفاده شده در هر مرحله و فاکتورهایی نظیر «هزینه تطبیق» (Matching Cost)، «هزینه تجمیع نواحی پشتیبانی محلی» (Local Support Region Cost Aggregation)، «بهینه‌سازی ناهمخوانی» (Disparity Optimization) و «اصلاح یا پالایش» (Refinement) دسته‌‎بندی کرد:

  • هزینه تطبیق (Matching Cost): الگوریتمی که برای تخمین زدن شباهت میان «مقادیر شدت» (Intensity Values) در یک مجموعه از تصاویر مورد استفاده قرار می‌گیرد.
  • هزینه تجمیع نواحی پشتیبانی محلی (Local Support Cost Aggregation): روشی است که از آن برای تولید تخمین‌های متناسب با هزینه تطبیق، در نواحی پشتیبانی محلی، استفاده می‌شود.
  • بهینه‌سازی ناهمخوانی (بهینه‌سازی نابرابری یا بهینه‌سازی تمایز): به فرایند مشخص کردن ناهمخوانی (عمق) در یک پیکسل داده شده اطلاق می‌شود.
  • اصلاح یا پالایش (Refinement): به فرایند استفاده از تکنیک‌های شایع جهت «هموارسازی» (Smoothing) ناهمخوانی‌های موجود در تصویر اطلاق می‌شود.

مرحله تطبیق (Matching) و تجمیع (Aggregation) در مطابقت دو سویی

در یک دسته‌بندی کلی، روش‌های مطابقت دو سویی را می‌توان به روش‌های «مطابقت مبتنی بر ویژگی» (Feature-based Matching) و «مطابقت مبتنی بر شدت» (Intensity-based Matching) تقسیم‌بندی کرد. در روش‌های مطابقت مبتنی بر ویژگی، سعی بر این است تا «لبه‌ها» (Edges) یا «گوشه‌های» (Corners) موجود، میان تصاویر مطابقت داده شوند. با این حال، عملکرد بهینه این روش‌ها، وابسته به اعمال تکنیک‌های «پیش پردازشی» (Preprocessing) و «پس پردازشی» (Post Processing) گسترده روی تصاویر است؛ روش‌هایی نظیر «تار کردن» (Blurring) و «تشخیص گرادیان» (Gradient Detection) جهت پیش پردازش تصاویر و روش‌های پس پردازش جهت «درون یابی» (Interpolating) ناهمخوانی‌های موجود میان ویژگی‌ها.

به دلیل احتمال وجود «نویز» (Noise) و «هم‌پوشانی تصویر» (Image Occlusion)، که منجر به تولید نقشه‌های ناهمخوانی غیر قابل اعتماد و «اسپارس» (Sparse) می‌شود، استفاده از روش‌های «استخراج ویژگی» (Feature Extraction) در روش‌های مطابقت دو سویی پیشنهاد نمی‌شود.

بینایی ماشین
نمایه شدت (Intensity Profile) تولید شده برای تصویر اول با استفاده از مقادیر شدت رنگ پیکسل‌های تصویر
بینایی ماشین
نمایه شدت (Intensity Profile) تولید شده برای تصویر دوم با استفاده از مقادیر شدت رنگ پیکسل‌های تصویر

بینایی ماشین

بینایی ماشین

روش‌های مطابقت مبتنی بر شدت، از Scanline (یک Scanline، یک خط یا یک سطر در «الگوی اسکن کردن راستر» (Raster Scanning Pattern) است، نظیر یک خط ویدئویی در نمایشگرهای CRT یا مانیتورهای کامپیوتر) جهت تولید «نمایه‌های شدت» (Intensity Profile) استفاده می‌کنند. رویکرد Scanline روی «تصاویر اصلاح شده» (Rectified Image) اجرا می‌شود و خطوط افقی موجود در تصویر را یکی به یکی پردازش می‌کند.

مطابقت تصویر (Image correspondence)، از طریق حرکت دادن نمایه شدت متناظر با دوربین آفست (Offset Camera) در راستای افقی و کمینه‌سازی اختلاف (یا بیشینه‌سازی مشابهت) در مقادیر شدت (Intensity)، پیکسل‌ها حاصل می‌شود. در صورتی قرار است مطابقت میان تصاویر رنگی حاصل شود، پیشنهاد می‌شود که به ازاء هر کدام از مؤلفه‌ها یا کانال‌های رنگی، یک نمایه شدت تولید و سپس، میانگین مقدار شدت حاصل محاسبه شود.

از رویکرد Scanline می‌توان برای ساختن «پنجره لغزان» (Sliding Window) استفاده کرد که محاسبات لازم برای مطابقت تصویر (Image correspondence) را به صورت محلی انجام می‌دهد. بدین صورت که ابتدا از پنجره لغزان ساخته شده، جهت تولید نمایه شدت متناظر با یک پنجره به اندازه NxN، اطراف یک پیکسل مورد نظر، استفاده می‌شود. سپس، یک پنجره با اندازه مشابه، در راستای تصویر دیگر حرکت داده می‌شود که هدف آن کمینه کردن اختلافات یا بیشینه کردن مشابهت (میان مقادیر شدت) در نمایه‌های شدت متناظر است.

معیارهای مرسومی که برای مشخص کردن مشابهت مورد استفاده قرار می‌گیرند، عبارتند از:

  • روش مجموع مربعات فاصله‌ها (Sum of Squared Distances | SSD)
  • روش مجموع فاصله‌های مطلق (Sub of Absolute Distance | SAD)
  • روش «همبستگی متقابل نرمال شده» (Normalized Cross Correlation | NCC)

با فرض اینکه XX و YY نمایش دهنده مقدار شدت در دو پنجره باشند، تعداد NN چندتایی به فرم (X1,Y1),......,(XN,YN)(X_{1} , Y_{1}) , ......, (X_{N} , Y_{N})، برای یک پنجره به اندازه NxN وجود خواهد داشت. در چنین حالتی، مقدار «همبستگی متقابل نرمال شده» (Normalized Cross Correlation | NCC) از طریق رابطه زیر به دست می‌آید:

Normalized  cross  correlation=i=1n(XiX)(YiY)[i=1n(XiX)2  i=1n(YiY)2]N o r m a l i z e d \; c r o s s \;c o r r e l a t i o n = \frac { \Large \sum _ { i = 1 } ^ n ( X _ { i } - \overline { X } ) ( Y _ { i } - \overline { Y } ) } { \sqrt { \left [ \Large \sum _ { i = 1 } ^ n ( X _ { i } - \overline { X } ) ^ { 2 } \; \Large \sum _ { i = 1 } ^ n ( Y _ { i } - \overline { Y } ) ^ { 2 } \right ] } }

در این رابطه، X\overline { X } و Y\overline { Y }، میانگین نمونه‌های موجود در پنجره‌های متناظر را نمایش می‌دهند. مقدار رابطه همبستگی متقابل نرمال شده، بین مقادیر 1 و 1- خواهد بود؛ مقدار 1 نشان دهنده «همبستگی کامل» (Perfect Correlation) میان مقادیر شدت پنجره‌ها خواهد بود.

از رابطه زیر، جهت محاسبه مجموع مربعات فاصله‌ها (Sum of Squared Distances | SSD) استفاده می‌شود:

SSD=i=1n(XiYi)2S S D = \sum _ { i = 1 } ^ n ( X _ { i } - Y _ { i } ) ^ { 2 }

این رابطه، مربع «فاصله اقلیدسی» (Euclidean Distance) میان XX و YY را محاسبه می‌کند. از رابطه زیر نیز جهت محاسبه مجموع فاصله‌های مطلق (Sub of Absolute Distance | SAD) استفاده می‌شود:

SAD=i=1nXiYiS A D = \sum _ { i = 1 } ^ n \mid X _ { i } - Y _ { i } \mid

این رابطه، فاصله مطلق میان مقادیر شدت را محاسبه می‌کند. روش‌های دیگری برای محاسبه شباهت وجود دارند ولی به اندازه روش‌های نمایش داده شده معروف و پرطرفدار نیستند. عوامل متعددی نظیر «هم‌پوشانی» (Occlusion) و «نوردهی آینه‌ای» (Specular Lighting)، می‌توانند در تولید شرایط مطابقت ضعیف میان تصاویر سهیم باشند. نوردهی آینه‌ای (Specular Lighting) به انعکاساتی اطلاق می‌شود که از «سطوح غیر لابرتنی» (Non-Lambertian Surfaces) ایجاد شده باشند. سطوح غیر لابرتنی، سطوحی «پخشی» (Diffuse) هستند که نور را به طور برابر در تمامی جهات منعکس می‌کنند. این عواملی زمانی مشکل‌ساز می‌شوند که دوربین‌ها، به دلیل اختلاف چشم‌انداز یا منظر (Perspectives)، تصاویر متفاوتی را از یک صحنه دریافت می‌کنند.

مرحله بهینه‌سازی (Optimization) در مطابقت دو سویی

هدف روش‌های بهینه‌سازی ناهمخوانی این است که با مشخص کردن بهترین مجموعه از ناهمخوانی‌هایی (Disparities) که نمایش دهنده «سطح صحنه» (Scene Surface) موجود در تصویر هستند، نقشه ناهمخوانی (Disparity Map) دقیقی را از تصاویر تولید کنند.

مهم‌ترین و شایع‌ترین روش‌های بهینه‌سازی ناهمخوانی (Disparity Optimization) عبارتند از:

رویکرد «همه برای برنده» (Winner-Take-All): این رویکرد، ساده‌ترین و معمول‌ترین رویکرد برای روش‌های «تجمیع مبتنی بر پنجره» (Window-based Aggregation) محسوب می‌شود. در این روش‌، ناهمخوانی کمینه کننده مقدار هزینه، به عنوان ناهمخوانی اصلی انتخاب می‌شود.

رویکرد «برنامه‌نویسی پویا» (Dynamic Programming): در این رویکرد سعی می‌شود تا در ماتریس متشکل از هزینه‌های تطبیق دو طرفه میان دو Scanline متناظر، مسیر «بهینه سراسری» (Globally Optimized) و دارای کمترین هزینه ممکن انتخاب شود.

بینایی ماشین

رویکرد بهینه‌سازی Scanline: این رویکرد، مشابه رویکرد برنامه‌نویسی پویا است؛ با این تفاوت که هزینه هم‌پوشانی (Occlusion Cost) در آن وجود ندارد.

رویکرد «شبیه‌سازی تبرید» (Simulated Annealing): در این رویکرد، یک ناهم‌خوانی به طور تصادفی انتخاب و هزینه در آن پیکسل ارزیابی می‌شود. در مرحله بعد، این رویکرد، جهت پیدا کردن کمینه سراسری (Global Minimum)، به سمت چپ یا راست حرکت می‌کند و هزینه در این پیکسل‌ها را ارزیابی می‌کند.

رویکرد «برش‌های گرافی» (Graph Cuts): این رویکرد، از روش حرکت «مبادله آلفا-بتا» (α-β Swap) برای بهینه‌سازی ناهمخوانی‌ها استفاده می‌کند.

در سیستم‌های بینایی ماشین پس از اینکه مطابقت (Correspondence) میان تصاویر مشخص شد، از هندسه Epipolar یا Epipolar Geometry برای محاسبه نقشه ناهمخوانی (Disparity Map) استفاده می‌شود. هندسه Epipolar، شکلی از «هندسه تصویری» (Projective Geometry) محسوب می‌شود که برای مشخص کردن موقعیت سه‌بُعدی یک شیء، از منظر دو دوربین مورد استفاده قرار می‌گیرد.

بینایی ماشین
هندسه Epipolar به کار گرفته شده جهت محاسبه عمق یک پیکسل تصویر شده. در این تصویر، C1 و C2 دوربین سمت چپ و راست را نمایش می‌دهند، در حالی که e1 و e2 برای نمایش دادن خط Epipolar مورد استفاده قرار می‌گیرد. همچنین، P1 و P2 مختصات تصویر شده (Projected Coordinates) در تصویر هستند.

در یک جهان ایده‌آل و با در اختیار داشتن دوربین‌هایی که از «دقت» (Resolution) کامل و دقیقی برخوردار هستند، سیستم بینایی ماشین قادر خواهد بود موقعیت دقیق یک شیء را محاسبه کند. با این حال، از آنجایی که از دوربین‌های با دقت محدود در سیستم‌های بینایی ماشین استفاده می‌شود، زاویه «مثلث‌بندی» (Triangulation) سبب محدود شدن «دقت عمق» (Depth Resolution) در تصاویر گرفته شده خواهد شد. چنین پدیده‌ای سبب پیش‌بینی نادرست موقعیت اشیاء موجود در تصویر می‌شود؛ همچنین، محدود بودن دقت عمق در تصاویر دیجیتالی، سبب ایجاد درجه‌ای از خطای ذاتی (Inherent Error) در آن‌ها می‌شود.

به همین خاطر است که در سیستم‌های بینایی ماشین توصیه می‌شود از تصاویر گرفته شده توسط چندین دوربین، به جای دو دوربین، برای مطابقت دو سویی (Stereo Correspondence) استفاده شود. زیرا وجود دوربین‌های چندگانه در سیستم بینایی ماشین (Machine Vision)، اجازه تخمین دقیق موقعیت اشیاء موجود در تصویر را به سیستم می‌دهد؛ دلیل این امر، مشارکت چندین دوربین و داده‌های حاصل از آن‌ها، در تخمین و مشخص کردن موقعیت نهایی اشیاء در تصاویر است.

پس از اینکه موقعیت (Position) مطابقت در تصاویر مشخص شد، در مرحله بعد لازم است تا عمق (Depth) موقعیت مشخص شده، از صفحه دوربین (Plane of Camera) محاسبه شود تا از این طریق، نقشه ناهمخوانی (Disparity Map) تولید شود.

بینایی ماشین

مرحله اصلاح یا پالایش (Refinement) در مطابقت دو سویی

اصلاح یا پالایش ناهمخوانی (Disparity Refinement) به فرایند هموار کردن (Smoothing) نقشه ناهمخوانی نهایی گفته می‌شود؛ در نتیجه این فرایند، نقشه ناهمخوانی نهایی از بازه‌های گسسته شده به مقادیر پیوسته نگاشت یا تبدیل می‌شوند. برای اصلاح یا پالایش ناهمخوانی، فرایند هموارسازی نقشه ناهمخوانی با استفاده از بهترین مقادیر ناهمخوانی محاسبه شده و یا بر اساس مقادیر ناهمخوانی پیکسل‌های همسایه انجام می‌شود. در این فرایند معمولا فرض می‌شود که مقدار ناهمخوانی یک پیکسل مورد نظر، با مقدار ناهمخوانی پیکسل همسایه برابر است؛ بنابراین، هموارسازی ناهمخوانی پیکسل‌ها با استفاده از مقادیر ناهمخوانی پیکسل‌های همسایه (در سراسر تصویر)، سبب ایجاد مطابقت دو سویی دقیق‌تر در سیستم‌های بینایی ماشین خواهد شد.

پیاده‌سازی‌های مدرن انجام شده از سیستم‌های بینایی ماشین و  مطابقت دو سویی، به برنامه‌نویس و توسعه‌دهنده برنامه‌های کاربردی اجازه می‌دهد تا محاسبات هندسه Epipolar را روی «واحد پردازش گرافیکی» (Graphical Processing Unit | GPU) انجام دهند و از «سخت‌افزار بافت‌زنی تصویری» (Projective Texture Hardware) برای شتاب بخشیدن به فرایند مطابقت دو سویی در سیستم‌های بینایی ماشین استفاده کنند.

پیاده‌سازی سیستم محاسبه نقشه ناهمخوانی و مطابقت دو سویی در پایتون‌

در مثال اول، محاسبه نقشه ناهمخوانی و مطابقت دو سویی با استفاده از تصاویر گرفته شده توسط دو دوربین مختلف نمایش داده می‌شود. در ابتدا، دو تصویر به عنوان ورودی وارد سیستم محاسبه نقشه ناهمخوانی می‌شوند. دو دوربین در فاصله مشخصی از یکدیگر قرار گرفته شده‌اند. برای محاسبه نقشه ناهمخوانی، از رویکرد برش‌های گرافی (Graph Cuts) استفاده شده است.

دو تصویر گرفته شده از یک صحنه توسط دوربین‌های مختلف:

بینایی ماشین

کدهای پیاده‌سازی سیستم محاسبه نقشه ناهمخوانی در پایتون‌:

نقشه‌های ناهمخوانی حاصل با مقادیر آستانه مختلف:

مثال دوم: در مثال زیر نیز دو تصویر از صحنه یکسان نمایش داده شده‌اند که توسط دو دوربین با منظرهای (چشم‌اندازها) مختلف گرفته شده‌اند.

کدهای پیاده‌سازی سیستم محاسبه نقشه ناهمخوانی و مطابقت دو سویی در پایتون‌:

نقشه‌های ناهمخوانی حاصل:

بازسازی صحنه (Scene Reconstruction) در بینایی ماشین

بازسازی صحنه، به فرایند ساختن یک مدل سه‌بُعدی اطلاق می‌شود که نمایش دهنده تصویر گرفته شده توسط دوربین‌ها باشد. از جمله کاربردهای مهم این سیستم بینایی ماشین در جهان واقعی می‌توان به بازسازی محیط صحنه جرم و تحلیل آن اشاره کرد.

علاوه بر این، ساختن نقشه‌های سه‌بُعدی ساختمان‌ها برای به نمایش گذاشتن «جهان‌های مجازی» (Virtual Worlds) و بازسازی لحظات خاطره‌انگیز از مسافرت یا تعطیلات خانوادگی، از جمله کاربردهای مهم فرایند بازسازی صحنه در سیستم‌های بینایی ماشین محسوب می‌شوند. بازسازی صحنه، سبب ایجاد «فریم‌های اطلاعاتی مرتب» (Ordered Information Frames) در فرمتی آشنا برای انسان‌ها می‌شود (درک تصاویر، فریم‌های ویدئویی و اطلاعات بامعنی موجود در آن‌ها را برای انسان‌ها تسهیل می‌کند).

برای بازسازی صحنه در بینایی ماشین و کاربردهای مرتبط، معمولا دو مدل دوربین (Camera Model) مختلف در نظر گرفته می‌شود؛ «دوربین کالیبره شده» (Calibrated Camera) و «دوربین کالیبره نشده» (Uncalibrated Camera). اصطلاح دوربین کالیبره شده در بینایی ماشین و کاربردهای مرتبط، به دوربینی اطلاق می‌شود که «نقطه کانونی» (Focal Points)، «میدان دید» (Field of View) و «نوع لنز» (Type of Lens) مشخص داشته باشد. در نقطه مقابل، در حوزه بینایی ماشین به دوربین‌هایی که ویژگی‌های مشخصه آن نظیر نقطه کانونی، میدان دید و نوع لنز آن مشخص نیست و تنها از طریق آزمایش هنگام عکس گرفتن می‌توان این دسته از اطلاعات را در مورد آن‌ها کشف کرد، دوربین کالیبره نشده گفته می‌شود. دوربین‌های کالیبره نشده از تکنیک‌هایی به نام «ساختار به وسیله حرکت» (Structure from Motion | SFM) برای استخراج اطلاعات موقعیتی استفاده می‌کنند.

تاکنون تحقیقات و مطالعات زیادی در مورد سیستم‌های بینایی ماشین و بازسازی صحنه منتشر شده است که از دورین‌های کالیبره نشده استفاده کرده‌اند. با این حال مطالعه سیستم‌های بینایی ماشین و بازسازی صحنه که مبتنی بر دوربین‌های کالیبره نشده هستند، از حوزه این مطلب خارج است. در این مطلب، روی بازسازی صحنه با استفاده از دوربین‌های کالیبره شده تمرکز می‌شود. از آنجایی که در دوربین‌های کالیبره شده، نقطه کانونی، میدان دید و نوع لنز مشخص است و همچنین، فاصله و جهت دوربین‌ها نسبت به یکدیگر شناخته شده است، سیستم قادر خواهد بود تا در مرحله «مطابقت دو سویی» (Stereo Correspondence) از محاسبات هندسه Epipolar استفاده کند.

همانطور که پیش از این نیز اشاره شد، از نقشه ناهمخوانی تولید شده در محله مطابقت دو سویی، می‌توان جهت مشخص کردن موقعیت سه‌بُعدی پیکسل استفاده کرد. به پیکسلی که یه موقعیت سه‌بُعدی در فضا را اشغال کرده باشد، «پیکسل حجمی» (Volumetric Pixel) یا Voxel گفته می‌شود. با تصویر کردن (Projecting) هزاران Voxel در فضای اقلیدسی، سیستم بینایی ماشین قادر به بازسازی صحنه‌هایی خواهد بود که توسط انسان‌ها قابل درک هستند. همچنین، صحنه را می‌توان از طریق رنگ کردن Voxel‌ها به وسیله میانگین گرفتن از رنگ پیکسل‌های اصلی (در تصاویر دوبُعدی)، بافت‌زنی (Texturing) کرد.

با این حال در چند دهه اخیر، با توجه به محدودیت‌های موجود در زمینه «ذخیره‌سازی داده» (Data Storage) به صورت فیزیکی، ذخیره‌سازی پیکسل‌ سه‌بُعدی امکان‌پذیر نبود. روش‌های قدیمی‌تر، از طریق انجام عملیات «درون‌نمایی» (Interpolation) در عرض «نواحی محلی» (Local Regions) و تولید کردن «مِش‌های سطحی» (Surface Meshes)، اقدام به کاهش پیچیدگی صحنه‌ها (Scene Complexity) می‌کردند. در چنین حالتی و با استفاده از نمایش‌های هندسی جوش خورده (Fused) به یکدیگر، بسیاری از پیکسل‌های سه‌بُعدی (Voxels)، در یک «مِش تقریب زده شده» (Approximated Mesh) ادغام شده و  از بین می‌روند؛ در نتیجه، پیچیدگی صحنه‌های تولید شده کاهش پیدا می‌کند تا فضای کمتری برای ذخیره‌سازی صحنه‌ها نیاز باشد.

سپس، الگوریتم‌های هموارسازی (Smoothing) روی مِش‌های (Mesh) حاصل اجرا می‌شوند تا اثر نویز در آن‌ها کاهش پیدا کند. بافت صحنه نیز با ترکیب رنگ‌بندی (Coloration) پیکسل‌های سه‌بُعدی همسایه تخمین زده می‌شود. اتخاذ چنین روشی در گذشته، برای ذخیره‌سازی پیکسل‌های سه‌بُعدی، منجر به کاهش دقت داده‌ها و از بین رفتن ویژگی‌های کوچک در تصویر می‌شد.

بسیاری از روش‌های مدرن، رویکرد متفاوتی را اتخاذ می‌کنند و از طریق درون‌یابی اطلاعات «زیرپیکسل‌های سه‌بُعدی» (Sub-Voxel) با استفاده از همسایه‌های محاصره کننده آن‌ها، جزئیات دقیق‌تر و بیشتری را به صحنه‌ها اضافه می‌کنند. در چنین حالتی، صحنه به صورت «اسپارس» (Sparse) توسط پیکسل‌های سه‌بُعدی اشغال می‌شود. در نتیجه، از روش‌‌های «نمایش داده اسپارس» (Sparse Data Representation) برای نمایش پیکسل‌های سه‌بُعدی استفاده می‌شود؛ به غیر از حالات خاصی که در آن‌ها، جهت «بازسازی متراکم صحنه» (Dense Scene Reconstruction)، پیکسل‌های سه‌بُعدی در یک «گرید» (Grid) محصور می‌شوند.

زمانی که موقعیت و جهت دوربین به مقدار اندکی تغییر کرده باشد، جهت کالیبره کردن سریع دوربین، «اطلاعات ویژگی» (Feature Information) نظیر «لبه» (Edge) گوشه (Corner) را می‌توان در صحنه ذخیره کرد. با بهبود دقت (Resolution) دوربین و یا اضافه کردن تصاویر بیشتر به مجموعه داده‌های تهیه شده برای بازسازی صحنه، می‌توان جزئیات موجود در صحنه را بهبود بخشید؛ مانند در دست گرفتن یک شیء ناشناخته و چرخاندن آن در دست، جهت ساختن یک تصویر ذهنی بهتر از ساختار آن.

به چنین روش‌هایی «ساختار به وسیله حرکت» (Structure From Motion | SFM) گفته می‌شود. حرکت دادن دوربین، سبب ایجاد تغییرات اندکی در موقعیت و جهت آن می‌شود و به سیستم اجازه می‌دهد تا تصاویر جدیدی را از صحنه بگیرد. در این جا هدف سیستم بینایی ماشین این است تا مجموعه تصاویر جدید گرفته شده را، با صحنه‌ای که پیش از این توسط مجموعه تصاویر قبلی بازسازی شده بود، ترکیب کند.

برای چنین کاری، در گام اول باید موقعیت و جهت جدید دوربین نسبت به وضعیت قبلی مشخص شود. برای چنین کاری، «ویژگی‌های اسپارس» (Sparse Features) برجسته (لبه‌ها و گوشه‌هایی در تصاویر، که با احتمال بسیار بالا، با یکدیگر مطابقت داده شده‌اند) با یکدیگر مقایسه و موقعیت و جهت جدید آن‌ها «برون‌یابی» (Extrapolate) می‌شود. به محض اینکه پارامترهای جدید دوربین مشخص شدند، می‌توان پیکسل‌های سه‌بُعدی (Voxel) جدید را به صحنه بازسازی شده اضافه کرد. همچنین، با سوار کردن دو دوربین روی یک شاسی، ضبط کردن «جریان‌های ویدئویی» (Video Streams) از هر کدام از این دوربین‌ها و حرکت دادن دوربین‌ها در یک اتاق، می‌توان به «تصاویر دو سویی» (Stereo Images) متوالی دست پیدا کرد.

استنتاج کردن و بیرون آوردن هر کدام از اشیاء موجود در صحنه بازسازی شده، برای انسان کار بسیار ساده‌ای است. در حالی که چنین کاری، فرایندی بسیار پیچیده برای یک سیستم کامپیوتری محسوب می‌شود. یک روش ساده ولی مؤثر برای شناسایی اشیاء موجود در صحنه‌های بازسازی شده، خوشه‌بندی کردن پیکسل‌های سه‌بُعدی (Voxels) بر اساس رنگ‌بندی و فاصله اقلیدسی و نگاشت کردن آن‌ها به اشیاء منحصر به فرد موجود در تصویر است. فاکتورهایی نظیر «تعامل انسانی» (Human Interaction)، «الگوریتم‌های یادگیری» (Learning Algorithms) و یا تجربه، می‌توانند به سیستم بینایی ماشین جهت ایجاد تناظر و ارتباط میان اشیاء کمک کنند (به عنوان نمونه، یک صندلی از پایه و بدنه آن تشکیل شده است و با ترکیب این دو شیء، می‌توان صندلی را در صحنه‌های بازسازی شده شناسایی کرد).

نکته شایان توجه در مورد این دسته از سیستم‌های بینایی ماشین این است که روش‌های بازسازی صحنه، یک فرض اساسی را در سیستم مطرح می‌کنند؛ صحنه‌های موجود در تصاویر، «مانا» (Static | ایستا) هستند. به عبارت دیگر، صحنه میان تصاویر ثابت است و تغییری نمی‌کند. ولی این فرضیه، فرضیه واقع‌گرایانه‌ای برای جهان واقعی نیست. برای غلبه بر تغییرات موجود در صحنه‌ها، می‌توان نرخ نمونه‌گیری (Sampling Rate) دوربین‌ها را افزایش داد و به طور منظم و دوره‌ای، صحنه‌ای که در آن پیکسل‌های سه‌بُعدی (Voxels) تغییر می‌کنند را دور انداخت.

نرخ نمونه‌گیری دوربین‌ها به این دلیل افزایش داده می‌شود که هر چقدر نرخ تغییرات میان صحنه‌ها (در واحد زمان) به صفر نزدیک می‌شود، نرخ تغییرات در حرکت اشیاء (میان صحنه‌ها) نیز به صفر همگرا می‌شود؛ در نتیجه، یک صحنه استاتیک آنی (Instantaneous Static Scene) تشکیل می‌شود.

پیاده‌سازی سیستم بازسازی صحنه در پایتون‌

با استفاده از قطعه کد زیر، تصاویر رنگی (Color Images) و تصاویر عمق (Depth Images) با یکدیگر ترکیب می‌شوند تا صحنه (Scene) سه‌بُعدی متناظر با این تصاویر بازسازی یا ساخته شود. در این قطعه کد، 1000 تصویر (متشکل از تصاویر RGB و تصاویر عمق متناظر آن‌ها) از مجموعه داده 7scenes انتخاب شده‌اند. صحنه بازسازی شده، یک صحنه متشکل از 405x267x289 پیکسل سه‌بُعدی است. داده‌های مورد استفاده از طریق لینک [+] قابل دسترسی هستند.

کدهای پیاده‌سازی سیستم بازسازی صحنه در پایتون‌:

فایل اجرایی:

خروجی حاصل:

مثال دوم: قطعه کد زیر جهت بازسازی سه‌بُعدی هر صحنه (یا شیء (Object)) از روی دو تصویر یا همان تصاویر دو سویی (Stereo Images) در زبان پایتون مورد استفاده قرار می‌گیرد. تصاویر استفاده شده در این مثال، از طریق لینک‌های [+] و [+] قابل دسترسی هستند.

پیاده‌سازی سیستم بازسازی صحنه در متلب

در قطعه کد زیر که در زبان متلب پیاده‌سازی شده است، الگوریتمی جهت کالیبره کردن یک سیستم بینایی ماشین متشکل از دو دوربین (stereo camera)، نمایش نقشه ناهمخوانی تولید شده از دو تصویر گرفته شده توسط این دوربین‌ها و در نهایت، بازسازی سه‌بُعدی صحنه گرفته شده، نمایش داده شده است. توابع این قطعه کد عبارتند از:

  • تابع خواندن تصاویر ورودی و تولید ساختار داده‌ای مناسب از آن‌ها
  • کالیبره کردن سیستم بینایی ماشین متشکل از دو دوربین، از طریق تخمین زدن پارامترهای داخلی و خارجی و ضریب «اعوجاج شعاعی» (Radial Distortion)
  • تولید نقشه ناهمخوانی به ازاء هر دو تصویر ورودی و گرفته شده از یک صحنه یکسان
  • تولید مدل بازسازی سه‌بُعدی صحنه با استفاده از «نقاط ابری» (Cloud Points)

کدهای پیاده‌سازی سیستم بازسازی صحنه، کالیبره کردن دو دوربین (stereo camera) و نمایش نقشه ناهمخوانی در متلب:

جهت دسترسی به کدهای پیاده‌سازی سیستم بازسازی صحنه، کالیبره کردن دو دوربین (stereo camera) و نمایش نقشه ناهمخوانی در متلب، روی لینک یا آیکون زیر کلیک کنید.

بازشناسی اشیاء (Object Recognition) در بینایی ماشین

در سیستم‌های بینایی ماشین و کاربردهای مرتبط، بازشناسی اشیاء به فرایند شناسایی یک شیء و موقعیت آن درون یک تصویر یا صحنه گفته می‌شود. از ابتدای پیدایش حوزه پردازش تصویر دیجیتال، بینایی ماشین و بینایی کامپیوتر، عمل بازشناسی (Recognition)، معمولا با استفاده از یک مجموعه داده مرجع و روی داده‌های تصویری دوبُعدی انجام می‌شد.

در روش‌های بازشناسی اشیاء در تصاویر دیجیتال دوبُعدی، محققان غالبا با شرایطی نظیر «هم‌پوشانی جزئی» (Partial Occlusion)، «شرایط نوری متغیر» (Partial Lighting Conditions) و «پس زمینه‌های ناهنجار و به هم ریخته» (Cluttered Background) در تصویر دیجیتال مواجه می‌شوند.

در صورت استفاده از صحنه‌های سه‌بُعدی، برخی از مشکلات ذکر شده نظیر هم‌پوشانی جزئی، در مرحله تحلیل تصویر از بین خواهند رفت (زیرا در مرحله مطابقت دو سویی (Stereo Correspondence) این مشکل برطرف می‌شود). همچنین در صحنه‌های ناهنجار و به هم ریخته، تحلیل صحنه‌های سه‌بُعدی تنها زمانی ممکن است با مشکل مواجه شود که سیستم در حال بازشناسی صحنه و یا خوشه‌بندی مجموعه پیکسل‌های سه‌بُعدی (Voxels) با هدف شناسایی اشیاء موجود در تصویر باشد.

بازشناسی اشیاء در سیستم‌های بینایی ماشین معمولا در دو مرحله «گردآوری» (Acquisition) یا «آموزش» (Training) و «بازشناسی» (Recognition) انجام می‌شود. در مرحله اول، سیستم بینایی ماشین باید اشیاء (Objects) موجود در تصویر را در حافظه خود گردآوری کند تا در مراحل بعدی بتواند آن‌ها را شناسایی کند و تشخیص دهد.

روش مرسوم برای چنین کاری به این صورت است که ابتدا یک پایگاه داده متشکل از مدل اشیاء، که شامل مجموعه‌ای از تصاویر در زوایای مختلف و شرایط نوری (Lighting Condition) متفاوت است، تشکیل می‌شود؛ پژوهش‌های مختلف نشان داده است که استفاده از چنین رویکردی، از لحاظ حافظه‌ای مقرون به صرفه نیست. یکی دیگر از روش‌هایی که برای مدل‌سازی سه‌بُعدی اشیاء مورد استفاده قرار می‌گیرد، «هندسه سازنده جسم یا هندسه توپر سازنده» (Constructive Solid Geometry | CSG) است. تحقیقات نشان داده است که استفاده از روش‌های CSG جهت مدل‌سازی اشیاء سه‌بُعدی، روش بهینه‌تری (از لحاظ حافظه) برای ذخیره اطلاعات سه‌بُعدی مرتبط با یک شیء (Object) است.

در روش CSG، از ترکیب عناصر گرافیکی پایه (Solid Primitives) با عملیاتی نظیر «اشتراک» (Intersection)، «اجتماع» (Union) و «تفاضل مجموعه‌ها» (Set Difference)، جهت شکل دادن به یک شیء استفاده می‌شود. اشیاء حاصل از طریق روش CSG را می‌توان به صورت منطقی توسط یک «درخت باینری» (Binary Tree) نمایش داد؛ در این نمایش، نودهای برگ درخت توسط عناصر گرافیکی پایه و نودهای والد نیز توسط عملیات تعریف شده میان آن‌ها (اشتراک، اجتماع و تفاضل مجموعه) نمایش داده می‌شود.

مدل «قاب سیمی» (قاب سیمی) نیز برای نمایش نمای کلی (Outline) یک مدل سه‌بُعدی مورد استفاده قرار گرفته شده است. با این حال، مشکل بزرگ مدل قاب سیمی این است که مدل‌های تولید شده از یک شیء (در چشم‌اندازهای متفاوت)، «ظاهر تصویری» (Projective Appearance) مشابهی دارند؛ در نتیجه، این روش، برای مدل‌سازی سه‌بُعدی اشیاء مختلف مطلوب نیست. علاوه بر این، روش‌های ذخیره‌سازی مبتنی بر پیکسل‌های سه‌بُعدی می‌توانند از تکنیک‌های «اشغال مکانی» (Spatial Occupancy) برای مدل‌سازی سه‌بُعدی استفاده کنند؛ در این دسته از تکنیک‌ها، پیکسل‌های سه‌بُعدی درون یک آرایه باینری سه‌بُعدی و گسسته محصور می‌شوند.

در تکنیک‌های اشغال مکانی، شیء به صورت حجمی و از طریق ترکیب کردن اطلاعات ساختاری موجود در آرایه‌های باینری ساخته می‌شود. یک نسخه عمومی از روش هندسه سازنده جسم یا هندسه توپر سازنده (CSG) در سیستمی به نام ACRONYM، که مخفف عبارت A Cone Representation of Objects Not Yet Modeled است، جهت مدل‌سازی اشیاء سه‌بُعدی پیاده‌سازی شده است.

سیستم ACRONYM از مفهومی به نام «اشیاء یا حجم‌های جاروب شده» (Swept Volumes) جهت مدل‌سازی سه‌بُعدی اشیاء استفاده می‌کند. اشیائی (حجم‌دار) نظیر «استوانه» (Cylinder)، «مکعب» (Cube)، «هرم» (Pyramid) حتی یک «بطری» (Bottle)، همگی اشیاء یا حجم‌های جاروب شده (Swept Volumes) هستند. روش کار ACRONYM بدین صورت است که ابتدا اشیاء جاروب شده (Swept Object) توسط این سیستم ساخته و سپس از طریق خوشه‌بندی کردن آن‌ها، یک مدل سه‌بُعدی از شیء ساخته می‌شود. با این حال، سیستم ACRONYM در تولید اشیاء سه‌بُعدی پیچیده با مشکل مواجه می‌شد، در نتیجه، توسعه آن توسط محققان و برنامه‌نویسان متوقف شده است.

بازشناسی اشیاء‎

فناوری‌های تشخیص یا بازشناسی اشیاء را می‌توان در قالب فناوری‌ها و سیستم‌های کامپیوتری تعریف کرد که مجموعه‌ای از وظایف مرتبط با حوزه‌های بینایی کامپیوتر (پردازش کامپیوتری تصاویر و ویدئو و درک محتوای آ‌ن‌ها)، بینایی ماشین و «پردازش تصویر» (Image Processing) را «خودکارسازی» (Automate) می‌کنند. به عبارت دیگر، تشخیص یا بازشناسی اشیاء زیر مجموعه فناوری‌ها و سیستم‌های کامپیوتری هستند که در حوزه بینایی کامپیوتر و پردازش تصویر فعالیت دارند.

«بازشناسی اشیاء» (Object Recognition) یکی از تکنیک‌های تعریف شده در حوزه بینایی ماشین و بینایی کامپیوتر محسوب می‌شود که جهت شناسایی اشیاء در تصاویر یا ویدئوها مورد استفاده قرار می‌گیرند. روش‌های پردازش تصویر، یادگیری ماشین و «یادگیری عمیق» (Deep Learning)، بهترین‌ ابزارهای موجود جهت بازشناسی اشیاء محسوب می‌شوند.

زمانی که انسان‌ها به یک تصویر نگاه می‌کنند و یا به تماشای یک ویدئو مشغول می‌شوند، به راحتی قادر به شناسایی اشخاص، اشیاء، صحنه‌ها و «جزئیات بصری» (Visual details) موجود در آن‌ها هستند. هدف سیستم‌های بازشناسی اشیاء در بینایی ماشین و بینایی کامپیوتر این است که سیستم کامپیوتری را قادر سازند تا انجام کاری که برای انسان‌ها بسیار ساده است را یاد بگیرند و بتوانند محتوای موجود در تصاویر و ویدئوها را درک کنند.

بازشناسی اشیاء یکی از فناوری‌های کلیدی در توسعه «اتومبیل‌های خودران» (Driverless Vehicles) است و آن‌ها را قادر می‌سازد تا افراد عابر پیاده، علامت توقف و سایر موارد را شناسایی کنند و میان یک عابر پیاده و پایه چراغ‌های روشنایی جاده‌ها تمایز قائل شوند. همچنین روش‌های بازشناسی اشیاء در کاربردهای متنوعی نظیر شناسی بیماری‌ها در تصویربرداری زیستی (Bioimaging)، «بازرسی صنعتی» (Industrial Inspection) و «بینایی روباتیک» (Robotic Vision) مفید واقع می‌شوند.

تفاوت بازشناسی اشیاء و تشخیص اشیاء

بازشناسی اشیاء و تشخیص اشیاء تکنیک‌های مشابهی برای شناسایی اشیاء در تصاویر و یدئوها محسوب می‌شوند، با این تفاوت که نحوه عملکرد آن‌ها در شناسایی اشیاء متفاوت است. در سیستم‌های تشخیص اشیاء، هدف سیستم پیدا کردن نمونه‌هایی از اشیاء در تصاویر است. زمانی که از روش‌های یادگیری عمیق برای تشخیص اشیاء استفاده می‌شود، سیستم‌های تشخیص اشیاء زیر مجموعه‌ای از روش‌های بازشناسی اشیاء محسوب می‌شوند؛ زیرا این دسته از روش‌ها علاوه بر این که قادر به شناسایی اشیاء هستند، می‌‎توانند موقعیت آن‌ها در تصویر را نیز شناسایی کنند. چنین کاری به سیستم اجازه می‌دهد تا چندین شیء را در یک تصویر شناسایی و موقعیت آن‌ها را مشخص کند.

رویکردهای مختلفی را می‌توان جهت بازشناسی اشیاء مورد استفاده قرار داد. در سال‌های اخیر، تکنیک‌هایی نظیر روش‌های یادگیری ماشین و یادگیری عمیق، به عنوان محبوب‌ترین تکنیک‌های توسعه داده شده جهت حل مسائل بازشناسی اشیاء شناخته شده‌اند. هر دو تکنیک سعی در شناسایی اشیاء موجود در تصاویر و و فایل‌های ویدئویی دارند. با این حال، نحوه عملکرد آن‌‎ها جهت شناسایی اشیاء متفاوت است. شکل زیر، نحوه عملکرد روش‌های یادگیری ماشین و یادگیری عمیق در بازشناسی اشیاء را نمایش می‌دهد.

دسته‌بندی روش‌های بازشناسی اشیاء

به طور کلی، روش‌های بازشناسی اشیاء را می‌توان در دو رویکرد عمومی تقسیم‌بندی کرد؛ روش‌های «بازشناسی الگو» (Pattern Recognition) و روش‌های بازشناسی هندسی مبتنی بر ویژگی (Feature-based Geometric Recognition). روش‌های بازشناسی الگو روی داده‌های سطح پایین عمل می‌کنند و سعی دارند تا الگوهای بافت و رنگ‌بندی موجود در تصاویر را با عناصر مدل شده در یک پایگاه داده مطابقت دهند. از آنجایی که اشیاء ممکن است ویژگی‌های بافت و رنگ‌بندی مشترکی داشته باشند، استفاده از چنین رویکردی برای بازشناسی اشیاء، عملکرد مطلوبی را برای سیستم رقم نخواهد زد.

روش‌های بازشناسی هندسی مبتنی بر ویژگی، سعی در پیدا کردن ویژگی‌های تغییر ناپذیر دارند که به ازاء هر تصویر منحصر به فرد هستند. ویژگی‌های تغییر ناپذیر (Invariant)، زمانی که تبدیلات (Transformation) خاصی روی تصاویر اعمال می‌شوند، تغییر نمی‌کنند؛ تبدیلات استاندارد نظیر تبدیلات اقلیدسی (انتقال (Translation)، چرخش (Rotation) یا بازتاب (Reflection)) و تبدیلات همگر یا آفین (Affine Transformation) نظیر تبدیلات برشی (Sheering) و مقیاس (Scaling)، از جمله چنین تبدیلاتی هستند. لبه‌ها و گوشه‌ها از جمله ویژگی‌های تغییر ناپذیر در تصاویر هستند.

روش تبدیل ویژگی مستقل از ابعاد (Scale-Invariant Feature Transform | SIFT)، روشی برای پیدا کردن ویژگی‌های تغییر ناپذیر و مقایسه آن‌ها میان اشیاء مختلف است. در چند سال اخیر، روش‌های SIFT به موفقیت‌های بسیار خوبی در این زمینه دست پیدا کرده‌اند؛ به ویژه در تشخیص اشیاء در تصاویری که هم‌پوشانی جزئی میان اشیاء موجود در آن وجود دارد.

نتایج تحقیقات و جهت‌گیری‌های پژوهشی آینده در زمینه بینایی ماشین

الگوریتم‌های مطابقت دو سویی (Stereo Correspondence) سابقه طولانی در حوزه بینایی ماشین دارند و در دهه‌های گذشته تحقیقاتی زیادی در رابطه با آن‌ها انجام شده است. در تحقیقات انجام شده به این نتیجه رسیده‌اند که استفاده از پنجره‌های لغزان با ابعاد بزرگتر، در ناحیه‌هایی که بافت در تصویر وجود ندارد، سبب بهبود عملکرد سیستم مطابقت دو سویی می‌شود. همچنین، تقریبا تمامی روش‌های موجود در مناطقی که هم‌پوشانی زیادی میان اشیاء وجود دارد، عملکرد ضعیفی از خود نشان می‌دهند.

علاوه بر این، روش پنجره‌‌های لغزان بهتر از دیگر روش‌های تجمیع عمل می‌کنند و در این میان، روش پنجره‌های تطابقی (Adaptive windows) در نواحی حاوی هم‌پوشانی، بهتر از دیگر روش‌ها عمل می‌کنند. تحقیقات انجام شده در زمینه روش‌های بهینه‌سازی ناهمخوانی نشان می‌دهد که روش‌های برش گرافی (Graph Cut) بهتر از دیگر روش‌های موجود عمل می‌کنند. روش‌های پنجره لغزان نیز علاوه بر اینکه بار محاسباتی کمتری به سیستم تحمیل می‌کنند، زمان محاسباتی کمتری نیز احتیاج دارند؛ فرایندهای روش پنجره لغزان، تنها چند ثانیه زمان می‌برد، در حالی که روش‌های برش گرافی، معمولا حداقل چند ده دقیقه، برای تکمیل فرایندهای خود، احتیاج دارند.

از آنجایی که عملکرد روش‌های بازسازی صحنه به طور مستقیم به عملکرد الگوریتم‌های مطابقت دو سویی وابسته هستند، مقایسه مستقیم آن‌ها سخت است. زمانی که الگوریتم‌های هموارسازی از درون‌یابی پیسکل‌های سه‌بُعدی (Voxels) استفاده می‌کنند، نتایج بسیار خوبی تولید می‌شود. همچنین، اعمال روش‌های تخمین بافت‌زنی روی پیسکل‌های سه‌بُعدی (Voxels) جدید، صحنه‌های واقع‌گرایانه‌تری را خلق می‌کند.

روش‌های تبدیل ویژگی مستقل از ابعاد (SIFT)، عملکرد بسیار خوبی در مطابقت اشیاء (به ویژه‌، مطابقت اشیاء در شرایط نوری متغیر و سایر موارد) از خود نشان می‌دهند و نسبت به نویز و خطاهای مرتبط با جمع‌آوری اطلاعات حساس نیستند. در حالی که روش‌های قدیمی‌تر که به صورت افزایشی (Incrementally) اقدام مدل‌سازی سه‌بُعدی اشیاء می‌کنند، یک سلسله مراتبی منطقی از اشیاء مدل شده ارائه می‌دهند، ولی بسیار به نویز و خطاهای دیگر حساس هستند.

همانطور که پیش از این نیز اشاره شد، مهم‌ترین روش‌های بازشناسی اشیا، معمولا از رویکردهای مبتنی بر یادگیری ماشین و یا مدل‌های مبتنی بر یادگیری عمیق برای شناسایی اشیاء موجود در تصویر استفاده می‌کنند. در رویکردهای مبتنی بر یادگیری ماشین، ابتدا ویژگی‌های مرتبط با اشیاء موجود در تصویر، با استفاده از روش‌های خاصی استخراج می‌شود. مهم‌ترین روش‌های استخراج ویژگی در رویکردهای مبتنی بر یادگیری ماشین عبارتند از:

در رویکردهای مبتنی بر یادگیری ماشین و پس از استخراج ویژگی‌ها از تصاویر یا فریم‌های ویدئویی، از یکی مدل‌های یادگیری ماشین، نظیر «ماشین بردار پشتیبان» (Support Vector Machine)، استفاده می‌شود تا اشیاء موجود در تصویر شناسایی شوند. سپس، موقعیت آن‌ها در تصویر مشخص می‌شود و در نهایت، اشیاء شناسایی شده در کلاس‌های از پیش تعیین شده دسته‌بندی شوند.

در مدل‌های مبتنی بر یادگیری عمیق، امکان تشخیص نقطه به نقطه اشیاء (ٍEnd-to-End Object Detection) برای توسعه‌دهندگان سیستم‌های بینایی ماشین و بینایی کامپیوتر فراهم شده است. اهمیت چنین روش‌هایی بدین خاطر است که این دسته از سیستم‌ها قادر هستند بدون تعریف صریح ویژگی‌های مرتبط با هر کدام از کلاس‌های تعریف شده، اشیاء موجود در تصویر را شناسایی کنند. این دسته از مدل‌ها، معمولا مبتنی بر «شبکه‌های عصبی پیچشی» (Convolutional Neural Network) هستند. مهم‌ترین سیستم‌های مبتنی بر یادگیری عمیق جهت بازشناسی اشیاء عبارتند از:

  • روش‌های Region Proposals (جهت شناسایی نواحی دربرگیرنده اشیاء در تصویر) نظیر R-CNN ،Fast R-CNN و Faster R-CNN.
  • روش Single Shot MultiBox Detector یا SSD.
  • روش‌‎های معروف و بسیار محبوب You Only Look Once یا YOLO.

جمع‌بندی

سیستم‌های بینایی ماشین، از طریق اصلاح و بهینه‌سازی تکنیک‌های موجود و یا ترکیب روش‌های موجود با تکنیک‌های دیگر در حوزه‌های مرتبط (نظیر بینایی کامپیوتر)، به سرعت در حال پیشرفت هستند. همچنین، زیر شاخه‌های تحقیقاتی دیگری نیز در حوزه بینایی ماشین وجود دارند که محققان می‌توانند آن‌ها را با تکنیک‌های معرفی شده در این مطلب ترکیب کنند و عملکرد آن‌ها را بهبود بخشند؛ زیر شاخه‌هایی نظیر بینایی فعال، ساختار به وسیله حرکت (Structure from Motion | SFM) و بازسازی صحنه به وسیله تصاویر گرفته شده توسط دوربین‌های کالیبره نشده.

تحقیق در مورد استفاده از تعداد زیادی دوربین کم کیفیت جهت مطابقت تصاویر و مقایسه عملکرد آن‌ها با سیستم‌هایی که از دو دوربین با کیفیت بالا استفاده می‌کنند، از جمله حوزه‌های تحقیقاتی است که می‌تواند مورد بررسی قرار بگیرد. در مورد نمایش حافظه‌ای مبتنی بر پیکسل سه‌بُعدی (Voxel-based Memory Representation) از صحنه‌ها و ذخیره‌سازی ویژگی‌های مهم موجود در صحنه‌ها نظیر گوشه‌ها و لبه‌ها، تحقیقات بسیار کمی انجام شده است. در مبحث بازسازی صحنه نیز، جای خالی تحقیقات مرتبط با تکنیک‌های خوشه‌بندی جهت شکل دادن به اشیاء، بر اساس ویژگی‌های همسایگی و رنگ‌بندی مشاهده می‌شود.

علاوه بر این، با روی آوردن هر چه بیشتر محققان به استفاده از واحدهای پردازش گرافیکی (GPU) جهت انجام فرایندهای مرتبط با بینایی ماشین (مطابقت دو سویی، بازسازی صحنه و بازشناسی اشیاء)، انتظار می‌رود موقعیت پیکسل‌های سه‌بُعدی با دقت بیشتری مشخص شود و جزئیات بیشتری جهت بازشناسی اشیاء در تصویر، در اختیار سیستم‌های بینایی ماشین قرار بگیرد.

اگر نوشته بالا برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

بر اساس رای ۳۵ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
Semantic Scholar
دانلود PDF مقاله
۱ دیدگاه برای «بینایی ماشین – از صفر تا صد»

تشخیص سوراخ ریز روی صفحه 2 بعدی مثلن مدارچاپی توسط یک دوربین نه چندان دقیق و گران و تعیین مختصات ان مثلن در یک ماشین cnc مونتاژ smd را توضیح دهید ممنون میشوم .

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *