Benchmark

Datasets

Dataset is selected based on maximum resolution of the image to be processed, number of pixels processed per clock cycle (NPPC) and few other function specific parameters.

Performance

Resource utilization numbers along with the achieved Frames Per Second (FPS) are represented for standalone kernel for both Full HD(1920x1080) and 4K(3840x2160) image resolutions. CPU numbers are an average of 100 runs and are calculated on Intel(R) Xeon(R) CPU E5-2680 @ 2.70GHz.

Note

Some of the reference functions against which benchmark is done, although follow similar algorithm as Vitis Vision function, doesnot match functionally with the corresponding Vitis Vision function because of different output format. In such cases there are two reference functions, one, a standard function, used to calculate the performance which can be enabled or disabled through the macro “__XF_BENCHMARK” defined in the config file. The other is internal reference function used for verifying functional correctness against the Vitis Vision function.

Table 1 Performance on FPGA
Algorithm Dataset FPS(CPU) FPS(FPGA) LUT BRAM FF DSP
Resolution NPPC other params
Canny Edge tracing 4K 8 L1 Norm, Filter - 3x3 9 95 31408 132 19148 96
FHD 8 L1 Norm, Filter - 3x3 25 333 17451 65 11256 63
Harris Corner Detection 4K 8 L1 Norm, Filter - 3x3 22 289 40460 227 27236 208
FHD 8 L1 Norm, Filter - 3x3 62 1100 22478 113 16021 138
Fast Corner Detection 4K 8 NA 79 289 21171 10 13396 0
FHD 8 NA 186 1100 20437 10 14322 0
Kalman filter NA 1 SV - 16x16x16 6.57ms (latency) 0.55 ms (latency) 59342 98 90762 361
Lk Dense Pyramidal Optical Flow(2 frames) 4K 1 5 iterations, 5 levels 0.15 3 30781 182 26169 83
FHD 1 5 iterations, 5 levels 0.63 12 30839 107 25714 83
Corner Tracker (2 frames) 4K 1 MAXCORNERS-10K 0.53 3 37547 225 35089 115
FHD 1 MAXCORNERS-10K 2 11 34624 129 34198 115
Colordetect 4K 1 Filter - 3x3 15 289 16523 176 9145 3
FHD 1 Filter - 3x3 28 1100 9961 91 5432 1
Gaussian difference 4K 1 Filter - 3x3 126 289 27235 35 37426 281
FHD 1 Filter - 3x3 500 1100 15146 19 22032 193
Bilateral filter 4K 8 Filter - 3x3 72 289 22523 35 22862 65
FHD 8 Filter - 3x3 200 1100 12513 18 13451 44
Stereo LBM 4K 1 PARALLEL Units - 32 Disparity - 32 13 34 19005 26 21113 7
FHD 1 PARALLEL Units - 32 Disparity - 32 35 135 19380 13 20670 7
ISP Pipeline 4K 4 16-bit 0.11 135 18987 24 17713 91
FHD 4 16-bit 0.44 520 19254 19 17534 88

Below are the links to the individual benchmark result files.

Vitis Vision Library

  • Download code

These Vitis Vision benchmarks can be downloaded from vitis libraries master branch.

git clone https://github.com/Xilinx/Vitis_Libraries.git
cd Vitis_Libraries
git checkout master
cd vision
  • Setup environment

Specify the corresponding Vitis, XRT, FPGA device, and path to the OpenCV libs by running following commands.

source <intstall_path>/installs/lin64/Vitis/2021.1_released/settings64.sh
source <path-to-xrt-installation>/setup.sh
export DEVICE=< path-to-platform-directory >/< platform >.xpfm
export OPENCV_INCLUDE=< path-to-opencv-include-folder >
export OPENCV_LIB=< path-to-opencv-lib-folder >
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:< path-to-opencv-lib-folder >