In diesem Dokument wird beschrieben, wie Sie eine LiteRT-iOS-Bibliothek selbst erstellen können. Normalerweise ist es nicht erforderlich, die LiteRT-iOS-Bibliothek lokal zu erstellen. Wenn Sie die du nur verwenden möchtest. Am einfachsten ist die Verwendung der vordefinierten stabilen Version oder der Veröffentlichungen der LiteRT CocoaPods. Weitere Informationen finden Sie unter iOS . Dort finden Sie weitere Informationen zu deren Verwendung unter iOS Projekten.
Lokale Erstellung
In einigen Fällen möchten Sie vielleicht einen lokalen LiteRT-Build verwenden, wenn Sie lokale Änderungen an LiteRT vornehmen und diese testen möchten, Änderungen in Ihrer iOS-App vornehmen oder ein statisches Framework vorziehen. dynamische Anzeige. Um ein universelles iOS-Framework für LiteRT lokal zu erstellen, müssen Sie es mit Bazel auf einem macOS-Computer erstellen.
Xcode installieren
Falls noch nicht geschehen, müssen Sie Xcode 8 oder höher und die entsprechenden Tools installieren.
mit xcode-select
:
xcode-select --install
Handelt es sich um eine Neuinstallation, musst du die Lizenzvereinbarung für alle mit dem folgenden Befehl:
sudo xcodebuild -license accept
Bazel installieren
Bazel ist das primäre Build-System für TensorFlow. Installieren Sie Bazel gemäß der
Anleitung auf der Baseball-Website. Wählen Sie auf jeden Fall
Version zwischen _TF_MIN_BAZEL_VERSION
und _TF_MAX_BAZEL_VERSION
in
configure.py
-Datei im Stammverzeichnis des tensorflow
-Repositorys.
ARBEITSBEREICH und .bazelrc konfigurieren
Führen Sie das Skript ./configure
im Stammverzeichnis für den TensorFlow-Checkout-Index aus.
mit „Ja“ antworten wenn das Skript fragt, ob Sie TensorFlow mit iOS erstellen möchten.
Support.
Dynamisches TensorFlowLiteC-Framework erstellen (empfohlen)
Sobald Bazel ordnungsgemäß mit der iOS-Unterstützung konfiguriert wurde, können Sie den
TensorFlowLiteC
-Framework mit dem folgenden Befehl.
bazel build --config=ios_fat -c opt --cxxopt=--std=c++17 \
//tensorflow/lite/ios:TensorFlowLiteC_framework
Dieser Befehl generiert die Datei TensorFlowLiteC_framework.zip
unter
bazel-bin/tensorflow/lite/ios/
im TensorFlow-Stammverzeichnis.
Standardmäßig enthält das generierte Framework ein Binärdatei mit armv7,
arm64 und x86_64 (aber nicht i386). Um die vollständige Liste der Build-Flags zu sehen, die beim
--config=ios_fat
finden Sie im Abschnitt zu den iOS-Konfigurationen in der
.bazelrc
-Datei.
Statisches TensorFlowLiteC-Framework erstellen
Standardmäßig wird das dynamische Framework nur über CocoaPods verteilt. Bei Bedarf
Wenn Sie stattdessen das statische Framework verwenden möchten, können Sie das statische TensorFlowLiteC
-Objekt erstellen.
mit dem folgenden Befehl:
bazel build --config=ios_fat -c opt --cxxopt=--std=c++17 \
//tensorflow/lite/ios:TensorFlowLiteC_static_framework
Der Befehl generiert eine Datei mit dem Namen TensorFlowLiteC_static_framework.zip
.
im Verzeichnis bazel-bin/tensorflow/lite/ios/
unter Ihrem TensorFlow-Stammverzeichnis
-Verzeichnis. Dieses statische Framework kann genau auf die gleiche Weise verwendet werden wie die
dynamische Anzeige.
Selektives Erstellen von TFLite-Frameworks
Sie können kleinere Frameworks erstellen, die nur auf eine Reihe von Modellen ausgerichtet sind, indem Sie selektive build, wodurch nicht verwendete Vorgänge in Ihrem Modellsatz übersprungen werden und nur die Vorgänge op-Kernels, die zum Ausführen des angegebenen Satzes von Modellen erforderlich sind. Der Befehl lautet:
bash tensorflow/lite/ios/build_frameworks.sh \
--input_models=model1.tflite,model2.tflite \
--target_archs=x86_64,armv7,arm64
Mit dem Befehl oben wird das statische Framework generiert.
bazel-bin/tensorflow/lite/ios/tmp/TensorFlowLiteC_framework.zip
für TensorFlow
Lite-integrierte und benutzerdefinierte Vorgänge: und optional das statische Framework generiert.
bazel-bin/tensorflow/lite/ios/tmp/TensorFlowLiteSelectTfOps_framework.zip
wenn
„Select TensorFlow Operationen“
enthalten. Beachten Sie, dass das Flag --target_archs
zum Festlegen Ihrer Bereitstellungsarchitekturen.
In der eigenen Anwendung verwenden
CocoaPods-Entwickler
Es gibt drei CocoaPods für LiteRT:
TensorFlowLiteSwift
: Stellt die Swift APIs für LiteRT bereit.TensorFlowLiteObjC
: Stellt die Objective-C APIs für LiteRT bereit.TensorFlowLiteC
: Gemeinsamer Basis-Pod, der den LiteRT-Kern einbettet Laufzeit und macht die von den beiden oben genannten Pods verwendeten Basis-C-APIs verfügbar. Nicht beabsichtigt direkt von den Nutzenden verwendet werden.
Als Entwickler solltest du entweder TensorFlowLiteSwift
oder
TensorFlowLiteObjC
basierend auf der Sprache, in der Ihre App geschrieben ist, aber
nicht beides. Die genauen Schritte zur Verwendung lokaler Builds von LiteRT sind unterschiedlich.
je nachdem,
welches Teil Sie bauen möchten.
Lokale Swift- oder Objective-C-APIs verwenden
Wenn Sie CocoaPods verwenden und nur einige lokale Änderungen am Swift APIs oder Objective-C APIs von LiteRT führen Sie die hier beschriebenen Schritte aus.
Nehmen Sie an der
tensorflow
-Bezahlseite Änderungen an der Swift API oder der Objective-C API vor.Öffnen Sie die Datei
TensorFlowLite(Swift|ObjC).podspec
und aktualisieren Sie diese Zeile:
s.dependency 'TensorFlowLiteC', "#{s.version}"
bis:
.s.dependency 'TensorFlowLiteC', "~> 0.0.1-nightly"
So stellen Sie sicher, dass Sie Ihre Swift- oder Objective-C-APIs erstellen. im Vergleich zur neuesten verfügbaren nächtlichen Version derTensorFlowLiteC
APIs (wird jede Nacht zwischen 01:00 und 04:00 Uhr Pacific Time erstellt) anstelle der stabilen Version, die im Vergleich zu Ihrem lokalentensorflow
-Bezahlvorgang möglicherweise veraltet ist. Sie können aber auch Ihre eigene Version vonTensorFlowLiteC
und verwenden Sie diese Version (siehe Lokale LiteRT-Version verwenden). Core weiter unten).Ändern Sie die Abhängigkeit im
Podfile
Ihres iOS-Projekts so: auf den lokalen Pfad zu Ihremtensorflow
-Stammverzeichnis.
Für Swift:
pod 'TensorFlowLiteSwift', :path => '<your_tensorflow_root_dir>'
Für Objective-C:
pod 'TensorFlowLiteObjC', :path => '<your_tensorflow_root_dir>'
Aktualisieren Sie die Pod-Installation über das Stammverzeichnis Ihres iOS-Projekts.
$ pod update
Öffnen Sie den generierten Arbeitsbereich (
<project>.xcworkspace
) wieder und erstellen Sie den neuen in Xcode ändern.
Lokalen LiteRT-Kern verwenden
Sie können ein privates CocoaPods-Spezifikations-Repository einrichten und Ihre benutzerdefinierten
TensorFlowLiteC
-Framework zu Ihrem privaten Repository hinzu. Sie können diese podspec kopieren
und ändern Sie einige Werte:
...
s.version = <your_desired_version_tag>
...
# Note the `///`, two from the `file://` and one from the `/path`.
s.source = { :http => "file:///path/to/TensorFlowLiteC_framework.zip" }
...
s.vendored_frameworks = 'TensorFlowLiteC.framework'
...
Nachdem Sie Ihre eigene TensorFlowLiteC.podspec
-Datei erstellt haben, können Sie den
Anleitung zur Verwendung privater CocoaPods
ein eigenes Projekt erstellen. Sie können den TensorFlowLite(Swift|ObjC).podspec
auch ändern, um
Bewegen Sie den Mauszeiger auf den benutzerdefinierten TensorFlowLiteC
-Pod und verwenden Sie entweder Swift oder Objective-C
Pod in Ihrem Anwendungsprojekt.
Bazel-Entwickler
Wenn Sie Bazel als Haupt-Build-Tool verwenden,
TensorFlowLite
-Abhängigkeit von Ihrem Ziel in der Datei BUILD
.
Für Swift:
swift_library(
deps = [
"//tensorflow/lite/swift:TensorFlowLite",
],
)
Für Objective-C:
objc_library(
deps = [
"//tensorflow/lite/objc:TensorFlowLite",
],
)
Wenn Sie Ihr App-Projekt erstellen, werden alle Änderungen an der LiteRT-Bibliothek aufgenommen und in Ihre App integriert werden.
Xcode-Projekteinstellungen direkt ändern
Es wird dringend empfohlen, zum Hinzufügen von LiteRT CocoaPods oder Bazel zu verwenden
Abhängigkeit in Ihr Projekt einbinden. Wenn Sie TensorFlowLiteC
trotzdem hinzufügen möchten
Framework manuell hinzugefügt, müssen Sie das TensorFlowLiteC
-Framework als
in Ihr Anwendungsprojekt einbinden. Entpacken Sie die Datei
TensorFlowLiteC_framework.zip
, die mit dem obigen Build generiert wurden, um den
TensorFlowLiteC.framework
-Verzeichnis. Dieses Verzeichnis ist das eigentliche Framework
die Xcode verstehen kann.
Nachdem Sie die TensorFlowLiteC.framework
vorbereitet haben, müssen Sie sie zuerst hinzufügen
als eingebettete Binärdatei
in Ihr App-Ziel. Der Abschnitt mit den Projekteinstellungen
kann je nach Xcode-Version unterschiedlich sein.
- Xcode 11: Gehen Sie zu "Allgemein". des Projekteditors für Ihr App-Ziel,
und fügen Sie
TensorFlowLiteC.framework
unter "Frameworks, Libraries" und Eingebettete Inhalte . - Xcode 10 und niedriger: Gehen Sie zu "Allgemein". des Projekteditors für Ihr
App-Ziel und fügen Sie
TensorFlowLiteC.framework
unter „Eingebettet Binärprogramme“. Das Framework sollte auch automatisch unter „Verknüpft“ hinzugefügt werden Frameworks und Bibliotheken .
Wenn Sie das Framework als eingebettetes Binärprogramm hinzufügen, aktualisiert Xcode auch das
„Framework-Suchpfade“ unter „Build Settings“ (Build-Einstellungen) Tab zum Einbeziehen des übergeordneten Elements
Verzeichnis Ihres Frameworks. Falls dies nicht automatisch geschieht,
sollte das übergeordnete Verzeichnis von TensorFlowLiteC.framework
manuell hinzufügen
-Verzeichnis.
Sobald diese beiden Einstellungen eingerichtet sind, sollten Sie die Methode
Das C API von LiteRT, das durch die Headerdateien unter
TensorFlowLiteC.framework/Headers
-Verzeichnis.