Parameterizable Convolution Accelerator Design

Results of the Design

The project developed a flexible and parameterizable Convolution Accelerator, easily extended to handle complex image processing tasks. We implemented a convolutional layer with modifiable input channel count and input feature map size, optional pooling, and dynamic threshold adjustments.

Demonstrating the accelerator's parameterizable capabilities, we presented a configuration with 16 input channels, each channel sized at 28x28. . Specific processing tasks such as image fusion, edge detection, or dynamic threshold processing were applied on this convolutional layer, as described below:

  -   Static Scene:
The input comprises two groups of 8 channels. The first channel in the first group displays a left Taichi diagram, and the first channel in the second group displays a right Taichi diagram, as shown in Figure 20. The remaining channels are all black. The outputs include one channel showing merged images and another showing edge detection.

Figure 20: Static Scene Result

  -   Dynamic Scene:
This setup is identical to the static scene in terms of input and output but is dynamic due to changing input thresholds. This demonstrates the accelerator's flexibility in adjusting thresholds to optimize edge detection.

Figure 21: Dynamic Scene Result

  -   Pooling Scene:
Similar to the static scene but with added functionality to implement pooling in the image processing sequence.

Figure 22: Pooling Scene Result

The ModelSim demo below shows the contents of the OFM buffer, which is then transferred to the HPS as the IFM of next layer based on user usage.

Figure 23: Data in OFM buffer

Users can control the rate of threshold changes via command line inputs, aiding in finding an appropriate threshold for edge detection. At the program's initial run, users can also input image and other control parameters. Moreover, by slightly modifying the C code, multiple convolutional layers can be connected to create a multi-layer CNN. This accelerator's high parameterizability allows it to adapt to various processing needs and environments and is easily augmented with new functionalities.