exponenta event banner

Развертывание обучающей сети Transfer для определения полосы движения

В этом примере показано, как создавать, компилировать и развертывать dlhdl.Workflow объект, имеющий сверточную нейронную сеть. Сеть может обнаруживать и выводить границы маркеров полос в качестве сетевого объекта с помощью пакета поддержки Deep Learning HDL Toolbox™ для Xilinx FPGA и SoC. Используйте MATLAB ® для извлечения результатов прогнозирования из целевого устройства .

Предпосылки

  • Комплект для разработки Xilinx ZCU102 SoC

  • Пакет поддержки HDL Toolbox™ глубокого обучения для Xilinx FPGA и SoC

  • Глубокое обучение Toolbox™

  • Глубокое обучение HDL Toolbox™

Загрузка предварительно обученной сети серии

Для загрузки сетевого ланнета серии предварительной подготовки введите:

snet = getLaneDetectionNetwork();

Нормализация входного слоя

Для нормализации входного слоя путем изменения его типа введите:

inputlayer = imageInputLayer(snet.Layers(1).InputSize, 'Normalization','none');
snet = SeriesNetwork([inputlayer; snet.Layers(2:end)]);

Для просмотра уровней предварительно обученной сети серии введите:

analyzeNetwork(snet)
% The saved network contains 23 layers including input, convolution, ReLU, cross channel normalization,
% max pool, fully connected, and the regression output layers.

Создание целевого объекта

Создайте целевой объект с пользовательским именем для целевого устройства и интерфейсом для подключения целевого устройства к хост-компьютеру. Опции интерфейса - JTAG AND Ethernet.

hTarget = dlhdl.Target('Xilinx','Interface','Ethernet');

Создание объекта WorkFlow

Создание объекта dlhdl.Workflow класс. При создании класса укажите сеть и имя битового потока. Укажите в качестве сети сохраненную предварительно обученную нейронную сеть lanenet, snet. Убедитесь, что имя битового потока соответствует типу данных и целевой плате FPGA. В этом примере целевой платой FPGA является плата Xilinx ZCU102 SOC. Битовый поток использует один тип данных.

hW = dlhdl.Workflow('network', snet, 'Bitstream', 'zcu102_single','Target',hTarget);
% If running on Xilinx ZC706 board, instead of the above command, 
% uncomment the command below.
%
% hW = dlhdl.Workflow('Network', snet, 'Bitstream', 'zc706_single','Target',hTarget);

Компиляция сети серии Lanenet

Для компиляции сети серии lanenet выполните функцию компиляции dlhdl.Workflow объект.

dn = hW.compile;
          offset_name          offset_address     allocated_space 
    _______________________    ______________    _________________

    "InputDataOffset"           "0x00000000"     "24.0 MB"        
    "OutputResultOffset"        "0x01800000"     "4.0 MB"         
    "SystemBufferOffset"        "0x01c00000"     "28.0 MB"        
    "InstructionDataOffset"     "0x03800000"     "4.0 MB"         
    "ConvWeightDataOffset"      "0x03c00000"     "16.0 MB"        
    "FCWeightDataOffset"        "0x04c00000"     "148.0 MB"       
    "EndOffset"                 "0x0e000000"     "Total: 224.0 MB"

Передача битового потока в FPGA и загрузка веса сети

Для развертывания сети на оборудовании Xilinx ZCU102 SoC выполните функцию развертывания dlhdl.Workflow объект. Эта функция использует выходные данные функции компиляции для программирования платы FPGA с помощью файла программирования. Он также загружает веса сети и отклонения. Функция развертывания запускает программирование устройства FPGA, отображает сообщения о ходе выполнения и время, необходимое для развертывания сети.

 hW.deploy;
### FPGA bitstream programming has been skipped as the same bitstream is already loaded on the target FPGA.
### Loading weights to FC Processor.
### 13% finished, current time is 28-Jun-2020 12:36:09.
### 25% finished, current time is 28-Jun-2020 12:36:10.
### 38% finished, current time is 28-Jun-2020 12:36:11.
### 50% finished, current time is 28-Jun-2020 12:36:12.
### 63% finished, current time is 28-Jun-2020 12:36:13.
### 75% finished, current time is 28-Jun-2020 12:36:14.
### 88% finished, current time is 28-Jun-2020 12:36:14.
### FC Weights loaded. Current time is 28-Jun-2020 12:36:15

Прогнозирование выполнения для примера видео

Запустите функцию demoOnVideo для dlhdl.Workflow объект класса. Эта функция загружает пример видео, выполняет функцию прогнозирования dlhdl.Workflow объект, а затем выводит результат на график.

demoOnVideo(hW,1);
### Finished writing input activations.
### Running single input activations.


              Deep Learning Processor Profiler Performance Results

                   LastLayerLatency(cycles)   LastLayerLatency(seconds)       FramesNum      Total Latency     Frames/s
                         -------------             -------------              ---------        ---------       ---------
Network                   24904175                  0.11320                       1           24904217              8.8
    conv_module            8967009                  0.04076 
        conv1              1396633                  0.00635 
        norm1               623003                  0.00283 
        pool1               226855                  0.00103 
        conv2              3410044                  0.01550 
        norm2               378531                  0.00172 
        pool2               233635                  0.00106 
        conv3              1139419                  0.00518 
        conv4               892918                  0.00406 
        conv5               615897                  0.00280 
        pool5                50189                  0.00023 
    fc_module             15937166                  0.07244 
        fc6               15819257                  0.07191 
        fcLane1             117125                  0.00053 
        fcLane2                782                  0.00000 
 * The clock frequency of the DL processor is: 220MHz