مقدمهاي بر بينايي ماشين (Machine Vision)
مريم اسماعيلي
ماهنامه شبکه - خرداد ۱۳۸۴ شماره 54
اشاره :
از ميان همه شاخههاي هوش مصنوعي، شايد كاربرديترين آنها كامپيوتري و مكانيزه كردن سيستمهاي بينايي باشد. دامنه كاربرد اين شاخه از فناوري در حال رشد، بسيار وسيع است و از كاربردهاي عادي و معمولي مثل كنترل كيفيت خط توليد و نظارت ويدئويي گرفته تا تكنولوژيهاي جديد مثل اتومبيلهاي بدون راننده را دربرگرفته است. دامنه كاربردهاي اين تكنولوژي براساس تكنيكهاي مورد استفاده در آنها تغيير ميكند. دراين مقاله سعي داريم به شما نشان دهيم كه سيستمهاي بينايي ماشين چگونه كار ميكنند و مروري كوتاه بر اهداف، تكنيكها و تكنولوژيهاي موجود داشته باشيم و سعي داريم با نحوه كار بينايي ماشين و پيشرفت آنها كه مطابق با سيستم بينايي انسان است، آشنا شويم. در اين متن، بررسي خود را با دو مثال انجام ميدهيم. اولي سيستم كنترل كيفيت خط توليد است كه شامل نحوه عكسبرداري و ذخيره و شيوه تفسير عكسهاي گرفته شده بهصورت خودكار است و ديگري بهعنوان يك مثال پيچيدهتر، چگونگي بينايي يك ربات را توضيح ميدهد.
كنترل كيفيت خط توليد
شكل 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) نياز به ذخيره مقادير بسيار زيادي از دانش در رابطه با هر آيتم موجود در دنياي ربات وجود دارد. با استفاده از قوانين ميتوانيم استفاده از اين اطلاعات را از بين ببريم و ديگر نيازي به آنها حس نميشود. مثلاً در مورد يك صندلي، بهجاي ذخيره يك صندلي از تعدادي زوايا و اندازهها ميتوانيم اطلاعاتي راجعبه برخي خواص و ظواهر صندلي نظير جنس، دستهها، پايهها و ... كه يك سيستم مبتني بر دانش از آنها به منظور تشخيص صندلي استفاده ميكند، ذخيره كنيم. يك صندلي داراي چهار پايه، يك نشيمنگاه و يك تكيهگاه است.
از طرف ديگر ميز هم چهار پايه و يك رويه دارد. بدينترتيب بهجاي ذخيره تعداد زيادي عدد براي هر شي، از خواص آن شي براي توصيفش استفاده كنيم. بدينترتيب نياز به يك پايگاه دانش هست كه چيزهايي نظير اجزا (دستهها، پايهها، ديوارهها و...) خواصي كه اين اجزا را توصيف ميكند (ظاهر و غيره)، و حقايقي در رابطه با اشيايي كه توسط اين اجزا ساخته ميشوند (آشپزخانه چهار ديوار و يك در دارد و غيره) و همچنين يك سري قوانين به منظور پردازش اين اطلاعات را نگهداري نمايد.
خلاصه
همانطور كه ديديم، عمليات زيادي بايد به منظور پردازش اطلاعات تصويري انجام شود. تصاوير غالباً داراي نويز هستند كه باعث خرابي و تحريفشان ميشود. هر چند اين مشكل چندان حادي براي سيستم بينايي انسان به حساب نميآيد اما براي سيستمهاي بينايي ماشين اين نويزها بهطور كامل بايد فيلتر و پاكسازي شوند كه اين عمل با استفاده از تعدادي الگوريتم انجام ميشود.
همچنين ديديم كه اشياء چگونه با استفاده از تكنيك همسانسازي الگو ديده ميشوند هر چند پس از اينكه اشياء داخل صحنه توسط سيستم بينايي مشخص شدند هنوز كار تمام شده است. اطلاعات حاصل بايد به يك نمايش دانش مناسب ترجمه شوند بهطوري كه قابل پردازش باشند.
نتيجهگيري
مثال اول يك مثال محدود شده از نوعي سيستم بود كه در كاربردهاي روزانه مشابه آن را فراوان ميتوان يافت. سيستمهاي بينايي اوليه روز به روز در حال گسترش هستند و هر روز كاربرد جديدي براي آنها يافت ميشود. با توسعه اين سيستمها، كاربردهايي براي ساير محيطها نظير توسعه پردازش نيز يافت ميشود. سيستمهاي بينايي مصنوعي از كاربردهاي پزشكي و نظامي گرفته تا كاربردهاي ساده و معمول روزمره مورد استفاده هستند. و اين شاخه از هوش مصنوعي از كاربرديترين شاخهها ميباشد كه هنوز مسايل حلنشده زيادي در خود دارد.