The video analytics industry is constantly producing new and innovative solutions to provide deeper insight and derive more useful applications from video. These new capabilities often require more compute power. GPUs (Graphic Processing Units), if used correctly, can accelerate video processing and reduce costs. Therefore, many platforms are now adding GPUs to offload the CPUs (Central Processing Units) processing. Recently, this trend has been accelerated by the wide adoption of Deep Neural Networks (DNNs) to analyze images and videos.
GPUs were originally designed to optimize rendering-to-display devices and enabled the rapid advancement of the computer game industry. Today, GPUs are also used for General-purpose computing (GPGPU) using higher level frameworks such as OpenCL or CUDA.
GPUs excel in repeated parallel computations of large data (aka Single Instruction Multiple Data, or SIMD) and are ideal for DNNs and many image processing algorithms. Also, GPUs have dedicated HW for video decoding and encoding.
Considering these advantages, it may seem straightforward to run your video analytics on GPU and improve performance. This is true if most of your computations are done by large/deep DNNs or run full frame processing at high resolutions. However, video analytics are often highly optimized and limit the computations to small regions of interest and lower spatial and temporal resolutions, making it difficult to reach high utilization of the GPU. In such cases, you will need to invest more in your system architecture to fully utilize the GPU by using technologies such as batching and buffering.
If you consider porting a video analytics engine from CPU to GPU you should ask yourself the following:
- Do I use DNNs for most of the computations today or am I planning to in the future?
- Are my computer vision algorithms GPU friendly (e.g. data size and parallel computations)?
- Where do I deploy my processing? Edge devices, laptops and workstations are ideal for GPUs, while its harder to reach cost effectiveness on local or cloud servers.
Every organization’s video processing needs are unique, and the answers to these questions should help give you an idea as to whether moving to GPU processing might be worth considering for you. If you’re looking to gain deeper insight about running video processing on GPU, you are invited to join my talk on April 6th at 2:00pm at NVIDIA’s ISC West booth #20075.