exponenta event banner

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

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

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

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

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

Извлечение элементов

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

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

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

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

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

Совет

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

Примечание

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

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

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

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

Сетевая точность

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

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

Для загрузки сети SqueeEcnet введите squeezenet в командной строке.

net = squeezenet;

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

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

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

5,2 МБ

1.24

227-by-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-by-227

vgg1616

515 МБ

138

224 на 224

vgg1919

535 МБ

144

224 на 224

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

Обучение GoogLeNet на Places365

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

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

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

deepNetworkDesigner(squeezenet)

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

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

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

Извлечение элементов

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

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

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

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

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

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

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

Совет

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

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

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

Можно импортировать сети и сетевые архитектуры из формата модели 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 доступно множество предварительно подготовленных сетей [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™.

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

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

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

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

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

Используйте VGGish и YAMNet для выполнения трансферного обучения и извлечения функций. Например, см. раздел Передача обучения с предварительно обученными аудиосетями (панель инструментов для аудио).

Ссылки

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

[2] Руссаковский, О., Денг, Дж., Су, Х., и др. «Задача масштабного визуального распознавания ImageNet». Международный журнал компьютерного зрения (IJCV). Том 115, выпуск 3, 2015, стр. 211-252

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

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

[5] Зоопарк модели Caffe. http://caffe.berkeleyvision.org/model_zoo.html

См. также

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

Связанные темы