3.0 KiB
How to enable Halide backend for improve efficiency
@prev_tutorial{tutorial_dnn_googlenet} @next_tutorial{tutorial_dnn_halide_scheduling}
Original author | Dmitry Kurtaev |
Compatibility | OpenCV >= 3.3 |
Introduction
This tutorial guidelines how to run your models in OpenCV deep learning module using Halide language backend. Halide is an open-source project that let us write image processing algorithms in well-readable format, schedule computations according to specific device and evaluate it with a quite good efficiency.
An official website of the Halide project: http://halide-lang.org/.
An up to date efficiency comparison: https://github.com/opencv/opencv/wiki/DNN-Efficiency
Requirements
LLVM compiler
@note LLVM compilation might take a long time.
-
Download LLVM source code from http://releases.llvm.org/4.0.0/llvm-4.0.0.src.tar.xz. Unpack it. Let llvm_root is a root directory of source code.
-
Create directory llvm_root/tools/clang
-
Download Clang with the same version as LLVM. In our case it will be from http://releases.llvm.org/4.0.0/cfe-4.0.0.src.tar.xz. Unpack it into llvm_root/tools/clang. Note that it should be a root for Clang source code.
-
Build LLVM on Linux @code cd llvm_root mkdir build && cd build cmake -DLLVM_ENABLE_TERMINFO=OFF -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_BUILD_TYPE=Release .. make -j4 @endcode
-
Build LLVM on Windows (Developer Command Prompt) @code mkdir \path-to-llvm-build\ && cd \path-to-llvm-build\ cmake.exe -DLLVM_ENABLE_TERMINFO=OFF -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=\path-to-llvm-install\ -G "Visual Studio 14 Win64" \path-to-llvm-src\ MSBuild.exe /m:4 /t:Build /p:Configuration=Release .\INSTALL.vcxproj @endcode
@note \\path-to-llvm-build\\
and \\path-to-llvm-install\\
are different directories.
Halide language.
-
Download source code from GitHub repository, https://github.com/halide/Halide or using git. The root directory will be a halide_root. @code git clone https://github.com/halide/Halide.git @endcode
-
Build Halide on Linux @code cd halide_root mkdir build && cd build cmake -DLLVM_DIR=llvm_root/build/lib/cmake/llvm -DCMAKE_BUILD_TYPE=Release -DLLVM_VERSION=40 -DWITH_TESTS=OFF -DWITH_APPS=OFF -DWITH_TUTORIALS=OFF .. make -j4 @endcode
-
Build Halide on Windows (Developer Command Prompt) @code cd halide_root mkdir build && cd build cmake.exe -DLLVM_DIR=\path-to-llvm-install\lib\cmake\llvm -DLLVM_VERSION=40 -DWITH_TESTS=OFF -DWITH_APPS=OFF -DWITH_TUTORIALS=OFF -DCMAKE_BUILD_TYPE=Release -G "Visual Studio 14 Win64" .. MSBuild.exe /m:4 /t:Build /p:Configuration=Release .\ALL_BUILD.vcxproj @endcode
Build OpenCV with Halide backend
When you build OpenCV add the following configuration flags:
-
WITH_HALIDE
- enable Halide linkage -
HALIDE_ROOT_DIR
- path to Halide build directory
Set Halide as a preferable backend
@code net.setPreferableBackend(DNN_BACKEND_HALIDE); @endcode