Intel® computer vision SDK (Opencv, Opencx and more)


My favourite

  • Opencv tutorial people detection
  • Head people cascade download
  • Opencv tutorial optical flow
  • Opencv Video stabilization
  • Opencv car dataset download
  • Opencv tutorial Transparent mask
  • Opencv videowriter
  • Opencv FFMPEG
  • Opencv Canny edge and hough lines
  • Intel computer vision SDK the results of itseez acquisition

    The Intel defined the future usage of processing power by many acquisitions in last two years. I already wrote about the itseez and movidius. The itseez is lost somewhere in the structures of the intel but results are obviously visible. The movidius continue under intel as more separated brand with latest usb stick for accelerating the deep neural networks for embedded and mobile phone. All this activities shape intel and also architecture of the processors, size of processors register, floating point  registers optimization, vector architectures and much smarter parallelism than ever before. 
    intel computer vision SDK

     The Intel® CV SDK

    Basically is package of the product related to video processing, computer vision, machine learning and lots of optimization inside these packages done by Intel. The optimization also comes with better deployment for systems that combined many hardware like CPU, GPU and FPGA. The every devices has advantage in some stages of image processing pipeline. 

    Opencv, OpenVX integration

    Intel SDK try to merge OpenVX and Opencv more closely, which is great.. OpenVX is cross platform acceleration for computer vision application that doesn't necessary required the high power CPU and GPU. The Opencv itself coming with cuda support and OpenVX integrations opens the access to hw like movidius accelerators for deep neural network, small IOT devices, Cameras and more.  Huge application potential from home security to smart cars and devices. Opencv is more community driven project and OpenVX os more hardware vendors API integration focusing on low level optimization. The tight and simple merging inside Intel Computer Vision SDK makes lots of senses from Intels HW, acquisitions and future perspective.

    Cuda sample flow VS Opencv OpenVX integration

    The following two examples try to compare the working program from CUDA perspectives and also The Intel CV SDK. For example CUDA devices transfers data in from host CPU to devices GPU by following flow. The flow more than running cuda code sample!! 
    //Allocating the input output memory
    int *in = (int*)malloc(size);
    int *out=(int*)malloc(size);
    cudaMalloc((void **)&inAddressGPU,InputSize);
    cudaMalloc((void **)&outAddressGPU,OutputSize);
    //Copy from HOST (in) to DEVICES (inAdressGPU), where parallel magic will happened 
    //pass results back to HOST from outAddressGPU to out by memcpy, memory copy
    //Do somethink lunch kernel on GPU atd atd
    //Copy results back

    In comparison flow between the Opencv and OpenVX

    Mat RGBimage;
    vx_imagepath_addressing_t mappingTemplate;
    // mapping the sizes
    //pointer to data
    void *ptr[] = {};
    //Create the VX_imagevx_image image=vxCreateImageFromHandle(ctx,…,& mappingTemplate,ptr, VX_MEMORY_TYPE_HOST);
    cv::cvtColor(RGBimageR, RGBimage, cv::COLOR_BGR2RGB);
    vxFunctionOver(image, ............);
    // results from from Opencv and OpenVX over one image, data in memory by different tools. 
    In some specific mapping we can do the Opencv operation and OpenVX operation over the same image. Vx_image point to same data in mamery as RGBimage MAT which is valid when the VX_MEMORY_TYPE_HOST memory is on host sideIn GPU cuda is always necessary to dopy from host to device and back in example above. This was just philosophy and architecture behind the code. The small pieces that Cuda and technology like OpenVX are something hard to deal with.  

    Intel Computer Vision DSK and Convolution neural network

    As many others framework Intel extensions for convolution neural networks comes with integration with model trained by different Software like TensorFlow or Coffe. The training is done on state of the art software maintained by large science community over the world and the feed forward part over the network without learning is deployed into many devices by tools like this Convolutional Neural Network IP kernels OpenVX extensions. 

    The additional software to work with Opencv, OpenVX, Convolutional Nural Networks OpenVX extensions is Intel's visual Algorithm Designer. Where the functionality of computer vision pipeline could be assembled in visual GUI and check the results of each edges as well as advanced profiler for the performance tuning of each stage of computer vision pipeline. 

    Another pieces is Intel's Deep Learning Framework, API for training models and Intel's standard piece of software which is Intel's Media SDK, which is great tool for codecs development and measurement of performance in encoding and decoding the video by different mechanism. 

    More about the tool here