As computer vision is deployed into a variety of new applications, driven by the emergence of powerful, low-cost, and energy-efficient processors, companies need to find ways to squeeze demanding vision processing algorithms into size-, weight-, power, and cost-constrained systems. Fortunately for its clients, BDTI's skill in benchmarking has armed it with unique skill in optimizing software to best exploit processor capabilities. It's also provided BDTI with an in-depth understanding of the strengths and weaknesses of a wide range of processing platforms and the many boards and kits available to system designers. All of BDTI's experience and expertise was on display in a recent client engagement.
The client's application involved very high frame rate video capture and vision processing, specifically for object detection and tracking. The processor needed to be x86-based and the off-the-shelf system board needed to support both GPU-based algorithm acceleration and a USB3 interface in order to deliver the required video frame rate. In addition, the system board needed to be compact and light weight. On top of these, the client also requested recommendations on the video camera to be used in the design.
BDTI delivered on all fronts, meeting system design objectives by identifying a Pico-ITX board with a CPU that supported integrated graphics and a then-rare USB3 port, as well as recommending a camera. Once the client obtained the recommended hardware and began algorithm development, it again engaged BDTI to examine and optimize the application’s multithreaded code, which was fully loading the quad-core CPU and not delivering the necessary frame rate.
After analyzing the software, BDTI first added support for the OpenCL module found within the OpenCV library. This step alone, which offloaded applicable portions of the code from the CPU to the GPU, resulted in a 10-15x boost in object detection performance. BDTI's team also found and fixed memory-leak bugs in the OpenCL module and improved the multithreading capabilities of those portions of the code still running on the CPU, improving its efficiency. Finally, BDTI made recommendations for additional optimizations that involved replacing OpenCV functions with more efficient alternatives.
With its design objectives met and better-than-expected performance from the system, BDTI's client delivered a successful product to its customers.