В этом примере показано, как использовать cnncodegen
функция, чтобы сгенерировать код для приложения классификации изображений, которое использует глубокое обучение на ARM® Mali графические процессоры. Пример использует MobileNet-v2
Сеть DAG, чтобы выполнить классификацию изображений. Сгенерированный код использует в своих интересах библиотеку ARM Compute для компьютерного зрения и машинного обучения.
ARM Мали основанное на графическом процессоре оборудование. Например, HiKey960 является одной из целевых платформ, которая содержит графический процессор Мали.
ARM Вычисляет Библиотеку по целевому оборудованию ARM, созданному для графического процессора Мали.
Библиотека Компьютерного зрения с открытым исходным кодом (OpenCV v2.4.9) на целевом оборудовании ARM.
Переменные окружения для компиляторов и библиотек. Убедитесь, что ARM_COMPUTE
и LD_LIBRARY_PATH
переменные установлены на целевой платформе. Для получения информации о поддерживаемых версиях компиляторов и библиотек, смотрите Стороннее Оборудование. Для подготовки переменных окружения смотрите Подготовку Необходимых как условие продуктов.
Загрузите предварительно обученный MobileNet-v2
сеть, доступная в Deep Learning Toolbox Model for MobileNet-v2 Network
.
net = mobilenetv2
net = DAGNetwork with properties: Layers: [154×1 nnet.cnn.layer.Layer] Connections: [163×2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_Logits'}
Сеть содержит 155 слоев включая свертку, нормализацию партии., softmax, и классификацию выходные слои. analyzeNetwork()
функционируйте отображает интерактивный график сетевой архитектуры и таблицу, содержащую информацию о слоях сети.
analyzeNetwork(net);
Для глубокого обучения на целях ARM вы генерируете код по компьютеру разработчика хоста. Чтобы создать и запустить исполняемую программу, переместите сгенерированный код в целевую платформу ARM. Целевая платформа должна иметь графический процессор ARM Mali. Например, HiKey960 является одной из целевых платформ, на которых можно выполнить код, сгенерированный в этом примере.
Вызовите cnncodegen
функция, задавая целевую библиотеку как arm-compute-mali
.
cnncodegen(net,'targetlib','arm-compute-mali');
Переместите сгенерированную codegen папку и другие необходимые файлы от компьютера разработчика хоста до целевой платформы при помощи вашего предпочтительного SCP (Безопасный Протокол копирования) или Защитите протокол передачи файлов Shell (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
аргумент, чтобы войти в систему и запустить сделать команду. Например:
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
Лучшие пять предсказаний для входного файла изображения: