Генерация умных хэштегов

В сегодняшней статье мы собираемся выполнить классификацию изображений с несколькими метками с помощью сверточных нейронных сетей. Модель машинного обучения, обученная с использованием такого подхода, сможет генерировать несколько описательных меток для заданного входного изображения. Такое приложение можно использовать для создания хэштегов для сообщений в социальных сетях, как в приведенном ниже примере (Приложение для 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.

И не забудьте 👏 если вам понравилась эта статья 🙂.