Запуск нейронной сети для глубокого обучения на FPGA с помощью Live Camera Input

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

  • Deep Learning HDL Toolbox™

  • Пакет поддержки пакета Deep Learning HDL Toolbox для устройств Xilinx FPGA и 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:

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

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

  • AXI4 интерфейса Master, который отправляет измененный размер системы координат изображения во внешнюю память DDR, где IP-ядро процессора глубокого обучения считывает вход. Для моделирования интерфейса AXI4 Master смотрите Проект for AXI4 Master Interface Generation (HDL Coder).

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

Сгенерируйте логику предварительной обработки HDL IP Core

Чтобы реализовать модель логики предварительной обработки на ZCU102 однокристальной плате, создайте Coder™ HDL- исходного проекта в Vivado™, которая получает вход живой камеры и передает обработанное видео данных на IP-ядро процессора глубокого обучения. Чтобы создать пользовательский исходный проект видео-ссылок, которая интегрирует IP-ядро процессора глубокого обучения, смотрите Авторский исходный проект для интегрирования Live Camera с IP-ядром процессора глубокого обучения.

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

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

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

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

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

2. Щелкните правой кнопкой мыши Задачу 3.2, Сгенерируйте код RTL и IP Core, а затем выберите Выполнить до выбранной задачи. В сгенерированном отчете IP Core Report можно найти отображение адресов регистров и другую документацию для ядра IP.

Интеграция IP-адресов с пользовательским видео- Исходным проектом

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

1. Запуск задачи 4.1, создание проекта. Эта задача вставляет сгенерированное IP-ядро в HDMI RGB с исходным проектом процессора DL. Для создания исходного проекта, которая интегрирует IP-ядро процессора глубокого обучения, смотрите Авторские Исходные проекты для Live Camera Интегрирования с IP-ядром процессора глубокого обучения.

2. Щелкните ссылку на панели результатов, чтобы открыть сгенерированный проект Vivado. В инструменте Vivado нажмите Open Блока Проекта, чтобы просмотреть схему Zynq проекта, которая включает сгенерированное HDL-IP-ядро предварительной обработки, 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 Generate Software Interface Model, которую можно использовать в модель ПО для взаимодействия с логикой FPGA. Из модели ПО можно настроить и зондировать проект FPGA на оборудовании при помощи Simulink External Mode. Дайте указание логике предварительной обработки FPGA захватить входной кадр и отправить его во внешнюю память DDR.

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

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

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

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

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

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