The purpose of this group assignment is to gain a deeper understanding of convolutional neural networks (CNNs) by implementing 2D convolution, min pooling, and max pooling on PNG images for AI deep learning purposes using C programming language and CUDA (Compute Unified Device Architecture).
First, we will begin by discussing the theory behind 2D convolution and the importance of convolutional layers in CNNs. Then, we will implement 2D convolution on a set of PNG images using C and CUDA. We will explore the effect of varying kernel size and stride on the output of the convolution operation. Additionally, we will also examine the performance impact of using CUDA to accelerate the computation.
Next, we will move on to discussing the concept of pooling and its role in CNNs. We will then implement min pooling and max pooling on the output of the convolution operation using CUDA and compare the results with the output obtained without pooling.
The group will then present the findings and results from the implementation in a formal report, which should include a detailed description of the methods used, the results obtained, and an analysis of the impact of the various parameters on the output of the convolution and pooling operations. Additionally, the group will also include a discussion of the implications of these findings for AI deep learning and future work in this field. It is expected that the report should also include a comparison of the performance of the implemented algorithm on both CPU and GPU.
To complete this assignment, it is expected that each group member will contribute to the implementation and report writing, and actively participate in group discussions. This assignment will provide a hands-on experience with implementing and analyzing CNNs using C and CUDA, and will aid in building a deeper understanding of these powerful deep learning models and the performance benefits of GPU acceleration.