Просмотрите данные о прогнозировании сети и производительности для уровней, модуля свертки и полностью подключенных модулей в сети предварительно подготовленных серий. В примере показано, как извлечь результаты прогнозирования и профилировщика для ResNet-18 сети.
Создание объекта класса Workflow с помощью dlhdl.Workflow класс.
Установка предварительно обученной сети глубокого обучения и битового потока для объекта рабочего процесса.
Создание объекта класса dlhdl.Target и укажите целевого поставщика и интерфейс.
Для развертывания сети на указанной целевой плате FPGA вызовите deploy метод для объекта рабочего процесса.
Позвоните в predict для объекта рабочего процесса. Предоставление массива изображений в качестве InputImage параметр. Укажите аргументы для включения профилировщика.
Метки, классифицирующие изображения, хранятся в структуре struct и отображается на экране. Параметры производительности скорости и задержки возвращаются в структуре struct.
Используйте это изображение для запуска кода:

snet = resnet18; hT = dlhdl.Target('Xilinx','Interface','Ethernet'); hW = dlhdl.Workflow('Net', snet, 'Bitstream', 'zcu102_single','Target',hT); hW.deploy; image = imread('zebra.jpeg'); inputImg = imresize(image, [224, 224]); imshow(inputImg); [prediction, speed] = hW.predict(single(inputImg),'Profile','on'); [val, idx] = max(prediction); snet.Layers(end).ClassNames{idx}
### Finished writing input activations.
### Running single input activations.
Deep Learning Processor Profiler Performance Results
LastFrameLatency(cycles) LastFrameLatency(seconds) FramesNum Total Latency Frames/s
------------- ------------- --------- --------- ---------
Network 23659630 0.10754 1 23659630 9.3
conv1 2224115 0.01011
pool1 572867 0.00260
res2a_branch2a 972699 0.00442
res2a_branch2b 972568 0.00442
res2a 209312 0.00095
res2b_branch2a 972733 0.00442
res2b_branch2b 973022 0.00442
res2b 209736 0.00095
res3a_branch2a 747507 0.00340
res3a_branch2b 904291 0.00411
res3a_branch1 538763 0.00245
res3a 104750 0.00048
res3b_branch2a 904389 0.00411
res3b_branch2b 904367 0.00411
res3b 104886 0.00048
res4a_branch2a 485682 0.00221
res4a_branch2b 880001 0.00400
res4a_branch1 486429 0.00221
res4a 52628 0.00024
res4b_branch2a 880053 0.00400
res4b_branch2b 880035 0.00400
res4b 52478 0.00024
res5a_branch2a 1056299 0.00480
res5a_branch2b 2056857 0.00935
res5a_branch1 1056510 0.00480
res5a 26170 0.00012
res5b_branch2a 2057203 0.00935
res5b_branch2b 2057659 0.00935
res5b 26381 0.00012
pool5 71405 0.00032
fc1000 216155 0.00098
* The clock frequency of the DL processor is: 220MHz
Данные профилировщика возвращают следующие параметры и их значения:
LastFrameLatency(cycles)- Общее количество тактовых циклов для выполнения предыдущего кадра.
Тактовая частота - информация о тактовой частоте извлекается из битового потока, который использовался для развертывания сети на целевой плате. Например, профилировщик возвращает * The clock frequency of the DL processor is: 220MHz. Тактовая частота 220 МГц извлекается из zcu102_single битовый поток.
LastFrameLatency(seconds)- Общее количество секунд для выполнения предыдущего кадра. Общее время рассчитывается как LastFrameLatency(cycles)/Clock Frequency. Например, conv_module
LastFrameLatency(seconds) рассчитывается как 2224115/(220*10^6).
FramesNum- Общее количество входных кадров в сеть. Это значение будет использоваться при расчете Frames/s.
Total Latency- Общее количество тактовых циклов для выполнения всех сетевых уровней и модулей для FramesNum.
Frames/s- количество кадров, обработанных сетью за одну секунду. Общее количество Frames/s рассчитывается как (FramesNum*Clock Frequency)/Total Latency. Например, Frames/s в примере рассчитывается как (1*220*10^6)/23659630.
dlhdl.Target | dlhdl.Workflow | predict