Главная » Arduino
Призовой фонд
на август 2021 г.
1. Инвертор авто Mean Well 150 Ватт
Практическая электроника
2. Термос MeanWell
Компэл

Raspberry Pi 4 и Intel Neural Compute Stick 2

С распространением и развитием нейронный сетей все чаще возникает потребность их использования на маломощных устройствах. Устройство Neural Compute Stick 2 в связке с фреймворком OpenVINO от компании Intel позволяет решить эту задачу, беря тяжелые вычисления нейросетей на себя. Благодаря этому можно запустить нейросетевой классификатор или детектор на маломощном устройстве вроде Raspberry Pi практически в реальном времени, при этом не сильно повышая энергопотребление. 

Intel Neural Compute Stick 2 (NCS 2) — компактное, производительное и недорогое решение для ускорения нейронных сетей. NCS 2 представляет собой компактное устройство, по габаритам в 2-3 раза больше привычных флешек в больших корпусах. Корпус полностью металлический и обладает некими прорезями для улучшения рассеивания тепла. Подключается к USB 3.0 порту . к вашему компьютеру или Raspberry PI, и предназначено для запуска на нем уже готовых (обученных) нейросетей, обладает очень низким энергопотреблением, порядка 1 Вт.

Основой устройства служит Intel Movidius Myriad X Vision Processing Unit (VPU) — специализированный SoC, содержащий в себе 16 вычислительных ядер общего назначения, а также аппаратные компоненты для ускорения инференса нейронных сетей и компьютерного зрения. По сравнению со своим предшественником Intel Neural Compute Stick 2 обеспечивает 8-кратный прирост производительности в таких задачах, как классификация изображений и определение объектов.

Сфер применения Neural Compute Stick 2 достаточно много — распознание лиц и подсчёт людей, учёт проезжающих автомобилей, распознавание жестов, контроль зон и так далее. 

Для создания сценариев работы используется набор библиотек OpenVINO (Open Visual Inference & Neural Network Optimization), в состав которых входят:
— библиотеки OpenCV;
— Intel Deep Learning Deployment Toolkit ;
— Intel Math Kernel Library for Deep Neural Networks (Intel MKL-DNN)
— Compute Library for Deep Neural Networks (clDNN)
— OpenVX;
— примеры кода.

Примеры кода доступны на официальном сайте — https://software.intel.com/ru-ru/openvino-toolkit/documentation/code-samples.

Рассмотрим подключение NCS2 к микрокомпьютеру Raspberry pi 4.

На microSD 32 Гб установим последнюю версию Raspbian Buster, Страница для скачивания образа https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit.

Обновим систему

sudo apt-get update && sudo apt-get upgrade

Необходимо установить следующие пакеты.

Установим пакеты разработчика

sudo apt-get install build-essential cmake unzip pkg-config

Набор библиотек изображений и видео 

sudo apt-get install libjpeg-dev libpng-dev libtiff-dev

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

sudo apt-get установить libxvidcore-dev libx264-dev

Установим графический интерфейс GTK

sudo apt-get install libgtk-3 -dev

Установим пакет, который может помочь уменьшить количество предупреждений GTK

sudo apt-get install libcanberra-gtk*

Установим два пакета, которые содержат численные оптимизации для OpenCV

sudo apt-get install libatlas-base-dev gfortran

Установим заголовки разработки Python 3

sudo apt-get install python3-dev

Все готово к установке OpenVINO

Установка OpenVINO

Загружаем набор инструментов OpenVINO для ОС Raspbian  l_openvino_toolkit_runtime_raspbian_p_<version>.tgz. Загружаем последнюю версию из хранилища пакетов OpenVINO ™ Toolkit, 

wget https://storage.openvinotoolkit.org/repositories/openvino/packages/2021.2/l_openvino_toolkit_runtime_raspbian_p_2021.2.185.tgz

Создаем установочную папку

sudo mkdir -p /opt/intel/openvino

Распаковываем архив

sudo tar -xf l_openvino_toolkit_runtime_raspbian_p__2021.2.185.tgz --strip 1 -C /opt/intel/openvino

Компоненты инструментария OpenVINO установлены. Необходимо установить внешние программные зависимости, настроить среду и настроить правила USB.

Установим CMake * версии 3.7.2 или выше 

sudo apt install cmake

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

source /opt/intel/openvino/bin/setupvars.sh

Переменные среды OpenVINO удаляются при закрытии оболочки. Как вариант, вы можете навсегда установить переменные среды следующим образом:

echo "source /opt/intel/openvino/bin/setupvars.sh" >> ~/.bashrc

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

Добавить правили USB

Добавляем текущего пользователя Linux в группу users :

sudo usermod -a -G пользователи "$ (whoami)"

Чтобы изменения вступили в силу, необходимо Выйти и заново войти в систему

Чтобы выполнить логический вывод на Intel® Neural Compute Stick 2, установим правила USB:

sh /opt/intel/openvino/install_dependencies/install_NCS_udev_rules.sh

Теперь можно подключить  Intel® Neural Compute Stick 2 к USB 3.0.

Проверяем, выполнив команду

dmesg

Установка OpenVINO завершена.

Пример обнаружения лиц с использованием примеров механизма вывода из набора инструментов OpenVINO

Создадим директорию examples1/ObjectDetectionSample

mkdir examples1 && cd examples1

mkdir ObjectDetectionSample && cd ObjectDetectionSample

Скомпилируем пример 

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=armv7-a" /opt/intel/openvino/deployment_tools/inference_engine/samples/cpp

make -j2 object_detection_sample_ssd

Загрузим предварительно обученную модель распознавания лиц с помощью Model Downloader
 

cd ~/examples1/ObjectDetectionSample
git clone --depth 1 https://github.com/openvinotoolkit/open_model_zoo

cd open_model_zoo/tools/downloader

python3 -m pip install -r requirements.in

python3 downloader.py --name face-detection-adas-0001

Местоположение загруженных моделей

Приложение выводит изображение ( out_0.bmp) с обнаруженными лицами, заключенными в прямоугольники.

Загрузим в папку ~/examples1/ObjectDetectionSample несколько изображений и запустим пример

./armv7l/Release/object_ detection_sample_ssd -m open_model_zoo/tools/downloader/intel/face-detection-adas-0001/FP16/face-detection-adas-0001.xml -d MYRIAD -i 06.jpg

Вот примеры распознавания

Распознавание лиц на потоковом видео. 

Добавим камеру. Подключаем камеру к Raspberry pi

 

Добавим поддержку камеры в системе

sudo raspi-config

Выбираем пункт Interface Options --> P1 Camera --> Yes --> Ok --> Finish и перезагружаемся

Проверить работу камеры можно с помощью команды raspistill

$ raspistill -o test.jpg

Команда создаст файл test.jpg в домашнем каталоге

Для записи видео команда raspivid. Например, записать видео длительностью в 30 секунд:

raspivid -o vid.h264 -t 30000

Скачаем скрипт детектирование лиц на потоковом видео с камеры

cd ~/examples1/ObjectDetectionSample

git clone https://github.com/BenedictusAryo/OpenVino_face-detection_python

И запускаем скрипт

cd ~/examples1/ObjectDetectionSample/OpenVino_face_detection_python

python3 face_detection.py -d MYRIAD

Скрипт использует модель face-detection-adas-0001

Теги:

Опубликована: 0 0
Я собрал 0 1
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 1 чел.

Комментарии (1) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Arduino UNO
Arduino UNO
ELM327 OBD II — адаптер с поддержкой CAN Металлоискатель MD3010II
вверх