Начало работы с Deep Network Designer

В этом примере показано, как использовать Deep Network Designer, чтобы адаптировать предварительно обученную сеть GoogLeNet, чтобы классифицировать новый набор изображений. Этот процесс называется передачей обучения и обычно намного быстрее и легче, чем обучение новой сети, потому что можно применить изученные функции к новой задаче с помощью меньшего числа учебных изображений. Чтобы подготовить сеть к передаче обучения в интерактивном режиме, используйте Deep Network Designer.

Извлеките данные для обучения

В рабочей области разархивируйте данные.

unzip('MerchData.zip');

Выберите предварительно обученную сеть

Открытый Deep Network Designer.

deepNetworkDesigner

Загрузите предварительно обученную сеть GoogLeNet путем выбора его из начальной страницы Deep Network Designer. Если необходимо загрузить сеть, то нажмите Install, чтобы открыть Add-On Explorer.

Deep Network Designer отображает уменьшивший масштаб представление целой сети. Исследуйте сетевой график. Чтобы увеличить масштаб с мышью, используйте колесо Ctrl+scroll.

Загрузите набор данных

Чтобы загрузить данные в Deep Network Designer, на вкладке Data, нажимают Import Data> Import Image Data. Диалоговое окно Import Image Data открывается.

В списке Источников данных выберите Folder. Нажмите Browse и выберите извлеченную папку MerchData.

Диалоговое окно также позволяет вам разделять данные о валидации из приложения. Разделите данные на 70% обучающих данных и 30%-х данных о валидации.

Задайте операции увеличения, чтобы выполнить на учебных изображениях. В данном примере примените случайное отражение в оси X, случайное вращение из области значений [-90,90] степени и случайное перемасштабирование из области значений [1,2].

Нажмите Import, чтобы импортировать данные в Deep Network Designer.

Используя Deep Network Designer, можно визуально смотреть распределение данных об обучении и валидации в панели Данных. Вы видите, что в этом примере существует пять классов в наборе данных. Можно также просмотреть случайные наблюдения от каждого класса.

Deep Network Designer изменяет размер изображений во время обучения совпадать с сетевым входным размером. Чтобы просмотреть сетевой входной размер, на панели Разработчика, нажимают imageInputLayer. Эта сеть имеет входной размер 224 224.

Сеть редактирования для передачи обучения

Чтобы переобучить предварительно обученную сеть, чтобы классифицировать новые изображения, замените последний learnable слой и итоговый слой классификации с новыми слоями, адаптированными к новому набору данных. В GoogLeNet эти слои имеют имена 'loss3-classifier' и 'output', соответственно.

В панели Разработчика перетащите новый fullyConnectedLayer от Библиотеки Слоя на холст. Установите OutputSize к количеству классов в новых данных, в этом примере, 5.

Отредактируйте скорости обучения, чтобы учиться быстрее в новых слоях, чем в переданных слоях. Установите WeightLearnRateFactor и BiasLearnRateFactor к 10. Удалите последний полносвязный слой и соедините свой новый слой вместо этого.

Замените выходной слой. Прокрутите в конец Библиотеки Слоя и перетащите новый classificationLayer на холст. Удалите исходный output слой и подключение ваш новый слой вместо этого.

Проверяйте сеть

Проверяйте свою сеть путем нажатия на Analyze. Сеть готова к обучению, если Нейронная сеть для глубокого обучения Анализатор сообщает о нулевых ошибках.

Обучение сети

Чтобы обучить сеть с настройками по умолчанию, на вкладке Training, нажимают Train.

Если вы хотите большее управление обучением, нажмите Training Options и выберите настройки, чтобы обучаться с. Опции обучения по умолчанию лучше подходят для больших наборов данных. Для небольших наборов данных используйте меньшие значения для мини-пакетного размера и частоты валидации. Для получения дополнительной информации о выборе опций обучения смотрите trainingOptions.

В данном примере установите InitialLearnRate на 0.0001, ValidationFrequency к 5, и MaxEpochs к 8. Как существует 55 наблюдений, установите MiniBatchSize на 11 разделить обучающие данные равномерно и гарантировать целый набор обучающих данных используются в течение каждой эпохи.

Чтобы обучить сеть с заданными опциями обучения, нажмите Close и затем нажмите Train.

Deep Network Designer позволяет вам визуализировать и контролировать процесс обучения. Можно затем отредактировать опции обучения и переобучить сеть при необходимости.

Экспортируйте результаты обучения

Чтобы экспортировать результаты обучения, на вкладке Training, выбирают Export> Export Trained Network и Results. Deep Network Designer экспортирует обучивший сеть как переменную trainedNetwork_1 и учебная информация как переменная trainInfoStruct_1.

Можно также сгенерировать код MATLAB, который воссоздает сеть и используемые опции обучения. На вкладке Training выберите Export> Generate Code for Training.

Тест обучил сеть

Выберите новое изображение, чтобы классифицировать использование обучившего сеть.

I = imread("MerchDataTest.jpg");

Измените размер тестового изображения, чтобы совпадать с сетевым входным размером.

I = imresize(I, [224 224]);

Классифицируйте тестовое изображение с помощью обучившего сеть.

[YPred,probs] = classify(trainedNetwork_1,I);
imshow(I)
label = YPred;
title(string(label) + ", " + num2str(100*max(probs),3) + "%");

Для получения дополнительной информации, включая на других предварительно обученных сетях, смотрите Deep Network Designer.

Смотрите также

Похожие темы