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, BDTI's foundation as a benchmarking services company has, as has been mentioned before, provided its engineers with extensive skills in optimizing software to best exploit processor capabilities. And it's also provided BDTI with an in-depth understanding of the respective strengths and shortcomings of various processor alternatives, along with those of the supporting components, the system boards assembled by combining these components, and the peripherals attached to these boards. All of these proficiencies were on display in a recent customer engagement.
The client's application involved very high frame rate video capture and vision processing, specifically involving object detection and tracking. The microprocessor needed to be x86-based, and the system board needed to both support GPU-based algorithm acceleration and an USB3 interface, in order to support the required video frame rate. But the system board also needed to be compact and light weight. And the client also requested associated video camera suggestions for the design.
The BDTI engineer assigned to the project delivered on all fronts, identifying a Pico-ITX board whose CPU's integrated graphics and then-rare USB3 port facilities met the design requirements. He also made recommendations on a camera that would deliver on the design objectives. The client obtained the recommended hardware and began algorithm development, but later re-contacted BDTI with an additional request to examine and (if possible) optimize the multithreaded code, which was fully loading the quad-core CPU and not delivering the necessary frame rate performance.
After analyzing the software, BDTI first added support for the OpenCL module found within the OpenCV library. This step, which offloaded applicable portions of the code from the CPU to the GPU, singlehandedly resulted in a 10-15x boost in object detection performance. BDTI's engineering resources also found and fixed memory-leak bugs in the OpenCL module, returning the corrections to the OpenCV open-source community. BDTI also improved the multithreading capabilities of the portions of the code still running on the CPU, further improving its efficiency. And finally, BDTI made additional optimization recommendations, involving transitions from in-use OpenCV functions to other more efficient alternatives.