Рекомендации по моде

«Купи мне этот образ»: подход к рекомендации похожих модных товаров

Реализация исследовательской работы

«Ключевым моментом является то, что клиент уходит, думая: «Вау, мне нравится иметь с ними дело, и я хочу рассказать другим о своем опыте».
— Шеп Хайкен.

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

Дизайн системы и компоненты вдохновлены бумагой от Myntra. Исследовательская работа феноменально объясняет конвейер системы рекомендаций по моде.
Ссылка: https://arxiv.org/pdf/2008.11638.pdf.

Оглавление

  1. В чем проблема?
  2. Влияние на бизнес
  3. Бизнес-цели и ограничения
  4. Подход к рекомендации похожих модных товаров
  5. Обзор данных и исследовательский анализ данных
  6. Обучение модели
  7. Результаты
  8. Будущая работа
  9. использованная литература

В чем проблема?

Рекомендация похожих модных товаров
Учитывая изображение человека, одетого в модную одежду, порекомендуйте похожие модные товары.

Влияние на бизнес

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

Бизнес-цели и ограничения

Низкая задержка:«уважайте время». Система должна ответить аналогичными продуктами в течение нескольких секунд.

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

Подход к рекомендации похожих модных товаров

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

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

Обнаружение полнокадрового изображения на передней панели

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

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

Давайте посмотрим, как работает MediaPipe BlazePose

BlazePose был впервые представлен на семинаре CV4ARVR CVPR 2020. Он предоставляет 33-двухмерные ориентиры тела вместе с информацией о видимости из одного кадра.
Архитектура проста, но имеет очень элегантную идею, т.е. регрессионный подход, который контролируется комбинированным прогнозом тепловой карты/смещения для всех ключевых точек.

Он использует пропущенные соединения и остановите градиентные соединения. Модель очень похожа на кодер-декодер. Этот подход был частично вдохновлен подходом Stacked Hourglass Ньюэлла и др.

Входные данные для модели — 256X256X3, которые уменьшаются до 8X8X192 с помощью набора блоков свертки, после чего выход кодера подвергается повышающей дискретизации вместе с пропуском соединений.

Выход кодера-декодера — 64X64X32, который передается в сеть координатной регрессии и еще один слой свертки, который создает тепловую карту и карту смещения выходных данных 64X64X99.
Поскольку существует 33 ключевых точки, мы можем сказать, что для каждой ключевой точки он предсказывает 3 изображения.
Сеть координатной регрессии предсказывает ключевые точки и видимость ключевых точек. Сама сеть имеет обратное распространение, но имеет стоп-градиентное соединение с кодировщиком.
Интуитивно мы можем сказать, что сеть координатной регрессии не контролирует кодировщик и декодер, но использует свою информацию для прогнозирования ключевых точек.
Выходные данные сети координатной регрессии равны 33X3 для каждой имеющейся у нас ключевой точки. x_coordinate, y_coordinate и видимости.

Модная статья Обнаружение и локализация

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

Что такое YOLOV4

Yolo расшифровывается как You Only Look Once. YOLO v4 утверждает, что достигает самых современных результатов со скоростью в реальном времени в наборе данных MS COCO с 43,5% AP, работающим со скоростью 65 кадров в секунду на Tesla V100.
Некоторые из интересных концепций, используемых в YOLOV4:
1. Бесплатный пакет: увеличивает время обучения без увеличения стоимости логического вывода (например, увеличение данных, дисбаланс классов, функция стоимости, программная маркировка и т. д.)
2. Bag-Of-Specials:
увеличивает время вывода на небольшую величину, но может значительно повысить точность. (например, внимание, PAN, немаксимальное подавление и т. д.)
Архитектура имеет 3 блока после ввода
1. Магистраль (CSPDarknet53)
2. Шея (PAN, SPP)
3. Голова (плотное предсказание)

Магистраль используется для извлечения признаков. Ранее YOLOV3 использовал Darknet53 в качестве магистрали, но v4 использует CSPDarknet53.
CSP расшифровывается как Cross-Stage-Partial Connections. При этом мы разделяем карты входных объектов DenseBlock на две части: одна будет проходить через блок сверток, а другая — нет. Затем суммируем результаты.

V4 использует слегка измененный PAN. Вместо того, чтобы добавлять соседние слои, они объединяют их.
Они также использовали функцию активации Миша
f(x) = xtanh(ς(x))< br />где ς(x) = ln(1+e^x) — функция активации softmax.

Вы можете создать Mish активацию следующим образом

## Mish Activation Function
def mish(x):
	return tf.keras.layers.Lambda(lambda x: x*tf.tanh(tf.log(1+tf.exp(x))))(x)

Глава YOLOV4 такая же, как и в версии 3. Сеть определяет координаты ограничивающей рамки (x, y, w, h), а также показатель достоверности для класса. В конце используются методы постобработки, такие как подавление немаксимумов.

Извлечение признаков для типов статей

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

Мы пробовали различные модели для вычисления векторов признаков, такие как VGG16, Inception V3, MobileNet, ResNet и DenseNet. Наконец, мы выбираем Resnet, так как он хорошо работает с нашим набором данных.

ResNet означает остаточные сети. Эта модель стала победителем конкурса ImageNet в 2015 году.
Концепция Residual Network позволяет нам обучать более глубокие модели до того, как обучение ResNet очень глубоких нейронных сетей было затруднено из-за проблемы исчезающих градиентов.

Приведенная выше диаграмма прекрасно объясняет архитектуру Resnet50. Взято https://www.researchgate.net/figure/Left-ResNet50-architecture-Blocks-with-dotted-line-represents-modules-that-might-be_fig3_331364877

Обзор данных и исследовательский анализ данных

DeepFashion2 — это всеобъемлющий набор данных о моде. Он содержит 491 тысячу разнообразных изображений 13 популярных категорий одежды как из коммерческих магазинов, так и из обычных магазинов. Всего в нем 801 тыс. предметов одежды, где каждый элемент изображения помечен масштабом, окклюзией, увеличением, точкой обзора, категорией, стилем, ограничительной рамкой, плотными ориентирами и попиксельной маской. Есть также 873 000 пар одежды для коммерческих и потребительских товаров.

Организация набора данных

Каждое изображение в отдельном наборе изображений имеет уникальный шестизначный номер, например 000001.jpg. Соответствующий файл аннотаций в формате JSON предоставляется в наборе аннотаций, например 000001.json.
Каждый файл аннотаций организован следующим образом:

  • источник: строка, где «магазин» указывает, что изображение взято из коммерческого магазина, а «пользователь» указывает, что изображение взято пользователями.
  • идентификатор_пары: число. Изображения из одного и того же магазина и соответствующие изображения, сделанные потребителем, имеют одинаковый идентификатор пары.
  • пункт 1
  • category_name: строка, указывающая категорию элемента.
  • category_id: число, соответствующее названию категории. В category_id 1 представляет топ с короткими рукавами, 2 представляет топ с длинными рукавами, 3 представляет верхнюю одежду с короткими рукавами, 4 представляет верхнюю одежду с длинными рукавами, 5 представляет жилет, 6 представляет слинг, 7 представляет шорты, 8 представляет брюки, 9 представляет юбку, 10 представляет короткие платье с рукавами, 11 — платье с длинными рукавами, 12 — платье с жилетом и 13 — платье с бретельками.
  • стиль: число, позволяющее отличить предметы одежды от изображений с одинаковым идентификатором пары. Предметы одежды с разными номерами стиля из изображений с одинаковым идентификатором пары имеют разные стили, такие как цвет, печать и логотип. Таким образом, предмет одежды из изображений магазина и предмет одежды из изображения пользователя являются положительными парами коммерческий-потребитель, если они имеют одинаковый номер стиля больше 0 и взяты из изображений с одинаковым идентификатором пары. (Если вы запутались со стилем, обратитесь к проблеме № 10.)
  • bounding_box: [x1,y1,x2,y2],где x1 и y_1 представляют координату верхней левой точки ограничивающей рамки, x_2 и y_2 представляют координату нижней правой точки ограничивающей рамки. (ширина=x2-x1; высота=y2-y1)
  • ориентиры: [x1,y1,v1,…,xn,yn,vn], где v представляет видимость: v=2 видимо; v=1 окклюзия; v=0 не помечен. У нас есть разные определения ориентиров для разных категорий. Порядок аннотаций ориентиров указан на рисунке 2.
  • сегментация: [[x1,y1,…xn,yn],[ ]], где [x1,y1,xn,yn] представляет собой многоугольник, и один предмет одежды может содержать более одного многоугольника.
  • масштаб: число, где 1 соответствует мелкому масштабу, 2 — умеренному масштабу, а 3 — крупному масштабу.
  • окклюзия: число, где 1 представляет слабую окклюзию (включая отсутствие окклюзии), 2 представляет среднюю окклюзию и 3 представляет тяжелую окклюзию.
  • zoom_in: число, где 1 означает отсутствие увеличения, 2 — среднее увеличение и 3 — большое увеличение.
  • точка обзора: число, где 1 означает отсутствие износа, 2 — вид спереди, а 3 — вид сбоку или сзади.
  • пункт 2
  • пункт н

Мы используем только ту часть информации, которая полезна для нашей задачи. т. е. bounding_box, category_id, category_name

Статистика набора данных

Окончательный набор данных, используемый для показа похожих изображений DeepFashion Dataset

Обучение модели

Этап 1
Как обсуждалось ранее, мы использовали MediaPipe Модель обнаружения человека / позы для определения того, является ли изображение полным или нет.
Мы сохранили только полные изображения в нашем наборе данных для обучения YOLOV4.

Этап 2

Чтобы иметь возможность обучать наш пользовательский набор данных с помощью YOLOv4, наш набор данных должен соответствовать формату YOLO. Каждое изображение из набора данных будет связано с файлом .txt с тем же именем, который содержит классы объектов и их координаты в соответствии со следующим синтаксисом:
класс объекта x_center y_center ширина высота

Для получения дополнительной информации о том, как подготовить набор данных для индивидуального обучения, перейдите по
ссылке https://towardsdatascience.com/yolov4-in-google-colab-train-your-custom-dataset-traffic-signs-with- легкость-3243ca91c81d

!./darknet detector test /content/dataset/image/image_data.data cfg/yolov4_train.cfg /content/drive/MyDrive/darknet/backup/yolov4_train_last.weights /content/sample_data/picture.jpg -thresh 0.3 -dont_show

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

Косинусное сходство измеряет сходство между двумя векторами пространства внутреннего произведения. Он измеряется косинусом угла между двумя векторами и определяет, указывают ли два вектора примерно в одном и том же направлении.

Теперь переходим к самой захватывающей части!

Результаты

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

Некоторые из моих результатов показаны ниже НАСЛАЖДАЙТЕСЬ!!!!

Будущая работа

  1. Вместо вычисления вектора признаков полного изображения в каталоге мы можем вычислить вектор только необходимой части. Это приведет к большему количеству похожих изображений.
  2. Мы можем использовать разные оценки сходства.
  3. Вместо обучения YOLOV4 мы можем обучить Mask R-CNN.
  4. мы можем использовать триплетную сеть для поиска похожих изображений.

Вы также можете найти меня и связаться со мнойна LinkedIn и Github

использованная литература

  1. https://www.appliedaicourse.com/
  2. https://arxiv.org/pdf/2008.11638.pdf
  3. https://arxiv.org/pdf/2004.10934.pdf
  4. https://ai.googleblog.com/2020/08/on-device-real-time-body-pose-tracking.html
  5. https://google.github.io/mediapipe/solutions/pose.html
  6. https://towardsdatascience.com/yolov4-in-google-colab-train-your-custom-dataset-traffic-signs-with-ease-3243ca91c81d
  7. https://github.com/switchablenorms/DeepFashion2
  8. http://mmlab.ie.cuhk.edu.hk/projects/DeepFashion.html
  9. https://pylessons.com/YOLOv4-TF2-introduction/