Le titre est écrit comme un article, mais le fait est que la page TensorFlow dit qu'il peut être exécuté sur Android / iOS, alors j'ai essayé quelque chose comme ça. Quand je l'ai essayé, j'ai pu le construire à la fois sur Android et iOS, alors j'aimerais écrire la procédure, etc.
Android
D'abord à partir de la version Android. https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android Suivez essentiellement ici. Une fois construit, il créera un TF Detect basé sur TF Classify, une détection d'objet évolutive utilisant des réseaux de neurones profonds en utilisant le modèle Inception de Google. De plus, il semble que TF Stylize qui convertit le style ait également été implémenté ... J'ai donc essayé de reconstruire à nouveau dans l'environnement suivant.
Tout d'abord, je vais cloner la dernière version. Il semble que TensorFlow était désormais r0.12.
git clone --recurse-submodules https://github.com/tensorflow/tensorflow.git
Ensuite, installez l'outil de construction bazel.
brew install bazel
Vous avez besoin d'un NDK pour compiler votre code C / C ++.
https://developer.android.com/ndk/guides/index.html
Selon, recherchez sdk dans les Préférences et ouvrez l'onglet Outils du SDK
. ici
Vous pouvez l'installer en cochant la case et en postulant. Vous pouvez installer le SDK à partir des plates-formes SDK voisines et j'ai installé tous les Android 5.0 et plus.
Puis éditez le fichier / tensorflow / WORKSPACE
. Corrigez la partie commentée selon vos propres paramètres.
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)
Ci-dessous, nous allons déposer le modèle de formation TensorFlow et le placer au bon endroit. Vous pouvez voir que le modèle doit être placé dans le répertoire des actifs. Le graphe du modèle d'entraînement: tensorflow_inception_graph.pb
était de 53,9 Mo. En outre, le graphe du modèle de détection: multibox_model.pb
semble faire 18,6 Mo.
$ 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/
Maintenant que vous êtes prêt à construire, bazel construit dans le répertoire racine (où se trouve WORKSPACE).
$ bazel build -c opt //tensorflow/examples/android:tensorflow_demo
Cela prend environ 20 minutes, alors extrayons-le avec un expresso. Si cela réussit, je vais l'installer sur le terminal et l'essayer.
$ adb install -r bazel-bin/tensorflow/examples/android/tensorflow_demo.apk
Si vous obtenez l'erreur suivante, vous devez le mettre à jour, donc si vous le suivez, vous pouvez le créer correctement.
$ 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'
La semaine dernière, j'avais l'impression qu'il était plutôt gluant, mais quand je l'ai reconstruit, il semblait un peu plus lourd ... peut-être à cause de mon esprit. Vous devez également avoir installé l'application de détection d'objet évolutive. Et la conversion de style a été très bien faite, il y avait un exemple de peinture en bas de l'écran, et c'était une interface utilisateur où vous pouviez choisir combien utiliser comme style. La résolution peut être sélectionnée de 32 à 1024, et bien qu'elle ne tourne pas en temps réel à partir d'environ 192, elle a pu générer des images.
En regardant les commits du code source, j'ai été surpris de voir que «StylizeActivity.java» et «TensorFlowYoloDetector.java» ont augmenté en une semaine seulement.
iOS
Vient ensuite iOS. Fondamentalement
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/ios_examples
Suivez les exemples TensorFlow iOS
dans. J'avais besoin de Xcode 7.3 ou version ultérieure, et j'avais augmenté iOS, j'ai donc mis à jour Xcode et j'ai pu construire dans l'environnement suivant.
Tout d'abord https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/makefile Je vous demande de créer TensorFlow selon la section iOS de.
xcode-select --install
brew install automake
brew install libtool
Installer. Il semble que vous puissiez construire avec un seul coup avec le shell suivant.
tensorflow/contrib/makefile/build_all_ios.sh
Cela semble générer tensorflow / contrib / makefile / gen / lib / libtensorflow-core.a
. Il semble que vous puissiez lier cela au projet Xcode. Cela prend environ 20 minutes, alors préparons du café. Si vous essayez de générer un par un au lieu de ce shell, téléchargez d'abord les dépendances.
tensorflow/contrib/makefile/download_dependencies.sh
Ensuite, compilez protobuf pour iOS.
tensorflow/contrib/makefile/compile_ios_protobuf.sh
Et faites du ciblage iOS.
make -f tensorflow/contrib/makefile/Makefile \
TARGET=IOS \
IOS_ARCH=ARM64
À la racine du répertoire TensorFlow, effectuez le lien vers le modèle Inception v1. Téléchargez et décompressez.
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/
Si vous regardez cela, vous pouvez voir qu'il existe trois exemples d'applications: benchmark
, camera
et simple
. Bien sûr, c'est la "caméra" qui reconnaît les images. Il semble que le modèle de démarrage devrait être placé sous le répertoire de données de chaque application. Une fois cela fait, il ne vous reste plus qu'à ouvrir le fichier camera_example.xcodeproj dans le répertoire et à l'exécuter.
Contrairement à la version Android, il y avait une fonction pour arrêter l'acquisition d'image en bas de l'écran. Cela fonctionne de manière gluante sur votre iPhone SE. http://qiita.com/shu223/items/ce190ea6669b2636a8a7 Selon l'article, il y a eu un retard de quelques secondes sur l'iPhone 6, le modèle lui-même était-il plus petit qu'il ne l'était, ou supportait-il le GPU Accelerated mentionné dans l'article Accelerate.framework sur iOS 10? Le BNNS est-il ajouté (est-ce toujours le cas parce que le problème n'est pas clos ...) Au contraire, s'il n'est pas implémenté et que c'est cette vitesse, il semble qu'il ne sera pas possible d'augmenter davantage les fps s'il s'agit d'iPhone 6s ou supérieur.
J'ai créé un exemple qui exécute le modèle d'apprentissage TensorFlow sur mobile. C'est assez gluant sur Android et iOS, et je me demande à quel point le modèle peut être lourd.
Recommended Posts