به مارکوپکس خوش آمدید

بینایی ماشین و بینایی کامپیوتر به زبان ساده

چکیده مقاله

آنچه در این مقاله خواهید خواند:

حوزه­‌های بینایی ماشین (Machine Vision) و بینایی کامپیوتر (Computer Vision) دو زمینه کاملا مرتبط به یکدیگر بوده و خیلی از اوقات در مکان و زمان­‌های مختلف معنی یکسانی می­‌دهند که در این متن تفاوت­‌های برای آن بیان خواهیم کرد. ابتدای به بینایی ماشین می‌پردازیم و اکثر توضیحات آن قابل تعمیم به بینایی کامپیوتر نیز هست. هر دو این حوزه­‌ها کاملا در ارتباط با هوش مصنوعی و یادگیری ماشین هستند که برای جزییات بیشتر می‌­توانید به مطالب قبلی گذاشته شده در این زمینه مراجعه کنید. بینایی ماشین به برنامه‌های کامپیوتری اجازه داده تا وظایف و کاربردهای مختلف را به صورت خودکار انجام دهند؛ وظایفی که پیش از این و برای انجام‌ آن‌ها، نیازمند نظارت انسانی بود. هدف حال حاضر سیستم‌های بینایی ماشین، پیاده‌سازی یک چارچوب کلی برای حل بسیاری از مسائل باز و در نهایت، ایجاد یک سامانه کاربردی در حوزه هوش مصنوعی و روباتیک است. همچنین می­توان گفت که قابلیتی است که به‌واسطه‌ی آن، کامپیوتر قادر به تحلیل و پردازش محیط اطراف خود است.

تاریخچه بینایی ماشین

برای بیان یک تاریخچه مختصر بهتر است در مورد تاریخچه پردازش تصویر به عنوان ابزار بینایی ماشین بپردازیم. در دهه ۱۹۵۰ بدنبال مسئله هوش مصنوعی ریشه سیستم پردازش تصویر به قبل از مطالعه و تحقیق در رابطه با کاربردهای نظامی و تحقیقات بر روی هوش مصنوعی بر می گردد.  در دهه ۱۹۶۰ و ۱۹۷۰ اولین دسته بندی هوش مصنوعی به دو گروه مطالعاتی نظریه پرداز منطقی و تشخص الگو تقسیم شد. در این دهه موسسه تکنولوژی ماساچوست (MIT) برای اولین بار استفاده از پردازش تصویر واقعی در یک پروژه برای حرکت دادن بازوی ربات بهره برد و نظریه پرداز David Marran ، در  این موسسه به خاطر نظریه هایش درباره پردازش بینایی پیشرو در استفاده از سیستم های بینایی می‌باشد. در دهه ۱۹۸۰ پردازش تصویر و  بینایی ماشین جایگاه تحقیقاتی را به دست آوردند. پیشرفت الگوریتم بینایی ماشین Grayscale – 8bit و موجود بودن بردهای تکی پردازش تصویر و ارائه ویندوز ۱.۰ در سال ۱۹۸۵ باعث پیشرفت شگرفی گردید. در سال ۱۹۸۸ عقب نشینی وسیعی در صنعت بینایی صورت گرفت که دلیل عمده آن فروپاشی موسسه بین المللی بینایی ماشین بود و بعد از مدتی در اواخر این دهه تولید دوربین­ها مخصوصاً برای کاربردهای صنعتی و بازار بینایی ماشین و پردازش تصویر آغاز شد. در دهه ۱۹۹۰ پیشرفت عظیم صنعت بینایی ماشین با سیستم های صنعتی موجود و پیشرفت صنعت با انتشار ویندوز ۳۲ بیت ( ویندوز ۹۵) یکی از دستاوردهای این دهه بود. تولید دوربین های هوشمند با استفاده از چیپ های پردازنده و افزایش استفاده از تکنولوژی استاندارد PC و سیستم عامل برای ماشین های بینایی و معرفی الگوریتم های شبکه ای به شاخه های اصلی سیستم های بینایی باعث پیشرفت رابطه های گرافیکی و برنامه نویسی راحت تر در اینگونه سیستم ها شد. در دهه ۲۰۰۰ با پیشرفت سیستم های ارگونومیک برای یکپارچه سازی کارخانه و اتخاذ تکنولوژی FireWire-IEEE1394 دوربین های دیجیتال برای صنعت بینایی ماشین باعث گسترش سریع بازار دوربین ها و سنسورها شد. پذیرفته شدن تکنولوژی GigE به FireWire به عنوان استاندارد صنعت بینایی ماشین و افزایش استفاده از کدهای دیتاماتریکس در صنعت یک دستاورد متفاوت در این دوره بود. در دهه ۲۰۱۰ با شروع پیشرفت الگوریتم های سه بعدی و شکل دهی پایه PC Base سیستم های بینایی با تکنولوژی NET. و ویندوز ۷ ، ۶۴ بیتی همچنان رو به گسترش سیستم های پردازش تصویر هستیم. با رشد هوش مصنوعی و شبکه­های عصبی عمیق مخصوص تصویر به عنوان ابزارهای یادگیری ماشین رشدی بسیار سریعتر از دهه‌­های پیش را در این زمینه شاهد هستیم.

دسته‌­بندی بینایی ماشین

در این بخش سعی می­‌کنیم مقدمه جامعی از این مبحث به زبان ساده بیان کنیم. بینایی ماشین یکی از حوزه­های در حال پیشرفت سریع است که می­توان به عنوان زیرشاخه‌ه­ای از رشته علوم کامپیوتر(Computer Science) و هوش مصنوعی قرار بگیرد. بینایی ماشین به سه شاخه تقسیم می­‌شود که با ترتیب خاصی به معرفی جامع این سه شاخه می‌­پردازیم:

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

همچنین در دسته­‌بندی دیگری بینایی ماشین به دو دسته بینایی فعال (Active Vision) و بینایی غیرفعال (منفعل یا Passive Vision) تقسیم می شود. دسته اول مربوط به ماشین هایی است که به طور مستقیم با محیط ارتباط می گیرند و اطلاعات را دریافت می کنند. فرض کنید دستگاه شما یک موج را به سمت بیرون تابیده و بازتاب آن را دریافت کند. این موج می تواند نوری، صوتی و یا در هر فرکانس دیگه باشد. فناوری هایی مانند LIDAR و RADAR به این شکل عمل می کنند. دسته دوم مربوط به ماشین­‌هایی هست که فقط دریافت کننده هستند. به عنوان مثال دوربین عکاسی تصویر محیط را ذخیره کرده و می توان بینایی غیرفعال را به عمل بیاورد. تشخیص چهره نمونه‌­ای از کاربرد آن است. بحث ما در اینجا بیشتر در زمینه یادگیری غیرفعال است و بیش از این نیز در این زمینه بحث نمی­‌کنیم تا به سراغ سه دسته‌­بندی گفته شده در بالا برویم.

شاخه اول: مطابقت دو سویی

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

مطابقت دو سویی

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

  1. مرحله تطبیق

۱.۱ روش مجموع مربعات فاصله‌ها

۲.۱ روش مجموع فاصله‌های مطلق

۳.۱ روش همبستگی متقابل نرمال شده

  1. تجمیع

۱.۲ روش پنجره قابل انتقال

۲.۲ روش پنجره تطابقی

  1. مرحله بهینه‌سازی

۱.۳ رویکرد همه برای برنده

۲.۳ رویکرد برنامه‌نویسی پویا

۳.۳ رویکرد شبیه‌سازی تبرید

۴.۳ رویکرد برش‌های گرافی

۵.۳ رویکرد بهینه‌سازی

  1. مرحله اصلاح یا پالایش

۱.۴ گرادیان کاهشی تکراری

۲.۴ روش برازش منحنی

شاخه دوم: بازسازی صحنه

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

بازسازی صحنه

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

بازسازی صحنه

در نهایت مدل سه بعدی می‌­تواند با کمک یک داده ۳+۱ بعدی داده­ شود که هر خانه در این داده دارای سه بعد مکانی و یک بعد مقدار است و به آن Voxel(بجای پیکسل دوبعدی) گفته ­می‌­شود. البته این روش ذخیره سازی داده­ها حافظه زیادی می­گیرد و می­توان از روش دیگری به نام مش­بندی و با کمک مثلث­هایی در فضای سه بعدی اشیا را ذخیره کرد و نشان داد. در شکل زیر یک خرگوش با کمک همین مثلث‌­ها به نمایش درآمده است. با داشتن راس­ها، و اضلاع متصل کننده این راس­‌ها می­توان داده این مدل سه بعدی را ذخیره کرد. همچنین این روش از مدلسازی در بازی­های کامپیوتری نقش مهمی ایفا می­‌کند.

شاخه سوم: بازشناسی اشیاء

در ادامه دو شاخه دیگر فرض کنید ما موفق به بازسازی صحنه در یک موقعیت شدیم. هدف بعدی پیدا کردن اشیا در این صحنه است و اینکه هر شی نمایانگر چه چیزی در دنیای واقعی است. البته این کار می­توان بدون بازسازی صحنه و در تصاویر دوبعدی نیز انجام گیرد که غالبا با شرایطی نظیر هم‌پوشانی جزئی، شرایط نوری متغیر و پس زمینه‌های ناهنجار و به هم ریخته مواجه می‌شویم. به همین دلیل بازسازی صحنه کمک کننده خواهد بود. ما ابتدا باید یک پایگاه داده از اشیا مختلف (به عنوان داده آموزش) جمع آوری کنیم و به شکلی اشیا موجود در صحنه را با اشیا این پایگاه داده مقایسه کنیم. به شکلی انگار با مسئله Kامین همسایه نزدیک رو به رو هستیم که قبلا در مورد آن صحبت کردیم(رفرنس به مطلب یادگیری ماشین). این مقایسه می­تواند به روش­‌های بازشناسی الگو (Pattern Recognition) و روش‌های بازشناسی هندسی مبتنی بر ویژگی (Feature-based Geometric Recognition) انجام گیرد که روش اول عمومی و سطح پایین بوده و به رنگ­بندی نیز حساس است ولی در روش دوم ناورداهای هندسی از اشیا بدست آمده که به تبدیلات جابه­جایی اقلیدسی، چرخش، تبدیل آفین و … حساس نیست و بالاترین دقت را ارائه می­دهد.

ما با مفهومی بنام تشخیص اشیاء نیز روبه­رو هستیم که متفاوت از بازشناسی اشیا است. تشخیص اشیا سعی در پیدا کردن نمونه­ای مشابه در تصویر است و هنگامی که از ابزارهای یادگیری عمیق در تشخیص اشیا استفاده می­شود(ویژگی‌­ها استخراج می‌شود) به صورت زیر مجموعه‌ه­ای از بازشناسی اشیا فرض می­‌گردد. تشخیص اشیا را می­توان بیشتر زیرمجموعه‌­ای از حوزه بینایی کامپیوتر درنظر گرفت.

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

بینایی کامپیوتر فرایندی است که باعث خودکارسازی دریافت و تحلیل تصاویر گفته می‌شود. در دامنه وسیع کاربردهای عملی و تئوری حوزه بینایی کامپیوتر، تأکید سیستم‌های بینایی کامپیوتر بیشتر روی قابلیت‌های تحلیل تصاویر، استخراج اطلاعات مفید از آن‌ها و درک و فهم اشیاء یا موجودیت‌های موجود در آن‌ها با کمک تکنیک­های یادگیری ماشین و پردازش تصویر است. فناوری‌های احراز هویت مانند تشخیص اثر انگشت، خواندن پلاک اتومبیل‌ها، شمار تعداد افرادی که در یک نمایشگاه وجود دارند و… کاربردی­هایی بینایی کامپیوتر هستند.

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

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

بینایی کامپیوتری کارکردی شبیه به انسان دارد(برخلاف بینایی ماشین). مفاهیم دیدن، توصیف کردن و درک کردن در حوزه بینایی کامپیوتر قابل بحث است. مفهوم دیدن برای انسان در چشم خلاصه می­‌شود این در صورتی است که بیش از چند دهه است که مردم تلاش می­کنند حسگرهایی بهتر بسازند تا حتی بهتر از چشم انسان تصاویر را ضبط و ذخیره سازی کنند. در تصویر زیر حسگر تلسکوپ LSST نشان داده شده است که می­تواند تصاویری با دقت ۳.۲ گیگاپیکسل ضبط کند و به زودی شروع به کار می­‌کند. مغز انسان با کمک میلیاردها نورونی که دارد سعی می­کند تصویر رسیده به چشم را با تغییرات و فیلترهایی آماده کند تا درک شود. به عنوان مثال در تصویر رسیده مقدار زیادی نویز و سیگنال­های بدرد نخور وجود دارد که مغز آن­ها را حذف و سعی می­کند بخش مفید را با انجام پردازش روی آن آماده فرایند درک و فهمیدن از یک صحنه کند. در دوربین­های دیجیتال نیز کم و بیش این فرایندها به صورت مصنوعی صورت می­گیرد تا خروجی مناسب به همراه ویژگی­های مناسب مثل لبه­‌های یک جسم ارائه شود. درنهایت فرایند درک در مغز انسان با کمک آنچه دیده، آنچه در حافظه‌­های کوتاه مدت و بلندمدت خود دارد، اطلاعات رسیده از دیگر حواس پنج گانه و … فرایند درک را انجام می­دهد. در اینجا نقص بزرگ در سیستم‌­های بینایی کامپیوتر دیده می‌­شود که تنها از تصویر برای درک صحنه استفاده می­کند. در صورتی که در آینده مدل­های هوش مصنوعی معرفی شوند که این قابلیت ها را داشته باشند، می­‌توانند ما را به هوش مصنوعی قوی نزدیک کنند که قبلا در مورد آن صحبت شد(رفرنس به مطلب هوش مصنوعی).

ازجمله کاربردهای بینایی کامپیوتر می­توان به موارد زیر اشاره کرد:

  • دسته‌بندی اشیاء
  • شناسایی اشیاء(محل اشیاء مهم نیست)
  • صحت‌سنجی اشیاء
  • تشخیص اشیاء(محل اشیاء مهم است)
  • تشخیص نقاط کلیدی برای شناسایی اشیاء در تصویر
  • قطعه‌بندی اشیاء(Segmentation)
  • بازشناسی اشیاء

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

جمع­‌بندی:

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

منبع:

  1. https://www.semanticscholar.org/paper/Machine-vision%3A-a-survey-Phillips/3841e170b42bdbc8bd1f5caf963da419db871f19
  2. https://blog.faradars.org/machine-vision/
  3. https://consent.yahoo.com/v2/collectConsent?sessionId=3_cc-session_94e2c017-7d8d-4244-8879-b715fca40527
  4. https://towardsdatascience.com/what-even-is-computer-vision-531e4f07d7d0

مجله مارکوپکس

آخرین مقاله‌ها

مجله مارکوپکس

Hanging Protocol

پروتکل نمایش Hanging چیست؟ پروتکل Hanging در زمینه تصویربرداری پزشکی، به محموعه‌ای از قوانین و دستورالعمل‌هایی اشاره دارد که نحوه چیدمان نمایش تصاویر پزشکی را

مجله مارکوپکس

دیویژن(نسخه ۱۴.۵۰.۵)

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

Machine Learning Technologies for Medical Diagnostics
فناوری اطلاعات و تصویربرداری پزشکی

مزایا و چالش‌های فناوری‌های یادگیری ماشین (Machine Learning) برای تشخیص در پزشکی

هر سال، اشتباهات تشخیص پزشکی بر سلامت میلیون‌ها انسان تأثیر می‌گذارد و میلیاردها دلار هزینه دارد. فناوری‌های یادگیری ماشینی می‌توانند به شناسایی الگوهای پنهان یا

تازه‌های مارکوپکس

به دنبال مطلب خاصی هستید؟