前のチュートリアル: Caffeフレームワークのモデルを読み込む
次のチュートリアル: Halideバックエンド向けにネットワークをスケジューリングする方法
| |
| 原著者 | Dmitry Kurtaev |
| 互換性 | OpenCV >= 3.3 |
はじめに
このチュートリアルでは、OpenCVのディープラーニングモジュールでHalide言語バックエンドを使ってモデルを実行する方法を説明する。Halideは、画像処理アルゴリズムを読みやすい形式で記述し、特定のデバイスに応じて計算をスケジューリングし、かなり良好な効率で評価できるオープンソースプロジェクトである。
Halideプロジェクトの公式ウェブサイト: http://halide-lang.org/。
最新の効率比較: https://github.com/opencv/opencv/wiki/DNN-Efficiency
必要要件
LLVMコンパイラ
- 覚え書き
- LLVMのコンパイルには長い時間がかかる場合がある。
- LLVMのソースコードを http://releases.llvm.org/4.0.0/llvm-4.0.0.src.tar.xz からダウンロードする。展開する。llvm_root をソースコードのルートディレクトリとする。
- ディレクトリ llvm_root/tools/clang を作成する。
- LLVMと同じバージョンのClangをダウンロードする。この場合は http://releases.llvm.org/4.0.0/cfe-4.0.0.src.tar.xz から取得する。それを llvm_root/tools/clang に展開する。これがClangのソースコードのルートになるようにすること。
- LinuxでLLVMをビルドする
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
- WindowsでLLVMをビルドする(Developer Command Prompt)
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
- 覚え書き
\\path-to-llvm-build\\ と \\path-to-llvm-install\\ は別のディレクトリである。
Halide言語
- GitHubリポジトリ https://github.com/halide/Halide から、またはgitを使ってソースコードをダウンロードする。ルートディレクトリは halide_root になる。
git clone https://github.com/halide/Halide.git
- LinuxでHalideをビルドする
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
- WindowsでHalideをビルドする(Developer Command Prompt)
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
Halideバックエンド付きでOpenCVをビルドする
OpenCVをビルドする際に、以下の設定フラグを追加する。
WITH_HALIDE - Halideのリンクを有効にする
HALIDE_ROOT_DIR - Halideのビルドディレクトリへのパス
Halideを優先バックエンドに設定する
net.setPreferableBackend(DNN_BACKEND_HALIDE);