3.
The final layer is the application
development level, and it is where the
high-level frameworks such as Caffe
and OpenVX are used to complete
the application, implementing the
decision-making functionality for
example. Applications at this level
are developed using an eclipse based
environment targeting the processor
cores within the Zynq-7000/Zynq
UltraScale+ MPSoC.
The capability provided by the
reVISION stack provides all the
necessary elements to create high
performance imaging applications
across a wide range of applications
from industrial internet of things, to
vision guided robotics and beyond.
Accelerating OpenCV
One of the most exciting aspects of
the reVISION stack is the ability to
accelerate a wide range of OpenCV
functions within the algorithm
development layer. Within this layer,
the OpenCV functions capable of
being accelerated can be grouped
into one of four high level categories.
1.
Computation – Includes functions
such as absolute difference
between two frames, pixel wise
operations (addition, subtraction and
multiplication), gradient and integral
operations
2.
Input Processing – Provides support
for bit depth conversions, channel
operations, histogram equalisation,
remapping and resizing
3.
Filtering - Provides support for a
wide range of filters including Sobel,
custom convolution and Gaussian
filters
4.
Other – Provides a wide range of
functions including Canny/Fast/Harris
edge detection, thresholding and
SVM and HoG classifiers
Developers can use these functions to
create an algorithmic pipeline within
the programmable logic of the chosen
device. Being able to implement logic
in this way significantly increases
the performance of the algorithm
implementation.
Of course, as these acceleration
capable OpenCV libraries are
software defined and support high
level synthesis, they can also be
used within the Vivado HLS tool. This
enables the creation of IP modules
which can be used within the platform
layer when the hardware definition is
established.
One commonly used algorithm in
OpenCV is the implementation of
Harris Corner detection, used to detect
corners within an image. Within the
reVISION Stack, there is a predefined
function for Harris Corner detection.
When comparing the performance
of the reVISION accelerated
Harris Corner detection against a
normal OpenCV implementation as
demonstrated below, both provide
identical performance. However, using
the reVISION Harris Corner function
accelerated into the PL the user gains
an increase in system performance
which enables a more responsive and
power efficient solution.
Within the reVISION stack, if
developers chose to accelerate
OpenCV functions, they can optimize
the design for resource usage and
performancewithin the programmable
logic. The main method through
which this is achieved is the number
of pixels which are processed on each
clock cycle. For most accelerated
functions, they can choose to
process either a single pixel or eight
pixels. Processing more pixels per
clock cycle increases the resource
utilization required while reducing
the processing time. Processing one
pixel per clock will provide a reduced
resource requirement, which comes
at the cost of an increased latency.
This selection of number of pixels per
clock is configured via the function
call, providing a very simple method
to optimize the design as required.
With the design performance
optimized using the acceleration
capable OpenCV libraries, the
embedded vision developer can
then develop the higher levels of
the application using the capabilities
provided by the Algorithm and
Application layers of the stack.
Conclusion
The use of All Programmable Zynq-
7000 and Zynq UltraScale+ MPSoC
devices within embedded vision
applications brings several advantages
in flexibility, performance, security/
safety and power-efficient processing.
Developing the application within
the reVISION stack allows several
commonly used industry-standard
frameworks to be utilized, bringing
with it reduced development times
and faster time to market.
Figure 2 - Accelerated OpenCV
Harris Corner Detection
Figure 3 - Traditional OpenCV
Implementation
50 l New-Tech Magazine Europe