Artificial Intelligence

Lab 1: Get Started with the Intel® SDK for OpenCL™ Applications

Prepare hardware and software for this course.

  • Compile and run the provided programs.
  • Examine the various reports, calculate the expected runtime, and compare to the actual runtime.
  • Rerun the exercise with the provided modified kernel.

Download

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.

Download

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.

Download

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.

Download

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.

Download