Начало работы с 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 Data открывается.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если вы хотите большее управление обучением, нажмите Training Options и выберите настройки, чтобы обучаться с. Опции обучения по умолчанию лучше подходят для больших наборов данных. Для небольших наборов данных используйте меньшие значения в MiniBatchSize и ValidationFrequency. Для получения дополнительной информации о выборе опций обучения смотрите 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.

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

Похожие темы