Держите под рукой фото любимого питомца, оно нам понадобится!

Это собака или призрак?

Transfer Learning — очень популярная концепция машинного обучения, в которой модель использует знания других (ранее обученных) моделей вместо самообучения с нуля. Это наиболее часто используемая идея в распознавании изображений и глубоком обучении в целом, где для достижения удовлетворительных результатов требуются гигантские наборы данных.

Используйте то, что знаете, адаптируйте и продолжайте учиться. Это суть того, что делает трансферное обучение. Сегодня я покажу вам, как!

Предисловие

1. Что такое трансферное обучение?

2. Почему вы должны заботиться о трансферном обучении?

3. Что такое VGG16?

4. Перенос обучения на практике

Что такое трансферное обучение?

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

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

Почему вы должны заботиться о трансферном обучении?

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

Что такое VGG16?

VGG16 — модель сверточной нейронной сети, предложенная Оксфордским университетом. Модель VGG показала точность испытаний 92,7% в конкурсе ImageNet. ImageNet — известная база данных, созданная Фей-Фей Ли, которая начала собирать данные в 2006 году. Это огромная база данных изображений, предназначенная для исследования визуального распознавания объектов. Он состоит из 1,4 миллиона меток набора данных из 1000 категорий.

VGG16 — это лишь одна из предварительно обученных моделей, которую вы можете выбрать. Вот множество других моделей классификации изображений, которые вы можете импортировать из библиотеки Keras. Обратите внимание, что архитектура для VGG16 и VGG19 точно такая же, единственная разница в том, что VGG19 немного больше (больше слоев).

import keras.applications
dir(keras.applications)

Перенос обучения на практике

Теперь давайте превратим эти знания в более практический опыт.

Моя любимая собачка — Молли, примет участие в сегодняшнем эксперименте. Для тех из вас, кто не знает, это порода ши-тцу. Но не верьте мне на слово! Посмотрите, что говорит об этом VGG16.

Шаг 1. Импортируйте библиотеки

Модель VGG16 входит в комплект поставки Keras. Его можно импортировать из модуля keras.applications.

Шаг 2. Загрузите VGG16

Шаг 3. Ввод данных

Библиотека Imageio помогает читать данные изображения. Согласно документации Keras, параметр input_shape должен иметь размер 224x224 пикселя в RGB (3 канала).

Если ваше изображение имеет другие значения (как в моем случае), мы можем это исправить, добавив параметр target_size

Теперь мы готовы перейти к последнему шагу

Шаг 4: Прогноз

Просто потому, что я хочу увидеть 5 наиболее похожих результатов, я использовал параметр «верхний».

Шаг 5. Визуализация

Шаг 6. Выводы

Ши-тцу выигрывает соревнование с ошеломляющей вероятностью 89%. Лхаса идет сразу за ним, занимая второе место с 9,4%. Пекинес, тибетский терьер и мопс набрали менее 1%.

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

Заключительные мысли

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

Итак... это собака или призрак? :)

Спасибо за чтение!