日付を保存! Google I / Oが5月18日から20日に戻ってきます今すぐ登録
このページは Cloud Translation API によって翻訳されました。
Switch to English

iOS用のTensorFlowLiteをビルドする

このドキュメントでは、TensorFlow LiteiOSライブラリを独自に構築する方法について説明します。通常、TensorFlow LiteiOSライブラリをローカルでビルドする必要はありません。単に使用したい場合、最も簡単な方法は、TensorFlow LiteCocoaPodsのビルド済みの安定版またはナイトリーリリースを使用することです。 iOSプロジェクトでそれらを使用する方法の詳細については、 iOSクイックスタートを参照してください。

ローカルで構築する

場合によっては、TensorFlow Liteのローカルビルドを使用したい場合があります。たとえば、TensorFlow Liteにローカルの変更を加えて、iOSアプリでそれらの変更をテストする場合や、提供されている動的フレームワークよりも静的フレームワークを使用する場合です。 TensorFlow Lite用のユニバーサルiOSフレームワークをローカルで作成するには、macOSマシンでBazelを使用してフレームワークを構築する必要があります。

Xcodeをインストールする

まだインストールしていない場合は、 xcode-select以降とxcode-selectを使用したツールをインストールする必要がありxcode-select

xcode-select --install

これが新規インストールの場合は、次のコマンドを使用して、すべてのユーザーの使用許諾契約に同意する必要があります。

sudo xcodebuild -license accept

Bazelをインストールします

Bazelは、TensorFlowの主要なビルドシステムです。 BazelWebサイトの指示に従ってBazelをインストールします。 tensorflowリポジトリのルートにあるconfigure.pyファイル_TF_MIN_BAZEL_VERSION_TF_MAX_BAZEL_VERSION間のバージョンを選択してください。

WORKSPACEと.bazelrcを構成します

ルートTensorFlowチェックアウトディレクトリで./configureスクリプトを実行し、iOSサポートを使用してTensorFlowをビルドするかどうかをスクリプトが尋ねられたら、「はい」と答えます。

TensorFlowLiteCがiOSサポートで適切に構成されたら、次のコマンドを使用してTensorFlowLiteCフレームワークを構築できます。

bazel build --config=ios_fat -c opt \
  //tensorflow/lite/ios:TensorFlowLiteC_framework

このコマンドは、TensorFlowルートディレクトリの下のbazel-bin/tensorflow/lite/ios/ディレクトリの下にTensorFlowLiteC_framework.zipファイルを生成します。デフォルトでは、生成されたフレームワークには、armv7、arm64、およびx86_64を含む「fat」バイナリが含まれています(ただし、i386は含まれていません)。 --config=ios_fatを指定するときに使用されるビルドフラグの完全なリストを確認するには、 .bazelrcファイルのiOS構成セクションを参照してください。

TensorFlowLiteC静的フレームワークを構築する

デフォルトでは、動的フレームワークはCocoapodsを介してのみ配布されます。代わりに静的フレームワークを使用する場合は、次のコマンドを使用してTensorFlowLiteC静的フレームワークを構築できます。

bazel build --config=ios_fat -c opt \
  //tensorflow/lite/ios:TensorFlowLiteC_static_framework

コマンドは、指定されたファイルが生成されますTensorFlowLiteC_static_framework.zipbazel-bin/tensorflow/lite/ios/あなたのTensorFlowのルートディレクトリの下のディレクトリを。この静的フレームワークは、動的フレームワークとまったく同じ方法で使用できます。

独自のアプリケーションで使用

CocoaPods開発者

TensorFlowLiteには3つのCocoaPodがあります。

  • TensorFlowLiteSwiftTensorFlowLiteSwift用のSwiftAPIを提供します。
  • TensorFlowLiteObjCTensorFlowLiteObjC用のObjective- TensorFlowLiteObjC提供します。
  • TensorFlowLiteC :共通のベースポッド。TensorFlowLiteコアランタイムを組み込み、上記の2つのポッドで使用されるベースCAPIを公開します。ユーザーが直接使用するためのものではありません。

開発者は、アプリの作成言語に基づいてTensorFlowLiteSwiftまたはTensorFlowLiteObjCポッドのいずれかを選択する必要がありますが、 TensorFlowLiteSwiftを選択することはできません。 TensorFlow Liteのローカルビルドを使用するための正確な手順は、ビルドする正確なパーツによって異なります。

ローカルのSwiftまたはObjective-CAPIの使用

あなたはCocoaPodsを使用して、とだけTensorFlowライトのにはいくつかのローカルな変更をテストしたいしている場合はスウィフトのAPIObjective-CのAPIを、ここでの手順に従ってください。

  1. tensorflowチェックアウトでSwiftまたはObjective- tensorflow変更を加えます。

  2. TensorFlowLite(Swift|ObjC).podspecファイルを開き、 TensorFlowLite(Swift|ObjC).podspec行を更新します。
    s.dependency 'TensorFlowLiteC', "#{s.version}"
    することが:
    s.dependency 'TensorFlowLiteC', "~> 0.0.1-nightly"
    これは、ローカルのtensorflowと比較して古くなっている可能性がある安定バージョンではなく、 TensorFlowLiteC APIの利用可能な最新のナイトリーバージョン(太平洋時間の午前1時から4時まで毎晩ビルド)に対してSwiftまたはObjective- TensorFlowLiteCビルドしていることを確認するためですチェックアウト。または、独自のバージョンのTensorFlowLiteCを公​​開して、そのバージョンを使用することもできます(以下の「ローカルTensorFlow Liteコアの使用」セクションを参照)。

  3. iOSプロジェクトのPodfileで、依存関係を次のように変更して、 tensorflowルートディレクトリへのローカルパスを指すようにします。
    Swiftの場合:
    pod 'TensorFlowLiteSwift', :path => '<your_tensorflow_root_dir>'
    Objective-Cの場合:
    pod 'TensorFlowLiteObjC', :path => '<your_tensorflow_root_dir>'

  4. iOSプロジェクトのルートディレクトリからポッドのインストールを更新します。
    $ pod update

  5. 生成されたワークスペース( <project>.xcworkspace )を再度<project>.xcworkspace 、Xcode内でアプリを再構築します。

ローカルのTensorFlowLiteコアを使用する

プライベートCocoaPods仕様リポジトリを設定し、カスタムTensorFlowLiteCフレームワークをプライベートリポジトリに公開できます。このpodspecファイルをコピーして、いくつかの値を変更できます。

  ...
  s.version      = <your_desired_version_tag>
  ...
  # Note the `///`, two from the `file://` and one from the `/path`.
  s.source       = { :http => "file:///path/to/TensorFlowLiteC_framework.zip" }
  ...
  s.vendored_frameworks = 'TensorFlowLiteC.framework'
  ...

独自のTensorFlowLiteC.podspecファイルを作成した後、プライベートCocoaPodsを使用して独自のプロジェクトで使用するための指示に従うことができます。 TensorFlowLite(Swift|ObjC).podspecを変更して、カスタムTensorFlowLiteCポッドをポイントし、アプリプロジェクトでSwiftまたはObjective-Cポッドを使用することもできます。

Bazel開発者

TensorFlowLiteをメインビルドツールとして使用している場合は、 BUILDファイルのターゲットにTensorFlowLite依存関係を追加するだけです。

Swiftの場合:

swift_library(
  deps = [
      "//tensorflow/lite/swift:TensorFlowLite",
  ],
)

Objective-Cの場合:

objc_library(
  deps = [
      "//tensorflow/lite/objc:TensorFlowLite",
  ],
)

アプリプロジェクトをビルドすると、TensorFlow Liteライブラリへの変更がすべて取得され、アプリに組み込まれます。

Xcodeプロジェクト設定を直接変更する

TensorFlow Liteの依存関係をプロジェクトに追加するには、CocoaPodsまたはBazelを使用することを強くお勧めします。それでもTensorFlowLiteCフレームワークを手動で追加する場合は、 TensorFlowLiteCフレームワークを埋め込みフレームワークとしてアプリケーションプロジェクトに追加する必要があります。上記のビルドから生成されたTensorFlowLiteC_framework.zip解凍して、 TensorFlowLiteC.frameworkディレクトリを取得します。このディレクトリは、Xcodeが理解できる実際のフレームワークです。

TensorFlowLiteC.frameworkを準備しTensorFlowLiteC.framework 、最初にそれを埋め込みバイナリとしてアプリターゲットに追加する必要があります。このための正確なプロジェクト設定セクションは、Xcodeのバージョンによって異なる場合があります。

  • Xcode 11:アプリターゲットのプロジェクトエディターの[全般]タブに移動し、[フレームワーク、ライブラリ、埋め込みコンテンツ]セクションにTensorFlowLiteC.frameworkを追加します。
  • Xcode 10以下:アプリターゲットのプロジェクトエディターの[全般]タブに移動し、[埋め込みバイナリ]の下にTensorFlowLiteC.frameworkを追加します。フレームワークは、「リンクされたフレームワークとライブラリ」セクションにも自動的に追加される必要があります。

フレームワークを埋め込みバイナリとして追加すると、Xcodeは[ビルド設定]タブの[フレームワーク検索パス]エントリも更新して、フレームワークの親ディレクトリを含めます。これが自動的に行われない場合は、 TensorFlowLiteC.frameworkディレクトリの親ディレクトリを手動で追加する必要があります。

これらの2つの設定が完了すると、 TensorFlowLiteC.framework/Headersディレクトリの下のヘッダーファイルで定義されているTensorFlowLiteのCAPIをインポートして呼び出すことができるようになります。