Verwenden Sie einen benutzerdefinierten TensorFlow Lite-Build

Wenn Sie ein erfahrener ML-Entwickler sind und die vorgefertigte TensorFlow Lite-Bibliothek Ihren Anforderungen nicht entspricht, können Sie einen benutzerdefinierten TensorFlow Lite- Build mit ML Kit verwenden. Beispielsweise möchten Sie möglicherweise benutzerdefinierte Operationen hinzufügen.

Voraussetzungen

  • Eine funktionierende TensorFlow Lite -Build-Umgebung
  • Ein Test 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

Aufbau der Tensorflow Lite-Bibliothek

  1. Erstellen Sie Tensorflow Lite (mit Ihren Änderungen) gemäß den Standardanweisungen
  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

Einen lokalen Pod erstellen

  1. Erstellen Sie ein Verzeichnis für Ihren lokalen Pod
  2. Führen Sie pod lib create TensorFlowLite in dem 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. Kopieren Sie das entpackte tensorflow_lite.framework nach TensorFlowLite/Frameworks
  6. Ändern Sie die generierte TensorFlowLite/TensorFlowLite.podspec , um auf die Bibliothek zu verweisen:
    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

Verweisen auf den benutzerdefinierten Pod in Ihrem Projekt

Sie können den benutzerdefinierten Pod einschließen, indem Sie ihn direkt aus der Podfile Ihrer App referenzieren:

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

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