© 2017—2024 KozhinDev
Контакты
+7 (950) 973—73—40По вопросам маркетинга и PR:
+7 (923) 284—68—87По вопросам HR:
+7 (903) 917—83—11Lamoda
10.01.2024По настоящее время
Как мы усовершенствовали обработку фотографий для интернет‑магазина Lamoda с помощью ML
Технологии
Python
OpenCV
FastAPI
Pytorch
Tensorboard
Tensorflow
450
часов разработки02
специалистов в команде на проектLamoda — один из крупнейших интернет‑магазинов в России и СНГ, который специализируется на торговле одеждой и обувью. Компания имеет развитую внутреннюю инфраструктуру: собственные контактные центры, склад, а также — фотостудию, где ежедневно проходят съемки большого количества товаров. Представители Lamoda обратились к нам, чтобы автоматизировать часть процессов, связанных с обработкой фотографий.
Задача
Разработать ML‑решение, которое позволит снять с сотрудников рутинные задачи по ретуши фотографий — расположение объекта в кадре, коррекцию цвета фона и другие.
Проблема
Одна из отличительных особенностей Lamoda — качественные фотографии в карточках, на которых можно детально рассмотреть каждый товар. Съемки происходят в фотостудии полного цикла. Через руки отдела ретуши проходит огромное количество изображений, из которых нужно отобрать самые качественные, расположить объект в кадрах под правильными углами, откорректировать фон. С помощью качественных фотоматериалов можно показать товар со всех сторон, подчеркнуть его достоинства для клиента.
Но если автоматизировать часть процессов обработки фото, можно существенно ускорить создание карточек и добавление товаров в интернет‑магазин. Например, в каждой карточке обуви представлено несколько фотографий, представляющих ее с разных ракурсов на светлом фоне. Для этих изображений есть стандарты: объект должен быть расположен в центре кадра, повернут под определенными углами. И вместо людей «подогнать» фото к нужному виду может нейросеть — это быстрее, чем ретушь вручную. Но есть сложности: углы поворота для нужных ракурсов не определены четко, есть только образцы изображений, где объекты расположены правильно или неправильно. Фотографы при съемке опираются на свои опыт и насмотренность, но снимки все равно необходимо обрабатывать и исправлять. С такой задачей к нам обратились представители Lamoda.
Решение
Для карточек в каталоге Lamoda важна ориентация объекта в кадре — он всегда должен быть расположен в центре, на фоне с градацией светлых оттенков, иметь определенную тень. Поэтому для решения задачи заказчика мы использовали ансамбль из двух нейронных сетей, которые определяют, что за снимок загружен:
Первая осуществляет дихотомическую сегментацию изображений. В результате изображение разделяется на сегменты или области, которые считаются однородными по некоторым критериям, например, по цвету, текстуре или интенсивности. «Дихотомический» означает «разделяющийся на две части», так что этот метод сегментации часто включает рекурсивное разделение изображения на более мелкие области до тех пор, пока не будут выполнены определенные условия однородности.
Вторая нейронная сеть, Deep‑OAD — это модель глубокого обучения, которая определяет угол ориентации естественного изображения.
Также мы использовали набор морфологических операций библиотеки OpenCV для обработки разных ракурсов объекта — в профиль, сверху, и для поворота в пространстве. Эти операции можно сравнить с последовательной обработкой изображения в Photoshop с помощью кистей и фильтров, но делается это не в интерфейсе редактора, а с помощью кода.
Вид объекта в профиль
Изображение обуви в профиль загружается в сервис и автоматически обрабатывается нейросетью, которая отделяет объект от фона.
Для этого используется набор операций:
Установка объекта на фоне. Альфа‑канал изображения — это пустое пространство, прозрачный слой. Из него создается маска, чтобы отделить обувь от фона. На маске определяются контуры обуви, и на основе самого большого контура вычисляется ограничивающий прямоугольник. По нему изображение обрезается, и полученный результат вставляется на новый прозрачный фон стандартного размера, центрируется и размещается с учетом необходимых отступов.
Преобразование в маску. Операция превращает обработанное изображение обуви в маску: после этого можно изменять фон или применять любые визуальные эффекты. Для этого создается черно‑белая версия изображения, где обувь выделена белым цветом на черном фоне.
Установка белого фона. Исходный фон изображения меняется на белый, уровень белого задается при инициализации. Альфа‑канал обуви накладывается на белый фон, чтобы слияние объекта с новым фоном было плавным.
Затемнение. Улучшает контраст и яркость изображения, делает его более насыщенным и выразительным. Операция также включает в себя выравнивание изображений, увеличение яркости фона и применение размытия для смягчения границ.
Коррекция фона. Оптимизирует освещение и тени на фоне, делает изображение более естественным. Применяется коррекция гаммы для осветления или затемнения определенных участков, а также гауссово размытие для создания мягких переходов между объектом и фоном.
Вид объекта сверху
Изображение загружается по указанному пути, для его фона задается уровень белого. Используется модель сегментации объекта, добавляется альфа‑канал и применяются следующие операции:
Коррекция поворота. Анализирует альфа‑канал изображения, чтобы определить ориентацию обуви. На основе анализа ширины контуров обуви с левой и правой стороны определяется, как следует повернуть изображение, чтобы обувь располагалась горизонтально.
Коррекция наклона линии. Исправляет наклон обуви на изображении с помощью морфологических операций для уточнения контуров. Определяет две ключевые точки на контуре обуви — верхнюю и нижнюю, — и поворачивает изображение так, чтобы линия, соединяющая их, была горизонтальной.
Позиционирование объекта. Вычисляет оптимальное положение обуви на изображении: обрезает его по контуру и центрирует на новом фоне с заданными размерами. При необходимости также масштабирует, чтобы изображение соответствовало заданным размерам и отступам.
После этого, как и при работе с видом в профиль, изображение преобразуется в маску, на нем устанавливается белый фон, производится затемнение фото и коррекция фона.
Обработка поворота обуви
Мы научили модель разворачивать обувь на изображении с помощью набора последовательных действий. Фото загружается в сервис, после этого к нему применяются операции:
Поворот изображения. Эта операция использует нейросетевую модель Deep‑OAD для предсказания необходимого угла поворота изображения, при котором обувь будет ориентирована корректно.
Удаление фона. Сегментирует изображение с помощью функции для удаления фона. На фото остается только обувь с альфа‑каналом для прозрачности.
Установка позиции объекта. Извлекает альфа‑канал изображения, чтобы определить контуры обуви, вычисляет ограничивающий прямоугольник самого большого контура и обрезает изображение по этим границам. Затем центрирует обувь на новом изображении с прозрачным фоном, адаптирует ее размер под заданные отступы.
После применяются те же операции, как и при работе с видами сверху и в профиль: изображение преобразуется в маску, на нем устанавливается белый фон, производится затемнение фото и коррекция фона.
Чтобы обучить модель, мы использовали большой массив изображений разных типов обуви, предоставленный компанией. После первой серии экспериментов поняли, что выборку нужно дополнить: например, нейросеть справлялась с обработкой кроссовок, но ошибалась при работе с туфлями. Дополнительное обучение помогло повысить точность работы модели. На обработку одного изображения уходит около 15 секунд — это существенно быстрее, чем если бы ретушь выполнял сотрудник. Вычисления производятся на центральном процессоре, на графическом процессоре скорость обработки в 3 раза быстрее.
Результат
Мы разработали решение, которое ускоряет процесс обработки фото, снимает с сотрудников однотипные, но требующие много времени задачи. Обработку изображения сервис осуществляет за 5–15 секунд, в зависимости от мощности процессора. Человеку на это нужно минимум несколько минут. Также мы продолжаем разработку, вносим дополнительные функции, совершенствуем существующие. Например, недавно мы добавили еще одну нейросеть, которая позволяет автоматически определить тип задачи для преобразования и направить изображения в необходимые модули.
Свяжитесь с нами