opencv/doc/tutorials/dnn/dnn_halide/dnn_halide.markdown
2018-03-04 20:30:22 +03:00

2.9 KiB

How to enable Halide backend for improve efficiency

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:

  • ENABLE_CXX11 - enable C++11 standard

  • 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