В этом примере показано, как использовать Deep Network Designer для адаптации предварительно обученной сети GoogLeNet для классификации новой коллекции изображений. Этот процесс называется transfer learning и обычно намного быстрее и проще, чем обучение новой сети, потому что вы можете применить усвоенные функции к новой задаче, используя меньшее количество обучающих образов. Чтобы подготовить сеть для интерактивного обучения передаче, используйте Deep Network Designer.
В рабочей области распакуйте данные.
unzip('MerchData.zip');Откройте конструктор глубоких сетей.
deepNetworkDesigner
Загрузите предварительно подготовленную сеть GoogLeNet, выбрав ее на начальной странице Deep Network Designer. Если необходимо загрузить сеть, нажмите кнопку Установить, чтобы открыть обозреватель надстроек.

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

Чтобы загрузить данные в Deep Network Designer, на вкладке Данные щелкните Импорт данных > Импорт данных изображения. Откроется диалоговое окно Импорт данных изображения (Import Image Data).
В списке Источник данных выберите Папка. Нажмите кнопку Обзор и выберите извлеченную папку MerchData.
Это диалоговое окно также позволяет разделить данные проверки из приложения на 70% данных обучения и 30% данных проверки.
Укажите операции увеличения, выполняемые с обучающими изображениями. В этом примере применяется случайное отражение по оси X, случайное вращение из диапазона [-90, 90] градусов и случайное масштабирование из диапазона [1,2].

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

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

Для переподготовки заранее обученной сети для классификации новых изображений замените последний обучаемый уровень и окончательный уровень классификации на новые уровни, адаптированные к новому набору данных. В GoogLeNet эти слои имеют имена 'loss3-classifier' и 'output'соответственно.
На вкладке «Конструктор» перетащите новый fullyConnectedLayer из библиотеки слоев на холст. Набор OutputSize к числу классов в новых данных, в этом примере: 5.
Изменение показателей обучения для более быстрого обучения в новых слоях, чем в перенесенных слоях. Набор WeightLearnRateFactor и BiasLearnRateFactor кому 10. Удалите последний полностью подключенный слой и подключите новый.

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

Проверьте сеть, нажав кнопку Анализ. Сеть готова к обучению, если анализатор сети Deep Learning сообщает об отсутствии ошибок.

Чтобы обучить сеть настройкам по умолчанию, на вкладке Обучение щелкните Обучение.
Если необходимо усилить контроль над обучением, щелкните Параметры обучения и выберите настройки для обучения. Параметры обучения по умолчанию лучше подходят для больших наборов данных. Для небольших наборов данных используйте меньшие значения для размера мини-пакета и частоты проверки. Дополнительные сведения о выборе параметров обучения см. в разделе trainingOptions.
В этом примере задайте InitiveLearnRate равным 0.0001, ValidationFrequency to 5и MaxEpochs to 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.