OpenCV 3.3.1 vs 3.3.0 Changes (Release Notes)
Hello Friends,
Due to a lot of confusion out there as to which build to choose from and which one is better, i have created this blog post.
If you would like to get instructions on how to build OPENCV from scratch, refer to this article here : /step-by-step-install-opencv-3-3-with-visual-studio-2015-on-windows-10-x64-2017-diy/
Ok so what has changed between OpenCV 3.3.1 and OpenCV 3.3.0, let’s have a look at it.
We’ll first look at the changes that went into 3.3.0:
OpenCV Version 3.3.0
=> opencv_dnn module has been moved from the contribution repository (opencv_contrib) to the main repository (opencv) and was significantly improved:
- High-level API has been modified and is even more convenient now.
- The regression tests have been expanded, some new tests have been added. Now, there are 46 of them.
- Many bugs have been fixed in Torch and TF loaders, as well as in some processing layers. Now we check that on a certain set of networks the results from OpenCV DNN match or very close to the results from the original frameworks. We also check that the results claimed in the papers for such networks are achievable with OpenCV DNN.
- Performance has been substantially improved. Layer fusion has been implemented and some performance-critical layers have been optimized using AVX, AVX2, SSE and NEON. An external BLAS (OpenBLAS, MKL, ATLAS) is not needed anymore.
- New samples in C++ and Python have been added.
- The optional Halide backend has been added. It can accelerate OpenCV DNN on GPU when the GPU is fast enough.
- Upgraded IPPICV from 2015.12 to 2017.2 version brought ~15% speed improvement into core and imgproc modules (measured as geometrical mean over the corresponding performance tests)
- Dynamic dispatching of SSE4.2/AVX/AVX2 code has been implemented. Previously, OpenCV had to be built with SSE4.x/AVX/AVX2 turned on in order to use such optimizations and that made it incompatible with older hardware. Now the OpenCV binaries automatically adapt to the real hardware and make use of new instructions if they are available while retaining compatibility with older hardware. All the existing AVX/AVX2 optimizations in OpenCV have been refactored to use this technology. AVX acceleration of DNN also uses dynamic dispatching.
- OpenCV can now be configured and built as C++ 11 library. Pass
1-DENABLE_CXX11=ON
to CMake. On some modern Linux distributions, like the latest Fedora, it’s enabled by default.
- Support for hardware-accelerated video encoding/decoding using Intel GPUs through Intel Media SDK has been implemented for Linux (in the form of backends for
1cv::VideoCapture
and
1cv::VideoWriter).
- Encoding and decoding of raw H.264 and MPEG1/2 video streams is supported, media containers are not supported yet.
- Note that system kernel should have specific support for hardware as mentioned in the Media SDK/Server Studio installation guide. In some cases kernel recompilation will be needed.
OpenCV Version 3.3.1
Results of several GSoC 2017 projects have been integrated:
- multi-language (e.g. C++/Python/Java) tutorials by João Cartucho, mentored by Vincent Rabaud
- AKAZE acceleration by Jiri Horner, mentored by Bence Magyar
- End-to-end text detection and recognition by Suman Kumar Ghosh, mentored by Prasanna Krishnasamy
One of GSoC 2017 projects that deserves a dedicated section in the change log:
- Javascript interface to OpenCV (via Emscripten technology) and interactive Web-based OpenCV tutorials by Gang Song and Congxiang Pan. This small yet powerful team was supervised by Sajjad Taheri, Ningxin Hu and Mohammad R Haghighat.
opencv_dnn has been further improved and extended; new samples have been added:
- Face detection sample and the light-weight Resnet-10 + SSD based network have been added. See the example for details. The detector runs around 20-50FPS on a normal desktop/laptop, and the network is just 10MB (FP32) or even 5MB (FP16).
- The partial Darknet parser, enough to parse YOLO models, as well as the layers to support a few variations of YOLO object detection networks have been integrated. See the corresponding sample.
- Preliminary support for FP16 networks has been added. We do not do computations in FP16 yet, we convert FP16 coeffs to FP32 when loading the networks. In the case of Caffe we rely on the following fork, whereas in the case of TF we use the official version.
- Several new layers have been added to support text detection, image colorization and some other networks.
- OpenCV has been optimised for PPC64 (64-bit PowerPC) architecture by mapping the universal intrinsics to VSX. Big thanks to Sayed Adel for the patches.
- OpenCL acceleration path of the bioinspired module has been restored. See the bioinspired-based HDR/Background segmentation example. On Iris Pro HD5200 we get ~5x acceleration over the CPU branch.
- KFC tracker has been accelerated by ~40%.
- Hardware-accelerated video encoding/decoding via MediaSDK is now available on Windows too.
Summary
All in all, OpenCV 3.3.1 adds improvement to the Text detection, Face detection, KFC Tracker, Hardware-Acceleration.
Hope this helps