Benutzerdefinierten TensorFlow Lite-Build verwenden

Wenn Sie ein erfahrener ML-Entwickler sind und die vordefinierte TensorFlow Lite-Bibliothek nicht Ihren Anforderungen entspricht, können Sie einen benutzerdefinierten TensorFlow Lite-Build mit ML Kit verwenden. Sie können beispielsweise benutzerdefinierte Vorgänge hinzufügen.

Vorbereitung

  • Eine funktionierende TensorFlow Lite-Buildumgebung
  • Jetzt neu: TensorFlow Lite 1.10.1

Sie können die richtige Version mit Git auschecken:

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

TensorFlow Lite-Bibliothek erstellen

  1. Erstellen Sie TensorFlow Lite (mit Ihren Änderungen) gemäß der Standardanleitung.
  2. Framework erstellen:
tensorflow/lite/lib_package/create_ios_frameworks.sh

Das generierte Framework finden Sie unter tensorflow/lite/gen/ios_frameworks/tensorflow_lite.framework.zip.

Lokalen Pod erstellen

  1. Verzeichnis für den lokalen Pod erstellen
  2. Führen Sie pod lib create TensorFlowLite im von Ihnen erstellten Verzeichnis aus.
  3. Erstellen Sie ein Frameworks-Verzeichnis im TensorFlowLite-Verzeichnis
  4. Entpacken Sie die oben generierte Datei tensorflow_lite.framework.zip.
  5. Kopiere die entpackte Datei tensorflow_lite.framework in TensorFlowLite/Frameworks.
  6. Ändern Sie die generierte TensorFlowLite/TensorFlowLite.podspec so, dass sie auf die Bibliothek verweist:
    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

Benutzerdefinierten Pod in Ihrem Projekt referenzieren

Sie können den benutzerdefinierten Pod einbinden, indem Sie direkt in der Podfile Ihrer App darauf verweisen:

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

Weitere Optionen zum Verwalten privater Pods finden Sie in der CocoaPods-Dokumentation unter Private Pods. Die Version muss genau übereinstimmen. Sie sollten auf diese Version verweisen, wenn Sie den Pod aus Ihrem privaten Repository einbinden, z. B. pod 'TensorFlowLite', "1.10.1".