Создание инструментария OpenVINO™ с открытым исходным кодом для ОС Raspbian* и Intel® Neural Compute Stick 2

Документация

Установка и настройка

000057005

27.10.2021

Заметки
  • Во время установки необходимо выполнить все действия.
  • Эти действия были протестированы с помощью платы Raspberry Pi 4* и 32-разрядной платы Raspbian*.
  • Для выполнения действий, описанных в настоящем руководстве, необходимо подключение к Интернету.
  • Статья была проверена с помощью выпуска 2021.3 дистрибутива с открытым исходным кодом инструментария OpenVINO™ инструментарий.

Инструментарий OpenVINO™ позволяет быстро развертывать приложения и решения, подражательные концепции человека. Инструментарий расширяет рабочие нагрузки компьютерного зрения (CV) на аппаратном обеспечении Intel® на базе convolutional Neural Networks (CNN), что позволяет максимально увеличить производительность. Следующие действия обычно выполняются в этой статье Intel® Neural Compute Stick 2 инструментарии OpenVINO™ с открытым исходным кодом, но в них содержатся конкретные изменения, которые позволяют выполнить все действия на вашей плате.

В этом руководстве содержатся инструкции по созданию дистрибутива инструментов OpenVINO™ с открытым исходным кодом для ОС Raspbian* и их Intel® Neural Compute Stick 2 (Intel® NCS2).

ПримечаниеОригинальный Intel® Movidius™ Neural Compute Stick также совместим с OpenVINO™ инструментарием, и это устройство можно использовать вместо Intel® Neural Compute Stick 2 в этой статье.

Нажмите или название темы для получения информации:

Системные требования
ПримечаниеВ этом руководстве предполагается, что ваша системная плата Raspberry Pi* работает с операционной системой, которая указана ниже.

Оборудования

  • Raspberry Pi* 4 (Raspberry Pi* 3 Model B+ должна работать).)
  • Не менее 8 ГБ микроСХД-карты
  • Intel® Neural Compute Stick 2
  • Сетевой адаптер или совместимая беспроводная сеть
  • Выделенный адаптер питания постоянного тока

Целевая операционная система

  • Raspbian* Stretch, 32-разрядная

  • Raspbian* (32-разрядная версия)
Настройка среды сборки
ПримечаниеВ этом руководстве содержатся команды, которые для корректной установки должны быть выполнены как доступ к root или sudo.

Убедитесь, что программное обеспечение вашего устройства установлено на актуальном уровне:

sudo apt update && sudo apt upgrade -y

Некоторые из зависимостей инструментария не имеют предварительно разработанных binaries ARMv7, и их необходимо создать из исходного кода. Это может значительно увеличить время сборки по сравнению с другими платформами. Для подготовки к сборке инструментария необходимо выполнить следующие действия:

Установка инструментов сборки

sudo apt install build-essential

Установка CMake* из источника

Извлеките CMake на странице выпуска Kitware* GitHub*, извлеките его и введите извлеченную папку:

cd ~/

wget https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4.tar.gz

tar xvzf cmake-3.14.4.tar.gz

cd ~/cmake-3.14.4

Запустите сценарий bootstrap, чтобы установить дополнительные зависимости, начать сборку:

./bootstrap

make -j4

sudo make install

ПримечаниеКоличество заданий, которые использует команда make, можно регулировать с помощью флага -j. Рекомендуется установить количество рабочих мест в число ядер вашей платформы.

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

grep -c ^processor /proc/cpuinfo

Имейте в виду, что установка слишком высокой цифры может привести к перегрузке памяти и сбою сборки. Если время разрешит, рекомендуется выполнить от 1 до 2 рабочих мест.

Установка OpenCV из источника

Инструментарий Intel® OpenVINO™ использует мощность OpenCV* для ускорения логической обработки на основе машинного зрения. Несмотря на CMake процесса загрузки инструментария Intel® OpenVINO™ OpenCV*, если версия не установлена для поддерживаемых платформ, для платформ ARMv7 не существует конкретной версии. Таким образом, вы должны создать OpenCV из исходного кода.

Для OpenCV требуются некоторые дополнительные зависимости. Установите следующее из диспетчера пакетов:

sudo apt install git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libatlas-base-dev python3-scipy 

ПримечаниеРекомендуется указать последнюю и стабильную филиал или теги на странице клонирования на странице OpenCV* GitHub вместо клонирования основной ветви по умолчанию.

Клонирование репозитория на странице OpenCV* GitHub, подготовка среды сборки и сборка:

cd ~/

git clone --depth 1 --branch 4.5.2-openvino https://github.com/opencv/opencv.git

cd opencv && mkdir build && cd build

cmake –DCMAKE_BUILD_TYPE=Release –DCMAKE_INSTALL_PREFIX=/usr/local ..

make -j4

sudo make install

Загрузка исходного кода и установка зависимостей
ПримечаниеРекомендуется указать последнюю и стабильную ветви или теги на странице клонирования на странице openvinotoolkit GitHub вместо клонирования основной ветви по умолчанию.

Версия инструментария Intel® OpenVINO™ с открытым исходным кодом доступна на сайте GitHub. Папка репозитория под названием openvino.

cd ~/

git clone --depth 1 --branch 2021.3 https://github.com/openvinotoolkit/openvino.git

В репозитории также имеются подмодульы, которые должны быть извлечены:

cd ~/openvino

git submodule update --init --recursive

Инструментарий Intel® OpenVINO™ имеет ряд зависимостей сборки. Сценарий install_build_dependencies.sh выборки для вас. Если при попытке запуска сценария возникнут какие-либо проблемы, вы должны установить каждую зависимость отдельно.

Запустите сценарий для установки зависимостей для инструментария Intel® OpenVINO™ Toolkit:

sh ./install_build_dependencies.sh

Если сценарий успешно завершен, вы готовы создать инструментарий. Если на данный момент произошла ошибка, убедитесь, что вы устанавливаете перечисленные зависимости и повторите попытку.

Здание

Первый шаг к началу сборки — это ошибка установки OpenCV. Используйте следующую команду:

export OpenCV_DIR=/usr/local/lib/cmake/opencv4

Для создания оболочки Python API установите все дополнительные пакеты, указанные в /inference-engine/ie_bridges/python/requirements.txt файле:

cd ~/openvino/inference-engine/ie_bridges/python/

pip3 install -r requirements.txt

Примечание

Используйте -DENABLE_PYTHON=ON option. To specify an exact Python version, use the following options:

-DPYTHON_EXECUTABLE=`which python3.7` \

-DPYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \

-DPYTHON_INCLUDE_DIR=/usr/include/python3.7

Используйте -DNGRAPH_ONNX_IMPORT_ENABLE=ON option to enable the building of the nGraph ONNX importer.

Используйте -DNGRAPH_PYTHON_BUILD_ENABLE=ON option to enable the nGraph binding.

Используйте -DCMAKE_INSTALL_PREFIX={BASE_dir}/openvino_dist to specify the directory for the CMake building to build in:

for example, -DCMAKE_INSTALL_PREFIX=/home/pi/openvino_dist

В инструментарии используется CMake сборки системы для управления и упрощения процесса сборки. Для создания логических выводов и плагина MYRIAD для Intel® Neural Compute Stick 2 используйте следующие команды:

ПримечаниеУдалите все backslahes (\) при запуске следующих команд. Backslahes используются для информирования о том, что эти команды не разделены.

cd ~/openvino

mkdir build && cd build

cmake -DCMAKE_BUILD_TYPE=Release \

-DCMAKE_INSTALL_PREFIX=/home/pi/openvino_dist \

-DENABLE_MKL_DNN=OFF \

-DENABLE_CLDNN=OFF \

-DENABLE_GNA=OFF \

-DENABLE_SSE42=OFF \

-DTHREADING=SEQ \

-DENABLE_OPENCV=OFF \

-DNGRAPH_PYTHON_BUILD_ENABLE=ON \

-DNGRAPH_ONNX_IMPORT_ENABLE=ON \

-DENABLE_PYTHON=ON \

-DPYTHON_EXECUTABLE=$(which python3.7) \

-DPYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \

-DPYTHON_INCLUDE_DIR=/usr/include/python3.7 \

-DCMAKE_CXX_FLAGS=-latomic ..

make -j4

sudo make install

Если команда make fails из-за проблемы с библиотекой OpenCV, убедитесь, что вы указали системе, где установлена программа OpenCV. Если сборка завершится, инструментарий Intel® OpenVINO™ будет готов к запуску. Необходимо отметить, что сборки размещаются в папке ~/openvino/inference-engine/bin/armv7l/Release.

Проверка установки

После успешного завершения сборки логических выводов вы должны убедиться в правильности настройки всех данных. Для проверки работы инструментария и Intel® Neural Compute Stick 2 на вашем устройстве выполните следующие действия:

  1. Запустите пример программы object_detection_sample_ssd для подтверждения корректной загрузки всех библиотек.
  2. Загрузите обученную модель.
  3. Выберите вход для нейронной сети.
  4. Настройте драйвер USB Intel® Neural Compute Stick 2 Linux*.
  5. Запустите object_detection_sample_ssd с выбранной моделью и входом.

Примеры приложений

Инструментарий Intel® OpenVINO™ содержит некоторые примеры приложений, в которых используются движок логических выводов и Intel® Neural Compute Stick 2. Одна из программ — object_detection_sample_ssd, которая доступна в следующих приложениях:

~/openvino/bin/armv7l/Release

Выполните следующие команды для тестирования object_detection_sample_ssd:

cd ~/openvino/bin/armv7l/Release

./object_detection_sample_ssd -h

Он должен распечатать диалог поддержки с описанием доступных вариантов для программы.

Загрузка модели

Для передачи входных данных программе требуется модель. Вы можете получить модели инструментария Intel® OpenVINO™ в формате IR:

  • Использование оптимизатора моделей для преобразования существующей модели из одной из поддерживаемых платформ в формат IR для логических выводов
  • Использование программы загрузки моделей для загрузки из репозиторий Open Model Zoo
  • Загрузите файлы ИИ непосредственно из download.01.org

Для наших целей загрузка напрямую является простой. Используйте следующие команды, чтобы получить модель person-vehicle-bike detection :

cd ~/Downloads

wget https://download.01.org/opencv/2021/openvinotoolkit/2021.2/open_model_zoo/models_bin/3/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.bin

wget https://download.01.org/opencv/2021/openvinotoolkit/2021.2/open_model_zoo/models_bin/3/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.xml

ПримечаниеДля Intel® Neural Compute Stick 2 требуются модели, оптимизированные для 16-разрядного формата с плавающей за точкой, известного как FP16. Если ваша модель отличается от примера, может потребоваться ее преобразование с помощью инструмента оптимизации модели в FP16.

Вход для нейронной сети

Последним пунктом, который необходим, является ввод для нейронной сети. Для модели, которая мы загрузили, вам нужно изображение с 3 каналами цвета. Загрузите необходимые файлы на свою плату:

cd ~/Downloads
wget https://cdn.pixabay.com/photo/2018/07/06/00/33/person-3519503_960_720.jpg -O walk.jpg

Настройка драйвера USB Intel® Neural Compute Stick 2 Linux

Необходимо добавить некоторые правила udev, которые позволят системе распознавать Intel® NCS2 USB-устройства.

ПримечаниеЕсли текущий пользователь не является участником группы пользователей, выполните следующую команду и перезагрузите устройство.

sudo usermod -a -G users "$(whoami)"

Set up the OpenVINO™ среды:

source /home/pi/openvino_dist/bin/setupvars.sh

To perform логические выводы на Intel® Neural Compute Stick 2, установите правила USB, выполив install_NCS_udev_rules.shСценарий:

sh /home/pi/openvino_dist/install_dependencies/install_NCS_udev_rules.sh

The USB driver should be installed correctly now. If the Intel® Neural Compute Stick 2 is not detected when running demos, restart your device and try again.

Запуск object_detection_sample_ssd

После загрузки модели будет доступно вводное изображение, Intel® Neural Compute Stick 2 устройство подключено к порту USB, используйте следующую команду для запуска object_detection_sample_ssd:

cd ~/openvino/bin/armv7l/Release

./object_detection_sample_ssd -i ~/Downloads/walk.jpg -m ~/Downloads/person-vehicle-bike-detection-crossroad-0078.xml -d MYRIAD

Это приложение будет запускаться с помощью выбранного варианта. Флаг -d указывает программе, какое устройство необходимо использовать для аналитики. —MYRIAD активирует плагин MYRIAD, используя Intel® Neural Compute Stick 2. После успешного выполнения команды на терминале будут отображаться статистические данные для обработки выводов и создания образа.

[ INFO ] Image out_0.bmp created!
[ INFO ] Execution successful
[ INFO ] This sample is an API example, for any performance measurements please use the dedicated benchmark_app tool


Используйте программу просмотра изображений Raspbian* по умолчанию для открытия открываемой в результате программы вывода изображения:

gpicview out_0.bmp

Если приложение успешно работает на вашем Intel® NCS2, OpenVINO™ инструментарий и Intel® Neural Compute Stick 2 настройка корректно для использования на вашем устройстве.

Проверка привязки модуля nGraph к Python

Запустите демонстрациюobject_detection_sample_ssd Python:

source /home/pi/openvino_dist/bin/setupvars.sh

cd /home/pi/openvino_dist/deployment_tools/inference_engine/samples/python/object_detection_sample_ssd

python3 object_detection_sample_ssd.py -i ~/Downloads/walk.jpg -m ~/Downloads/person-vehicle-bike-detection-crossroad-0078.xml -d MYRIAD

Если приложение успешно работает на Intel® NCS2, модуль nGraph имеет корректную привязку к Python.

Переменные среды

Перед компилятором и запуском OpenVINO инструментов необходимо обновить несколько переменных среды. Запустите следующий сценарий для временного установки переменных среды:

source /home/pi/openvino_dist/bin/setupvars.sh

**(Необязательно)** При закрытии оболочки OpenVINO удаляются переменные среды. В качестве опции вы можете навсегда установить переменные среды следующим образом:

«source /home/pi/openvino_dist/bin/setupvars.sh» >> ~/.ч

Чтобы протестировать изменения, откройте новый терминал. Вы увидите следующее:

[setupvars.sh] OpenVINO инициализирована

Это завершит процедуру сборки для дистрибутива OpenVINO™ с открытым исходным кодом для ОС Raspbian* и использования с Intel® Neural Compute Stick 2.

Другие темы
Создание демонстраций в репозитории Open Model Zoo на Raspberry Pi*
Рабочие процессы для Raspberry Pi*
Ncappzoo теперь поддерживает Intel® NCS 2 и OpenVINO™ инструментарий
OpenVINO™ инструментарий Open Model Zoo
Оптимизируйте сети для устройства Intel® Neural Compute Stick (Intel® NCS 2)
Форум сообщества и техническая поддержка