Вы можете воспользоваться предварительно подготовленной сетью классификации изображений, которая уже научилась извлекать мощные и информативные функции из естественных изображений и использовать их в качестве отправной точки для изучения новой задачи. Большинство предварительно подготовленных сетей обучаются на подмножестве базы данных ImageNet [1], которое используется в масштабном вызове визуального распознавания ImageNet (ILSVRC) [2]. Эти сети были обучены более чем миллиону изображений и могут классифицировать изображения на 1000 категорий объектов, таких как клавиатура, кофейная кружка, карандаш и многие животные. Использование предварительно обученной сети с обучением передаче обычно намного быстрее и проще, чем обучение сети с нуля.
Ранее обученные сетевые графики можно использовать для выполнения следующих задач:
| Цель | Описание |
|---|---|
| Классификация | Применение предварительно подготовленных сетей непосредственно к проблемам классификации. Чтобы классифицировать новое изображение, используйте |
| Извлечение элементов | Используйте предварительно подготовленную сеть в качестве экстрактора элементов, используя активации слоев в качестве элементов. Эти активации можно использовать в качестве функций для обучения другой модели машинного обучения, такой как вспомогательная векторная машина (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-образы.
| Сеть | Глубина | Размер | Параметры (миллионы) | Размер входного изображения |
|---|---|---|---|---|
squeezenet | 18 | 5,2 МБ | 1.24 | 227-by-227 |
googlenet | 22 | 27 МБ | 7.0 | 224 на 224 |
inceptionv3 | 48 | 89 МБ | 23.9 | 299 на 299 |
densenet201 | 201 | 77 МБ | 20.0 | 224 на 224 |
mobilenetv2 | 53 | 13 МБ | 3.5 | 224 на 224 |
resnet18 | 18 | 44 МБ | 11.7 | 224 на 224 |
resnet50 | 50 | 96 МБ | 25.6 | 224 на 224 |
resnet101 | 101 | 167 МБ | 44.6 | 224 на 224 |
xception | 71 | 85 МБ | 22.9 | 299 на 299 |
inceptionresnetv2 | 164 | 209 МБ | 55.9 | 299 на 299 |
shufflenet | 50 | 5,4 МБ | 1.4 | 224 на 224 |
nasnetmobile | * | 20 МБ | 5.3 | 224 на 224 |
nasnetlarge | * | 332 МБ | 88.9 | 331 по 331 |
darknet19 | 19 | 78 МБ | 20.8 | 256 на 256 |
darknet53 | 53 | 155 МБ | 41.6 | 256 на 256 |
efficientnetb0 | 82 | 20 МБ | 5.3 | 224 на 224 |
alexnet | 8 | 227 МБ | 61.0 | 227-by-227 |
vgg16 | 16 | 515 МБ | 138 | 224 на 224 |
vgg19 | 19 | 535 МБ | 144 | 224 на 224 |
* Сети NASNet-Mobile и NASNet-Large не состоят из линейной последовательности модулей.
Стандартная сеть 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.
Импорт предварительно подготовленных сетей из TensorFlow-Keras с помощью importKerasNetwork. Сеть и веса можно импортировать либо из одного файла HDF5 (.h5), либо из отдельных файлов HDF5 и JSON (.json). Дополнительные сведения см. в разделе importKerasNetwork.
Импорт сетевых архитектур из TensorFlow-Keras с помощью importKerasLayers. Сетевую архитектуру можно импортировать с весами или без них. Сетевую архитектуру и веса можно импортировать либо из одного файла HDF5 (.h5), либо из отдельных файлов HDF5 и JSON (.json). Дополнительные сведения см. в разделе importKerasLayers.
Импорт предварительно подготовленных сетей из Caffe с помощью importCaffeNetwork функция. В зоопарке Caffe Model доступно множество предварительно подготовленных сетей [5]. Загрузите нужное .prototxt и .caffemodel файлы и использование importCaffeNetwork для импорта предварительно обученной сети в MATLAB ®. Дополнительные сведения см. в разделеimportCaffeNetwork.
Можно импортировать сетевые архитектуры сетей Caffe. Загрузите нужное .prototxt файл и использование importCaffeLayers для импорта сетевых уровней в MATLAB. Дополнительные сведения см. в разделе importCaffeLayers.
Используя 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
alexnet | darknet19 | darknet53 | Конструктор глубоких сетей | densenet201 | exportONNXNetwork | googlenet | importCaffeLayers | importCaffeNetwork | importKerasLayers | importKerasNetwork | importONNXLayers | importONNXNetwork | inceptionresnetv2 | inceptionv3 | mobilenetv2 | nasnetlarge | nasnetmobile | resnet101 | resnet18 | resnet50 | shufflenet | squeezenet | vgg16 | vgg19 | xception