Держите под рукой фото любимого питомца, оно нам понадобится!
Это собака или призрак?
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 минут (включая написание кода). Как вы уже догадались, это было бы невозможно без реализации концепции трансферного обучения.
Заключительные мысли
Основная цель этой статьи состояла в том, чтобы показать, насколько быстро и легко может быть реализована концепция трансферного обучения. Даже если у вас недостаточно тренировочных данных, вы не в проигрышной позиции. Вам просто нужно использовать одну из уже обученных моделей и применить ее к любой проблеме, которую вы хотите решить. Используя собственные фотографии, вы можете попытаться классифицировать не только собак, но и вообще все, что захотите. Попробуйте!
Итак... это собака или призрак? :)