Предсказание глубокого обучения на графическом процессоре ARM Mali

В этом примере показано, как использовать cnncodegen функция для генерации кода для приложения классификации изображений, которое использует глубокое обучение на графических процессорах ARM ® Mali. В примере используется MobileNet-v2 Сеть DAG для выполнения классификации изображений. Сгенерированный код использует преимущества библиотеки ARM Compute для компьютерного зрения и машинного обучения.

Необходимые условия

  • Оборудование на базе графического процессора ARM Mali. Например, HiKey960 является одной из целевых платформ, которая содержит графический процессор Mali.

  • ARM Compute Library на целевом оборудовании ARM, созданном для графического процессора Mali.

  • Компьютерное зрение Library с открытым исходным кодом (OpenCV v2.4.9) на целевом оборудовании ARM.

  • Переменные окружения для компиляторов и библиотек. Убедитесь, что ARM_COMPUTE и LD_LIBRARY_PATH переменные заданы на целевой платформе. Информацию о поддерживаемых версиях компиляторов и библиотек см. в разделе Оборудование сторонних производителей (GPU Coder). Для настройки переменных окружения смотрите Настройка обязательных продуктов (GPU Coder).

Получите предварительно обученный DAGNetwork

Загрузите предварительно обученную MobileNet-v2 сеть, доступная в Deep Learning Toolbox Model for MobileNet-v2 Network.

net = mobilenetv2;

Сеть содержит 155 слоев, включая свертку, нормализацию партии ., softmax и выходные слои классификации. The analyzeNetwork() функция отображает интерактивный график сетевой архитектуры и таблицу, содержащую информацию о слоях сети.

analyzeNetwork(net);

Сгенерируйте код

Для глубокого обучения по ARM-целям вы генерируете код на компьютере разработчика хоста. Чтобы создать и запустить исполняемую программу, переместите сгенерированный код на целевую платформу ARM. Целевая платформа должна иметь графический процессор ARM Mali. Например, HiKey960 является одной из целевых платформ, на которой можно выполнить код, сгенерированный в этом примере.

Вызовите cnncodegen функция, задающая целевую библиотеку следующим arm-compute-mali.

cnncodegen(net,'targetlib','arm-compute-mali');

Копирование сгенерированных файлов в конечный объект

Переместите сгенерированную папку кодегена и другие необходимые файлы с компьютера разработчика хоста на целевую платформу с помощью предпочтительного клиента SCP (Secure Copy Protocol) или Secure Shell File Transfer Protocol (SSH).

Например, на платформе Linux ® для передачи файлов в HiKey960 используйте команду scp с форматом:

system('sshpass -p [password] scp (sourcefile) [username]@[targetname]:~/');

system('sshpass -p password scp main_mobilenet_arm_generic.cpp username@targetname:~/');
system('sshpass -p password scp peppers_mobilenet.png username@targetname:~/');
system('sshpass -p password scp makefile_mobilenet_arm_generic.mk username@targetname:~/');
system('sshpass -p password scp synsetWords.txt username@targetname:~/');
system('sshpass -p password scp -r codegen username@targetname:~/');

На платформе Windows ® можно использовать pscp инструмент, который поставляется с установкой PuTTY. Для примера:

system('pscp -pw password-r codegen username@targetname:/home/username');

Утилиты PSCP должны быть либо на вашем ПУТИ, либо в текущей папке.

Сборка исполняемого файла

Чтобы создать библиотеку на целевой платформе, используйте сгенерированный make-файл cnnbuild_rtw.mk.

Например, чтобы создать библиотеку на HiKey960:

system('sshpass -p password ssh username@targetname "make -C /home/username/codegen -f cnnbuild_rtw.mk"');

На платформе Windows можно использовать putty команда с -ssh аргумент для входа в систему и запуска команды make. Для примера:

system('putty -ssh username@targetname -pw password');

Чтобы создать и запустить исполняемый файл на целевой платформе, используйте команду с форматом: make -C /home/$(username) и ./execfile -f makefile_mobilenet_arm_generic.mk

Для примера на HiKey960:

make -C /home/usrname arm_mobilenet -f makefile_mobilenet_arm_generic.mk

Запустите исполняемый файл на платформе ARM, задавая входной файл изображения.

./mobilenet_exe peppers_mobilenet.png

Пять лучших предсказаний для входного файла изображения:

Копирайт 2019 The MathWorks, Inc.

Для просмотра документации необходимо авторизоваться на сайте