exponenta event banner

предсказать

Класс: dlhdl. Технологический процесс
Пакет: dlhdl

Вывод о развертываемой сети и скорости профиля нейронной сети, развернутой на указанном целевом устройстве

Описание

пример

predict(image) предсказывает отклики для данных изображения в imds с использованием сети глубокого обучения, указанной в dlhdl.Workflow класс для развертывания на указанной целевой плате и возвращает результаты.

predict(image, Name,Value) предсказывает отклики для данных изображения в imds с использованием сети глубокого обучения, указанной с помощью dlhdl.Workflow класс для развертывания на указанных целевых платах и возвращает результаты с одним или несколькими аргументами, указанными необязательными аргументами пары имя-значение.

Входные аргументы

развернуть все

Входное изображение, указанное как числовой массив m-by-n-by-3. m и n должны соответствовать размерам уровня входного изображения сети глубокого обучения. Например, для сети LogoNet, измените размеры входных изображений ко множеству 227 на 227 на 3.

Типы данных: single

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример:

Флажок для возврата результатов профилирования для сети глубокого обучения, развернутой на целевой плате.

Пример: 'Profile', 'On'

Примеры

развернуть все

  1. Создать dlhdl.Workflow объект, который VGG-19 в качестве сетевого аргумента, arria10soc_single в качестве аргумента битового потока и hTarget в качестве целевого аргумента.

    % Save the pretrained SeriesNetwork object
    snet = vgg19;
    
    % Create a Target object and define the interface to the target board
    hTarget = dlhdl.Target('Intel');
    
    % Create a workflow object for the SeriesNetwork and using the FPFA bitstream 
    hW = dlhdl.Workflow('Network', snet, 'Bitstream', 'arria10soc_single','Target',hTarget);
    
  2. Загрузите входное изображение и измените его размер в соответствии с размером входного слоя для VGG-19 сети.

    % Load input images and resize them according to the network specifications
    image = imread('zebra.jpeg');
    inputImg = imresize(image, [224, 224]);
    imshow(inputImg);
    imIn = single(inputImg);
  3. Развертывание dlhdl.Workflow объект к целевой плате FPGA с помощью deploy способ. Получение результата прогнозирования VGG-19 сети для входного изображения с платы FPGA с помощью predict способ.

    % Deploy the workflow object
    hW.deploy;
    % Predict the outcome and optionally profile the results to measure performance.
    [prediction, speed] = hW.predict(imIn,'Profile','on');
    [val, idx] = max(prediction);
    snet.Layers(end).ClassNames{idx}

В этом примере показано, как использовать predict способ извлечения результатов прогнозирования для входного изображения из развернутой квантованной сети LogoNet.

  1. Создание файла в текущей рабочей папке с именем getLogoNetwork.m. Введите в файл следующие строки:

    function net = getLogoNetwork
        data = getLogoData;
        net  = data.convnet;
    end
    
    function data = getLogoData
        if ~isfile('LogoNet.mat')
            url = 'https://www.mathworks.com/supportfiles/gpucoder/cnn_models/logo_detection/LogoNet.mat';
            websave('LogoNet.mat',url);
        end
        data = load('LogoNet.mat');
    end
  2. Создайте хранилище данных изображений и разделите 70% изображений на набор учебных данных и 30% изображений на набор данных проверки.

    curDir = pwd;
    newDir = fullfile(matlabroot,'examples','deeplearning_shared','data','logos_dataset.zip');
    copyfile(newDir,curDir);
    unzip('logos_dataset.zip');
    imds = imageDatastore('logos_dataset', ...
        'IncludeSubfolders',true, ...
        'LabelSource','foldernames');
    [imdsTrain,imdsValidation] = splitEachLabel(imds,0.7,'randomized');

  3. Создать dlhdl.Workflow объект, который имеет квантованный LogoNet в качестве сетевого аргумента, zcu102_int8 в качестве битового потока, и hTarget в качестве целевого аргумента.

    Для квантования сети необходимы продукты, перечисленные в разделе FPGA в предпосылках потока операций квантования.

    % Save the pretrained SeriesNetwork object
    snet = getLogoNetwork;
    
    % Create a Target object and define the interface to the target board
    hTarget = dlhdl.Target('Xilinx','Interface','Ethernet');
    
    % Create a Quantized Network Object
    
    dlquantObj = dlquantizer(snet,'ExecutionEnvironment','FPGA');
    dlquantObj.calibrate(imdsTrain);
    
    % Create a workflow object for the SeriesNetwork and using the FPFA bitstream 
    hW = dlhdl.Workflow('Network', dlquantObj, 'Bitstream', 'zcu102_int8','Target',hTarget);
    
  4. Получение случайного изображения из logos_dataset.

    index = randperm(numel(imdsValidation.Files),1)
    imIn = readimage(imdsValidation,index)
    inputImg = imresize(imIn, [227 227]);
    
  5. Развертывание dlhdl.Workflow объект к целевой плате FPGA с помощью deploy способ. Получение прогноза для изображения с помощью predict способ.

    % Deploy the workflow object
    hW.deploy;
    % Predict the outcome and optionally profile the results to measure performance.
    [prediction, speed] = hW.predict(single(inputImg),'Profile','on');
    [val, idx] = max(prediction);
    snet.Layers(end).ClassNames{idx}
Представлен в R2020b