ヘルプKaggleにTensorFlowグレートバリアリーフを保護チャレンジに参加

CMakeでTensorFlowLiteをビルドする

このページでは、とTensorFlow Liteのライブラリーを構築し、使用する方法について説明しcmakeののツール。

次の手順では、Ubuntuの16.04.3 64ビットPC(AMD64)、MacOSのカタリナ(x86_64版)、Windowsの10とTensorFlow develのドッカー画像上でテストされているのdevel:tensorflow / tensorflow

ステップ1.CMakeツールをインストールします

CMake3.16以降が必要です。 Ubuntuでは、次のコマンドを実行するだけです。

sudo apt-get install cmake

それとも、続くことができる公式cmakeのインストールガイドを

ステップ2.TensorFlowリポジトリのクローンを作成する

git clone https://github.com/tensorflow/tensorflow.git tensorflow_src

ステップ3.CMakeビルドディレクトリを作成します

mkdir tflite_build
cd tflite_build

ステップ4.構成でCMakeツールを実行する

リリースビルド

デフォルトでは、最適化されたリリースバイナリが生成されます。ワークステーション用にビルドする場合は、次のコマンドを実行するだけです。

cmake ../tensorflow_src/tensorflow/lite

デバッグビルド

あなたはシンボル情報を持っているデバッグビルドを作成する必要がある場合は、提供する必要が-DCMAKE_BUILD_TYPE=Debugオプションを選択します。

cmake ../tensorflow_src/tensorflow/lite -DCMAKE_BUILD_TYPE=Debug

カーネル単体テストでビルドする

カーネルテストを実行できるようにするには、「-DTFLITE_KERNEL_TEST = on」フラグを指定する必要があります。ユニットテストのクロスコンパイルの詳細については、次のサブセクションを参照してください。

cmake ../tensorflow_src/tensorflow/lite -DTFLITE_KERNEL_TEST=on

クロスコンパイル

CMakeを使用して、ARM64またはAndroidターゲットアーキテクチャのバイナリを構築できます。

TF Liteはクロスコンパイルするためには、すなわちで(Androidの場合、例えばARM64 SDKやNDK)SDKへのパスを指定する必要があり-DCMAKE_TOOLCHAIN_FILEフラグ。

cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
Androidクロスコンパイルの詳細

Androidのクロスコンパイルのために、あなたはインストールする必要がAndroidのNDKをしてとNDKパス提供-DCMAKE_TOOLCHAIN_FILEフラグは、上記の。あなたはまたして設定された目標ABIに必要-DANDROID_ABIフラグ。

cmake -DCMAKE_TOOLCHAIN_FILE=<NDK path>/build/cmake/android.toolchain.cmake \
  -DANDROID_ABI=arm64-v8a ../tensorflow_src/tensorflow/lite
カーネル(ユニット)テストのクロスコンパイルの詳細

単体テストのクロスコンパイルには、ホストアーキテクチャ用のflatcコンパイラが必要です。この目的のために、に位置CMakeListsありtensorflow/lite/tools/cmake/native_tools/flatbuffersホストツールチェーンを使用して別のビルドディレクトリに予めCMakeのでflatcコンパイラを構築します。

mkdir flatc-native-build && cd flatc-native-build
cmake ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .

(他のネイティブに構築されたツールの代わりに、cmakeのビルドディレクトリを含むディレクトリになど)カスタムインストールの場所にflatcをインストールすることも可能です。

cmake -DCMAKE_INSTALL_PREFIX=<native_tools_dir> ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .

TFライトクロスコンパイル自体のための、追加のパラメータ-DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path>と共に提供されるネイティブflatcバイナリニーズ含むディレクトリを指し-DTFLITE_KERNEL_TEST=onフラグは、上述し。

cmake -DCMAKE_TOOLCHAIN_FILE=${OE_CMAKE_TOOLCHAIN_FILE} -DTFLITE_KERNEL_TEST=on -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path> ../tensorflow/lite/

OpenCLGPUデリゲート

あなたのターゲットマシンがOpenCLのサポートを持っている場合は、使用することができGPUデリゲートあなたのGPUのパワーを活用することができます。

OpenCL GPUデリゲートサポートを設定するには:

cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON

ステップ5.TensorFlowLiteをビルドする

tflite_buildディレクトリで、

cmake --build . -j

手順6.TensorFlow Liteベンチマークツールとラベル画像の例を作成する(オプション)

tflite_buildディレクトリで、

cmake --build . -j -t benchmark_model
cmake --build . -j -t label_image

TensorFlowLiteを構築するために利用可能なオプション

利用可能なオプションのリストは次のとおりです。あなたはでそれをオーバーライドすることができ-D<option_name>=[ON|OFF]例えば、 -DTFLITE_ENABLE_XNNPACK=OFF 、デフォルトで有効になって無効XNNPACKします。

オプション名特徴アンドロイドLinuxマックOSウィンドウズ
TFLITE_ENABLE_RUY RUY行列乗算ライブラリを有効にするオンオフオフオフ
TFLITE_ENABLE_NNAPI NNAPIデリゲートを有効にするオンオフ該当なし該当なし
TFLITE_ENABLE_GPU GPUデリゲートを有効にするオフオフ該当なし該当なし
TFLITE_ENABLE_XNNPACK XNNPACKデリゲートを有効にするオンオンオンオン
TFLITE_ENABLE_MMAP MMAPを有効にするオンオンオン該当なし

TensorFlowLiteを使用するCMakeプロジェクトを作成します

ここでのCMakeLists.txtあるTFLite最小限例

あなたはTensorFlow Liteのディレクトリとリンクのためのadd_subdirectory()を持っている必要がありtensorflow-lite target_link_librariesと()。

cmake_minimum_required(VERSION 3.16)
project(minimal C CXX)

set(TENSORFLOW_SOURCE_DIR "" CACHE PATH
  "Directory that contains the TensorFlow project" )
if(NOT TENSORFLOW_SOURCE_DIR)
  get_filename_component(TENSORFLOW_SOURCE_DIR
    "${CMAKE_CURRENT_LIST_DIR}/../../../../" ABSOLUTE)
endif()

add_subdirectory(
  "${TENSORFLOW_SOURCE_DIR}/tensorflow/lite"
  "${CMAKE_CURRENT_BINARY_DIR}/tensorflow-lite" EXCLUDE_FROM_ALL)

add_executable(minimal minimal.cc)
target_link_libraries(minimal tensorflow-lite)

TensorFlow LiteCライブラリをビルドする

あなたはTensorFlow Liteはのためのライブラリを共有し構築したい場合はCのAPI 、続くステップ1をするステップ3最初。その後、次のコマンドを実行します。

cmake ../tensorflow_src/tensorflow/lite/c
cmake --build . -j

このコマンドは、現在のディレクトリに次の共有ライブラリを生成します。

プラットホームライブラリ名
Linux libtensorflowlite_c.so
マックOS libtensorflowlite_c.dylib
ウィンドウズtensorflowlite_c.dll