# Organization



This documentation project consists of a introductory chapter to get the user up to speed on the general concepts and after that there are 3/4 main chapters that represent the development of the applications and the deployment of the YOLO model on the board. The set of chapters will constitute a step-by-step tutorial so you can do this yourself.



***

1. **Introduction** - Important concepts of the project will be addressed here. This section is also very important to understand how everything will be done, linking all the necessary tools.
2. **Requirements** - This is where we will talk about everything you need to do this project. The description will cover Software, Hardware, the space you need, the installations, etc.
3. **DPU Implementation** - On this chapter we are going to create a special piece of Hardware that is able to perform various Neural Network structures. The Hardware is called DPU (DeepLearning Processing Unit) and it can be done on the Xilinx software Vivado so it can later be implemented on the FPGA. For the PYNQ-Z2 to understand this Hardware, we will have to create a SD card image with the DPU implementation. For that there will be used another Xilinx tool called Petalinux.
4. **Model optimization and Compilation** - Here is the phase where we compress the YOLO model so it can fit the PYNQ-Z2 board. As you might expect, Deep Learning models are quite resource expensive and demanding so in order to make it match the restrictions of the board, we will have to optimize it. To do that we will be using DNNDK - a Xilinx program designed to compress Deep Learning models on various boards on their lineup. On this phase we will also need to create a special file that can communicate with the DPU so it can understand the Neural Network we are working with.
5. **Deployment on PYNQ-Z2** - This chapter is where we make the YOLO model work on the board. First we will set up the board and then we will go through the DNNDK API and the development of the c++ code to run the YOLO inference and show on a window the results with the detection's.
6. **Metrics** - Here we will briefly go through the process of obtaining metrics for the YOLO model and we will discuss its meanings on this context.



**Concept check:**

* [ ] Introduction - Present the important concepts and explain how the project will be done;
* [ ] Requirements - Explain what tools you need to develop the project yourself;
* [ ] DPU implementation - Develop a Hardware to run on the PYNQ-Z2 capable of simulating Neural Networks like YOLO;
* [ ] Model optimization and compilation - Compress the YOLO model to send to the PYNQ-Z2 in a format the DPU can understand;
* [ ] Deployment on PYNQ-Z2 - Tie everything together to effectively run YOLO inference on a image;
* [ ] Metrics - How to measure some parameters of your YOLO model after compression;

