توصیه شده, رزبری پای, هوش مصنوعی

بینایی کامپیوتر در هوش مصنوعی و یادگیری عمیق

بینایی ماشین

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

 

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

در این مقاله قرار هست بدانیم که بینایی کامپیوتر چیست؟ و چگونه کار می کند؟

اگر دنبال پاسخ این سوالات هستید پس لطفا با ما همراه باشید.

شاید قبلا اصطلاح بینایی ماشین نیز به گوش تان خورده باشد و هنگام مطالعه این مقاله این سوال برای تان پیش بیاید که خب بینایی ماشین یعنی چه؟

و چه تفاوتی با بینایی کامپیوتر دارد؟

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

توصیه می کنم در این حوزه نیز مطالعه و تحقیق داشته باشید تا دید باز تری به موضوع پیدا کنید.

شاید برای شما مفید باشد: آموزش رزبری پای از 0 تا 100 از مقدماتی تا پیشرفته

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

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

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

 

بینایی کامپیوتر چگونه کار می کند؟

یکی از سوالاتی که هم در علم عصب شناسی و هم در علوم هوش مصنوعی وجود دارد این است که: مغز ما دقیقا چگونه کار می کند و ما چگونه می توانیم نحوه عملکرد آن را با الگوریتم های خود تخمین بزنیم و یا به عبارتی شبیه سازی بکنیم؟

واقعیت این است که تعداد بسیار کمی از تئوری ها راجب نحوه پردازش مغز وجود دارد. بنابراین در حقیقت برای دسترسی به این هدف شبکه های عصبی و هوش مصنوعی نحوه کارکرد مغز را تقلید می کنند.

خب با این مقدمه خیلی کوتاه از چگونگی تخمین و تقلید شبکه های عصبی از عملکرد مغز میتوانیم به نحوه کار کردن بینایی کامپیوتر بپردازیم. 

می توان گفت که نکته کلیدی و نهفته در بینایی کامپیوتر شناسایی الگو است. پس یک روش برای آموزش کامپیوتر ها که چگونه داده های تصویری را درک کنند استفاده از هزاران یا میلیون ها عکس است که امکان برچسب گذاری آن ها متناسب با محتوای هر عکس وجود دارد و با استفاده از تکنیک ها و الگوریتم های نرم افزاری، کامپیوتر را به شناسایی و یادگیری الگو های موجود در تصویر متناسب با برچسب تصویر، قادر سازیم.

برای مثال اگر ما میلیون ها تصویر از یک گربه را به کامپیوتر بدهیم، کامپیوتر با استفاده از الگوریتم هایی که قادر به شناسایی و آنالیز الگوهایی مانند رنگ، شکل ها، فاصله بین شکل ها (مثلا فاصله گوش تا چشم ها)، تشخیص مرزهای بین دو شیء، تشخیص لبه های هر شیء و نظیر این که چهارچوب ماهیت ظاهری یک گربه را مشخص می کند، کامپیوتر قادر خواهد بود با استفاده از تجربه ای که در یادگیری تصاویری که با نام گربه برچسب گذاری شده بودند، تصاویری ورودی جدید از همان نوع شیء یعنی گربه را شناسایی کند.

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

1. استفاده از الگوریتم هایی که مشخص کردن و تعریف کردن ویژگی های یک تصویر حاوی یک یا چند شیء توسط افرادی که کارشان در واقع همین است و در انگلیسی از آن با نام Feature engineering یاد می شود. و سیستم از این طریق متناسب با برچسب تصاویر ویژگی ها را یاد می گیرد.

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

اما یادگیری عمیق چیست؟

 

انقلاب یادگیری عمیق

 

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

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

امروزه مدل های از پیش آموزش داده شده بسیاری از شبکه های عصبی پیچشی وجود دارد که با استفاده از میلیون ها تصویر آموزش داده شده اند مانند مدل AlexNet که در سال 2012 با استفاده از دیتاست محبوب ImageNet آموزش داده شده و البته ده ها مدل دیگر که هر یک دارای معماری و کاربرد خاص خود هستند که می توانند صد ها نوع شیء مختلف را در تصاویر تشخیص دهند.

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

 

بسیاری از کاربرد های محبوب بینایی کامپیوتر سعی در تشخیص اشیاء موجود در تصاویر را دارند.

مانند:

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

 

از موارد بالا می توان در پروژه های مختلفی نظیر خودرو های خودران، کابردهای نظامی، واقعیت افزوده، دوربین های امنیتی، دوربین های پلاک خوان و غیره استفاده کرد به عنوان نقطه شروع در بینایی کامپیوتر می توانید از مقاله هایی که در این سایت منتشر می شود استفاده کنید زیرا در آینده سعی خواهد شد از زوایای مختلف بینایی کامپیوتر را مورد بررسی قرار دهیم؛ مانند ابزار های سخت افزاری و نرم افزاری مورد نیاز بینایی کامپیوتر و پلتفرم های موجود در این زمینه و همچنین بررسی موردی کاربردهای پر استفاده بینایی کامپیوتر.

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

 

 

منابع:

https://towardsdatascience.com/everything-you-ever-wanted-to-know-about-computer-vision-heres-a-look-why-it-s-so-awesome-e8a58dfb641e

https://www.pcmag.com/news/what-is-computer-vision

https://towardsdatascience.com/what-is-deep-learning-and-how-does-it-work-2ce44bb692ac

 

 

 

در مقاله قبلی با هم با بینایی کامپیوتر آشنا شدیم و به دو سؤال بینایی کامپیوتر چیست؟ و چگونه کار می‌کند؟ به‌طور مختصر پاسخ دادیم و البته سؤال هایی را نیز مطرح کردیم که در این مقاله پاسخ خواهند یافت.

شاید برای شما مفید باشد: آموزش رزبری پای از 0 تا 100 از مقدماتی تا پیشرفته

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

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

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

 

بینایی ماشین

بینایی ماشین

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

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

در این صورت دوربین سیستم بینایی ماشین ما چه ویژگی‌هایی باید داشته باشد؟

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

 

سخت افزار سیستم‌های بینایی ماشین

سیستم‌های بینایی ماشین برای اجرای مدل‌های مختلف به عنوان واحد پردازش لزوماً نیاز به کامپیوتر ندارند و می‌توان در آن‌ها از پلتفرم‌های پردازشی مختلف مانند MCU’s, FPGA به‌صورت ON board با دوربین استفاده کرد درست مانند سیستم‌هایی که در بسیاری از ربات‌های صنعتی وجود دارد.

شاید برای شما مفید باشد: آموزش FPGA

برای مثال این لینک و این لینک نشانگر دو سیستم دوربین توسعه یافته بینایی ماشین توسط شرکت Cognex است که یکی از قدرتمند ترین شرکت های فعال در حوزه توسعه و تولید محصولات و سیستم های مرتبط با بینایی ماشین است.

 

اما پردازش تصویر کجای دنیای تصاویر قرار دارد؟

 

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

 

شاید برایتان سؤال پیش بیاید که آیا این کارها را نمی‌توان با الگوریتم‌ها و مدل‌های بینایی کامپیوتر انجام داد؟

 

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

اهمیت پردازش تصویر در پیش پردازش داده‌های تصاویر مورد استفاده در مدل‌های بینایی کامپیوتر بسیار زیاد می‌باشد زیرا مدل‌های مختلف تصاویر با ویژگی‌های مختلفی را به عنوان ورودی دریافت می‌کنند. همچنین کاربرد پردازش تصویر در داده افزایی داده‌های آموزشی مورد استفاده در مدل‌ها و در خروجی مدل‌ها برای بصری سازی نتایج انکار ناپذیر است.

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

 

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

 

نقشه راه

  • پرداختن به یادگیری عمیق و شبکه‌های عصبی پیچشی
  • بررسی انواع یادگیری و پرداختن به یادگیری انتقالی
  • معرفی پلتفرم‌های مورد استفاده برای آموزش و پیاده سازی مدل‌های بینایی کامپیوتر
  • یک مقاله کامل درباره وظایف و کاربردهای بینایی کامپیوتر
  • معرفی کتابخانه OpenCV با نگرش بینایی کامپیوتر
  • تشریح فریموورک Tensorflow و مدل MobileNet
  • حل مسئله کلاس بندی اشیاء
  • بررسی پیاده سازی مدل‌های بینایی کامپیوتر روی کامپیوترهای تک بردی از جمله Raspberry pi and Nano Jetson
  • بررسی وجود امکانات پیاده سازی مدل‌های هوش مصنوعی مرتبط با بینایی کامپیوتر روی میکرو کنترلر ها
  • آموزش بهینه سازی مدل‌های بینایی کامپیوتر برای پیاده سازی روی امبدد سیستم‌ها و کامپیوترهای تک بردی
  • پیاده سازی یک مدل کلاس بند اشیاء روی Raspberry pi 4

طبیعتاً با توجه به بازخوردهایی که از سوی شما دوستان دریافت می‌کنیم مطالب از جهاتی قابل انعطاف خواهند بود. سؤالات و نظرات خودتان را با ما در میان بگذارید.

 

منابع

AnalyticsindiaMag

cognex

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

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

2 دیدگاه در “بینایی کامپیوتر در هوش مصنوعی و یادگیری عمیق

  1. Avatar for محمد فاطمیه محمد فاطمیه گفت:

    ممنونم از مطالب خوبتون چند وقت پیش فیلمی در ted دیدم از خانم fei fei li که یکی از متخصصین در حوزه بینایی ماشین حتما ویدئو ایشون رو ببینید بسیار جالبه …قدم بعدی بینایی ماشین تفصیر چیزی که دیدنه…یعنی مثلا اگر چند نفر داخل عکس هستن و یک کیک و گل و.. متوجه بشه مشغول چه کاری هستن …و یه جمله معروف داره که میگه ما به ماشین ها یاد میدیم که چطور ببینند . که بعد اونا به ما یاد بدن بهتر ببینیم…

    1. Avatar photo یاسر عزیز زاده گفت:

      ممنون از حسن نظرتون دوست عزیز
      بله این ویدئو را دیده بودم و بنظر من هم ارزش دیدنش رو داره.
      برای علاقمندان لینک ویدئو رو قرار میدم https://www.youtube.com/watch?v=40riCqvRoMs
      این کاربرد با نام “عنوان بندی تصویر به انگلیسی image captioning” چند سالی هست که داره روش کار میشه.
      ممنون میشم اگر راجع به این کاربرد یا کاربرد های دیگه بینایی کامپیوتر تجربه یا سوالی دارید با مخاطبان سایت از طریق همین درگاه درمیان بگذارید.
      خانم fei fei li در پروژه های بزرگی همکاری داشتند که فکر می کنم یکی از مهمترین هاش دیتاست محبوب ImageNet هستش که توی همین مقاله ازش نام برده شده.

دیدگاهتان را بنویسید

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