Установка Tensor Flow Lite Raspberry Pi - PullRequest
       7

Установка Tensor Flow Lite Raspberry Pi

0 голосов
/ 14 октября 2018

Я хочу установить TF Lite на RPi3 для распознавания изображений в реальном времени.

Я следовал: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/g3doc/rpi.md

Все скомпилировано и libtensorflow-lite.a собраны успешно.

Попытка запустить первоначальный пример приложения:

python label_image.py

Я получаю:

Traceback (most recent call last): 
   File "label_image.py", line 23, in
      <module> import tensorflow as tf

В чем я не уверен, так это:

  • Что я пропустил.
  • Что мне нужночтобы убедиться, что TF использует библиотеку lite, а не полную версию.
  • И наконец - никто не знает, чего должен достичь FPS TF lite на Pi?

Ответы [ 3 ]

0 голосов
/ 21 октября 2018

Извините, я не понял правил переполнения стека.
Я изменил комментарий, но, пожалуйста, удалите его, если рецензентам это не нравится.

«Tensorflow v1.11.0», который может быть введен официальной командой pip, вызывает проблемы.

undefined symbol: _ZN6tflite12tensor_utils39NeonMatrixBatchVectorMultiplyAccumulateEPKaiiS2_PKfiPfi

Упаковка пипса повреждена.

Процедура построения Tensorflow Lite выглядит следующим образом.

1. Выполните ниже.

$ sudo apt update;sudo apt upgrade -y
$ sudo apt-get install -y build-essential openjdk-8-jdk pkg-config 
zip g++ zlib1g-dev unzip

2. Перезапустите терминал.

3. Выполнитениже.(Необходимо запустить дважды)

$ sudo apt-get install -y openjdk-8-jdk

4.Bazel build.

$ cd ~
$ mkdir bazel;cd bazel
$ wget https://github.com/bazelbuild/bazel/releases/download/0.17.2/bazel-0.17.2-dist.zip
$ unzip bazel-0.17.2-dist.zip
$ nano bazel/scripts/bootstrap/compile.sh

run "${JAVAC}" -classpath "${classpath}" -sourcepath "${sourcepath}" \
-d "${output}/classes" -source "$JAVA_VERSION" -target "$JAVA_VERSION" \
-encoding UTF-8 ${BAZEL_JAVAC_OPTS} "@${paramfile}"
↓
run "${JAVAC}" -classpath "${classpath}" -sourcepath "${sourcepath}" \
-d "${output}/classes" -source "$JAVA_VERSION" -target "$JAVA_VERSION" \
-encoding UTF-8 ${BAZEL_JAVAC_OPTS} "@${paramfile}" -J-Xmx500M

$ sudo bash ./compile.sh
$ sudo cp output/bazel /usr/local/bin

5.Подготовка к сборке Tensorflow.

$ cd ~
$ sudo pip2 uninstall tensorflow
$ sudo pip3 uninstall tensorflow
$ sudo pip3 install keras_applications==1.0.4 --no-deps
$ sudo pip3 install keras_preprocessing==1.0.2 --no-deps
$ sudo pip3 install h5py==2.8.0
$ git clone -b v1.11.0 https://github.com/tensorflow/tensorflow.git
$ cd tensorflow
$ git checkout v1.11.0
$ ./tensorflow/contrib/lite/tools/make/download_dependencies.sh
$ ./tensorflow/contrib/lite/tools/make/build_rpi_lib.sh
$ sudo bazel build tensorflow/contrib/lite/toco:toco

6-1.Tensorflow'sнастройки.(Python2.x)

$ ./configure
WARNING: Running Bazel server needs to be killed, because the startup options are different.
WARNING: --batch mode is deprecated. Please instead explicitly shut down your Bazel server using the command "bazel shutdown".
You have bazel 0.17.2- (@non-git) installed.
Please specify the location of python. [Default is /usr/bin/python]: 
Found possible Python library paths:
/usr/local/lib/python2.7/dist-packages
/usr/local/lib
/usr/lib/python2.7/dist-packages
/opt/movidius/caffe/python
Please input the desired Python library path to use.  Default is [/usr/local/lib/python2.7/dist-packages]

Do you wish to build TensorFlow with jemalloc as malloc support? [Y/n]: n
No jemalloc as malloc support will be enabled for TensorFlow.

Do you wish to build TensorFlow with Google Cloud Platform support? [Y/n]: n
No Google Cloud Platform support will be enabled for TensorFlow.

Do you wish to build TensorFlow with Hadoop File System support? [Y/n]: n
No Hadoop File System support will be enabled for TensorFlow.

Do you wish to build TensorFlow with Amazon AWS Platform support? [Y/n]: n
No Amazon AWS Platform support will be enabled for TensorFlow.

Do you wish to build TensorFlow with Apache Kafka Platform support? [Y/n]: n
No Apache Kafka Platform support will be enabled for TensorFlow.

Do you wish to build TensorFlow with XLA JIT support? [y/N]: n
No XLA JIT support will be enabled for TensorFlow.

Do you wish to build TensorFlow with GDR support? [y/N]: n
No GDR support will be enabled for TensorFlow.

Do you wish to build TensorFlow with VERBS support? [y/N]: n
No VERBS support will be enabled for TensorFlow.

Do you wish to build TensorFlow with nGraph support? [y/N]: n
No nGraph support will be enabled for TensorFlow.

Do you wish to build TensorFlow with OpenCL SYCL support? [y/N]: n
No OpenCL SYCL support will be enabled for TensorFlow.

Do you wish to build TensorFlow with CUDA support? [y/N]: n
No CUDA support will be enabled for TensorFlow.

Do you wish to download a fresh release of clang? (Experimental) [y/N]: n
Clang will not be downloaded.

Do you wish to build TensorFlow with MPI support? [y/N]: n
No MPI support will be enabled for TensorFlow.

Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native]: 


Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]: n
Not configuring the WORKSPACE for Android builds.

Preconfigured Bazel build configs. You can use any of the below by adding "--config=<>" to your build command. See tools/bazel.rc for more details.
--config=mkl            # Build with MKL support.
--config=monolithic     # Config for mostly static monolithic build.
Configuration finished

6-2. Настроить тензор потока.(Python3.x)

Please specify the location of python. [Default is /usr/bin/python]: /usr/bin/python3


Found possible Python library paths:
  /usr/local/lib
  /usr/lib/python3/dist-packages
  /usr/local/lib/python3.5/dist-packages
Please input the desired Python library path to use.  Default is [/usr/local/lib] /usr/local/lib/python3.5/dist-packages

7. Построение тензорного потока.

$ sudo bazel build --config opt --local_resources 1024.0,0.5,0.5 \
--copt=-mfpu=neon-vfpv4 \
--copt=-ftree-vectorize \
--copt=-funsafe-math-optimizations \
--copt=-ftree-loop-vectorize \
--copt=-fomit-frame-pointer \
--copt=-DRASPBERRY_PI \
--host_copt=-DRASPBERRY_PI \
//tensorflow/tools/pip_package:build_pip_package

8. Установка тензорного потока.

$ sudo ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
$ sudo pip2 install /tmp/tensorflow_pkg/tensorflow-1.11.0-cp27-cp27mu-linux_armv7l.whl
Or
$ sudo pip3 install /tmp/tensorflow_pkg/tensorflow-1.11.0-cp35-cp35m-linux_armv7l.whl

9. 【Обязательно】 Перезапустите терминал.

10. Выполните ниже.

$ sudo apt install -y python-scipy python3-scipy
$ sudo apt remove openjdk-8-*
$ sudo apt purge openjdk-8-*

Если сделать это до сих пор, проблема должна быть решена.
Тем не менее, это займет всего 27 часов.
Если вы это сделаетене ждать 27 часов, вы можете использовать кросс-билд или резко сократить время ожидания, используя предложенный файл колеса.

Ниже представлен бинарный файл Tensorflow для предварительной сборки (колесо).
https://github.com/PINTO0309/Tensorflow-bin

0 голосов
/ 16 декабря 2018

Чтобы следовать обзору Ишиты Шаха, я публикую здесь свои шаги по созданию / запуску двух стартовых приложений для TfLite, работающих на Raspberry Pi 3: -)

1, следуйте https://www.raspberrypi.org/learning/software-guide/quickstart/,установить Raspbian на доску Raspberry Pi 3.

#sudo apt install build-essential Выполните https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/pi_examples для установки камеры.Проверьте, работает ли камера:

#raspistill -v

2, git clone -b r1.12 https://github.com/huaxiaozhong1/tensorflow.git. (Лучше всего это делается в последнем док-контейнереUbuntu 18.04).Он будет клонировать 6 статических библиотек в / tenorflow / tenorflow / contrib / lite / examples / camera / libs: libjpeg.a librt.a libv4l1.a libv4l2.a libv4l2rds.a libv4lconvert.a.На самом деле они из среды Pi, подготовленной на шаге 1:

3, в контейнере хоста:

#apt update

#apt upgrade

#apt install crossbuild-essential-armhf

#cd /tensorflow

#./tensorflow/contrib/lite/tools/make/download_dependencies.sh

#apt install -y libjpeg-dev

#apt install libv4l-dev

#./tensorflow/contrib/lite/tools/make/build_rpi_lib.sh

Теперь вы могли найти/ label_image и / tenorflow / tenorflow / contrib / lite / tools / make / gen / rpi_armv7l / bin / camera.

4, Скопируйте label_image и камеру, исполняемые файлы Linux, на доску Raspeberry.Скопируйте grace_hopper.bmp из / tenorflow / tenorflow / contrib / lite / examples / label_image / testdata контейнера хоста на доску.Скопируйте label.txt из / tenorflow / tenorflow / contrib / lite / java / ovic / src / testdata контейнера хоста на доску.Загрузите Mobilenet_v2_1.0_224_quant.tflite из https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/g3doc/models.md на доску.3 файла данных и 2 исполняемых файла Linux должны находиться в одной папке.

5, Запустите 2 приложения по одному.

Примечание: базовая ветка, в которую я добавил 2 приложения, - это r1.12.Теперь TfLite было объявлено о выходе из Contribu.Но когда я запустил build_rpi_lib.sh в последнем тензорном потоке / тензорном потоке: ночной уровень, он не имел успехаИтак, могу ли я подать пулл-запрос на основе r1.12 прямо сейчас?Я мог бы добавить ту же функцию на r1.13 +, как только она преуспеет в сборке libtensorflow-lite.a.

0 голосов
/ 20 октября 2018

Что я пропустил.

Чтобы установить Tensorflow на Raspberry Pi, вы можете использовать официальный пакет pip

pip install tensorflow

Для более подробной информации посетите официальную страницу документации-

https://www.tensorflow.org/install/pip

Или, если вам нужен кросс-скомпилированный пакет, вы можете следовать этой официальной странице документации -

https://www.tensorflow.org/install/source_rpi

Что мне нужно сделать, чтобы TF использовал библиотеку liteа не полная версия.

Вам просто нужна обученная модель и преобразовать ее в модель TFLite.Для получения полной информации вы можете следовать этому уроку -

https://medium.com/tensorflow/training-and-serving-a-realtime-mobile-object-detector-in-30-minutes-with-cloud-tpus-b78971cf1193

Наконец - никто не знает, чего FPS TF Lite должен достичь на Pi?

Я в настоящее времяработает над этим, но так как есть некоторая проблема в текущей официальной сборке tenorflow для Raspberry pi (https://github.com/tensorflow/tensorflow/issues/23082), Я не могу рассчитать производительность на Pi.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...