カスタム TensorFlow Lite ビルドを使用する

事前に構築された TensorFlow Lite ライブラリがニーズを満たしていない場合、ML デベロッパーとしての経験が豊富であれば、ML Kit とともにカスタム TensorFlow Lite ビルドを使用できます。たとえば、カスタム オペレーターを追加することができます。

前提条件

  • 作業中の TensorFlow Lite ビルド環境
  • TensorFlow Lite 1.10.1 のチェックアウト

Git を使用すると、適切なバージョンをチェックアウトできます。

git checkout -b work
git reset --hard tflite-v1.10.1
git cherry-pick 4dcfddc5d12018a5a0fdca652b9221ed95e9eb23

Tensorflow Lite ライブラリのビルド

  1. 標準的な手順に沿って、(変更を加えて)Tensorflow Lite をビルドします。
  2. フレームワークをビルドします。
tensorflow/lite/lib_package/create_ios_frameworks.sh

生成されたフレームワークは tensorflow/lite/gen/ios_frameworks/tensorflow_lite.framework.zip にあります。

ローカルポッドの作成

  1. ローカルポッド用のディレクトリを作成します。
  2. 作成したディレクトリで pod lib create TensorFlowLite を実行します。
  3. TensorFlowLite ディレクトリ内に Frameworks ディレクトリを作成します。
  4. 上記の手順で生成した tensorflow_lite.framework.zip ファイルを解凍します。
  5. 解凍した tensorflow_lite.frameworkTensorFlowLite/Frameworks にコピーします。
  6. 目的のライブラリを参照するように、生成された TensorFlowLite/TensorFlowLite.podspec を変更します。
    Pod::Spec.new do |s|
      s.name             = 'TensorFlowLite'
      s.version          = '0.1.7' # Version must match.
      s.ios.deployment_target = '9.0'
      
      # ... make other changes as desired
      
      internal_pod_root = Pathname.pwd
      s.frameworks = 'Accelerate'
      s.libraries = 'c++'
      s.vendored_frameworks = 'Frameworks/tensorflow_lite.framework'

      s.pod_target_xcconfig = {
        'SWIFT_VERSION' => '4.0',
        'INTERNAL_POD_ROOT' => "#{internal_pod_root}",
        'HEADER_SEARCH_PATHS' => "$(inherited) '${INTERNAL_POD_ROOT}/Frameworks/tensorflow_lite.framework/Headers'",
        'OTHER_LDFLAGS' => "-force_load '${INTERNAL_POD_ROOT}/Frameworks/tensorflow_lite.framework/tensorflow_lite'"
      }
    end

プロジェクト内のカスタムポッドの参照

カスタムポッドは、アプリの Podfile から直接参照することでインクルードできます。

pod 'Firebase/MLModelInterpreter'
pod 'TensorFlowLite', :path => 'path/to/your/TensorflowLite'

プライベート ポッドを管理するためのその他のオプションについては、CocoaPods ドキュメントのプライベート ポッドをご覧ください。バージョンは正確に一致している必要があります。プライベート リポジトリからポッドをインクルードする場合は、該当するバージョン(pod 'TensorFlowLite', "1.10.1" など)を参照する必要があります。