واحدهای پردازش بینایی (VPU)
اکثر مواقع، پاسخی که در مقابل این پرسش «از چه کارت گرافیکی استفاده کنم؟» میشنویم، این است: «NVIDIA». زیرا این کارت گرافیک به شتابدهندههای CUDA و CUDNN مجهز است. این دو شتابدهنده در مدلهای یادگیری عمیق به کار برده میشود و فقط کارت گرافیک NVIDIA از آنها پشتیبانی میکند. اگر کارت گرافیکی که از آن استفاده میکنید به NVIDIA تعلق ندارد، احتمالاً از زمان دیگری آمدهاید. در ادامه با واحدهای پردازش بینایی آشنا خواهید شد.
شرکت اینتل چند سال پیش تراشه جدیدی روانۀ بازار کرد که تا به امروز مورد توجه قرار گرفته است. این تراشه علیرغم اندازه کوچکی که دارد، از قدرت بالایی برخوردار است. این تراشه واحد پردازش بینایی Vision Neural Network یا به اختصار «VPU» نام دارد. افزایش سرعتِ الگوریتمهای بینایی ماشین از قبیل شبکههای عصبی پیچشی Convolution Neural Network یا حتی شناساگرهای ویژگی نظیر SIFT، SURF و غیره در دستورِ کار این واحد پردازش قرار دارد.
سرعت شاتل
شاتل میتواند تا 30 کیلومتر بر ساعت سرعت داشته باشد. اگر این میزان را با رقبای دیگری که با شاتلهایی با سرعت 5 اِلی 8 ساعت بر کیلومتر داشتند مقایسه کنید، میبینید که چه پیشرفت بزرگی حاصل آمده است. در اوایل شاتل کاملاً جدید بود و GPU بر روی آن نصب نشده بود.
در عکس زیر، GPU به خوبی توضیح داده شده است:
همان طور که در تصویر فوق ملاحظه میکنید، GPU (واحد پردازش گرافیک) فرایندها را به حالت موازی در میآورد تا عملیات سریعتر انجام شوند.
در اتومبیل خودران، بینایی رایانه یا پردازش ابری نقطهای میتواند از GPU مُنتفع شود. GPU برای نخستین بار در بازیهای رایانهای به کار گرفته شد، چرا که میبایست عناصر گوناگون به طور همزمان نمایش داده میشد. اگرچه GPUها ابزاری فوقالعاده برای آموزش یادگیری عمیق برشمرده میشوند، اما در حال حاضر به سطح قابل قبولی برای استفاده در این زمینه نرسیدهاند. اینجاست که «واحدهای پردازش بینایی» یا «VPU» وارد عمل میشود.
VPU به منظور تمرکز بر روی الگوریتمهای بینایی و استقرار Deployment یا کاربرد عمَلی طراحی شده است. عمل «استقرار» کماکان از جمله فرایندهای سخت و پیچیده است. اگر در پیدا کردن کد متن باز با دشواری روبرو شویم، مجبوریم خودمان دست به کار شویم.
[irp posts=”24669″]اجرای همزمانِ چند الگوریتم
به محض دریافت GPU، باید اجرای الگوریتمهای بینایی رایانه را در دستور کار قرار داد. تشخیص مانع، Obstacle detection ردیابی مانع، obstacle tracking تشخیص چراغهای راهنمایی و رانندگی، تشخیص خطوط، بخشبندی مناطق قابل رانندگی، ردیابی ویژگی، پیشبینی رفتار عابر پیاده pedestrian behavioral prediction و غیره… کارهای زیادی برای انجام دادن وجود داشت.
میبایست هر کدام از این کارها در شبکه عصبی انجام میشدند. در همین راستا، حافظه GPU مورد استفاده قرار گرفت. واضح و مبرهن بود که GPU NVIDIA GTX 1070 قادر نیست همه این کارها را به طور همزمان انجام دهد. پس از اینکه سه یا چهار الگوریتم کلیدی در GPU به کار بردیم، متوجه شدیم که هنوز به پردازش ابری Cloud Computing نیاز است. این ابرها خروجیِ LiDAR هستند؛ یعنی میلیونها ابر در هر ثانیه میتواند وجود داشته باشد. GPU با RAM کار میکند وتنها با یک یا دو شبکه عصبی که بطور همزمان فعالیت میکنند، تکمیل میشود.
علاوه بر این، از سه دوربین و سه LiDAR استفاده شد. تکرار از مولفههای مهم کار بود. بنابراین، به زوایا، لنزها و گزینههای مختلف احتیاج بود. در واقع همه این کارها باید سه بار انجام میشد.
اما فضای صندوق اتومبیل خودران محدود است. گرما خطرناک است و فَن میتواند سروصدای زیاد داشته باشد. واقعیت این است که اجرای الگوریتم در چهار GPU گاهی خیلی دشوار و غیرعملی میشود، به ویژه در وسیلهای که تعبیه شده باشد.
VPU در اینجا به داد انسان میرسد. واحدهای پردازش بینایی یا VPU به پردازشهای نوظهوری گفته میشود که اکنون مورد توجه زیادی قرار گرفتهاند. فرقشان با بقیه این است که 100 درصد در اختیار بینایی رایانه قرار دارند.
شکل ظاهریِ واحدهای پردازش بینایی یا VPU
همانطور که میبینید همانند usb است. این پاسخِ اینتل به NVIDIA است؛ که البته بسیار قدرتمند نیز است. محصولات بزرگتری هم دارند، اما همگی از تراشه یکسانی به نام Movidius Myriad X که درونشان تعبیه شده، استفاده میکنند.
معماری
حال، بیایید معماری پیشرفتۀ این تراشه را بررسی کنیم. همان طور که مشاهده میکنید، یک موتور رایانش عصبی وجود دارد که برای شبکههای عصبی، شتابدهندههای بینایی، شتابدهندههای عکسبرداری، CPU و چند سختافزار دیگر بهینهسازی شده تا بر میزان قدرت و کارآیی آنها افزوده شود. Movidius Myriad X برای شبکههای عصبی پیچشی و عملیات پردازش تصویر طراحی شده است.
دمو
اینتل نشان داد که این تراشه چه عملکردی در شناسایی عابران پیاده، تخمین سِن، دستهبندی جنسیتی، تشخیص چهره، جهت حرکت بدن، برآورد حالت روحی و غیره دارد. در مجموع، شش شبکه عصبی مختلف در یک وسیله کوچک اجرا میشود. این عملیات بدون مواجهه با مشکلات حافظه نمیتوانست در کارت گرافیک NVIDIA اجرا شود.
واحدهای پردازش بینایی یا VPU چه خصوصیات بارز دیگری دارد؟
• هیچ تعاملی با فضای ابری برقرار نمیشود. پس هیچ تاخیری در کار نیست. حریم خصوصی هم تا حد زیادی برقرار است.
• VPU از یک تولکیت و یک SDK به نام OpenVINO برخوردار است که میتواند کتابخانههای یادگیری عمیق CNN را در موتور رایانش عصبی در تنسورفلو و Caffe اجرا کند.
• هنگام اجرای الگوریتمها در دستگاه USB، میتوانید بقیه رایانه و GPU را برای برنامههای دیگری از قبیل پردازش ابری نقطهای آزاد کنید.
• میتوانید از چند USB برای افزایش توان استفاده کنید.
[irp posts=”19199″]نحوۀ انجام کار
اگرچه کلیه جزئیات به صورت علنی اعلام نشده است، اما میتوان به صورت عمَلی این کار را بررسی کرد. اینتل در 14 مِه 2020 اقدام به برگزاری یک وبینار کرد. برخی از مباحث مطرح شده شامل این موارد بود:
• رمزگذاری و رمزگشایی با استفاده از تولکیت OpenVINO انجام میشود.
• عملیات پیشپردازش با استفاده از OpenCV یا سایر کتابخانهها انجام میشود و عمدتاً شامل تغییر اندازه و مطابقتِ تصویر با الزامات شبکه میباشد.
• استنتاج inference با یکی از نقشهای ویژۀ ابزار انجام میشود. این کار مستلزم استفاده از VPU، CPU، GPU و FPGA است.
در حال ورود به دورهای هیجانانگیز هستیم. Intel NCS 2 در پهپادها و رباتهای کوچک به کار برده شده و کاربردهای گوناگونی هم در IoT داشته است. این ابزار محبوبیت بالایی در میان افراد کسب کرده است. در حال حاضر، عجولانه است که به طور قطعی اظهار نظر کنیم، اما انتظار میرود بازار در سالهای آتی با رشد قابل ملاحظهای همراه باشد.
این احتمال را تصور کنید که دیگر حافظه یا قدرت پردازش مانع بزرگی نباشد. محدودیتهایی که یادگیری عمیق در حوزههای پزشکی، رباتیک یا ساخت پهپاد با آنها مواجه است، میتواند تا حد زیادی کاهش یابد. بسیار جذاب است!