آنچه در این صفحه می خوانید:
- بینایی رایانه ای (Computer vision) چیست؟
- بینایی رایانه ای (Computer vision) چگونه کار می کند؟
- کاربرد بینایی رایانه ای (Computer vision)
- نرم افزار های بینایی رایانه ای (Computer vision)
بینایی رایانه ای (Computer vision) چیست؟
بینایی رایانه یک رشته علمی میان رشته ای است که به چگونگی ساخت رایانه ها برای دستیابی به درک سطح بالا از تصاویر یا فیلم های دیجیتال می پردازد. از منظر مهندسی، به دنبال اتوماسیون کارهایی است که سیستم تصویری انسان قادر به انجام آن است. کارهای بینایی رایانه شامل روش هایی برای دستیابی، پردازش، تجزیه و تحلیل و درک تصاویر دیجیتالی و استخراج داده های با ابعاد بالا از دنیای واقعی به منظور تولید اطلاعات عددی یا نمادین است. اشکال تصمیم گیری و درک در این زمینه به معنای تبدیل تصاویر (ورودی شبکیه) به توصیفاتی از جهان پیرامون ما است که می تواند با دیگر فرآیندهای فکری واسط داشته باشد و اقدام مناسب را برانگیزد. این درک تصویر را می توان از بین بردن اطلاعات نمادین از داده های تصویر با استفاده از مدل های ساخته شده با کمک هندسه، فیزیک، آمار و نظریه یادگیری مشاهده کرد.
به عنوان یک رشته علمی، بینایی رایانه ای در رابطه با نظریه پس زمینه سیستم های هوش مصنوعی است که اطلاعات را از تصاویر استخراج می کند. داده های تصویر می توانند اشکال مختلفی مانند توالی های ویدئویی، نمایش از چندین دوربین یا داده های چند بعدی از یک اسکنر پزشکی داشته باشند. به عنوان یک رشته فناوری، دید رایانه به دنبال استفاده از تئوری ها و مدل های خود برای ساخت سیستم های بینایی در کامپیوتر است. حوزه های فرعی دید رایانه شامل بازسازی صحنه، تشخیص رویداد، ردیابی ویدئو، تشخیص اشیاء، برآورد سه بعدی، یادگیری، نمایه سازی، تخمین حرکت و بازیابی تصویر است.
بینایی رایانه ای (Computer vision) چگونه کار می کند؟
یکی از مهمترین سؤالات باز در زمینه علوم اعصاب و یادگیری ماشینی این است: مغز ما دقیقاً چگونه کار می کند، و چگونه می توانیم با الگوریتم های خاص خودمان آن را پیاده سازی کنیم؟ واقعیت این است که تئوری های کار و جامع در مورد محاسبات مغز بسیار اندک هستند. بنابراین علی رغم این واقعیت که شبکه عصبی قرار است "روش کار مغز را تقلید کند"، هیچ کس کاملاً مطمئن نیست که آیا این حقیقتاً صحیح است یا خیر.
همین پارادوکس برای دید رایانه ای صادق است، از آنجا که ما در مورد چگونگی پردازش تصاویر از مغز و چشم تصمیم نگرفته ایم، دشوار است که بگوییم الگوریتم های به کار رفته در تولید، فرآیندهای ذهنی داخلی خود را چقدر خوب ارزیابی می کنند. به عنوان مثال، مطالعات نشان داده اند که برخی کارکردهایی که فکر می کنیم در مغز قورباغه ها اتفاق می افتد در واقع در چشم ها رخ می دهد. عدم قطعیت مشابه در شناخت انسان نیز وجود دارد. ماشین ها تصاویر را بسیار ساده تفسیر می کنند: به عنوان یک سری پیکسل ها، هر کدام مجموعه ای از مقادیر رنگی خود را دارند. در تصویر ساده زیر، چگونگی تبدیل مقادیر خاکستری به یک آرایه ساده از اعداد نشان داده شده:
به عنوان یک شبکه غول پیکر از مربع های مختلف یا پیکسل ها به یک تصویر فکر کنید. هر پیکسل در یک تصویر معمولاً از 0 - 255 توسط یک عدد قابل نمایش است. سری اعداد در سمت راست همان چیزی است که نرم افزار هنگام وارد کردن تصویر می بیند. برای تصویر ما 12 ستون و 16 ردیف وجود دارد، بدین معنی که 192 مقدار ورودی برای این تصویر وجود دارد. وقتی شروع به افزودن رنگ می کنیم، مسائل پیچیده تر می شوند. رایانه ها معمولاً رنگ را به صورت مجموعه ای از 3 مقادیر - قرمز، سبز و آبی (RGB)، در همان مقیاس 0 - 255 می خوانند. اکنون، هر پیکسل در واقع 3 مقدار دارد که کامپیوتر علاوه بر موقعیت خود، آن را ذخیره کند. اگر بخواهیم تصویر بالا را رنگ آمیزی کنیم، این منجر به مقادیر 12 16 16 x 3 یا 576 عدد خواهد شد. برای برخی از دیدگاه ها در مورد چگونگی گران بودن این محاسبات، این درخت را در نظر بگیرید:
- هر مقدار رنگ در 8 بیت ذخیره می شود.
- 8 بیت x 3 رنگ در هر پیکسل = 24 بیت در هر پیکسل.
- یک تصویر معمولی با ابعاد 1024 76 768 x 24 بیت در هر پیکسل = تقریباً 19M بیت یا حدود 2.36 مگابایت.
این حافظه زیادی است که به یک تصویر نیاز دارد و پیکسل های زیادی برای تکرار یک الگوریتم. اما برای آموزش یک مدل با دقت معنی دار، به ویژه هنگامی که در مورد یادگیری عمیق صحبت می کنید، معمولاً به ده ها هزار تصویر نیاز دارید و این شایستگی بیشترخواهد بود. حتی اگر قرار بود از Transfer Learning استفاده کنید تا از بینش یک مدل که قبلا آموزش دیده، استفاده کنید، هنوز به چند هزار تصویر برای آموزش مهارت های خود نیاز خواهید داشت. با توجه به قدرت و محاسبات زیاد محاسباتی که فقط برای آموزش مدل های یادگیری عمیق برای بینایی رایانه ای وجود دارد، درک این مسئله که چرا پیشرفت در این دو زمینه باعث شده است ماشین یادگیری به چنین درجه ای برود، دشوار نیست.
کاربرد بینایی رایانه ای (Computer vision)
برنامه های بی پایانی وجود دارد که در آن توانایی استخراج معانی از "دیدن" داده های بصری مفید است. بینایی رایانه با استفاده از فن آوری های دیگر مانند واقعیت های تقویت شده و مجازی برای فعال کردن قابلیت های اضافی به کار برده می شوند.
تشخیص چهره
تشخیص چهره، که از دید رایانه ای استفاده می کند، برای سیستم های نظارت و امنیت و همچنین فناوری فیسبوک استفاده می شود که افراد را برای "برچسب زدن" در عکس ها مشخص می کند. چین از فناوری تشخیص چهره در کار پلیس، درگاه های پرداخت و موارد دیگر استفاده می کند. حتی فروشگاه های خرده فروشی از این فناوری برای نظارت بر موجودی، ردیابی مشتریان از طریق فروشگاه استفاده می کنند و به مشتریان این امکان را می دهند که با پرداخت تقریباً زمانی که فناوری تشخیص چهره موارد را در صورتحساب خود قرار می دهد، از صندوق پول دور بزنند.
خودرو های خودران
بسیاری از تولیدکنندگان خودرو از فورد تا تسلا در تلاش هستند نسخه خود را از خودروهای خودران به تولید انبوه برسانند. بینایی رایانه یک فناوری مهم است که وسایل نقلیه خودمختار را امکان پذیر می کند. سیستم های موجود در وسایل نقلیه خودمختار بطور مداوم داده های بصری را از علائم جاده گرفته تا دیدن وسایل نقلیه و عابران پیاده در جاده پردازش می کنند و سپس مشخص می کنند چه اقدامی باید انجام شود.
علم پزشکی
بینایی رایانه ای در پزشکی به تشخیص بیماری و سایر بیماری ها کمک می کند و باعث می شود دید جراحان در حین عمل افزایش یابد. اکنون اپلیکیشن های گوشی های هوشمند وجود دارد که به شما امکان می دهد با استفاده از دوربین گوشی شرایط پوستی را تشخیص دهید. در حقیقت، 90 درصد از کل داده های داخلی اشعه ایکس، اسکن و غیره مبتنی بر تصویر هستند و اکنون بسیاری از این داده ها با استفاده از الگوریتم ها قابل تجزیه و تحلیل هستند.
بازاریابی دیجیتالی
بازاریابی دیجیتالی با استفاده از رایانه ها برای مرتب سازی و تجزیه و تحلیل از طریق میلیون ها تصویر آنلاین، بازاریابان می توانند از تحقیقات سنتی جمعیتی دور بزنند و باز هم بازاریابی را به مخاطبان آنلاین مناسب هدایت کنند و این کار را بطور چشمگیری سریعتر از آنچه ممکن است انسان انجام دهند، انجام دهند. بازاریابان حتی از دید رایانه ای استفاده می کنند تا اطمینان حاصل کنند که تبلیغات در نزدیکی محتوا قرار نمی گیرند که برای مخاطبان آن متناقض یا مشکل ساز باشد.
موسسات مالی
موسسات مالی برای جلوگیری از کلاهبرداری، اجازه سپرده های تلفن همراه و نمایش اطلاعات عددی بصری از دید رایانه ای استفاده می کنند. در ساخت، بینایی کامپیوتر کارایی، کارآمدتر و ایمن تر را ایجاد می کند. این در نگهداری پیش بینی برای شناسایی یک مسئله قبل از هرگونه خرابی و همچنین در اقدامات کنترل کیفیت استفاده می شود. مقدار کالاهایی که یک ماشین می تواند از توانایی انسان در انجام همان کارها بطور چشمگیری تأیید کند.
صنعت كشاورزي
صنعت كشاورزي از ديد كامپيوتر براي موفق تر كردن عمليات با نظارت بر زمينه هايي كه به دنبال علائم بيماري يا آفات است، استفاده مي كند، بنابراين مي توان اقدام به سرعت در جهت از بين بردن آن كرد. جان دیر یک محصول زراعی کمباین نیمه مستقل را معرفی کرد که می تواند پس از تجزیه و تحلیل کیفیت دانه های برداشت شده، مسیر بهینه را از طریق محصولات کشاورزی پیدا کند.
استخراج و تجزیه و تحلیل دست نویس
در استخراج و تجزیه و تحلیل دست نویس، دید رایانه ای می تواند یادداشت های دست نویس را به فرمت های دیجیتالی تبدیل کند که سهیم شدن با دیگران در شرکت ها را آسان تر می کند.
کاربردهای دید رایانه به قدری متنوع است که تصور کردن مشاغلی که نتواند از آن سود ببرد سخت است. برنامه های کاربردی از وظایفی مانند سیستم های دید در ماشین آلات صنعتی است که به عنوان مثال، بطری هایی را که با سرعت در یک خط تولید قرار دارند، بررسی می کنند تا در زمینه هوش مصنوعی و رایانه ها یا روبات هایی که می توانند دنیای اطراف خود را درک کنند، بررسی کنند. زمینه های بینایی و رایانه با هم همپوشانی قابل توجهی دارند. دید رایانه فناوری اصلی تجزیه و تحلیل تصویر خودکار را که در بسیاری از زمینه ها استفاده می شود، پوشش می دهد. بینایی ماشین معمولاً به فرآیندی از ترکیب تجزیه و تحلیل خودکار تصویر با روش ها و فناورهای دیگر برای ارائه بازرسی خودکار و هدایت ربات در کاربردهای صنعتی اشاره دارد. در بسیاری از برنامه های بینایی رایانه، رایانه ها برای حل یک کار خاص از قبل برنامه ریزی شده اند، اما روش های مبتنی بر یادگیری اکنون به طور فزاینده ای رایج شده اند. نمونه هایی از برنامه های بیانیی رایانه ای شامل سیستم هایی برای:
- بازرسی خودکار، به عنوان مثال، در برنامه های تولید؛
- کمک به انسان ها در کارهای شناسایی، به عنوان مثال، یک سیستم شناسایی گونه ها.
- فرآیندهای کنترل، به عنوان مثال، یک ربات صنعتی.
- تشخیص وقایع، به عنوان مثال، برای نظارت بصری یا شمارش افراد.
- تعامل، به عنوان مثال، به عنوان ورودی دستگاهی برای تعامل رایانه و انسان.
- مدل سازی اشیاء یا محیط ها، به عنوان مثال، تجزیه و تحلیل تصویر پزشکی یا مدل سازی توپوگرافی.
- ناوبری، به عنوان مثال، توسط یک وسیله نقلیه خودران یا ربات سیار
- سازماندهی اطلاعات، به عنوان مثال، برای فهرست بندی پایگاه داده های تصاویر و دنباله های تصویر.
نرم افزار های بینایی رایانه ای (Computer vision)
Computer Vision طی یک دهه گذشته به طور پیوسته در حال پیشرفت بوده است، اما به لطف اجرای آن در زمینه هایی مانند IoT، ساخت، مراقبت های بهداشتی، امنیتی و غیره اخیرا، افزایش تصویب انواع ابزارهای دید در کامپیوتر وجود داشته است. ابزارهای بینایی رایانه طی سال های متمادی تکامل یافته است، به حدی که اکنون دید رایانه ای نیز به عنوان یک سرویس ارائه می شود. علاوه بر این، پیشرفت های سخت افزاری مانند GPU و همچنین ابزارهای یادگیری ماشین و فریمورک ها باعث می شود دید رایانه درحال حاضر بسیار قدرتمندتر شود. ارائه دهندگان خدمات اصلی ابر مانند گوگل، مایکروسافت و AWS همگی به انتخاب گزینه توسعه دهندگان پیوسته اند. اما کدام ابزار را باید انتخاب کنید؟ در اینجا لیستی از ابزارهای برتر را به شما ارائه خواهم داد و به شما کمک می کنم بر اساس نیاز خود، کدام یک را انتخاب کنید.
ابزارهای دیداری رایانه ای و کتابخانه ها
- OpenCV: در دید رایانه ای OpenCV یک ابزار بینایی رایانه ای عالی است که با سی پلاس پلاس و همچنین پایتون به خوبی کار می کند. OpenCV با تمام تکنیک ها و الگوریتم های لازم برای انجام چندین کار پردازش تصویر و فیلم از قبل ساخته شده است. استفاده از آن بسیار آسان است و این باعث می شود محبوب ترین کتابخانه بینایی رایانه در حال حاضر شود! این نرم افزار چند پلتفرمی است و به شما امکان می دهد برنامه هایی برای لینوکس، ویندوز و اندروید بسازید. در عین حال، اشکالاتی نیز دارد. هنگام کار با مجموعه داده های عظیم یا تصاویر بسیار بزرگ کمی کند عمل می شود. علاوه بر این، به خودی خود، پشتیبانی از GPU نخواهد داشت و برای پردازش GPU به CUDA متکی است.
- Matlab: ابزاری عالی برای ایجاد برنامه های پردازش تصویر است و در تحقیقات بسیار مورد استفاده قرار می گیرد. دلیل این امر این است که Matlab امکان نمونه سازی سریع را می دهد. جنبه جالب دیگر این است که کد Matlab نسبت به ++C مختصر است و باعث می شود خواندن و اشکال زدایی راحت شود. قبل از اجرا با ارائه راه هایی برای سریعتر کردن کد، با خطاها مقابله می کند. در روند نزولی، Matlab یک ابزار پرداخت شده است. همچنین، در صورتی که این چیزی است که شما را بسیار نگران می کند می تواند در طول زمان بسیار کند شود. Matlab ابزار مورد استفاده شما در یک محیط تولید واقعی نیست، زیرا در اصل برای نمونه سازی و تحقیق ساخته شده است.
- AForge.NET/Accord.NET: از اینکه می دانید پردازش تصویر اگر یک برنامه نویس سی شارپ و دات نت هستید، به لطف AForge / Accord، ممکن شده است، هیجان زده شوید. این یک ابزار عالی است که فیلترهای زیادی دارد و برای دستکاری تصاویر و تحولات مختلف فوق العاده است. آزمایشگاه پردازش تصویر امکان فیلتر کردن مانند تشخیص لبه و موارد دیگر را فراهم می کند. استفاده از AForge بسیار ساده است زیرا تنها کاری که باید انجام دهید تنظیم پارامترها از رابط کاربری است. علاوه بر این، سرعت پردازش آن بسیار مناسب است.با این حال، AForge قدرت و قابلیت های ابزارهای دیگری مانند ، مانند تجزیه و تحلیل پیشرفته تصاویر متحرک یا حتی پردازش پیشرفته در تصاویر را ندارد.
- TensorFlow: به دلیل قدرت و سهولت استفاده، طی چند سال اخیر محبوبیت زیادی کسب کرده است. این امکان را به شما می دهد تا قدرت Deep Learning را به بینایی رایانه منتقل کنید و دارای برخی ابزارهای عالی برای انجام پردازش / طبقه بندی تصویر می باشد و در واقع یک تانسور گرافیکی شبیه API است. علاوه بر این، می توانید از API Python برای انجام تشخیص چهره و بیان استفاده کنید. شما همچنین می توانید طبقه بندی را با استفاده از تکنیک هایی مانند رگرسیون انجام دهید. Tensorflow همچنین به شما امکان می دهد دید رایانه ای با ابعاد فوق العاده ای را انجام دهید. علاوه بر این، اگر می خواهید یاد بگیرید که چگونه پردازش تصویر را با TensorFlow انجام دهید، باید درک کنید که Machine و Deep Learning چیست، الگوریتم های خود را بنویسید و سپس از آنجا به جلو بروید.
- CUDA: سکویی برای محاسبات موازی است که توسط انویدیا اختراع شده است. این امر با افزایش قدرت GPU باعث افزایش چشمگیر در محاسبه عملکرد می شود. CUDA Toolkit شامل کتابخانه NVIDIA Performance Primitives است که مجموعه ای از عملکردهای پردازش سیگنال، تصویر و فیلم است. اگر تصاویر زیادی برای پردازش دارید، می توانید از CUDA استفاده کنید. برنامه CUDA آسان است و بسیار کارآمد و سریع است. در روند نزولی، مصرف برق بسیار بالا است و در کارهای موازی خود را برای توزیع حافظه تغییر می دهد.
- SimpleCV: فریمورکی برای ساخت برنامه های دید در کامپیوتر است. این امکان را به شما می دهد تا به تعداد زیادی از ابزارهای دید در رایانه در مورد OpenCV ،pygame و غیره دسترسی پیدا کنید. اگر نمی خواهید به اعماق پردازش تصویر بروید و فقط می خواهید کار خود را انجام دهید، این ابزاری است برای دستان خود را روی اگر می خواهید نمونه سازی سریع را انجام دهید، SimpleCV به شما بهترین خدمات را می دهد. گرچه، اگر هدف شما از استفاده از آن در محیط های سنگین تولید باشد، نمی توانید انتظار داشته باشید كه آن را در سطح OpenCV انجام دهد.
- GPUImage: یک فریمورک یا یک کتابخانه iOS است که به شما امکان می دهد جلوه ها و فیلترهای شتاب یافته GPU را بر روی تصاویر، فیلم ها با حرکت مستقیم و فیلم ها اعمال کنید. این در OpenGL ES 2.0 ساخته شده است. اجرای فیلترهای سفارشی در یک GPU نیاز به کد زیادی برای تنظیم و نگهداری دارد. GPUImage تمام آن برنامه را کاهش می دهد و کار را برای شما انجام می دهد.
بینایی رایانه ای به عنوان یک سرویس
- Mobile Vision API: سرویس هایGoogle Cloud و Google Cloud Vision API به برنامه نویسان امکان می دهد پردازش تصویر را با استفاده از مدل سازی قدرتمند یادگیری ماشین در یک API ساده REST که می توان در یک برنامه انجام داد، را انجام دهد. همچنین، این ویژگی قابلیت تشخیص نوری (OCR) به شما امکان می دهد متن را در تصاویر خود تشخیص دهید. API Mobile Vision به شما امکان می دهد با استفاده از فناوری دید در real-time، اشیاء را در عکس و فیلم تشخیص دهید. همچنین به شما امکان می دهد بارکد و متن را اسکن و تشخیص دهید.
- Amazon Recognition: یک سرویس تجزیه و تحلیل تصویر و تصویر مبتنی بر یادگیری عمیق است که باعث می شود اضافه کردن تجزیه و تحلیل تصویر و فیلم به برنامه های شما، بسیار آسان شود. این سرویس می تواند اشیاء، متن، افراد، صحنه ها و فعالیت ها را شناسایی کند و علاوه بر ارائه تحلیل دقیق چهره و تشخیص چهره برای تحلیل احساسات، می تواند محتوای نامناسبی را نیز تشخیص دهد.
- Microsoft Azure Computer Vision API: ای API مایکروسافت کاملاً نظیر به نظیر است و به شما امکان می دهد تصاویر را تجزیه و تحلیل کنید، متن را در آن ها بخوانید و فیلم را در real-time تجزیه و تحلیل کنید. همچنین می توانید محتوای بزرگ را پرچم گذاری کنید، ریز تصاویر ایجاد کنید و دست خط را بشناسید.
- SciPy و NumPy: من فکر کردم که من این موارد را نیز اضافه کنم، زیرا تعداد کمی از توسعه دهندگان از پایتون برای ساختن برنامه های بینایی در رایانه استفاده می کنند. SciPy و NumPy به اندازه کافی قدرتمند هستند تا پردازش تصویر را انجام دهند. scikit-image یک بسته Python است که به پردازش تصویر اختصاص دارد و از آرایه های NumPy و SciPy بصورت اشیاء تصویر استفاده می کند. علاوه بر این، شما می توانید از محیط محاسباتی گرافیکی IPython جالب استفاده کنید.
این ها ابزارهای برتر برای بینایی رایانه ای و پردازش تصویر بودند. برای دستیابی به کار با برخی از ابزارهای برتر مورد استفاده در صنعت، این منابع را مرور کرده و بررسی کنید.