Генерация умных хэштегов
В сегодняшней статье мы собираемся выполнить классификацию изображений с несколькими метками с помощью сверточных нейронных сетей. Модель машинного обучения, обученная с использованием такого подхода, сможет генерировать несколько описательных меток для заданного входного изображения. Такое приложение можно использовать для создания хэштегов для сообщений в социальных сетях, как в приведенном ниже примере (Приложение для iOS).
Мультиклассовая классификация изображений CNN
Прежде чем мы углубимся в классификацию с несколькими метками, давайте начнем с классификации изображений CNN с несколькими классами, так как лежащие в основе концепции в основном те же, с небольшими различиями. Если вы новичок в этой области, я рекомендую вам начать со следующей статьи, чтобы изучить основы этой темы.
Мультиклассовая и многокомпонентная классификация
Чтобы узнать, что такое многоклассовая классификация, давайте воспользуемся аналогией с многоклассовой классификацией и проиллюстрируем ее на следующем примере.
Мультикласс
Мульти-лейбл
Какая разница?
Разница между классами и метками состоит в том, что классы являются взаимоисключающими, а метки - нет.
По сути, это означает, что экземпляр может принадлежать только одному классу, но может иметь несколько меток.
Например, в самом последнем примере счастливый золотистый ретривер может быть обозначен не только как собака, но и как животное, что дает нам возможность присвоить несколько описательных ярлыков данному экземпляру.
Классификация изображений CNN с несколькими метками
Набор данных
Чтобы выполнить классификацию с несколькими метками, нам нужно сначала подготовить действительный набор данных. Действителен в этом случае, означает, что с каждым изображением связано несколько ярлыков.
Я собрал 758901 с кадрированием по центру 224x224 различных изображений людей, животных, мест, собранных из unsplash, instagram и flickr.
Примерный образец выглядит следующим образом.
- Всего 1120 уникальных этикеток.
- Каждое изображение имеет от 1 до 10 этикеток.
- На каждой этикетке содержится не менее 100 соответствующих образцов.
- Сопоставления меток изображений находятся в файле metadata.csv.
- Кроме того, каждое изображение следует следующему соглашению:
id-tag1_tag2.jpg
Полный набор данных доступен здесь.
Обучение
Собрав нужные данные, мы можем приступить к созданию нашего классификатора изображений с несколькими метками, также известного как умный генератор хэштегов.
Вы можете найти соответствующий код по ссылке ниже.
Я не буду вдаваться в подробности обучающего кода, поскольку он очень похож на код image_classifier, объясненный здесь, но есть некоторые тонкие различия, которые стоит упомянуть.
Функция активации последнего слоя
Зная, что в мультиклассовых задачах классы являются исключительными, мы можем выбрать функцию softmax activation, которая гарантированно выводит значения, которые в сумме составляют 1,0. Однако в случае с несколькими ярлыками проблемы не являются исключительными, поэтому вместо этого мы можем выбрать сигмовидную активацию.
Оценочные показатели
Точность - один из первых вариантов метрики оценки многоклассовой задачи.
Однако в проблеме с несколькими метками, когда общее количество уникальных меток очень велико, а количество меток на каждый экземпляр в дате является низким (как в нашем приложении, где у нас есть 1120 уникальных меток, но каждое изображение в набор данных имеет в среднем только 4 метки), очень легко получить очень высокую точность, просто предсказав 0,0 для большинства меток.
В таком случае нам может потребоваться изучить другие показатели, такие как точность или отзыв. Высокая точность означает, что модель очень точна в своих прогнозах, а высокая степень запоминаемости означает, что она не упускает из виду многие образцы.
Наконец, мы можем вычислить показатель f1, который представляет собой гармоническое среднее значение точности и запоминания, которое пытается найти «баланс» между этими двумя значениями.
Результаты
Приведенные ниже результаты тестирования с соответствующими оценками достоверности показывают, что наша модель после нескольких часов обучения на графическом процессоре научилась назначать правильные метки для данных изображений.
Что дальше?
В этом руководстве мы узнали, как выполнить классификацию изображений CNN с несколькими метками. Такие знания можно использовать для создания умных генераторов хэштегов или с некоторой дополнительной Обработкой естественного языка (NLP) для создания автоматических подписей к изображениям. Возможности безграничны, и я с нетерпением жду ваших проектов и результатов!
Страница проекта на GitHub:
Соответствующее приложение для iOS:
Вопросы? Комментарии? Не стесняйтесь оставлять свои отзывы в разделе комментариев или связываться со мной напрямую по адресу https://gsurma.github.io.
И не забудьте 👏 если вам понравилась эта статья 🙂.