Skip to content

Latest commit

 

History

History
120 lines (90 loc) · 19.3 KB

File metadata and controls

120 lines (90 loc) · 19.3 KB

Interior Design 2.0

Секция 1.1 Цель разработки.

Магазины мебели желают демонстрировать потенциальному покупателю примеры того, как могут выглядеть полностью меблированные комнаты. Обычно такие фотографии собраны в каталоги. Покупателю удобно иметь возможность просмотра нескольких наиболее релевантных его запросу изображений комнат вместо просмотра огромного каталога.
Без использования машинного обучения, возможно бы было создать поиск по описаниям фотографий, например основанный на реккурентных выражениях. Проблема такого подхода заключается в том, что если не будет найдено точное совпадение слов, клиент в ответ на запрос не получит никакое изображение. В случае же ML-решения клиент получит в ответ фотографию, описание которой наиболее соответствует его запросу, даже если в итоге некоторые детали не соответствуют действительности, или соответствующие предметы заданы синонимами.
Успехом выполнения задачи будет является работающий веб-сайт в котором пользователь может ввести запрос на английском языке в свободной форме с описанием представляемого ему интерьера интересующей его комнаты, и получить в ответ несколько наиболее релевантных ему картинок из каталога магазина

Секция 1.2 Бизнес-требования и ограничения.

Проект представляет собой реализацию системы текстового поиска по каталогу изображений меблированных комнат. Для его реализации необходимо предоставление каталога изображений меблированных комнат. Также необходимо проведение командой проекта разметки данных. Ограничением является поиск только по заранее загруженным в систему данным.

Требования к системе:

  1. Пользователь должен иметь возможность ввести описание интерьера на английском языке в свободной форме.
  2. Пользователь длжен иметь возможность выбрать нужный ему тип комнаты из следующих: спальня, кухня, гостиная, обеденная зона, ванная комната.
  3. Пользователь должен иметь возможность получить фотографию комнаты интерьера по типу соответствующей его запросу .
  4. От момента отправки запроса в систему до получения картинки должно пройти не более 10 секунд.
  5. Интерфейс системы должен содержать окно ввода текста и кнопку подтверждения в центральной части экрана, чтобы быть хорошо видимым интуитивно понятным пользователю.
  6. Доступ к интерфейсу системы должен осуществляться с помощью url адреса в сети интернет.

1.3 Критерии успеха проекта.

Основной критерий успеха проекта это увелечение конверсии пользователей при использовании системы по сравнению с традиционным листанием каталога фотографий. Мы предполагаем, что увелечени конверсии пользователей будет напрямую зависеть от пользовательской удовлетворенности, скорости ответа системы на запрос и от доступности системы по url.
Проект считается успешно выполненным если точность выше или равна 0,85, время ответа системы меньше 15 секунд, а сайт доступен 99% времени, то есть в среднем более 361 дня в году.

1.4 Метрики качества.

1.4.1

  1. Точность - подсчитываем отношение визуально релевантных ответов на запрос по отношению ко всем ответам. Ответом считается выдача из трех картинок. Если одна из картинок содержит более одного релевантного предмета - то ответ считаетсяя релевантным.
  2. Время ответа системы - измеряем время прошедшее с момент отправки запроса пользоватлем до вывода на экран изображений.

1.4.2 Бизнес метрики:

  • Пользовательская удовлетворённость - зависит от точности результатов. Чем точнее результаты выдачи, тем более удовлетворены конечные пользователи системы.
  • Скорость ответа на запрос - зависит от времени ответа системы.
  • Доступность системы по url: провереям мониторингом доступности сайта и системы в процентном соотношении время доступности ко всему времени работы системы.

1.5 Use-case использования.

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

2.1. Постановка задачи машинного обучения.

2.1.1 Задача машинного обучения.

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

2.2. Диаграмма решения задачи

Диаграмма ML решения задачи

2.3 Данные.

2.3.1

Для работы нашей системы необходим каталог фотографий пяти видов комнат: спальня, гостинная, обеденная зона, кухня, ванная комната. Предполагается, что эти данные мы планируем получать от клиентов. Ввиду того, что проект служит демонстрацией возможностей системы потенциальным клиентам, фотографии каталога были взяты из открытых источников в интернете, а именно с сайта Kaggle: https://www.kaggle.com/datasets/robinreni/house-rooms-image-dataset/data. В этом наборе данных “House rooms image dataset” фотографии в формате .jpg уже распределны по нужным нам папкам с названиями - видами комнат. Лицензия на использования датасета - CC0: Public Domain, означает разрешение на использования его в том числе и коммерческих целях.

2.3.2

После получения каталога, инженеры по работе с данными из нашей команды создают текстовую разметку каталога в формате .txt по следующему правилам: Каждая строка описывает только одну фотографию В начале строки пишется название файла изображения с указанием формата Далее, пишется тип комнаты Далее, указываются предметы внутреннего оформления комнаты и мебели по возможности с указанием их характеристик. Названия файла, тип комнаты и последующее описания отдельных предметов внутри разделяются точкой с запятой. Каждый тип комнат описывается в отдельном .txt файле. Всё описание производится на английском языке. Итого, получаем пять файлов в соответствии с пятью видами комнат.

2.4 Бейзлайн.

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

2.5. Выбор модели для итогового решения.

Мы сравнили 5 моделей создания эмбеддингов на подготовленных нами данных и тестах.

2.5.1 Сравниваемые модели.

  1. В качестве первой из рассматриваемых моделей мы выбрали word2vec обученную на google news данных. Её размер составляет около 1,6 гб.
  2. В качестве следующей из моделей мы подумали использовать word2vec от gensim обученную только на наших данных, таким образом получалась 3. маленькая модель. Однако, эта модель имела существенный недостаток, препятствующий задуманному функционированию программы: она не может превращать в вектора слова, которые не были в исходном довольно ограниченном наборе данных.
  3. Далее, мы рассматривали модель tok2vec “en_core_web_lg” из библиотеки spacy, которя обучена на текстах блогов, новостей и комментариев, и весит около 600 мб.
  4. Мы попробовали также трансформерную модель all-MiniLM-L6-v2. Она удобна в использовании из-за того, что ей можно передать целый список строк для кодирования без итераций в цикле. Её вес составляет 80 мб.
  5. Последней моделью, которую мы исследовали, была tok2vec “en_core_web_md” из библиотеки spacy, которая весит 40 мб.

2.5.2 Входные данные для тестирования моделей

В качестве тестов используется следующий подготовленный командой набор из 10 пар: вид комнаты, запрос пользователя:

  1. "bedroom", "Large bedroom with double wood bed, two windows, dressing table, and picture.",
  2. "bedroom", "Medium-sized bedroom with light red double bed, TV stand, glass doors, and white ceiling fan.",
  3. "bedroom", "Small bedroom with black double bed, two wall lamps, and dark curtains.",
  4. "bedroom", "A cozy bedroom with a beige double bed, TV, pouf, and spacious wardrobe",
  5. "bedroom", "I want a big room",
  6. "bathroom", "Medium bathroom, black washbasin, mirror, shelf, white bathtub, glass door, and brown blinds",
  7. "dining", "Show me a medium-sized dining area with a round glass table, six white chairs, white blinds, and beige curtains",
  8. "dining", "I want to see a medium-sized dining room with a grey table, seven grey chairs, two black chandeliers, a grey flowerpot, and a white sofa",
  9. "kitchen", "Show me a medium-sized kitchen with white cabinets, a sink, a black ceiling fan, a metallic hob, a white and black refrigerator, and a brown rug",
  10. "living room", "I want to see a large living room with a beige sofa, two beige armchairs, a beige pouf, a black coffee table, a black end table, a grey rug, two black wall lamps, and two paintings"

2.5.3 Метод сравнения моделей.

В каждой из сравниваемых моделей мы использовали для вычисления косинусное расстояние, также в моделях 1,2,3 и 5 мы использовали вышеуказанную метрику близости векторов. Однако, ввиду того, что абсолютное значение косинусного расстояние между векторами в разных векторных пространствах не всегда информативно отражает качество моделей эмбеденингов, а также того, что в работающей системе важна производительность и размер итоговой модели, мы выбрали модель, учитывая в первую очередь её размер, поэтому победила модель номер 5 - “en_core_web_md” из библиотеки spacy.

3.1 Архитектура решения

Архитектура - монолит - python код вызывается из backend node.js с помощью child process.

Node.js

3.2 Разворачивание сервиса.

Сервис разворачивается в среде netlify, в которой фронтенд-часть запускается вызовом команды npm start, а бекенд часть node server.js Версия Node.js=16.15, React версий с 16.8 до 18.2 Система машинного обучения, работающая на python 3.8, вызывается непосредственно из backend. Фронтенд системы работает в браузере, и доступен из браузеров Edge, Safari, Google Chrome и Firefox с версиями выпущенными после 2014 года. Backend, а также текстовые файлы размещёны на netlify. Фотографии размещены по папкам соответствующих типов на гугл диске.

3.3 Требования к работе сервиса.

Сервис будет успешно выполняться на машине с 8 гб оперативной памяти, языковая модель оптимизирована на запуск без графического процессора. Также программа требует 1,2 гб дискового пространства.

3.4 Нагрузочное тестирование.

Проверка работы системы осуществлялась в коде бекенда замером времени от вызова кода на python до возвращения результата работы кода. Мы провели 100 запусков, и получили следующее распределение времени. LoadTest
Cреднее время работы составляет 23,198 секунды. Одновременное открытие сайта возможно с более 50 машин.

3.5 Масштабирование системы.

Мы планируем cоединить фронтенд на react с бекендом на node.js и на fastapi. Разместить приложение можно будет на хостинге типа netlify. Таким образом, у нас получиться одновременный доступ большого количества пользователей. Бутылочным горлышком - основным ограничением на количество пользователей одновременно является быстродействие нашей модели включая препроцессинг. Возможным решением может быть запуск нескольких инстансов python-fastapi- сервера например в контейнерах и распределение между ними нагрузки с помощью node.js сервера.

3.6 Потенциальное расширение системы

Мы хотим добавить систему распознования предметов интерьера на фотографиях для того, чтобы автоматизировать процесс разметки. Для этой цели нам понадобиться модель компьютерного зрения, используемая в задаче детекции, например модели семейства YOLO.