# finn-examples
**Repository Path**: robert_Philbaz/finn-examples
## Basic Information
- **Project Name**: finn-examples
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2022-03-19
- **Last Updated**: 2022-03-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
##
Dataflow Accelerator Examples
*for PYNQ on Zynq and Alveo*
This repository contains a variety of customized FPGA neural network accelerator
examples built using
the [FINN compiler](https://github.com/Xilinx/finn), which
targets few-bit quantized neural networks with emphasis on
generating dataflow-style architectures customized for each network.
The examples here come with
pre-built bitfiles, PYNQ Python drivers and Jupyter notebooks to get started,
and you can rebuild them from source.
Both PYNQ on Zynq and Alveo are supported.
Need help with a problem in this repo, or got a question? Feel free to ask for help in the [FINN Gitter channel](https://gitter.im/xilinx-finn/community).
## Quickstart
*For Alveo we recommend setting up everything inside a virtualenv as described [here](https://pynq.readthedocs.io/en/v2.6.1/getting_started/alveo_getting_started.html?highlight=alveo#install-conda).*
*For PYNQ boards, all commands below must be prefixed with `sudo` or by first going into `sudo su`.*
First, ensure that your `pip` and `setuptools` installations are up-to-date
on your PYNQ board or Alveo server:
```shell
python3 -m pip install --upgrade pip setuptools
```
Install the `finn-examples` package using `pip`:
```shell
# remove previous versions with: pip3 uninstall finn-examples
pip3 install finn-examples
# to install particular git branch:
# pip3 install git+https://github.com/Xilinx/finn-examples.git@dev
```
Retrieve the example Jupyter notebooks using the PYNQ get-notebooks command:
```shell
# on PYNQ boards, first cd /home/xilinx/jupyter_notebooks
pynq get-notebooks --from-package finn-examples -p . --force
```
You can now navigate the provided Jupyter notebook examples, or just use the
provided accelerators as part of your own Python program:
```python
from finn_examples import models
import numpy as np
# instantiate the accelerator
accel = models.cnv_w2a2_cifar10()
# generate an empty numpy array to use as input
dummy_in = np.empty(accel.ishape_normal, dtype=np.uint8)
# perform inference and get output
dummy_out = accel.execute(dummy_in)
```
## Example Neural Network Accelerators
| Dataset | Topology | Quantization | Supported boards |
|----------------------------------------------------------------|-------------------------|------------------------------------------------------------|------------------|
| 
CIFAR-10 | CNV (VGG-11-like) | several variants:
1/2-bit weights/activations | all |
| 
MNIST | 3-layer fully-connected | several variants:
1/2-bit weights/activations | all |
| 
ImageNet | MobileNet-v1 | 4-bit weights and activations
8-bit first layer weights | Alveo U250
ZCU104 |
| 
ImageNet | ResNet-50 | 1-bit weights 2-bit activations
4-bit residuals
8-bit first/last layer weights | Alveo U250 |
| 
RadioML 2018 | 1D CNN (VGG10) | 4-bit weights and activations | ZCU104 |
| 
MaskedFace-Net | [BinaryCoP](https://arxiv.org/pdf/2102.03456)
*Contributed by TU Munich+BMW* | 1-bit weights and activations | Pynq-Z1 |
| 
Google Speech Commands v2 | 3-layer fully-connected | 3-bit weights and activations | Pynq-Z1 |
We welcome community contributions to add more examples to this repo!
## Supported Boards
*Note that the larger NNs are only available on Alveo or selected Zynq boards.*
`finn-examples` provides pre-built FPGA bitfiles for the following boards:
* **Edge:** Pynq-Z1, Pynq-Z2, Ultra96 and ZCU104
* **Datacenter:** Alveo U250
It's possible to generate Vivado IP for the provided examples to target *any*
modern Xilinx FPGA of sufficient size.
In this case you'll have to manually integrate the generated IP into your design
using Vivado IPI.
You can read more about this [here](build/README.md).
## Rebuilding the bitfiles
All of the examples here are built using the [FINN compiler](https://github.com/Xilinx/finn), and can be re-built or customized.
See the [build/README.md](build/README.md) for more details.