Benutzerdefinierten TensorFlow Lite-Build verwenden

Wenn Sie ein erfahrener ML-Entwickler sind und die vorgefertigte 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
  • Ein Checkout von 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 Ihren lokalen Pod erstellen
  2. Führen Sie pod lib create TensorFlowLite im Verzeichnis aus, das Sie erstellt haben.
  3. Erstellen Sie im Verzeichnis TensorFlowLite ein Verzeichnis Frameworks.
  4. Entpacken Sie die oben generierte Datei tensorflow_lite.framework.zip.
  5. Kopieren Sie die entzippte Datei tensorflow_lite.framework nach 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

Auf den benutzerdefinierten Pod in Ihrem Projekt verweisen

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 das Pod aus Ihrem privaten Repository einfügen, z. B. pod 'TensorFlowLite', "1.10.1".