Предварительно обученные глубокие нейронные сети

Можно взять предварительно обученную сеть классификации изображений, которая уже научилась извлекать мощные и информативные функции из природных изображений и использовать ее как начальная точка для изучения новой задачи. Большинство предварительно обученных сетей обучаются на подмножестве базы данных ImageNet [1], которое используется в ILSVRC [2]. Эти сети были обучены на более чем миллионе изображений и могут классифицировать изображения в 1000 категорий объектов, таких как клавиатура, кофейная кружка, карандаш и многие животные. Использование предварительно обученной сети с передачей обучения обычно намного быстрее и проще, чем обучение сети с нуля.

Можно использовать предварительно обученные сети для следующих задач:

ЦельОписание
Классификация

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

Редукция данных

Используйте предварительно обученную сеть в качестве экстрактора функций, используя активацию слоев в качестве функций. Можно использовать эти активации как функции для обучения другой модели машинного обучения, такой как машина опорных векторов (SVM). Для получения дополнительной информации см. раздел « Редукцию данных». Для получения примера смотрите Извлечение изображения Функций с использованием предварительно обученной сети.

Передача обучения

Возьмите слои из сети, обученной на большом наборе данных, и подстройте на новом наборе данных. Для получения дополнительной информации смотрите Передача Обучения. Для простого примера смотрите Запуск с Передача Обучения. Чтобы попробовать больше предварительно обученных сетей, смотрите Train Нейронной сети для глубокого обучения для классификации новых изображений.

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

Предварительно обученные сети имеют различные характеристики, которые имеют значение при выборе сети, чтобы применить к вашей задаче. Наиболее важными характеристиками являются точность сети, скорость и размер. Выбор сети, как правило, является компромиссом между этими характеристиками. Используйте график ниже, чтобы сравнить точность валидации ImageNet со временем, необходимым для выполнения предсказания с помощью сети.

Совет

Чтобы начать с передачи обучения, попробуйте выбрать одну из более быстрых сетей, таких как SqueezeNet или GoogLeNet. Затем можно быстро выполнить итерацию и опробовать различные настройки, такие как шаги предварительной обработки данных и опции обучения. Когда у вас появится ощущение того, какие настройки работают хорошо, попробуйте более точную сеть, такую как Inception-v3 или ResNet, и посмотрите, улучшает ли это ваши результаты.

Примечание

График выше показывает только индикацию относительных скоростей различных сетей. Точное время предсказания и итерации обучения зависит от используемого оборудования и мини-пакета.

Хорошая сеть имеет высокую точность и быстро. График отображает точность классификации от времени предсказания при использовании современного графического процессора (NVIDIA® Tesla® P100) и мини-пакет размером 128. Время предсказания измеряется относительно самой быстрой сети. Площадь каждого маркера пропорциональна размеру сети на диске.

Точность классификации на наборе валидации ImageNet является наиболее распространенным способом измерения точности сетей, обученных в ImageNet. Сети, которые точны в ImageNet, также часто точны, когда вы применяете их к другим естественным наборам данных об изображениях с помощью передачи обучения или редукции данных. Это обобщение возможно, потому что сети научились извлекать мощные и информативные функции из природных изображений, которые обобщаются для других аналогичных наборов данных. Однако высокая точность в ImageNet не всегда переходит непосредственно к другим задачам, поэтому рекомендуется попробовать несколько сетей.

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

Точность сети

Существует несколько способов вычислить точность классификации на наборе валидации ImageNet, и различные источники используют различные методы. Иногда используется ансамбль из нескольких моделей, а иногда каждое изображение оценивается несколько раз с использованием нескольких культур. Иногда цитируется точность топ-5 вместо стандартной (топ-1). Из-за этих различий часто невозможно непосредственно сравнить точности из различных источников. Точности предварительно обученных сетей в Deep Learning Toolbox™ являются стандартными (top-1) точностями с помощью одной модели и одного центрального кадра изображений.

Загрузка предварительно обученных сетей

Чтобы загрузить сеть SqueezeNet, введите squeezenet в командной строке.

net = squeezenet;

Для других сетей используйте такие функции, как googlenet чтобы получить ссылки для загрузки предварительно обученных сетей из Add-On Explorer.

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

СетьГлубинаРазмерПараметры (миллионы)Размер входа изображения
squeezenet18

5,2 МБ

1.24

227 на 227

googlenet22

27 МБ

7.0

224 на 224

inceptionv348

89 МБ

23.9

299 на 299

densenet201201

77 МБ

20.0

224 на 224

mobilenetv253

13 МБ

3.5

224 на 224

resnet1818

44 МБ

11.7

224 на 224

resnet5050

96 МБ

25.6

224 на 224

resnet101101

167 МБ

44.6

224 на 224

xception71

85 МБ

22.9299 на 299
inceptionresnetv2164

209 МБ

55.9

299 на 299

shufflenet505,4 МБ1.4224 на 224
nasnetmobile*20 МБ 5.3224 на 224
nasnetlarge*332 МБ88.9331 на 331
darknet191978 МБ20.8256 на 256
darknet5353155 МБ41.6256 на 256
efficientnetb08220 МБ5.3

224 на 224

alexnet8

227 МБ

61.0

227 на 227

vgg1616

515 МБ

138

224 на 224

vgg1919

535 МБ

144

224 на 224

* Сети NASNet-Mobile и NASNet-Large не состоят из линейной последовательности модулей.

GoogLeNet обучен на Places365

Стандартная сеть GoogLeNet обучается на наборе данных ImageNet, но можно также загрузить сеть, обученную на Places365 наборе данных [3] . [4]Обученная на Places365 сеть классифицирует изображения в 365 различных категориях мест, таких как поле, парк, взлетно-посадочная полоса и лобби. Чтобы загрузить предварительно обученную сеть GoogLeNet, обученную на Places365 наборе данных, используйте googlenet('Weights','places365'). При выполнении передачи обучения для выполнения новой задачи наиболее распространенным подходом является использование сетей, предварительно обученных в ImageNet. Если новая задача похожа на классификацию сцен, то использование обученной на Places365 сети может дать более высокие точности.

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

Загружать и визуализировать предварительно обученные сети можно с помощью Deep Network Designer.

deepNetworkDesigner(squeezenet)

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

Исследуйте другие предварительно обученные сети в Deep Network Designer, нажав New.

Если необходимо загрузить сеть, нажмите кнопку Install, чтобы открыть Add-On Explorer.

Редукция данных

Редукция данных - это простой и быстрый способ использовать степень глубокого обучения, не вкладывая время и усилия в обучение полной сети. Поскольку для этого требуется только один проход по обучающим изображениям, он особенно полезен, если у вас нет графический процессор. Вы извлекаете признаки выученного изображения с помощью предварительно обученной сети, а затем используете эти функции для обучения классификатора, такого как машина опорных векторов, используя fitcsvm (Statistics and Machine Learning Toolbox).

Попробуйте извлечь признаки, когда ваш новый набор данных очень мал. Поскольку вы обучаете только простой классификатор по извлеченным функциям, обучение происходит быстро. Также маловероятно, что подстройка более глубоких слоев сети повышает точность, поскольку мало данных, из которых можно узнать.

  • Если ваши данные очень похожи на исходные данные, то более конкретные функции, извлеченные глубже в сети, вероятно, будут полезны для новой задачи.

  • Если ваши данные сильно отличаются от исходных данных, то функции, извлеченные глубже в сети, могут быть менее полезны для вашей задачи. Попробуйте обучить итоговый классификатор для более общих функций, извлеченных с предыдущего слоя сети. Если новый набор данных велик, то можно попробовать и обучить сеть с нуля.

ResNets часто являются хорошими экстракторами функций. Пример, показывающий использование предварительно обученной сети для редукции данных, см. в разделе «Извлечение изображений» Функций «Использование предварительно обученной сети».

Передача обучения

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

Совет

Подстройка сети часто дает самую высокую точность. Для очень небольших наборов данных (менее чем около 20 изображений на класс) попробуйте вместо этого извлечь признаки.

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

Импорт и экспорт сетей

Можно импортировать сети и сетевые архитектуры из TensorFlow®-Keras, Caffe и ONNX™ (Open Neural Network Exchange) формат модели. Можно также экспортировать обученные сети в формат модели ONNX.

Импорт из Keras

Импорт предварительно обученных сетей из TensorFlow-Keras при помощи importKerasNetwork. Можно импортировать сеть и веса как из того же HDF5 файла (.h5), так и из отдельных файлов HDF5 и JSON (.json). Для получения дополнительной информации см. importKerasNetwork.

Импортируйте сетевые архитектуры из TensorFlow-Keras при помощи importKerasLayers. Можно импортировать сетевую архитектуру с весами или без. Можно импортировать сетевую архитектуру и веса либо из того же HDF5 файла (.h5), либо из отдельных файлов HDF5 и JSON (.json). Для получения дополнительной информации см. importKerasLayers.

Импорт из Caffe

Импорт предварительно обученных сетей из Caffe с помощью importCaffeNetwork функция. Существует много предварительно обученных сетей, доступных в Caffe Model Zoo [5]. Загрузите нужную .prototxt и .caffemodel файлы и использование importCaffeNetwork для импорта предварительно обученной сети в MATLAB®. Для получения дополнительной информации см. importCaffeNetwork.

Можно импортировать сетевые архитектуры сетей Caffe. Загрузите нужную .prototxt файл и использование importCaffeLayers для импорта слоев сети в MATLAB. Для получения дополнительной информации см. importCaffeLayers.

Экспорт и импорт из ONNX

Используя ONNX в качестве промежуточного формата, можно взаимодействовать с другими средами глубокого обучения, поддерживающими экспорт или импорт модели ONNX, такими как TensorFlow, PyTorch, Caffe2, Microsoft® Cognitive Toolkit (CNTK), Core ML и Apache MXNet™.

Экспорт обученной сети Deep Learning Toolbox в формат модели ONNX с помощью exportONNXNetwork функция. Затем можно импортировать модель ONNX в другие глубокое обучение среды, поддерживающие импорт модели ONXX.

Импорт предварительно обученных сетей из ONNX с помощью importONNXNetwork и импорт сетевых архитектур с весами или без них с помощью importONNXLayers.

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

Используйте предварительно обученные сети для приложений обработки звука и речи при помощи Deep Learning Toolbox вместе с Audio Toolbox™.

Audio Toolbox предоставляет предварительно обученные сети VGGish и YAMNet. Используйте vggish (Audio Toolbox) и yamnet (Audio Toolbox) функционирует для непосредственного взаимодействия с предварительно обученными сетями. classifySound (Audio Toolbox) выполняет необходимую предварительную обработку и постобработку для YAMNet, чтобы можно было найти и классифицировать звуки в одну из 521 категорий. Вы можете исследовать онтологию YAMNet, используя yamnetGraph (Audio Toolbox) функция. vggishFeatures (Audio Toolbox) выполняет необходимую предварительную обработку и постобработку для VGGish, так что можно извлечь встроенные функции для ввода в системы машинного обучения и глубокого обучения. Для получения дополнительной информации об использовании глубокого обучения для аудио приложений, смотрите Введение в Глубокое Обучение для Аудио Приложений (Audio Toolbox).

Используйте VGGish и YAMNet, чтобы выполнить передачу обучения и редукцию данных. Для получения примера смотрите Передачу обучения с предварительно обученными аудиосетями (Audio Toolbox).

Предварительно обученные модели на GitHub

Чтобы найти последние предварительно обученные модели и примеры, смотрите MATLAB Deep Learning (GitHub).

Для примера:

Ссылки

[1] ImageNet. http://www.image-net.org

[2] Russakovsky, O., Deng, J., Su, H., et al. «Большой масштабный вызов визуального распознавания ImageNet». Международный журнал компьютерного зрения (IJCV). Том 115, Выпуск 3, 2015, стр. 211-252

[3] Чжоу, Болей, Адитья Хосла, Агата Лапедриза, Антонио Торральба, и Од Олива. «Места: База изображений для глубокого понимания сцены». arXiv preprint arXiv:1610.02055 (2016).

[4] Места. http://places2.csail.mit.edu/

[5] Caffe Model Zoo. http://caffe.berkeleyvision.org/model_zoo.html

См. также

| | | | | | | | | | | | | | | | | | | | | | | | |

Похожие темы