ابزارهای بینایی ماشین و کتابخانه‌‍‌ها

آیا تا به حال به این موضوع فکر کرده‌اید که ماشین یا ربات چگونه می‌تواند تصاویر را شناسایی کند؟ این کار به لطف یک حوزه تحقیقاتی بین رشته‌ای تحت عنوان «بینایی رایانه » امکان‌پذیر شده است. ابزارهای بینایی ماشین چیست؟ به همان شیوه‌ای که چشم در مشاهده و ارائه واکنش نسبت به محیط پیرامون به انسان کمک می‌کند، الگوریتم‌های یادگیری ماشین و یادگیری عمیق و همچنین قطعات سخت‌افزاری از قبیل دوربین و حسگر با یکدیگر در رایانه فعالیت می‌کنند تا این هدف محقق شود. بینایی ماشینقدرت ادراک، دسته‌بندی، شناسایی و ارائه واکنش به اجسام پیرامون را به ماشین اعطا می‌کند.محققان طیف وسیعی از ابزارها و کتابخانه‌های نرم‌افزاری ساخته‌اند تا پروژه‌ها و نرم‌افزارهای گوناگون را با بینایی ماشین تقویت کنند. مقاله حاضر بر آن است تا خوانندگان را با برخی از این ابزارها و کتابخانه‌های مشهور و پرکاربرد آشنا کند. پس تمرکز اصلی مقاله، آشناسازی و آگاهی‌بخشی به خوانندگان در خصوص این فناوری‌ها است. انتظار می‌رود افراد پس از مطالعه دقیق این مقاله به اطلاعات خوبی در خصوص چگونگی استفاده از ابزارها و کتابخانه‌ها در نرم‌افزارهایشان دست پیدا کنند.اکنون به معرفی این لیست می‌پردازیم:معرفی OPENVINOبینایی ماشینبینایی ماشینحدود ۸۰ درصد از رایانه‌های شخصی به پردازنده اینتل مجهز هستند. پس اصلاً جای تعجب نیست که ماشین‌هایِ مورد استفاده‌ی شما نیز به احتمال ۸۰ درصد مجهز به پردازنده اینتل باشد. حال سوال این است که چرا اینتل؟ توسعه‌دهندگان کارشان را به خوبی بلد هستند و قابلیت ساخت بهترین پردازنده‌ها را دارند. اما این تنها دستاورد اینتل نیست. اینتل با ساخت تول‌کیتی برای طیف کثیری از نرم‌افزارهای هوش مصنوعی، در عرصه مدل‌های تقاضامحور پیشگام است. این نرم‌افزارها عمدتاً بر پایه بینایی ماشین قرار دارند.اینتل تول‌کیت OpenVINO خود را در روز ۱۶ مِه ۲۰۱۸ روانه بازار کرد. این تول‌کیت با زبان برنامه‌نویسی C++ و پایتون نوشته شده است. VINO خلاصه شدۀ عبارت «استنتاج بصری و بهینه‌سازی شبکه عصبی» است. شاید این عبارت برایتان بیگانه باشد، اما واقعیت این است که اگر با آن عبارات آشنایی داشته باشید، در همان نگاه اول تشخیص می‌دهید که این تول‌کیت چه کاربردی دارد. پس بگذارید کار را شروع کنیم. استنتاج . این اصطلاح به معنای استفاده از مدل است و تا حد زیادی به استفاده از مدل آموزش دیده برای پیش‌بینی اشاره می‌کند. در استنتاج بصری، از مدل آموزش دیده برای پیش‌بینی مسائل در مرجع بصری استفاده می‌شود؛ رویکردی که در بینایی ماشین هم به کار برده می‌شود. عبارت بعدی، «بهینه‌سازی شبکه عصبی» است و به بهینه‌سازی شبکه عصبی در آموزشِ شبکه اشاره می‌کند. همین قدر کافی است! این اطلاعات مختصر برای پی بردن به کارکرد OpenVINO کفایت می‌کند. این تول‌کیت به بهینه‌سازیِ مدلِ آموزش دیده پرداخته و می‌تواند بطور مستقیم ابزارهایی را برای استفاده از آن مدل فراهم نماید تا استنتاج بصری به سرعت انجام پذیرد. به همین سادگی!این تول‌کیت در چه جاهایی کاربرد دارد؟OpenVINO همیشه از شما می‌خواهد که یک مدلِ از پیش آموزش دیده در اختیارش قرار دهید. این تول‌کیت هیچ ابزاری ارائه نمی‌کند تا با آن مدل‌ مورد نظرتان را توسعه دهید یا به کدنویسی آن بپردازید. امکانات این تول‌کیت می‌تواند در مراحل بعدی به کار بیاید. تول‌کیت OpenVINO از چندین مدلِ از پیش آموزش داده شده تشکیل یافته است و تحت مولفه تول‌کیت «Model Zoo» ارائه شده است که امکان استفاده مستقیم از این مولفه وجود دارد. باید این نکته را به خاطر داشته باشید که «Model Zoo» تول‌کیتِ مخصوص توسعه مدل نیست. از دید نرم‌افزاری، این تول‌کیت برای بهینه‌سازی و استقرار مدل به کار برده می‌شود.موارد کاربرد این تول‌کیت در بخش زیر خلاصه می‌شود:• بهینه‌سازی الگوریتم‌ها• استفاده آسان از الگوریتم‌ها در هر پلتفرمی• استفاده از «Model Zoo» با هدف بکارگیریِ مدلی که بهترین عملکرد را در مسئله مورد نظر کاربر داشته باشد.• استفاده از موتور استنتاج• بهینه‌سازی قابلیت‌های پردازش تصویر با استفاده از OpenCVمطمئنم هیجان زیادی دارید که خودتان این تول‌کیت را امتحان کنید. خب توصیه می‌کنیم به این لینک مراجعه کنیدمعرفی OpenCVدور از انصاف است که درباره کتابخانه‌های بینایی ماشین حرف بزنید، اما اشاره‌ای به OpenCV نکنید. OpenCV کتابخانه پردازش تصویری است که سه شرکت به نام اینتل، Itseez و Willow Garage در طراحی و ساخت آن ایفای نقش کرده‌اند. این کتابخانه از سال ۲۰۰۰ در دسترس کاربران قرار گرفته است. کتابخانه OpenCV عمدتاً با زبان برنامه‌نویسی C++ نوشته شده، اما برخی از ماژول‌ها با C نوشته شده‌اند. این کتابخانه برخلاف OpeNvino کاربردهای بسیار زیادی دارد. این کتابخانه قادر است مراحل پیش‌آموزش مدل و پیش‌استقرار را با تاکید بیشتر بر پردازش تصویر انجام دهد.البته OpenCV می‌تواند در موارد زیر به کار برده شود:• کارهای پیش‌پردازش مثل مقیاس‌دهی، حذف نویز و سایر کارهای فرمتینگ در تصویر یا ویدئو.• این کتابخانه می‌تواند برای اجرای ۲۵۰۰ مدل بهینه‌سازی شده استفاده گردد؛ مدل‌هایی که در این کتابخانه گنجانده شده‌اند.• این کتابخانه می‌تواند برای توسعه جدیدترین مدل‌ها در بینایی ماشین و یادگیری ماشین به کار برده شود.• OpenCV برای توسعه مدل‌ها از دسته‌های مختلف نیز کاربرد دارد؛ از جمله این دسته‌ها می‌توان به تشخیص و بازشناسی چهره، تشخیص اشیاء، استخراج مدل سه‌بعدی و هر کاربرد دیگری که به ذهن‌تان می‌رسد، اشاره کرد.OpenCV کتابخانه‌ای فوق‌العاده است که جامعه کاربران وسیعی دارد و بیش از ۴۷۰۰۰ توسعه‌دهنده در این جامعه عضویت دارند. این توسعه‌دهندگان برای هر مسئله‌ای که با آن مواجه می‌شوید، جواب دارند. نه تنها برخی از استارت‌آپ‌های بزرگ از این کتابخانه استفاده می‌کنند، بلکه غول‌های حوزه فناوری از قبیل گوگل، یاهو و مایکروسافت نیز به استفاده از OpenCV می‌پردازند. یکی از موارد استفادۀ کتابخانه OpenCV، تشخیص چهره است. OpenCV این امکان را در اختیار کاربر می‌گذارد تا فعالیت‌های پردازش تصویر و الگوریتم‌های پیش‌بینی را به نحو احسن انجام دهد. نه تنها می‌توانید از الگوریتم شناسایی اشیاء استفاده کنید، بلکه این فرصت را دارید تا از ابزار «ردیابی اشیاء» برای ردیابی چهره به صورت فریم به فریم در ویدئو نیز استفاده نمائید. افزون بر این، OpenCV امکان آزمایش مدل را در ویدئوی زنده و حتی ویدئوی از پیش ضبط شده نیز فراهم می‌کند. حاضرید که کار رو شروع کنید؟ به این لینک مراجعه کنید و اولین مدل‌تون رو با این کتابخانه امتحان کنید.پلتفرم‌های سرویس ابریبینایی ماشینبینایی ماشیناگر بحث از چارچوب‌های بینایی ماشین باشد و نامی از غول‌های فناوری در آن نباشد، شاید این تصور در ذهن ایجاد شود که گوگل این مقاله را در موتور جستجویش ندارد. گوگل محصول خود را «Vision AI» نامگذاری کرده است که اساساً دو محصولِ AutoML Vision و Vision API را دربرمی‌گیرد. این محصول به قدری GUI ساده ای دارد که هر شخصی می‌تواند برای آموزش الگوریتم‌های بینایی از آن بهره ببرد. خب برای به کارگیری آن باید چه کار کنیم؟ فقط کافی است تصاویر را بارگذاری کنید و مدلی انتخاب کنید تا فرایند آموزش بر روی آن پیاده‌سازی شود. تمام! به همین سادگی! آمازون هم ابزاری تحت عنوان Amazon Rekognition دارد که این فرصت را به کاربران می‌دهد تا مدل‌های یادگیری عمیق‌ شان را به راحتی استفاده کنند. مایکروسافت نیز خدمات ابری Azure را عرضه کرده است و از این طریق API بینایی رایانه را اجرا می‌کند تا مدل‌های بینایی رایانه را در ابر پردازش و تحلیل کرده و توسعه‌شان دهد. شرکت IBM دو موتور بینایی رایانه فوق‌العاده موسوم به Watson Visual Recognition و PowerAI Vision دارد.امکان استفاده از Watson Visual Recognition برای تجزیه و تحلیل تصاویر و ویدئوها وجود دارد. هدف از این کار، دسته‌بندی و سایر امور مرتبط با یادگیری ماشین است. PowerAI Vision زمینه را برای آموزش مدل‌های بسیار دقیق فراهم می‌کند و نیازی به تخصص در یادگیری عمیق ندارد. همه راه‌حل‌های ابری به این جهت ایجاد شده‌اند که کاربران بتوانند به راحتی مدل‌های بینایی ماشین را توسعه داده و به کار گیرند؛ بدون اینکه تخصص فنی بالایی در این زمینه داشته باشند. البته باید برای استفاده از این خدمات مبلغی را پرداخت کنید. میلیون‌ها کاربر از این خدمات برای توسعه نرم‌افزارهای گوناگون استفاده می‌کنند؛ محصولات خود شرکت‌ها نیز با بهره‌گیری از این فناوری‌ها توسعه داده شده است. گویا هیچ یک از غول‌های فناوری قصد ندارند به راحتی از رقابت برای ارائه خدمات بینایی رایانه پا پس بکشند.میز کار بینایی ناساشاید این موضوع اصلاً به ذهن‌مان خطور نکند، اما ناسا نیاز زیادی به کتابخانه‌های پردازش تصویر دارد و شاید در این راستا به استفاده از کتابخانه خاص خودش روی آورد. بنابراین، بخش «سیستم‌های هوشمند مرکز تحقیقات Ames» طراحی و توسعه کتابخانه «میز کار بینایی» را بر عهده داشت. این کتابخانه به زبان C++ نوشته شده است. برخلاف سایر کتابخانه‌ها، VWB توان بالایی برای ارائه مدل‌هایی با عملکرد نوین ندارد. VWB به منظور تجزیه و تحلیل تصاویر فضایی ساخته شده است. این کتابخانه در پیشبرد اهداف تحقیقاتی و رباتیک نقش بسزایی خواهد داشت.کتابخانه VWB در امور زیر کاربرد دارد:• تحلیل تصاویر• افزایش کیفیت تصاویر• تبدیلات هندسی و فضایی برای تجسم تصاویر• ایجاد مدل‌های مختصر و فشرده برای بکارگیری در موتورهای رباتیک فضاییمعرفی NVIDIA VISIONWORKSهمه به این موضوع واقف‌اند که Nvidia بهترین کارت‌های گرافیک را برای آموزش سریع مدل‌های بینایی ماشین عرضه می‌کند. اما Nvidia کتابخانه مخصوص خود را برای توسعه مدل‌های بینایی ماشین توسعه داده که VisionWorks نام دارد. افراد می‌توانند با استفاده از VisionWorks خطوط لوله بینایی ماشین خود را با استفاده از ماژول‌‍‌های ساده و فوق‌العادۀ این تول‌کیت بسازند. VisionWorks این فرصت را به کاربران می‌دهد تا کارهای زیر را انجام دهند:• کارهای رباتیک، توسعه الگوریتم‌های محلی‌سازی و ردیاب‌های تصویری سریع• نرم‌افزارهای مبتنی بر واقعیت افزوده؛ گرفتن خروجی سریع‌تر از کارهای گرافیکی• تحلیل هوشمند ویدئورانندگی خودران یکی از بهترین موارد کاربرد است که راهبرد طراحی شده با VisionWorks آن را محقَق ساخته است. این کتابخانه یک رابط برنامه‌نویسی بینایی CUDA مستقیم در اختیار توسعه‌دهنده‌ها گذاشت و توسعه سریعِ شناساگر‌های اشیاء را آسان کرد. شناسایی اشیاء یکی از ویژگی‌های کلیدی در رانندگی خودکار محسوب می‌شود. VisionWorks زمینه را برای ردیابی و تحلیلِ آسان چندین صحنه به صورت توامان فراهم می‌کند. این تول‌کیت باعث می‌شود از حداکثر توان پردازنده Nvidia در موارد بینایی ماشین استفاده کنید. این موضوع را فراموش نکنید که نیازی به دانش سرشار در خصوص چگونگی کارکرد این کتابخانه‌ها ندارید. به محض اینکه بینش خوبی درباره توان این کتابخانه‌ برای ارائه ورودی و خروجی کسب کردید، موارد استفاده عملی از آنها را نیز یاد خواهید گرفت.منبع: hooshio.com