В этом примере показано, как использовать 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).
Загрузите предварительно обученную 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.