Intel® FPGA Academic Program Teaching Materials
Artificial Intelligence
Summary
This is an advanced course in AI design using FPGA devices with the Intel® SDK for OpenCL™ applications. The assignments provide application-specific details for popular AI use cases. Supplementary guides are provided to teach writing and optimizing OpenCL code. Topics covered include:
- Canny edge-detection technique
- Hough transform
- Linear classifier for handwritten digits
- Convolutional neural network classifier for handwritten digits
By the end of this course, students will have practical knowledge of:
- Using the Intel SDK for OpenCL applications with FPGAs for a variety of common AI applications
- The improvements OpenCL kernels can offer in various situations
- How FPGAs can be used to accelerate AI inference
Professors: To request solutions, source material, software licenses, and teaching hardware, enroll in the Intel® FPGA Academic Program.
Resources
Prerequisites
Recommended Tools & Tutorials
- Intel FPGA SDK for OpenCL software technology on DE-Series boards
- Linux on DE-Series Boards
Lab 2: Accelerating Computer Vision Techniques
Implement a variation of the Canny edge-detection technique to illustrate the improvement you can get with OpenCL™.
- Write, compile, and run a C++ language program to implement the five stages of the Canny edge-detection technique.
- Devise an efficient memory architecture for storing the pixel values as they undergo transformations at each canny stage.
- Create an OpenCL application using shift registers.
Lab 3: Lane Detection for Autonomous Driving
Learn about the Hough transform and how it can be used for detecting lanes in an autonomous driving application.
- Write, compile, and run a C language program to implement the Hough transform.
- Create an OpenCL kernel for the Hough transform, and run and compare it with the C language program completed in Lab 1.
- Improve the performance of the OpenCL program using pipes to eliminate external memory.
Lab 4: Classification of Handwritten Digits: Linear Classifier
Explore a machine learning approach to classifying handwritten digits using the MNIST database and a linear classifier program.
- Write, compile, and run a C++ program to classify 10,000 MNIST test images.
- Implement an OpenCL kernel that completes the same task.
- Analyze the reports and modify your program to use fixed-point arithmetic and compare performance differences.
Lab 5: Classification of Handwritten Digits: CNN Classifier
Repeat the tasks in Lab 4 using a convolutional neural network (CNN) classifier.
- Write, compile, and run a C++ program to classify 10,000 MNIST test images, and then record the runtime and calculate the accuracy.
- Implement an OpenCL kernel that completes the same task.
- Devise a neural network topology that improves on the accuracy you obtained in the previous lab exercise, considering necessary trade-offs in accuracy, runtime, and FPGA resource use.