آموزش پروژه FPGA: شتاب‌دهنده CNN برای تشخیص اعداد - آخرین آپدیت

دانلود FPGA Project: CNN Accelerator for Digit Recognition

نکته: ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
توضیحات دوره: از مفاهیم بنیادی تا استقرار کامل یک شتاب‌دهنده CNN روی Zynq FPGA درک مفاهیم پایه شبکه عصبی کانولوشنی (CNN) درک مدل پایتونی CNN درک طراحی RTL شتاب‌دهنده CNN یکپارچه‌سازی شتاب‌دهنده CNN با پردازنده ARM روی Zynq FPGA توسعه یک رابط کاربری گرافیکی (GUI) تحت وب برای تعامل با شتاب‌دهنده CNN پیش نیازها: دانش بنیادی FPGA، زبان Verilog HDL و معماری کامپیوتر تسلط بر Zynq FPGA و محیط توسعه Vivado تسلط بر برنامه‌نویسی پایتون و عملیات خط فرمان لینوکس

آیا می‌خواهید شتاب‌دهی هوش مصنوعی روی FPGA را بیاموزید؟

این دوره آنلاین پروژه-محور، بینش‌های عملیدر مورد طراحی شتاب‌دهنده‌های AI، به‌ویژه الگوریتم CNNبرای طبقه‌بندی اعداد دست‌نویسارائه می‌دهد. تمرکز این دوره بر سطح طراحی سیستماست؛ یعنی چگونه یک ماژول CNN(نوشته شده با Verilog RTL) را با پردازنده کاربردی در حال اجرای لینوکسیکپارچه کنیم. نتیجه نهایی این پروژه، یک وب‌اپلیکیشنبرای دریافت عدد دست‌نویس و ارسال داده‌ها جهت پردازش توسط شتاب‌دهنده CNNروی FPGAاست. به طور متوسط، با استفاده از این شتاب‌دهنده در مقایسه با CPU، یک ضریب افزایش سرعت 12 برابریبه دست می‌آید.

نکته:

  • این دوره برای مبتدیان مطلق در توسعه FPGA مناسب نیست. انتظار می‌رود پیش از ثبت‌نام، درک پایه‌ای از طراحی FPGA با استفاده از Zynq و فریم‌ورک PYNQ داشته باشید، زیرا این مبانی در دوره پوشش داده نمی‌شوند. همچنین آشنایی با Verilog و Python الزامی است.

  • در این دوره از Vivado 2022.1 و برد Xilinx Kria KV260 استفاده شده است، اما مفاهیم محدود به این ابزارها یا پلتفرم‌ها نیست. شما می‌توانید از نسخه‌های دیگر Vivado یا بردهای FPGA متفاوت نیز استفاده کنید.


CNN چیست؟

شبکه عصبی کانولوشنی (CNN) نوعی مدل یادگیری عمیق است که به‌ویژه برای پردازش داده‌هایی با ساختار شبکه‌ای مانند تصاویر مناسب است. این شبکه با یادگیری خودکار سلسله‌مراتب ویژگی‌های مکانی از طریق لایه‌هایی که عملیات کانولوشن (عملیات ریاضی برای استخراج ویژگی‌هایی مانند لبه‌ها، بافت‌ها و اشکال) را انجام می‌دهند، عمل می‌کند. معمولاً پس از این لایه‌ها، لایه‌های Pooling قرار می‌گیرند که ابعاد مکانی را برای کارآمدتر کردن محاسبات و جلوگیری از بیش‌برازش (Overfitting) کاهش می‌دهند. لایه‌های نهایی معمولاً کاملاً متصل (Fully Connected) هستند و طبقه‌بندی یا رگرسیون را بر اساس ویژگی‌های یاد گرفته شده انجام می‌دهند. CNNها به دلیل توانایی در ثبت الگوهای مکانی، به طور گسترده در کارهای بینایی ماشین مانند تشخیص تصویر، تشخیص اشیاء و تشخیص چهره استفاده می‌شوند.

شتاب‌دهنده CNN چیست؟

شبکه‌های CNN به دلیل محاسبات متراکم، به‌ویژه در عملیات کانولوشن، روی FPGA به شتاب‌دهنده نیاز دارند، زیرا این عملیات روی پردازنده‌های معمولی می‌تواند کند و энерго‌بر (مصرف‌کننده انرژی) باشد. FPGAها پردازش موازی، معماری قابل سفارشی‌سازی و تأخیر کمتری را ارائه می‌دهند که آن‌ها را برای افزایش سرعت وظایف CNN در حالی که بهره‌وری انرژی حفظ شود، ایده‌آل می‌کند. این موضوع به‌ویژه برای کاربردهای بلادرنگ مانند رانندگی خودکار یا دستگاه‌های لبه (Edge Devices) که محدودیت‌های عملکرد و توان در آن‌ها حیاتی است، بسیار ارزشمند است.

چرا از Zynq FPGA استفاده کنیم؟

بردهای Zynq FPGA توسعه یافته توسط Xilinx به دلیل ترکیب منطق برنامه‌پذیر (FPGA fabric) و پردازنده‌های ARM یکپارچه روی یک تراشه، برای شتاب‌دهی CNN بسیار مناسب هستند. این معماری ترکیبی اجازه می‌دهد تا پردازش موازی با عملکرد بالا در لایه‌های CNN در بخش FPGA انجام شود، در حالی که وظایف کنترلی و پیش/پس پردازش روی هسته‌های ARM مدیریت شوند. Zynq با انعطاف‌پذیری، تأخیر کم و بهره‌وری انرژی، اجرای بهینه شتاب‌دهنده‌های سفارشی CNN را ممکن می‌سازد و آن را برای کاربردهای تعبیه شده و بلادرنگ مانند رباتیک، وسایل نقلیه خودران و دوربین‌های هوشمند ایده‌آل می‌کند.


یادگیری را از امروز شروع کنید—همین حالا ثبت‌نام کنید!

تمام کدهای منبعدر این دوره در دسترس است. پس از اتمام دوره، یک گواهینامه معتبر پایان دورهدریافت خواهید کرد. ضمانت بازگشت وجه ۳۰ روزه Udemy در صورت عدم رضایت، به شما اجازه می‌دهد بدون ریسکمطالعه کنید. در دوره می‌بینمتون!


سرفصل ها و درس ها

شبکه عصبی کانولوشنی Convolutional Neural Network

  • مقدمه‌ای بر شبکه عصبی کانولوشنی Introduction to Convolutional Neural Network

  • کدهای منبع Source Code

  • معماری CNN برای اعداد MNIST CNN Architecture for MNIST Digit

  • مدل CNN برای اعداد MNIST CNN Model for MNIST Digit

طراحی RTL شتاب‌دهنده CNN RTL Design of CNN Accelerator

  • ماژول RTL بافر کانولوشن The RTL Module of Convolution Buffer

  • ماژول RTL محاسبات کانولوشن The RTL Module of Convolution Calculation

  • ماژول RTL لایه‌های Max Pooling و ReLU The RTL Module of Max Pooling and ReLU

  • ماژول RTL لایه کاملاً متصل (Fully Connected) The RTL Module of Fully Connected

  • یکپارچه‌سازی لایه‌های CNN CNN Layers Integration

یکپارچه‌سازی SoC شتاب‌دهنده CNN SoC Integration of CNN Accelerator

  • ماژول RTL پوشش‌دهنده (Wrapper) AXI Stream The RTL Module of AXI Stream Wrapper

  • طراحی بلوکی سیستم ZYNQ Block Design of ZYNQ System

  • تست عملکردی و کارایی Functional and Performance Testing

توسعه وب تعبیه شده Development of Embedded Web

  • توسعه بک‌اند و فرانت‌اند Backend and Frontend Development

  • گام‌های بعدی چیست؟ What comes next?

نمایش نظرات

آموزش پروژه FPGA: شتاب‌دهنده CNN برای تشخیص اعداد
جزییات دوره
1 hour
14
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
328
4.3 از 5
دارد
دارد
دارد
Erwin Ouyang
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Erwin Ouyang Erwin Ouyang

مهندس R&D ، محقق (1000+ دانشجو در Udemy) اروین با بیش از 1000 دانشجو در Udemy علاقه مند به میکروکنترلر و FPGA است. وی به عنوان مهندس تحقیق و توسعه در یک شرکت نوپا کار کرد. وی سیستم عامل و نرم افزاری را برای سیستم تماس دیجیتال پرستار و سیستم کنترل دسترسی درب با AVR ATmega و چارچوب دات نت توسعه داد. وی نرم افزاری برای رابط بین تجهیزات آزمایشگاهی بالینی و سیستم اطلاعات آزمایشگاهی با سوکت RS-232 و TCP توسعه داد. وی مدرک کارشناسی ارشد خود را در رشته مهندسی الکترونیک در سال 2018 دریافت کرد. وی در حال حاضر یک محقق در مرکز میکروالکترونیک ITB است. علایق اصلی تحقیق وی در ارتباطات نور مرئی/LiFi و یادگیری عمیق است. وی چندین مقاله با عنوان "پیاده سازی هم پردازنده سیستولیک برای استنتاج شبکه عصبی عمیق بر اساس SoC" و "طراحی لایه PHY سیستم OFDM-VLC بر اساس SoC با استفاده از روش استفاده مجدد" در IEEE Xplore منتشر کرد. او در وبلاگهای خود (Hands-On Embedded) آموزشهای مربوط به سیستم تعبیه شده را می نویسد.