predict

Класс: 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. Создайте image 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