Создание приложений глубокого обучения с помощью Raspberry Pi 4b (8) Openvino

малиновый пирог
Создание приложений глубокого обучения с помощью Raspberry Pi 4b (8) Openvino

предисловие

Несмотря на то, что это поколение Raspberry Pi имеет увеличенный объем памяти, ограничение основной частоты делает прямое использование чистого логического вывода материнской платы, а скорости недостаточно в режиме реального времени. Raspberry Pi для дальнейшего повышения скорости логического вывода ИИ.

Нейронная вычислительная флешка Intel второго поколения (Neural Compute Stick 2/NCS 2) по-прежнему имеет размер U-диска, всего 72,5 × 27 × 14 мм, со встроенным новейшим визуальным процессором Intel Movidius Myriad X VPU. , интегрированное 16 вычислительное ядро ​​SHAVE и выделенный аппаратный ускоритель глубокой нейронной сети могут выполнять высокопроизводительные операции машинного зрения и вывода ИИ с чрезвычайно низким энергопотреблением, а также поддерживать среды разработки TensorFlow и Caffe.

Согласно данным, предоставленным Intel, производительность NCS 2 была значительно улучшена по сравнению с предыдущей вычислительной картой Movidius: производительность классификации изображений примерно в 5 раз выше, а производительность обнаружения объектов примерно в 4 раза выше.

Ключевые особенности NCS2:

  • Вывод глубокого обучения на периферии
  • Предварительно обученные модели в Open Model Zoo
  • Библиотека и предварительно оптимизированное ядро ​​для более быстрого выхода на рынок
  • Поддерживает гетерогенное выполнение на различных ускорителях компьютерного зрения (CPU, GPU, VPU и FPGA) с использованием общего API.
  • Аппаратная поддержка Raspberry Pi

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

NCS2 поддерживает Raspberry Pi в качестве одной из своих функций.Intel официально сделала тематический документ, который довольно удобен для развертывания.

docs.open vino toolkit.org/capable/latest/_…

1. Скачайте установочный пакет

Я выбрал версию от апреля 2020 года:

cd ~/Downloads/
sudo wget https://download.01.org/opencv/2020/openvinotoolkit/2020.4/l_openvino_toolkit_runtime_raspbian_p_2020.4.287.tgz
# 创建安装文件夹
sudo mkdir -p /opt/intel/openvino
# 解压缩文件
sudo tar -xf l_openvino_toolkit_runtime_raspbian_p_2020.4.287.tgz --strip 1 -C /opt/intel/openvino

2. Установите внешние программные зависимости

cmake был установлен ранее, на самом деле этот шаг можно пропустить.

sudo apt install cmake

3. Установите переменные среды

source /opt/intel/openvino/bin/setupvars.sh
# 永久设置环境变量
echo "source /opt/intel/openvino/bin/setupvars.sh" >> ~/.bashrc

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

[setupvars.sh] OpenVINO environment initialized

openvino02

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

Добавьте текущего пользователя Linux в группу пользователей: выйдите и войдите, чтобы настройки вступили в силу.

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

Установить правила USB

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

5. USB в Intel NCS2.

Снова вставьте NCS2 и подготовьтесь к запуску программы.

Примеры обнаружения строительных объектов

1. Создайте новый каталог сборки

mkdir openvino && cd openvino
mkdir build && cd build

2. Создание примера обнаружения объектов

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

3. Загрузите файл веса, файл топологии сети и протестированный образ.

Чтобы загрузить файл .bin с весами:

wget --no-check-certificate https://download.01.org/opencv/2020/openvinotoolkit/2020.1/open_model_zoo/models_bin/1/face-detection-adas-0001/FP16/face-detection-adas-0001.bin

Чтобы скачать файл с топологией сети.xml:

wget --no-check-certificate https://download.01.org/opencv/2020/openvinotoolkit/2020.1/open_model_zoo/models_bin/1/face-detection-adas-0001/FP16/face-detection-adas-0001.xml

Найдите несколько изображений, содержащих лица в качестве обнаруженных образцов, и сохраните их в каталоге ~/Downloads/image.

4. Запустите программу

Где -m указывает файл .xml топологии модели, программа автоматически найдет файл веса .bin с тем же именем;

-d MYRIAD обозначает нервный стержень как устройство вывода;

-i указывает путь к тестируемому образу.

./armv7l/Release/object_detection_sample_ssd -m face-detection-adas-0001.xml -d MYRIAD -i ~/Downloads/image

Создайте программу тестирования производительности

1. Создайте тестовую программу

make -j2 benchmark_app

2. Создание примера обнаружения объектов

где -i — изображение обнаруживаемого входа;

-m — входной параметр модели;

-niter — количество итераций для выполнения логического вывода.

./armv7l/Release/benchmark_app -i car.png -m squeezenet1.1/FP16/squeezenet1.1.xml -pc -d MYRIAD -niter 1000

Скорость рассуждений Raspberry Pi + Neuro Stick может достигать 280 кадров в секунду, что достаточно, попробуйте подключить Neuro Stick к компьютеру, чтобы протестировать и сравнить.

3. Сравнительная производительность

Она по-прежнему в районе 280 кадров, а разницы в скорости работы нет, видно, что вычислительное узкое место сосредоточено на NCS2, а основное устройство — компьютер или Raspberry Pi. В случае введения нервного стержня использование ПК несколько расточительно.

Затем сравните модель ускорения openvino, запущенную непосредственно с процессором Intel ноутбука:

340 FPS, как и ожидалось, процессор компьютера сильнее.

Процесс разработки Raspberry Pi

  • Выберите предварительно обученную модель;
  • Используйте оптимизатор модели для преобразования модели;
  • Наконец, выведите модель на Raspberry Pi.

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

Скачать

Для получения соответствующих документов и материалов в этом выпуске вы можете ответить на фоне официального аккаунта: «rpi08», чтобы получить ссылку для скачивания.


Следующее уведомление

Мы проделаем некоторые работы по преобразованию модели, пусть yolov5 на raspberry pi, Давайте запустим его с Openvino... Быть в курсе...