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

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

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

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

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

Выделение признаков

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

Передайте изучение

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

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

Используйте функции, такие как googlenet, чтобы заставить ссылки загружать предварительно обученные сети с Add-On Explorer. В следующей таблице перечислены доступные предварительно обученные сети, обученные на ImageNet и некоторые их свойства. Сетевая глубина задана как наибольшее число сверточных последовательных или полносвязные слоя на пути от входного слоя до выходного слоя. Входные параметры ко всем сетям являются изображениями RGB.

СетьГлубинаРазмерПараметры (Миллионы)Отобразите входной размер
alexnet8

227 Мбайт

61.0

227 227

vgg1616

515 Мбайт

138

224 224

vgg1919

535 Мбайт

144

224 224

squeezenet18

4.6 МБАЙТ

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

shufflenet506.3 МБАЙТ1.4224 224
nasnetmobile*20 Мбайт 5.3224 224
nasnetlarge*360 Мбайт88.9331 331

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

GoogLeNet, обученный на Places365

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

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

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

Совет

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

Используйте график ниже, чтобы сравнить точность валидации ImageNet со временем, требуемым сделать прогноз с помощью сети. Хорошая сеть имеет высокую точность и быстра. График отображает точность классификации по сравнению со временем прогноза при использовании современного графического процессора (NVIDIA® TITAN Xp) и мини-пакетный размер 64. Время прогноза измеряется относительно самой быстрой сети. Область каждого маркера пропорциональна размеру сети на диске.

Сетью является Парето, эффективный, если нет никакой другой сети, которая лучше на всех сравниваемых метриках в этой точности случая и время прогноза. Группа всего Парето эффективные сети называется границей Парето. Граница Парето содержит все сети, которые не хуже, чем другая сеть на обеих метриках. График соединяет сети, которые находятся на границе Парето в плоскости времени прогноза и точности. Все сети кроме AlexNet, VGG-16, VGG-19, Xception, NASNet-мобильного, ShuffleNet и DenseNet-201, находятся на границе Парето.

Примечание

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

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

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

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

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

Выделение признаков

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

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

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

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

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

Передайте изучение

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

Совет

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

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

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

Можно импортировать сети и сетевую архитектуру от 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 [5]. Загрузите желаемый .prototxt и файлы .caffemodel и используйте importCaffeNetwork, чтобы импортировать предварительно обученную сеть в MATLAB®. Для получения дополнительной информации смотрите importCaffeNetwork.

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

Экспортируйте в и импорт от ONNX

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

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

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

Ссылки

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

[2] Russakovsky, O., Дэн, J., Су, H., и др. “Крупный масштаб ImageNet Визуальная проблема Распознавания”. Международный журнал Компьютерного зрения (IJCV). Vol 115, Выпуск 3, 2015, стр 211–252

[3] Чжоу, Bolei, Aditya Khosla, Агата Лапедриса, Антонио Торрэлба и Од Олива. "Места: база данных изображений для глубокого понимания сцены". arXiv предварительно распечатывают arXiv:1610.02055 (2016).

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

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

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

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

Похожие темы