/cv_hotels

A project to select hotels for imaginary aliens. Image-captioning and diffusion models are used

Primary LanguageJupyter Notebook

Отели для инопланетян

Максим Привалов

Инструкции

  1. Открыть ноутбук в колабе. Его можно скачать из репозитория или открыть по ссылке: https://drive.google.com/file/d/1lhpuqQ4LQccSBXbpudNDMgNEz4VCDT6O/view?usp=sharing
  2. ОБЯЗАТЕЛЬНО В НАСТРОЙКАХ КОЛАБА ВКЛЮЧИТЬ GPU, иначе код будет выполняться бесконечно
  3. Выполнять код в ячейках последовательно
  4. Если возникнут вопросы, то со мной можно связаться в ВК: https://vk.com/mksprivet или в Телеграме: @mksprvlv

1. Формирование образа и предпочтений инопланетян

1.1 История

Раз уж мы имеем дело с инопланетянами, которым известна концепция отеля и которым подойдут человеческие отели, которые и мы, и они воспринимают таким образом, что обе цивилизации могут различить в фото одно и то же здание, то мы можем предположить, что инопланетяне эти чем-то напоминают нас – людей. И неслучайно...

Миллионы лет назад, в северной части галактики (наша Земля находится в южной части) Млечный Путь, на планете Вода (так её назвали наши далёкие предки, ведь она на более чем 80% была покрыта водой. Они были более рациональны, чем мы), появилось человечество.

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

Среди этих миров была и планета Kepler-442b, расположенная в далёкой созвездии Лиры. Там, вдоль южных просторов Млечного Пути, человеческие колонисты основали свои обиталища, стремясь сохранить свои корни и ценности на незнакомой земле.

Чуть южнее они нашли планету немного поменьше, но более комфортную, которую позже назвали Землёй. Однако давным-давно, в космических просторах, внутренние возмущения в тёмной материи изменили всё. Человеческие цивилизации на Земле и на Kepler-442b потеряли доступ к развитым технологиям и связи с северной частью галактики. Потеряв возможность передвигаться в космосе и взаимодействовать с другими мирами, они были вынуждены начать адаптироваться к условиям своих планет и солнц.

Таким образом, на протяжении миллионов лет, обе цивилизации - та, что осталась на Земле, и та, что заселила Kepler-442b - начали изменяться, подстраиваясь под свои новые окружения. Физические особенности, культурные привычки и общественные ценности стали отличительными чертами этих двух групп разумных существ.

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

Инопланетяне на Kepler-442b также адаптировались к суровым условиям своей планеты. Их физический облик претерпел изменения, чтобы эффективно справляться с низкими температурами и особенностями атмосферы. Эволюция подарила им более утолщённую кожу, дополнительные внутренние органы, а также самую заметную для нас особенность – фиолетовые глаза.

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

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

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

1.2 Характеристики Кеплера и кеплеровцев

Характеристики Кеплера - планеты инопланетян

Кеплеровец на фоне природного ландшафта своей планеты:

Среднестатистческий кеплеровец в своём городе:

Как кеплеровцы видят мир:

1.3 Предпочтения инопланетян

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

При выборе отеля кеплеровцы, обращают внимание на следующие аспекты:

  1. Температурные условия: Учитывая их способность воспринимать тепловое излучение, они могут предпочитать отели с комфортными температурными условиями, которые соответствуют их биологическим потребностям.
  2. Экзотический ландшафт: Из-за своих уникальных физиологических характеристик кеплеровцы могут интересоваться отелями, предлагающими экзотические ландшафты, богатые теплыми и красочными элементами.
  3. Технологичные удобства: Учитывая технологический характер их культуры, кеплеровцы, будут оценивать отели с современными технологичными удобствами, так как им интересно, насколько люди технологически развиты.

Относительно изображений, которые они бы сочли красивыми, они бы нашли привлекательными следующие элементы:

  1. Яркие и теплые цвета: Изображения с насыщенными теплыми оттенками, такими как оранжевый, красный и фиолетовый, могли бы привлечь их внимание и вызвать положительные эмоции.
  2. Искусство и символы природы и звезд: Изображения, объединяющие элементы искусства, символов природы и звезд, могли бы создать атмосферу гармонии, которую они ценят.
  3. Очень любят сумерки, ведь это их обычное окружение на родной планете

!Из-за холодного климата на Кеплере моря там не пригодны для плавания и курортов, поэтому единственным поводом лететь на Землю, в такую даль, для инопланетян служат тёплые моря. Поэтому, если на изображениях отелей не будет виднется море, то они его не выберут. Остальные предпочтения, описанные выше не так важны.

2. Изучение датасета

2.1 Ознакомление с темой и её проблемой

Что такое image captioning?

Image captioning (генерация подписей к изображениям) - это задача в области искусственного интеллекта, которая заключается в создании текстовых описаний для изображений и видео. Она представляет собой комбинацию компьютерного зрения (CV) и обработки естественного языка (NLP). Целью этой задачи является создание понятных для человека и достаточно информативных описаний, которые точно передают содержание изображения.

Задача автоматического создания подписи к изображениям существует довольно давно и есть разные способы, в том числе основанные на не ML-методах. Но наиболее эффективным и перспективных на данный момент является как раз ML-подход к решению Image captioning’a

Для решения задачи image captioning’a применяются глубокие нейронные сети, обычно состоящие из двух основных компонентов:

  1. Сверточные нейронные сети (Convolutional Neural Networks, CNN): Эти сети предназначены для обработки изображений и извлечения важных признаков (фич) из изображения. Они помогают выделить основные объекты, структуры и контекст изображения.

  2. Рекуррентные нейронные сети (Recurrent Neural Networks, RNN): Эти сети используются для генерации текста на основе извлеченных признаков из изображения, создавая текстовое описание. Особенно часто для этой цели используются LSTM (Long Short-Term Memory) нейронные сети, которые способны учиться долгосрочным зависимостям в последовательных данных.

Однако, чтобы учесть различные части изображения на каждом этапе генерации текста и избежать потери контекста, в задаче image captioning применяется механизм внимания (attention mechanism). Этот механизм позволяет сети выбирать разные части изображения с разной важностью на каждом шаге генерации текста. Результатом успешной работы системы image captioning является автоматически сгенерированный текстовый комментарий, который точно описывает содержание и контекст изображения.

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

Почему над этим работают?

Automatically generating captions of an image is a task very close to the heart of scene understanding — one of the primary goals of computer vision. - Show, Attend and Tell: Neural Image Caption Generation with Visual Attention

Кроме той пользы, которую дают нейросети CNN+RNN в повседневной жизни, напирмер Доступность изображений для людей с ограниченными возможностями (Генерация подписей к изображениям позволяет людям с ограниченными зрительными способностями получать более полное представление о содержании изображений, благодаря текстовому описанию.), Обработка и анализ больших объемов данных, Создание контента, Автоматизация и оптимизация задач, эта технология несёт огромную выгоду бизнесу.

Так, например, поисковики, соц.сети, стриминговые сервисы и т.д с помощью image captioning'a выдают более подходящие картинки и видео на запрсы пользователя, что в конечном итоге, повышает лояльность пользователя к продукту с внедрённым в него технологией, а следовательно, повышает и прибыль компании.

Наглядно продемонстрировать пользу image captioning'a можно на примерах в стиле "До и после" в самых разных областях.

  1. Электронная торговля: До: Онлайн-магазины часто предоставляли только название товаров и краткие описания. Пользователям было сложно получить полное представление о продукте, особенно если это сложные или многофункциональные товары.

После: С данной ехнологией магазины могут автоматически создавать детальные описания товаров, охватывающие их особенности, характеристики и визуальные аспекты. Это улучшает понимание потенциальных покупателей и может увеличить конверсию.

  1. Медицина: До: В медицинской диагностике и анализе медицинских изображений (например, рентгеновских снимков) врачам приходилось тратить много времени на описание патологий и нахождение аномалий.

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

Как формулируется задача?

Фактически, перед нами стоит задача преобразовать изображение в текст (image2text)

Математическая формулировка задачи Image Captioning может быть выражена следующим образом:

Пусть дано множество изображений I и множество текстовых описаний T. Задача Image Captioning'a заключается в нахождении функции F:I→T, которая сопоставляет каждому изображению i∈ I соответствующее текстовое описание t∈ T, такое что t является связным и информативным описанием содержания изображения i.

В итоге у нас дано изображение I и требуется сгенерировать описание T, которое информативно передает содержание данного изображения. То есть, необходимо построить модель M, которая отображает изображение в текст: T=M(I)

2.2 Обзор датасета - подробнее в ноутбуке

Датасет ./Data/dataset/test_set.csv

Кол-во изображений: 1124215 Кол-во отелей: 50000 Кол-во сетей: 93

Датасет содержит ОЧЕНЬ много данных, поэтому логично будет сделать выборку с приемлемым количеством данных. (см. ноутбук)

В основном изображения отелей берутся из источника "travel_website"

Сэмплирование датасета и загрузка изображений

Выбираю 250 случайных отелей, кол-во изображений у кторых принадлежит отрезку от 10 до 100, из 50000 отелей всего датасета. Эти отели охватывают 49 сетей из 93 исходного датасета. Далее скачиваются 4347 изображений, которые будут использоваться в дальнейшем. Также создаётся и сохраняется файл sample.csv, содержащий все необходимые для анализа и визуализации данные.

Исходные датасет состоит из 1124215 изображений, загрузка которого заняла бы неудовлетворительно много времени

Что представлено на изображениях?

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

Сколько объектов в датасете? Сколько уникальных классов? Сбалансирован ли датасет?

Исходный датасет:

  1. Кол-во изображений: 1124215
  2. Кол-во отелей: 50000
  3. Кол-во сетей: 93

Сэмплированный датасет:

  1. Кол-во изображений: 4347 - сколько объектов
  2. Кол-во отелей: 240 - уникальных классов
  3. Кол-во сетей: 48

Т.к большая часть отелей имеет от 10 до 24 изображени. Медианное значение - 18 изображений, то датасет можно считать сбалансрованным

Какие параметры у изображений? Размер фотографий?

Самая маленькая площадь изображения: Ширина: 350 Высота: 115 Площадь: 40250 Самая большая площадь изображения: Ширина: 5344 Высота: 4008 Площадь: 21418752

Все изображения цветные. Их разрешение находится в диапазоне от (350, 115) до (5344, 4008). Наиболее часто встречающееся разрешение: (233, 350, 3)

3. Обогащение датасета описаниями

Используется модель CLIP от OpenAI

Были отсеяны те отели, на фотографиях которых модель не нашла море. К оставшимся были добавлены следующие теги (подробнее в колабе):

  1. Характеризующие наличие технологичных предметов
  2. Характеризующие приятное для кеплеровцев освещение и антураж
  3. Характеризующие наличие атрибутов космоса

Подходящих отелей осталось всего 20, а изображений с ними: 810.

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

В итоге кеплеровцам можно посоветовать 3 отеля:

  1. Hotel Jan Brito (hotel_76580) - отель из города Брюгге, страна Бельгия. "Отель Jan Brito расположен в тихом районе Бельгийского города Брюгге в нескольких минутах ходьбы от многочисленных исторических памятников и музеев. Номера отеля отличаются уникальным декором и старосветской атмосферой. Отель Jan Brito предлагает своим посетителям первоклассный сервис, который в сочетании с комфортными номерами отеля оставит только положительные впечатления."

  1. AtlAntico Boutique Hotel (hotel_atl) - отель возле моря из города Пунта-дель-Эсте страны Уругвай "Расположенный в самом центре Пунта-дель-Эсте, в самом сердце полуострова, в одном квартале от маяка и в 2 кварталах от морского порта, бутик-отель Atlántico предлагает идеальное сочетание современного дизайна, комфорта и дружелюбного обслуживания."

  1. Waters Edge Apartments Cairns (hotel_waters) - отель на берегу моря в городе Кэрнс, в Австралии. "5-ЗВЕЗДОЧНАЯ РОСКОШЬ и ГИБКОСТЬ при проживании в ваших собственных апартаментах Waters Edge Cairns Luxury Apartments. Независимо от того, является ли ваше представление об идеальном отдыхе отдыхом на курорте, где можно понежиться на солнышке, неспешно пройтись по магазинам и попробовать блюда мультикультурной кухни, предлагаемые в многочисленных ресторанах, или вы предпочитаете более насыщенный отдых, включая подводное плавание с маской, дайвинг с аквалангом, рафтинг по белой воде или банджи-джампинг, наш гибкое размещение в Кэрнсе может удовлетворить любые потребности!"

Вывод: описания получились достаточно точными и информативными, а главное - простыми. По этим тегам инопланетяне смогут найти нужный отель.

Кластеризация Изпользовался самый распространённый алгоритм кластеризации: KMeans. Для оценки и подбора кол-ва кластеров: WCSS (within-cluster sum of squares). Оптимальное количество кластеров: 16. Всего классов: 20 Значит закономерностей к тегировании почти нет

4. Изменение изображений при помощи диффузионной модели

Все изменения на картинках делались поэтапно. Использовалась inpainting-функция модели StableDiffusion.

Были учтены предпочтения инопланетян и особенности их инфракрасного зрения, а именно: тёплые цвета им более приятны, закаты и сумерки - к ним они привыкли на Кеплере, изображения звёзд, технологии - всё это поднимает им настроение.

Ниже приведены наилучшие варианты.

  1. Добавлен закат за окном и пейзаж города

  1. Добавлено заходящее солнце и фиолетовые подушки

  1. Добавлена штора на окно, тёмно оранжевые подушки и в тот же цвет покрашены халаты

  1. Добавлен закат за окнами, а одеяло приобрело красные линии

  1. Добавлен закат за окном, телевизор стал показывать падающую комету

  1. Добавлены красные подушки, телевизор показывает красную туманность в космосе

Что касается вопроса улучшения изменения, не затрагивая остальные элементы изображения, то с этим прекрасно справляется image-inpainting. Напрактике это работает следующим образом: выделяются (закрашиваются, создавая пробелы в изображении, которые сеть должна будет восстановить) области, которые нужно изменить, пишеся промпт. И вот - изменяются только та часть картинки, которую нужно изменить.

Здесь можно почитать, как это устроено внутри:

  1. http://cs231n.stanford.edu/reports/2022/pdfs/127.pdf
  2. https://arxiv.org/pdf/1804.07723.pdf

Выводы:

  1. Image inpainting, реализованный в Stable Diffusion отлично справился со своей задачей. С первого взгляда и не распознаешь работу нейросети.
  2. На лучшие картинки лучших для инопланетян отелей удалось добавить приятные кеплеровцам виды - это окончательно убедит их выбрать Землю в качестве курорта.

Выводы по работе:

  1. Удалось найти идеальные отели для инопланетян, удовлетворяющие все их потребности. Используемая технология: Image captioning, модель CLIP
  2. Удалось стилизовать рекламные картинки отелей, сделать их более приятными для взгляда кеплеровцев. Используемая технология: Image inpainting, модель StableDiffusion
  3. С учётом того, что недавно в конгрессе США обсуждались иноланетяне, данная работа и способы изложенные здесь скоро пригодятся гостинечному бизнесу.