کنترل کیفیت خط تولید
|
شکل 1- نمای ساده شدهای از یک سیستم بینایی کنترل کیفیت خط تولید غیرواقعی |
یکی از کاربردهای بینایی ماشین در کنترل کیفیت خروجی کارخانهها میباشد. شکل 1 مثالی بسیار ساده از چنین سیستمی است. اجناس تولیدشده در کارخانه که برروی یک نوار نقاله قرار گرفتهاند و توسط یک دوربین CCD برای آزمایش دیده میشوند و محصولات با کیفیتِ مناسب اجازه عبور پیدا خواهندکرد. چنانچه محصولی دارای استانداردهای مناسب نباشد از ادامه مسیر حذف میشود. معیار این استانداردها میتواند لبههای زائد، خراشیدگی و بادکردگی و تورم روی فلزات و بسیاری چیزهای دیگر باشد. در این مثال ما در پی یافتن مکانیزم خط تولید نیستیم و فقط میخواهیم ببینیم که یک شی تولیدشده چگونه استاندارد تشخیص داده شده و اجازه عبور مییابد و برعکس چگونه به بعضی از اشیاء اجازه عبور و ادامه دادن داده نمیشود.
عکسبرداری
در این مثال ما سعی در مکانیزه کردن فرآیندی یکنواخت داریم که بهصورت معمول و تکراری توسط انسان انجام میشود. اولین مسأله و مشکل ما این است که چگونه عکسهای تهیه شده از اشیایی که در حال حرکت بر روی نوار نقاله هستند را تبدیل به دادههای قابل فهم و تفسیر برای سیستم نماییم، که این مشکل توسط دوربین CCD حل میشود. عملکرد این دوربین را میتوان به عملکرد چشم انسان که قادر است سطوح مختلف نور را تشخیص دهد تشبیه نمود.
چشم انسان
چشم انسان که در شکل 2 نشان داده شده است، تقریباً یک عدسی کروی با قطر 5/2 سانتیمتر میباشد که از چندین لایه مختلف که درونیترین آنها شبکیه نام دارد تشکیل شده است. ماهیچههای اطراف چشم اندازه لنز را تنظیم میکنند که اینکار چشم را قادر به زوم (zoom) کردن روی اشیاء میکند.
|
شکل 2- نمای داخلی چشم انسان |
وظیفه عدسی چشم، فرم و شکل دادن به تصویری است که توسط میلیونها سلول گیرنده مخروطی (Cone) و میلهای (rod) گرفته شده و برروی پرده شبکیه افتاده است، میباشد. سلولهای میلهای به یک عصب معمولی که از انتها به شبکیه ختم میشود و فقط در سطح نور پایین فعال است متصلند و سلولهای مخروطی هر کدام به یک عصب اتصال دارند. آنها در نورهای شدیدتر، بیشتر فعالند و میزان درک ما از رنگها را نوع فعالیت این مخروطها مشخص میکند.
در میان شبکیه ناحیهای بهنام نقطه کور وجود دارد که در آن هیچ گیرندهای موجود نیست. در این ناحیه اعصاب بهصورت جداگانه به عصب بینایی که سیگنالهای دریافت شده را به قشر بینایی مخ انتقال میدهند، وصل میشود.
دوربین CCD
CCD از جهت عملکرد تقریباً مانند چشم انسان کار میکند. نور از طریق یک عدسی وارد دوربین و برروی یک پرده مخصوص تصویر میشود که تحت عنوان تراشه CCD شناخته میشود. تراشه Charge Coupled Device) CCD) که تصاویر با استفاده از آن گرفته میشوند از تعداد زیادی سلول تشکیل شده که همگی در یک تراشه با الگوی خاصی مرتب شدهاند و تحت عنوان پیکسل (pixels) شناخته میشوند.
|
شکل3- تصویر وسط یک نمای نزدیک از چشم ماهی را نمایش می دهد و نشان می دهد که هر قسمت از یک تصویر چگونه با تعدادی مقادیر عددی ذخیره می شود. به تعداد داده های عددی مورد نیاز برای ذخیره یک فضای کوچک از تصویر توجه کنید. |
زمانی که تراشه CCD این اطلا
عات را دریافت میکند، آنها را به شکل سیگنالهای دیجیتالی از طریق کابلهایی به سیستم دریافتکننده میفرستد و بعد تصاویر در این سیستم به صورت مجموعهای از اعداد ذخیره میشوند. همانطور که در شکل 3 میبینید هر عدد نماینده یک پیکسل است.
درک تصویر
با هر تصویر، چه با دوربین گرفته شود و چه با چشم انسان، مقداری تحریف و تغییر شکل و
به عبارتی "نویز (noise) " وجود دارد. البته در مورد مثال ما در سیستم خط تولید این مسأله چندان اهمیت ندارد اما در موقعیتهایی که نیاز به دقت بالا وجود دارد باید از نورپردازی خاصی برای تصویربرداری استفاده شود.
|
شکل 4- ترسیم لبه. شکل اول تصویر اصلی میباشد. در شکل وسط نویزها با فیلترنمودن از بین رفته است. در نهایت شکل 3، تصویر حاصل از بهکار بردن الگوریتم ترسیم لبه میباشد. |
انسان برای درک تصاویری که میبیند نیازی ندارد هیچ کاری در مورد فیلتر کردن و از بین بردن نویزهای یک تصویر انجام دهد. مثلاً در یک روز ابری که مه همه جا را فرا گرفته، دید ما به شدت ضعیف و دچار مشکل میشود. اما هر آنچه را که قادر به دیدنش باشیم درک میکنیم. یعنی برای درک اشیاء نیازی به حذف نویزهای تصویر نیست. مثلاً اگر در این روز در حال رانندگی در یک جاده باشید و تصویر مبهمی از یک ماشین را مقابل خود ببینید، بالطبع عکسالعمل نشان میدهید و به عبارتی سرعت خود را کم میکنید.
و این یعنی ما هنوز تصویر ماشین را علیرغم وجود مه میتوانیم تشخیص دهیم و در مقابل آن عکسالعمل نشاندهیم. و یا مثلاً زمانی که دچار سرگیجه میشوید، علیرغم اینکه تصاویر اطراف خود را تار و مبهم میبینید اما قادر به درک و تشخیص وسایل و تصاویر اطراف خود هستید. یعنی ابتدا صبر نمیکنید تا سرگیجهتان به پایان برسد و بعد تصاویر را تشخیص دهید و این یعنی با قدرت بینایی انسان، علیرغم خراب شدن تصاویر اطراف، میتوانیم متوجه فضای اطراف خود بشویم. اما برای بینایی ماشین ابتدا باید این نویزها طی فرآیندی که تصفیه کردن یا فیلترینگ نامیده میشود، از بین برود و بعد هر آنچه برای پردازش عکس لازم است انجام شود.
خوشبختانه در حال حاضر تکنیکهایی برای انجام این کار وجود دارد. از بین بردن نویزها بهصورت نرمال توسط تعدادی از توابع ریاضی یا الگوریتمهایی که تحت عنوان 'treshholding' یا 'quantizing' نامیده میشود انجام میگردد. این فرآیند بسیار حرفهای و پیچیدهای است و نیاز به دانش و پشتوانه بالای ریاضی دارد. زمانی که خرابیها از بین رفت، میتوانیم پردازش عکسها را ادامه دهیم که این کار با استخراج صورتها و حالتها از یک تصویر انجام میشود. یک شیوه معمول که غالباً مورد استفاده قرار میگیرد استخراج لبهها که در شکل 4 دیده میشود، میباشد.
در مورد مثال ما در سیستم خط تولید، وظیفه اصلی یک اپراتور کنترل کیفیت این است که به سرتاسر محصول تولید شده نگاه کرده و با مقایسه آن با استانداردهای مورد قبول، برای محصول تولیدشده جواز عبور یا عدم عبور صادر کنند.
اگر این کار با استفاده از بینایی ماشین صورت گیرد باید عکس گرفته شده از محصول تولید شده با عکسی که از یک محصول استاندارد وجود دارد مقایسه شود. یکی از روشهای انجام این کار به این صورت است:
برای انجام اینکار، یک تصویر از محصول استاندارد در کامپیوتر ذخیره میشود و سپس از محصولاتی که از خط تولید عبور میکنند. تصویر گرفته میشود و به عنوان نقشه لبه ذخیره میشود. و بعد سیستم، تصویر گرفته شده را از چپ به راست و از بالا به پایین بهگونهای که در هر زمان فقط یک رقم عبور کند، میلغزاند و عدد ظاهر شده در هر موقعیت را با عدد همان موقعیت در تصویر اصلی مقایسه میکند و در صورت تفاوت آن را اعلام مینماید.
لذا عملیات بینایی کامپیوتر در حقیقت مقایسه دو مجموعه عدد است که اگر تفاوت این دو مجموعه از یک محدوده خاص فرارتر برود، از پذیرفتن محصول امتناع شده و در غیر اینصورت محصول پذیرفته میشود.
یک مثال پیچیدهتر
در مثال قبل سیستم مورد مطالعه بسیار محدود بود و فقط یک تصویر دو بعدی از یک محصول را با تصویر اصلی و ایدهآل مقایسه میکرد و احتیاجی به بررسی مقادیر اندازه و زاویه نبود.
در این مثال میخواهیم به سیستم بینایی که برای یک ربات خانگی که قادر به تمیز کردن خانه، پختن غذا و ... طراحی شده نگاهی بیاندازیم. این مثال بسیار پیچیدهتر از مثال قبلی است و نیاز به آگاهی از تغییرات محیط دارد. به عبارت بهتر نیاز به یک سیستم هوشمندتر داریم. قبلاً دیدیم که تصاویر چگونه ذخیره و تفسیر میشوند. غالب تکنیکهای گذشته دوباره در این مثال بهکار گرفته میشوند. تفاوت اصلی در تفسیر تصاویر گرفته شده است. در مثال قبلی فضای سیستم بینایی فقط متشکل از یک سری محصول بود، اما در این مثال ربات باید از همه آنچه در اطرافش میگذرد باخبر بوده و این یعنی با دنیای وسیعتر و بزرگتری روبروست. بدینمنظور نیاز به تکنیکهای تشخیص پیچیدهتری وجود دارد.
یعنی در این مثال، یک صحنه فرضی شامل دهها یا حتی صدها شی مختلف در معرض دید است. این اشیاء در اندازهها و تحت زوایای مختلف که متأثر از نوع نورپردازی هم هستند به نمایش درمیآیند و به همین دلیل برای تشخیص این اشیاء نیاز به تکنیکهای هوشمصنوعی (Ai) میباشد.
پردازش اطلاعات در مغز
|
شکل 5 - تصویر به نظر دو مثلث میآید که در جهت عکس هم و برروی هم قرار داده شدهاند، ولی از نظر ریاضی هیچ مثلثی رسم نشده است و فقط سه دسته از خطوط وجود دارند. |
در مورد بینایی انسان متذکر شدیم که شاید یکی از قسمتهایی از مغز که بیشتر فعالیت درک تصویر را انجام میدهد ناحیه visual Cortex باشد. همانطور که دیدهایم، اینجا ناحیهای است که اطلاعات منتقل شده در طول عصب بینایی در آن پردازش میشود. البته این را هم مدنظر داشته باشید که قسمتی از فعالیت پردازش اطلاعات در ناحیه شبکیه چشم قبل از اینکه اطلاعات به مغز برسند، انجام میشود.
البته خود ناحیه شبکیه بهعنوان قسمتی از مغز شمرده میشود. در ضمن این مسأله هم قبلاً مشخص شده است که نواحی مختلف قشر بینایی مخ در مقابل تصاویر مختلف عکسالعمل نشان میدهد. به عبارت دیگر هر قسمت از این ناحیه مربوط به یک حالت خاص است. مثلاً نواحی معین و مشخصی در مقابل رنگهای متفاوت عکسالعمل نشان میدهند و یا مثلاً نواحی وجود دارند که سلولهایشان در مقابل جزییات دقیق موجود در یک تصویر عکسالعمل نشان میدهند. مثلاً در شکل 5 شما میتوانید یک مثلث سفید که بهطور واضح سه راس آن مشخص نشده است را ببیند،
|
شکل 6- مثلث Penrose: عدم هماهنگی هندسی در لبهها باعث عدم درک صحیح شکل میشود. |
علیرغم اینکه بهطور واضح و مجزا این مثلث مشخص نشده است. اما سلولهای موجود در قشر بینایی میتوانند تکههای این خطوط را کنار هم گذاشته و از آن یک مثلث استنتاج کنند.
زمانی که اطلاعات مربوط به چیزی که دیده میشود را دریافت کردیم، مثل شکل ظاهری، لبهها و غیره، مغز نیاز به رمزگشایی و کشف اطلاعات بهدست آمده دارد تا دقیقاً نتیجهگیری کند که آنچه در صحنه میگذرد چیست. اینجا قسمتی است که ما خیلی کم در رابطه با آن میدانیم و مشخص نیست که دقیقاً مغز چگونه این کار را انجام میدهد. اما مسأله مشخص این است که سیستم بینایی ما چندان مبرا از خطا نیست و بهراحتی دچار اشتباه میشود. موارد بسیار زیادی وجود دارد که اطلاعات کسب شده میتوانند مبهم و یا حتی اشتباه باشند، مانند مثالهایی که در شکل 6 و 7 مشاهده میکنید.
|
شکل 7- خطای دید: در شکل سمت چپ علیرغم نحوه ظهور خطوط همه آنها با هم موازیند. در شکل سمت راست که به خطای Muller-Lyer معروف است دو خط ظاهر شده به نظر دارای طولهای متفاوت میآیند. اما در حقیقت هماندازهاند. |
بهطور خلاصه، با توجه به اینکه سیستم بینایی انسان در بسیاری موارد دچار خطا میشود، نیاز به درنظرگرفتن شیوهای متفاوت برای بینایی ماشین هستیم.
با استفاده از تکنیکهایی که قبلاً ذکر کردیم، ربات میتواند شناسایی ترکیبات و صورتهای گوناگون موجود در اطراف خود را با استفاده از شیوه همانندسازی الگو انجام دهد. هر چند تعداد زیادی صورت
و ترکیبات گوناگون (template matching) دیگر وجود دارند که نیاز به اخذ شیوههای متفاوت دیگری برای نمایش آنها وجود دارد. و در این جاست که نیاز به استفاده از تکنیکهای هوش مصنوعی مطرح میشود.
نمایش دانش
متخصصین هوش مصنوعی انواع سیستمها را با استفاده از برنامههای معمول کامپیوتری و تفاوت قایلشدن بین پردازش اطلاعات (information) و پردازش دانش (knowledge)، شناسایی میکنند. اینکار منجر به ایجاد سیستمهای مبتنی بر دانش که کاربرد بسیار زیادی در هوش مصنوعی دارد میشود.
|
شکل 8- یک شبکه معنایی برای نمایش قسمتی از آشپزخانه. |
ربات ما نیاز به داشتن اطلاعات یا "دانش" از دنیای اطراف خود دارد تا سیستم بیناییاش به درستی عمل کند. ما بهطور خلاصه بعضی تکنیکهایی که توسط مهندسین دانش (knowledgc engineer) برای نمایش و پردازش این اطلاعات بهکار میرود را آزمایش میکنیم.
یک شبکه معنایی (Semantic network) یک تکنیک خوش ساخت برای نمایش اشیاء یا ماهیت موجود در یک دنیا و ارتباطاتی که بینشان موجود است، میباشد. مثلاً قسمتی از دنیای ربات ما آشپزخانه است.
استفاده از یک شبکه معنایی میتواند راه مناسبی برای نمایش اطلاعات باشد. بدینترتیب آشپزخانه را تحت عنوان یک سری از اشیاء و روابط بینشان فرض کنیم. یک شبکه میتواند جزییات موجود را بهخوبی نمایش داده و ما را قادر به کاوش بیشتر و بهتر در روابط موجود بین اشیاء کند. برای مثال، همانطور که از شکل شماره 8 میتوان دید، گوشتهای سرد در یخچال نگهداری میشوند. این آیتمها تحت عنوان غذاها میتوانند دستهبندی شوند. اگر چه همه غذاها در یخچال نگهداری نمیشوند، اما همه محصولات گوشتی ملزم به نگهداری یخچال هستند.
مشخص است که این شبکه باید برای نمایش دنیای اطراف ربات ما بهخوبی گسترش یابد و نیاز به نمایش دقیقتر و جزییتری از اشیاء و ارتباطات وجود دارد و همچنین این شبکه باید اتاقها، افراد، اشیاء موجود و غیره را هم نمایش دهد.
پس از ساخته شدن شبکه معنایی ما قادر به ساخت یک پایگاه داده از دانش حاصل از شبکه معنایی در مورد اشیاء موجود در دنیای مربوطه هستیم. در مورد مثال ما، ورودیهای مناسب میتواند به شکل زیر باشد:
(سیب - شکل - گرد) (سیب - رنگ - قرمز) (سیب - نما - براق)
(همبرگر- شکل - گرد) (همبرگر- رنگ - قهوهای) (همبرگر نما - گوشتی)
(یخچال - شکل - مستطیل) (یخچال - رنگ- سفید) (یخچال - نما - فلزی)
(ظرفمیوه - شکل - بیضی) (ظرفمیوه - رنگ- نقرهای) (ظرف میوه - نما - فلزی)
((میوه) نگهداری - در (ظرف میوه))
((سیب) هست - یک (خوردنی))
توجه کنید که ورودیهای این پایگاه دانش باید بهگونهای باشد که منجر به سردرگمی ماشین نشود. مثلاً در مورد مثال ما، سیب یک شی براق قرمز گرد معرفی شده است. اشیاء زیادی هستند که ممکن است چنین مشخصهای داشته باشند و اگر مثلاً شما ربات خود را بفرستید که برای شما یک سیب تازه بیاورد امکان دارد ربات با یک توپ نزد شما باز گردد.
این پایگاه دانش تحت عنوان حافظه کاریِ سیستم شناخته میشود. به منظور استفاده کارا و مناسب از اطلاعات موجود در این پایگاه، سیستم نیاز به داشتن تعدادی قانون دارد. بدینترتیب پس از ساخت پایگاه دانش نیاز به ساخت یک پایگاه از قوانین برای برخورد مناسب با اطلاعات موجود در پایگاه دانش هستیم. اگر شما از قبل با زبانهای برنامهنویسی آشنایی داشته باشید، با عبارتی مثل If Statement Then آشنا هستید مثلا If cold Then wear coat ما از چنین ساختاری برای ایجاد پایگاه قوانین استفاده میکنیم. قسمت IF عبارت تحت عنوان راس قانون و قسمت عملیات یعنی قسمت Then تحت عنوان بدنه قانون شناخته میشوند.
و بدین ترتیب ربات مثلاً میداند که یک سیب چیست و در کجا قرار دارد. مثلاً فرض کنید یکی از کارهایی که قرار است ربات انجام دهد رفتن به سمت یخچال و برداشتن چیزی از یخچال است، در این صورت میتوانیم مجموعهای از قوانین را به این منظور بسازیم.
اکنون هم دانش و هم قوانین مربوطه را داریم که نیاز به روشهایی برای تفسیرشان داریم. این کار توسط سیستم مفسر انجام میشود. مفسر برنامهای است که قوانین را پردازش میکند. وظیفه آن خواندن هر قانون و بررسی اینکه موقعیتها با هم همخوانی دارند یا نه میباشد. اگر همخوانی داشتند عمل موردنظر را انجام میدهد. این عمل آنقدر انجام میشود تا به عملی که دستور پایان دادهاست، برسد.
گفتیم برای استفاده از تکنیک همسانسازی الگو (Template matching) نیاز به ذخیره مقادیر بسیار زیادی از دانش در رابطه با هر آیتم موجود در دنیای ربات وجود دارد. با استفاده از قوانین میتوانیم استفاده از این اطلاعات را از بین ببریم و دیگر نیازی به آنها حس نمیشود. مثلاً در مورد یک صندلی، بهجای ذخیره یک صندلی از تعدادی زوایا و اندازهها میتوانیم اطلاعاتی راجعبه برخی خواص و ظواهر صندلی نظیر جنس، دستهها، پایهها و ... که یک سیستم مبتنی بر دانش از آنها به منظور تشخیص صندلی استفاده میکند، ذخیره کنیم. یک صندلی دارای چهار پایه، یک نشیمنگاه و یک تکیهگاه است.
از طرف دیگر میز هم چهار پایه و یک رویه دارد. بدینترتیب بهجای ذخیره تعداد زیادی عدد برای هر شی، از خواص آن شی برای توصیفش استفاده کنیم. بدینترتیب نیاز به یک پایگاه دانش هست که چیزهایی نظیر اجزا (دستهها، پایهها، دیوارهها و...) خواصی که این اجزا را توصیف میکند (ظاهر و غیره)، و حقایقی در رابطه با اشیایی که توسط این اجزا ساخته میشوند (آشپزخانه چهار دیوار و یک در دارد و غیره) و همچنین یک سری قوانین به منظور پردازش این اطلاعات را نگهداری نماید.
خلاصه
همانطور که دیدیم، عملیات زیادی باید به منظور پردازش اطلاعات تصویری انجام شود. تصاویر غالباً دارای نویز هستند که باعث خرابی و تحریفشان میشود. هر چند این مشکل چندان حادی برای سیستم بینایی انسان به حساب نمیآید اما برای سیستمهای بینایی ماشین این نویزها بهطور کامل باید فیلتر و پاکسازی شوند که این عمل با استفاده از تعدادی الگوریتم انجام میشود.
همچنین دیدیم که اشیاء چگونه با استفاده از تکنیک همسانسازی الگو دیده میشوند هر چند پس از اینکه اشیاء داخل صحنه توسط سیستم بینایی مشخص شدند هنوز کار تمام شده است. اطلاعات حاصل باید به یک نمایش دانش مناسب ترجمه شوند بهطوری که قابل پردازش باشند.
نتیجهگیری
مثال اول یک مثال محدود شده از نوعی سیستم بود که در کاربردهای روزانه مشابه آن را فراوان میتوان یافت. سیستمهای بینایی اولیه روز به روز در حال گسترش هستند و هر روز کاربرد جدیدی برای آنها یافت میشود. با توسعه این سیستمها، کاربردهایی برای سایر محیطها نظیر توسعه پردازش نیز یافت میشود. سیستمهای بینایی مصنوعی از کاربردهای پزشکی و نظامی گرفته تا کاربردهای ساده و معمول روزمره مورد استفاده هستند. و این شاخه از هوش مصنوعی از کاربردیترین شاخهها میباشد که هنوز مسایل حلنشده زیادی در خود دارد.
با سلام
با ابراز خوشحالی از اینکه بالاخره وبلاگی یافتم که در مورد بینایی ماشین مطلب دارد دوست دارم با هم تبادل لینک داشته باشیم.
اگر دوست داشتی وبلاگ منو به اسم هوش مصنوعی لینک کن. بعد به من خبر بده تا بلافاصله شما را لینک کنم.
به امید دیدار شما در وبلاگ خودم