predict

Класс: dlhdl.Workflow
Пакет: dlhdl

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

Описание

пример

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

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

Входные параметры

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

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

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары 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. Создайте datastore изображений и разделите 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