The Apical Spirit engine can create virtualized digital representations of important features in video frames at 30fps from 1080p60 HD video using as many as sixteen classifier models with an unlimited number of objects detected per classifier model. Minimum object size within the video frame is a relatively small 60x60 pixels. The only way to achieve this incredible detection rate is to use multipliers—a lot of multipliers. According to Apical’s VP of Product Applications Judd Heape, the Spirit engine uses 600 of the 900 multipliers in the programmable logic section of a Xilinx Zynq Z-7045 SoC running at 300MHz to operate in real time at the above video and detection frame rates. The design can scale to use more multipliers if more performance is required.
By comparison, a GPU is 30x slower and consumes 10x the power according to Heape. “This is only possible in an FPGA,” he says. No other off-the-shelf part can handle the computation load.
While the Zynq SoC’s programmable logic is processing video frames, its dual-core ARM Cortex-A9 MPCore processor is running the Spirit engine’s upper stack levels, managing the output frame buffer, and drawing detection overlays on the resulting output video. I met Heape at Embedded Vision Summit 2015 earlier this month and he invited me to his offices near the San Jose airport for a live demo of the Apical Spirit engine. Here’s a 3-minute video of that demo:
Heape, who has many years’ experience with programmable logic devices says that the Zynq SoC was perfect for implementing the Spirit engine. “Zynq was first in the market and was exactly the right part,” he said.