Der Titel ist wie ein Papier geschrieben, aber der Punkt ist, dass die TensorFlow-Seite besagt, dass er auf Android / iOS ausgeführt werden kann, also habe ich so etwas versucht. Als ich es ausprobierte, konnte ich es sowohl auf Android als auch auf iOS erstellen, daher möchte ich die Prozedur usw. schreiben.
Android
Zuerst aus der Android-Version. https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android Grundsätzlich folgen Sie hier. Nach der Erstellung wird eine TF-Erkennung basierend auf der TF-Klassifizierung und der skalierbaren Objekterkennung mithilfe von Deep Neural Networks mithilfe des Inception-Modells von Google erstellt. Außerdem wurde anscheinend auch TF Stylize implementiert, das den Stil konvertiert ... Also habe ich versucht, in der folgenden Umgebung erneut zu erstellen.
Zunächst werde ich die neueste Version klonen. Es scheint, dass TensorFlow jetzt r0.12 war.
git clone --recurse-submodules https://github.com/tensorflow/tensorflow.git
Installieren Sie dann das Build Tool Bazel.
brew install bazel
Sie benötigen ein NDK, um Ihren C / C ++ - Code zu kompilieren. https://developer.android.com/ndk/guides/index.html Suchen Sie entsprechend in den Einstellungen nach sdk und öffnen Sie die Registerkarte "SDK-Tools". Hier
Sie können es installieren, indem Sie das Kontrollkästchen aktivieren und sich bewerben. Das SDK kann von den benachbarten "SDK-Plattformen" installiert werden, und alle Android 5.0 und höher wurden installiert.
Bearbeiten Sie dann die Datei / tensorflow / WORKSPACE
. Korrigieren Sie den auskommentierten Teil in Ihren eigenen Einstellungen.
Uncomment and update the paths in these entries to build the Android demo.
-#android_sdk_repository(
-# name = "androidsdk",
-# api_level = 23,
-# build_tools_version = "23.0.1",
-# # Replace with path to Android SDK on your system
-# path = "<PATH_TO_SDK>",
-#)
-#
-#android_ndk_repository(
-# name="androidndk",
-# path="<PATH_TO_NDK>",
-# api_level=21)
+android_sdk_repository(
+ name = "androidsdk",
+ api_level = 25,
+ build_tools_version = "25.0.2",
+ # Replace with path to Android SDK on your system
+ path = "/Users/user-name/Library/Android/sdk/",
+)
+
+android_ndk_repository(
+ name="androidndk",
+ path="/Users/user-name/Library/Android/sdk/ndk-bundle/",
+ api_level=21)
Im Folgenden wird das TensorFlow-Trainingsmodell abgelegt und an der richtigen Stelle platziert. Sie können sehen, dass das Modell im Assets-Verzeichnis abgelegt werden sollte. Die Grafik des Trainingsmodells: tensorflow_inception_graph.pb
betrug 53,9 MB. Außerdem scheint das Diagramm des Erkennungsmodells: "multibox_model.pb" 18,6 MB zu betragen.
$ curl -L https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip -o /tmp/inception5h.zip
$ curl -L https://storage.googleapis.com/download.tensorflow.org/models/mobile_multibox_v1.zip -o /tmp/mobile_multibox_v1.zip
$ unzip /tmp/inception5h.zip -d tensorflow/examples/android/assets/
$ unzip /tmp/mobile_multibox_v1.zip -d tensorflow/examples/android/assets/
Jetzt, da Sie zum Erstellen bereit sind, erstellen Sie bazel im Stammverzeichnis (wo sich WORKSPACE befindet).
$ bazel build -c opt //tensorflow/examples/android:tensorflow_demo
Es dauert ungefähr 20 Minuten, also lassen Sie es uns mit Espresso extrahieren. Wenn es erfolgreich ist, werde ich es tatsächlich auf dem Terminal installieren und ausprobieren.
$ adb install -r bazel-bin/tensorflow/examples/android/tensorflow_demo.apk
Wenn der folgende Fehler angezeigt wird, sollten Sie ihn aktualisieren. Wenn Sie ihn befolgen, können Sie ihn ordnungsgemäß erstellen.
$ adb install -r bazel-bin/tensorflow/examples/android/tensorflow_demo.apk
It appears you do not have 'Android SDK Platform-tools' installed.
Use the 'android' tool to install them:
android update sdk --no-ui --filter 'platform-tools'
Letzte Woche hatte ich den Eindruck, dass es ziemlich schleimig war, aber als ich es wieder aufbaute, schien es etwas schwerer zu sein ... vielleicht wegen meines Verstandes. Sie sollten auch die Anwendung Scalable Object Detection installiert haben. Und die Stilkonvertierung war sehr gut gemacht, es gab ein Beispielbild am unteren Rand des Bildschirms und es war eine Benutzeroberfläche, in der Sie auswählen konnten, wie viel als Stil verwendet werden soll. Die Auflösung kann zwischen 32 und 1024 gewählt werden, und obwohl sie sich ab etwa 192 nicht in Echtzeit dreht, konnte sie Bilder erzeugen.
Als ich mir die Quellcode-Commits ansah, war ich überrascht zu sehen, dass "StylizeActivity.java" und "TensorFlowYoloDetector.java" in nur einer Woche zunahmen.
iOS
Als nächstes kommt iOS. Grundsätzlich
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/ios_examples
Folgen Sie den TensorFlow iOS-Beispielen
in. Ich brauchte Xcode 7.3 oder höher und hatte iOS gestartet, also habe ich Xcode aktualisiert und konnte in der folgenden Umgebung bauen.
Als allererstes https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/makefile Ich bitte Sie, TensorFlow gemäß dem iOS-Abschnitt von zu erstellen.
xcode-select --install
brew install automake
brew install libtool
Installieren. Es scheint, dass Sie mit einem Schuss mit der folgenden Shell bauen können.
tensorflow/contrib/makefile/build_all_ios.sh
Dies scheint "Tensorflow / Contrib / Makefile / Gen / Lib / Libtensorflow-Core.a" zu erzeugen. Es scheint, dass Sie dies mit dem Xcode-Projekt verknüpfen können. Es dauert ungefähr 20 Minuten, also lassen Sie uns Kaffee kochen. Wenn Sie versuchen, anstelle dieser Shell eine nach der anderen zu generieren, laden Sie zuerst die Abhängigkeiten herunter.
tensorflow/contrib/makefile/download_dependencies.sh
Als nächstes kompilieren Sie protobuf für iOS.
tensorflow/contrib/makefile/compile_ios_protobuf.sh
Und machen Sie das Targeting für iOS.
make -f tensorflow/contrib/makefile/Makefile \
TARGET=IOS \
IOS_ARCH=ARM64
Führen Sie im Stammverzeichnis des TensorFlow-Verzeichnisses den folgenden oder Link aus, um Inception v1 zu modellieren Herunterladen und entpacken.
mkdir -p ~/graphs
curl -o ~/graphs/inception5h.zip \
https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip \
&& unzip ~/graphs/inception5h.zip -d ~/graphs/inception5h
cp ~/graphs/inception5h/* tensorflow/contrib/ios_examples/benchmark/data/
cp ~/graphs/inception5h/* tensorflow/contrib/ios_examples/camera/data/
cp ~/graphs/inception5h/* tensorflow/contrib/ios_examples/simple/data/
Wenn Sie sich das ansehen, sehen Sie, dass es drei Beispiel-Apps gibt: "Benchmark", "Kamera" und "Einfach". Natürlich ist es die "Kamera", die Bilder erkennt. Es scheint, dass das Inception-Modell unter dem Datenverzeichnis jeder Anwendung abgelegt werden sollte. Sobald dies erledigt ist, müssen Sie nur noch die Datei camera_example.xcodeproj im Verzeichnis öffnen und ausführen.
Im Gegensatz zur Android-Version gab es eine Funktion zum Stoppen der Bildaufnahme am unteren Bildschirmrand. Es funktioniert schleimig auf Ihrem iPhone SE. http://qiita.com/shu223/items/ce190ea6669b2636a8a7 Dem Artikel zufolge gab es auf dem iPhone 6 eine Verzögerung von einigen Sekunden. War das Modell selbst also kleiner als es war, oder unterstützte es die im Artikel Accelerate.framework unter iOS 10 erwähnte GPU Accelerated? Wird das BNNS hinzugefügt (Ist es immer noch so, weil das Problem nicht geschlossen ist ...) Im Gegenteil, wenn es nicht implementiert ist und es diese Geschwindigkeit ist, scheint es nicht möglich zu sein, fps mehr zu erhöhen, wenn es sich um ein iPhone 6s oder höher handelt.
Ich habe ein Beispiel erstellt, das das TensorFlow-Lernmodell auf Mobilgeräten ausführt. Es ist sowohl auf Android als auch auf iOS ziemlich schleimig und ich frage mich, wie schwer das Modell sein kann.
Recommended Posts