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-Build-Umgebung
  • Eine Version von TensorFlow Lite 1.10.1

Sie können die richtige Version mit Git überprüfen:

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. Erstellen Sie das Framework:
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 lokalen Pod erstellen
  2. Führen Sie pod lib create TensorFlowLite im von Ihnen erstellten Verzeichnis aus.
  3. Erstellen Sie im Verzeichnis TensorFlowLite ein Verzeichnis Frameworks.
  4. Entpacken Sie die oben generierte Datei tensorflow_lite.framework.zip.
  5. Kopieren Sie die entpackte 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 im Podfile Ihrer Anwendung 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".