عنوان
|
پیاده سازی شبکه عصبی مبتنی بر اف پی جی ای در زمان واقعی و توان مصرفی کم
|
نوع پژوهش
|
پایان نامه
|
کلیدواژهها
|
تشخیص اشیا، شبکه عصبی پیچشی، آرایه دروازه قابل برنامه ریزی میدانی، سنتز سطح بالا
|
چکیده
|
استفاده از FPGA برای پیادهسازی شبکههای عصبی از جمله کاربردهای جذابی است که توجه بسیاری از محققان و مهندسان را به خود جلب کرده است. دلیل محبوبیت FPGA برای پیادهسازی شبکههای عصبی به دلایل بسیاری بستگی دارد. مانند تنظیمپذیری (Reconfigurability)، این ویژگی اصلی FPGA، به کاربر امکان میدهد تا ساختار داخلی FPGA را بر اساس نیاز خود بهینهسازی کند. این امر به توانایی سریع بروزرسانی سختافزار و تغییر تنظیمات برای شبکههای عصبی مختلف منجر میشود. همزمانی (Parallelism)، شبکههای عصبی به طور معمول دارای محاسبات همزمان بسیار بالا هستند که میتوانند بهرهوری آنها را افزایش دهند. FPGA از همزمانی در محاسبات بهرهمند است که باعث افزایش سرعت اجرای شبکههای عصبی میشود. مصرف انرژی کم FPGA ها معمولاً به دلیل استفاده بهینه از منابع سختافزاری و پیادهسازی مخصوص شبکههای عصبی، مصرف انرژی کمتری نسبت به سایر پلتفرمها از جمله پردازندههای عمومی دارند. برای پیاده سازی شبکه های عصبی بر روی FPGA می توان از ابزارهای سنتز سطح بالا نیز استفاده کرد. FPGAها به دلیل قابلیت تنظیمپذیری (reconfigurability)، همزمانی (parallelism)، و پردازش با سرعت بالا، بسیار مناسب برای کاربردهای زمان واقعی (real-time) هستند. در این پژوهش، اجرای هر یک از لایههای شبکه عصبی باید در زمان بسیار کم و مشخصی ارائه شوند تا بتوانند بهدرستی کنترل یا پاسخگویی به ورودیهای در زمان حقیقی را انجام دهند. به همین دلیل از برخی از روشهای تست قسمتهای اصلی شبکه عصبی در این پژوهش استفاده کردهایم تا هم زمان طراحی شتابدهنده کاهش پیدا کند و هم بسیاری از بهینهسازیهای مربوط به لایههای مختلف شبکه عصبی بهخوبی مطالعه شود. در این پژوهش، طراحی و بهینهسازی تمام قسمتهای شبکه عصبی YOLOv7-tiny بهصورت کامل و با استفاده از تکنیکهای بهینهسازی انجام شده است. ابزارهای سنتز سطح بالا (HLS) یک سطح بالاتر از طراحی را برای FPGAها فراهم میکنند که طراحان را قادر میسازند تا بر جنبههای طراحی سطح بالا مانند الگوریتمها تمرکز کنند و به جزئیات پیادهسازی سختافزار سطح پایین توجه نکنند. در این پژوهش با استفاده از زبان برنامهنویسی C++ یکی از جدیدترین شبکههای تشخیص اشیا که شبکه عصبی YOLO است را با استفاده از فناوریهای مختلف موجود در نرمافزار Vitis-HLS و با بهکارگیری اتصالات لایه به لایه و تکنیکهای استخراج ویژگی مانند شبکههای هرم را بر روی FPGAهای خانواده Zynq پیادهسازی میکنیم. نتایج این پژوهش، شامل یک روش برای پیادهسازی شبکه YOLOv7-tiny روی FPGAs با استفاده از ابزارهای HLS است. ما تجزیه و تحلیل جامعی از عملکرد و استفاده از منابع شتابدهندههای مبتنی بر FPGA ارائه میدهیم. روشهای استفاده شده در این تحقیق، نتایج بسیار خوبی را برای نیازهای برنامههای زمان واقعی مانند تاخیر نشان میدهند. به ویژه، کار ما باعث کاهش 90% استفاده از واحدهای پردازش سیگنال دیجیتال (DSP) میشود و تا 60% از فلیپفلاپها نسبت به طراحیهای جدیدتر را ذخیره میکند، در حالی که مصرف بلوک RAM و جدولهای جستجو (LUT) در این پژوهش به ترتیب برابر با 1092 و 59 هزار واحد بوده است که برای شبکه عصبی YOLOv7-tiny بسیار مناسب می باشد. در این پژوهش، تمامی قسمت های شبکه عصبی به صورت مجزا و در قالب قسمت های قابل اجرا در فاز شبیه سازی تست شده اند که در همه این موارد شاهد مصرف منابع تقریبا مناسبی برای کاربردهای زمان-واقعی بوده ایم. همچنین، به دست آوردن نتیجه طراحی شبکه با تاخیر کلی 15 میلیثانیه بسیار مناسب برای برنامههای زمان واقعی است. همچنین، ما یک روش برای استفاده از منابع BRAM و دسترسی به حافظههای خارجی ارائه خواهیم داد.
|
پژوهشگران
|
هادی جهانی راد (استاد راهنما)، ادیب حسینی (دانشجو)
|