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

В этой статье мы обсудим разделение изображений отелей на разные группы.

Проблема

По состоянию на октябрь 2021 года loveholidays предлагает путевки в более 38 000 отелей. У каждого из них в среднем 30 изображений, что в итоге дает более 1 243 669 изображений! Если мы включим отели, которые мы не продаем как часть пакета, то количество вырастет до 140 000, что потенциально составляет в общей сложности 4,2 миллиона изображений!

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

Маркетинг исторически ориентировался на заказ изображений для отелей с самыми высокими продажами, которые составляют ~ 1000 лучших наших отелей. Это лишь малая часть наших отелей, так что нужно было еще много кураторов!

Уже сейчас мы могли видеть, что отсутствие курирования потенциально проблематично. Многие отели имели «свинцовые» изображения ванных комнат и вестибюлей в виде эскизов, что отрицательно сказывалось на продажах этих отелей. Иногда некоторые из них будут появляться на наших целевых страницах (например, у нас есть страница с лучшими предложениями для всех направлений «Зимнее солнце») и создавать ситуации, подобные следующим:

Как видим, образ спортзала не очень репрезентативен для направления «Зимнее солнце»!

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

Решение

Здесь и вмешалась команда Data Science. Мы составили процесс, чтобы воспроизвести работу маркетинга, используя комбинацию методов машинного обучения. Процесс следующий:

  1. Разделите изображения каждого отеля на одну из пяти категорий (Ведущие изображения, Спальни, Ванные комнаты, Удобства, Другое).
  2. Внутри категорий ранжируйте изображения на основе модели машинного обучения.
  3. Поскольку изображения отеля снаружи (которые мы называем изображениями для потенциальных клиентов) являются наиболее впечатляющими изображениями для отеля, мы также разработали модель, которая использует данные о кликах для отеля, чтобы определить единичный оптимальный образ лида. Это изображение будет служить миниатюрой и представлять отель в результатах поиска и на выбранных целевых страницах.

В виде блок-схемы это решение будет выглядеть так:

Согласно блок-схеме, клиент видит ведущее изображение отеля и, щелкнув по нему, проходит через галерею отеля. Галерея определяется классификатором изображений и моделью Learn-to-Rank. Изображение для интереса определяется классификатором и моделью перехода по ссылкам.

Читайте подробное объяснение того, как мы реализовали классификатор изображений. Мы опишем модели Learn-to-Rank и Clickthrough в следующей части этой статьи.

Классификация изображений

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

Для каждого отправленного изображения Google Vision возвращает список тегов в порядке их уверенности в их обнаружении. Пользователь может указать, сколько тегов он хочет, и должны ли теги возвращаться вместе с вероятностями.

Например, использование API для некоторых изображений из галерей наших отелей дало:

Выше представлены изображения из отеля Praia Sol, первое - это внешний вид, а второе - вестибюль, обработанные с помощью Google Vision для получения тегов.

Сценарий был простым, и, хотя для обработки всех изображений требовалось время, мы позволили экземпляру виртуальной машины Google Cloud выполнить задачу, выполнение которой заняло несколько дней.

Полученный набор данных выглядел примерно так:

Мы добавили столбец со списком из 20 тегов для каждого изображения в наш набор данных.

Используя эти теги, мы могли бы обучить нашу модель классифицировать изображения на основе их содержимого ... Но с какими ярлыками мы будем тренироваться?

К сожалению, хотя маркетологи отобрали и заказали изображения для ~ 1000 лучших отелей, на самом деле они не пометили каждое изображение! Это означает, что, хотя они расположили изображения в правильном порядке, они никогда явно не делили их на наши пять категорий (изображения для потенциальных клиентов, спальни, ванные комнаты, удобства, другое)! Как следствие, у нас действительно не было обучающего набора для маркировки изображений. Так что довольно рано мы поняли, что эта проблема была скорее холодным стартом, чем мы надеялись. В конце концов мы отказались от обучения с учителем для этой части проекта.

Мы пришли к следующему решению:

  1. Примените алгоритм кластеризации к отобранным изображениям отелей.
  2. Вручную пометьте результирующие кластеры (в итоге у нас было 20 или около того. Информация из 20 кластеров была намного полезнее, чем использование только пяти кластеров, как если бы изображения были помечены вручную для начала. Теперь наш набор данных изображений имеет такие метки, как « Тренажерный зал, Ресторан, Открытый бассейн, Аквапарк, Декорации, Пляж и т. Д.).
  3. Сохраните полученную кластеризацию, чтобы мы могли загрузить ее для дальнейшего использования.
  4. Используйте кластерную модель, чтобы быстро и эффективно назначить категорию всем изображениям.

Это уже дало неплохие результаты.

Отель Praia Sol, показанный выше, изначально имел изображение вестибюля в качестве первого изображения, что означает, что это то, что клиенты видели в качестве эскиза отеля. С новыми данными мы могли видеть, что изображения, которые мы хотели показать первыми, на самом деле были последними изображениями, которые увидит покупатель:

Как мы видим, каждое изображение было помечено как принадлежащее к одной из пяти категорий, а также к подкатегориям, что дает нам больше информации о содержании изображения.

Кроме того, используя этот подход, мы выяснили, что в большинстве наших отелей, не прошедших курирование, в качестве начального изображения нет изображения Outside Shot / Beach / Scenery. Это означает, что первое изображение, которое увидели клиенты при поиске таких отелей, было спальней, тренажерным залом или ванной комнатой! Мы знаем, что это плохо для продаж, тем более что многие из этих отелей производят хорошие впечатления, поскольку они одни из самых дешевых.

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

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