Запустите нейронную сеть для глубокого обучения на FPGA с живым входом камеры

В этом примере показано, как смоделировать логику предварительной обработки, которая получает живой вход камеры. Вы реализуете его на Zynq® Ultrascale +™ плата MPSoC ZCU102 при помощи пользовательского проекта ссылки на видеоролик, который имеет интегрированное ядро процессора IP глубокого обучения для предметной классификации. Этот пример использует рабочий процесс элемента кода HW/SW HDL Coder™. В данном примере вам нужно:

  • Deep Learning HDL Toolbox™

  • Пакет поддержки Deep Learning HDL Toolbox для FPGA Xilinx и устройств SoC

  • Deep Learning Toolbox™

  • HDL Coder™

  • Simulink™

Введение

В этом примере, вас:

  1. Смоделируйте логику предварительной обработки, которая обрабатывает живой вход камеры для ядра процессора IP глубокого обучения. Обработанный видеокадр отправляется во внешнюю память DDR на плате FPGA.

  2. Симулируйте модель в Simulink®, чтобы проверить функциональность алгоритма.

  3. Реализуйте логику предварительной обработки на плате ZCU102 при помощи пользовательского проекта ссылки на видеоролик, который включает сгенерированное ядро процессора IP глубокого обучения.

  4. Индивидуально подтвердите логику предварительной обработки на плате FPGA.

  5. Индивидуально подтвердите базовую функциональность процессора IP глубокого обучения при помощи рабочего процесса прототипирования Deep Learning HDL Toolbox™.

  6. Разверните и подтвердите целую систему на плате ZCU102.

Этот рисунок является высокоуровневой архитектурной схемой системы. Результат предсказания нейронной сети для глубокого обучения отправляется в процессор ARM. Процессор ARM аннотирует предсказание нейронной сети для глубокого обучения на выходной видеокадр.

Цель этой системы состоит в том, чтобы получить живой вход камеры через вход HDMI дочерней платы FMC на плате ZCU102. Вы проектируете логику предварительной обработки в Simulink®, чтобы выбрать и изменить размер видимой области (ROI). Вы затем передаете обработанный фрейм изображения к ядру процессора IP глубокого обучения, чтобы запустить классификацию изображений при помощи нейронной сети для глубокого обучения.

Выберите и измените размер необходимой области

Смоделируйте логику предварительной обработки, чтобы обработать живой вход камеры для нейронной сети для глубокого обучения и отправить видеокадр во внешнюю память DDR на плате FPGA. Эта логика моделируется в подсистеме DUT:

  • Логика выбора фрейма изображения, которая позволяет вам использовать свой курсор, чтобы выбрать ROI из входящей системы координат камеры. Выбранный ROI является входом к нейронной сети для глубокого обучения.

  • Отобразите логику изменения размеров, которая изменяет размер изображения ROI, чтобы совпадать с входным размером изображения нейронной сети для глубокого обучения.

  • Логика интерфейса AXI4 Master, которая отправляет измененный фрейм изображения во внешнюю память DDR, где ядро процессора IP глубокого обучения читает вход. Чтобы смоделировать интерфейс AXI4 Master, см. Проект Модели для Основной Интерфейсной Генерации AXI4 (HDL Coder).

Этот рисунок показывает модель Simulink® для логики предварительной обработки DUT.

Сгенерируйте предварительно обрабатывающее логическое ядро IP HDL

Чтобы реализовать модель логики предварительной обработки на плате ZCU102 SoC, создайте исходный проект HDL Coder™ в Vivado™, который получает живой вход камеры и передает обработанные видеоданные к ядру процессора IP глубокого обучения. Чтобы создать пользовательский проект ссылки на видеоролик, который интегрирует ядро процессора IP глубокого обучения, смотрите Авторскую разработку Исходного проекта для Живой Интеграции Камеры с Ядром IP Процессора Глубокого обучения.

Запустите HDL Workflow Advisor HDL Coder и используйте рабочий процесс элемента кода аппаратного программного обеспечения Zynq, чтобы развернуть модель логики предварительной обработки на оборудовании Zynq. Этот рабочий процесс является стандартным рабочим процессом HDL Coder. В этом примере единственная разница - то, что этот исходный проект содержит сгенерированное ядро процессора IP глубокого обучения. Для получения дополнительной информации обратитесь к Началу работы с Предназначением для Платформы Xilinx Zynq (HDL Coder) пример.

1. Запустите HDL Workflow Advisor с модели путем щелчка правой кнопкой по DLPreProcess Подсистема DUT и HDL Advisor Workflow выбора.

В Задаче 1.1, Генерация Ядра IP выбрана для Целевого рабочего процесса, и CAM ZCU102 FMC HDMI выбран для Целевой платформы.

В Задаче 1.2, RGB HDMI с Процессором DL выбран для Исходного проекта.

В Задаче 1.3, таблица интерфейса Целевой платформы загружается как показано в следующем снимке экрана. Здесь можно сопоставить порты подсистемы DUT к интерфейсам в исходном проекте.

2. Щелкните правой кнопкой по Task 3.2, Сгенерируйте Код RTL и Ядро IP, и затем выберите Run to Selected Task. Можно найти отображение адресов регистра и другую документацию для ядра IP в сгенерированном Отчете Ядра IP.

Интегрируйте IP в пользовательский проект ссылки на видеоролик

В HDL Workflow Advisor запустите задачи Интегрирования Встраиваемой системы развернуть сгенерированное ядро IP HDL на оборудовании Zynq.

1. Запустите Задачу 4.1, Создайте Проект. Эта задача вставляет сгенерированное ядро IP в RGB HDMI с исходным проектом Процессора DL. Чтобы создать исходный проект, который интегрирует ядро процессора IP глубокого обучения, смотрите Авторскую разработку Исходного проекта для Живой Интеграции Камеры с Ядром IP Процессора Глубокого обучения.

2. Щелкните по ссылке в панели Результата, чтобы открыть сгенерированный проект Vivado. В инструменте Vivado нажмите Open Block Design, чтобы просмотреть схему проекта Zynq, которая включает сгенерированное ядро IP HDL предварительной обработки, ядро процессора IP глубокого обучения и процессор Zynq.

3. В HDL Workflow Advisor запустите остальную часть задач сгенерировать модель программного интерфейса и создать и загрузить поток битов FPGA.

Разверните и подтвердите интегрированный исходный проект

Чтобы подтвердить интегрированный исходный проект, который включает сгенерированное предварительно обрабатывающее логическое ядро IP, ядро процессора IP глубокого обучения и процессор Zynq:

  1. Индивидуально подтвердите логику предварительной обработки на плате FPGA.

  2. Индивидуально подтвердите базовую функциональность процессора IP глубокого обучения при помощи рабочего процесса прототипирования Deep Learning HDL Toolbox™.

  3. Разверните и подтвердите целую систему на плате ZCU102.

  4. Разверните целую систему как исполняемый файл на SD-карте на плате ZCU102.

1. Используя стандартный рабочий процесс элемента кода оборудования/программного обеспечения HDL Coder, можно подтвердить это, логика предварительной обработки работает как ожидалось над FPGA. HDL Workflow Advisor генерирует подсистему программного интерфейса во время Задачи 4.2, Генерируют Модель Программного интерфейса, которую можно использовать в модели ПО для взаимодействия через интерфейс с логикой FPGA. От модели ПО можно настроить и зондировать проект FPGA на оборудовании при помощи Simulink External Mode. Дайте логике предварительной обработки FPGA команду получать входной кадр и отправлять ее во внешнюю память DDR.

Можно затем использовать fpga объект создать связь от MATLAB до платы ZCU102 и считать содержимое внешней памяти DDR в MATLAB для валидации. использовать fpga возразите, смотрите, Создают Скрипт Программного интерфейса, чтобы Управлять и Ядро IP HDL Быстрого прототипирования (HDL Coder).

2. Сгенерированное ядро процессора IP глубокого обучения имеет Ethernet и интерфейсы JTAG для коммуникаций в сгенерированном потоке битов. Можно индивидуально подтвердить ядро процессора IP глубокого обучения при помощи dlhdl.Workflow объект.

3. После того, как вы индивидуально подтвердите предварительно обрабатывающее логическое ядро IP и ядро процессора IP глубокого обучения, можно моделировать целую интегрированную систему на плате FPGA. Используя Режим external mode Simulink, дайте логике предварительной обработки FPGA команду отправлять обработанный входной фрейм изображения в буфер DDR, давать ядру процессора IP глубокого обучения команду читать из того же буфера DDR и выполнять предсказание.

Ядро процессора IP глубокого обучения передает результат обратно во внешнюю память DDR. Модель ПО, работающая на процессоре ARM, получает результат предсказания и аннотирует предсказание на выходном видеопотоке. Этот снимок экрана показывает, что можно считать результат предсказания процессора ARM при помощи последовательной связи.

Этот снимок экрана показывает систему координат, полученную от выходного видеопотока, который включает выбор ROI и аннотируемый результат предсказания.

4. После завершения всех ваших шагов верификации вручную разверните целый исходный проект как исполняемый файл на SD-карте на плате ZCU102 при помощи процессора ARM. Если ручное развертывание завершается, связь MATLAB с платой FPGA не требуется, чтобы управлять исходным проектом.