Запуск с Deep Network Designer

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

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

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

unzip('MerchData.zip');

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

Откройте Deep Network Designer.

deepNetworkDesigner

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

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

Загрузка набора данных

Чтобы загрузить данные в Deep Network Designer, на вкладке Data, выберите Import Data > Import Image Data. Откроется диалоговое окно Импорт изображений (Import Image Data).

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

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

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

Щелкните Импорт, чтобы импортировать данные в Deep Network Designer.

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

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

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

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

На вкладке Designer перетащите мышью новую fullyConnectedLayer из библиотеки слоев на холст. Задайте OutputSize к количеству классов в новых данных, в этом примере, 5.

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

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

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

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

Обучите сеть

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

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

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

Чтобы обучить сеть с заданными опциями обучения, нажмите кнопку Закрыть и затем щелкните Обучить.

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

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

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

Можно также сгенерировать код MATLAB, который воссоздает сеть и используемые опции обучения. На вкладке Обучение выберите Экспорт > Сгенерировать код для обучения.

Тестирование обученной сети

Выберите новое изображение для классификации с помощью обученной сети.

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.

См. также

Похожие темы