Workspace Digital Awards 2025 — успейте номинировать кейсы по льготным ценам. Приём заявок на премию открыт!
KozhinDev
Как Lamoda ускорила процесс обработки фото в 20 раз с помощью ML
KozhinDev
#Программирование сайта

Как Lamoda ускорила процесс обработки фото в 20 раз с помощью ML

KozhinDev
KozhinDev Россия, Красноярск
Поделиться:
Как Lamoda ускорила процесс обработки фото в 20 раз с помощью ML
Клиент

Lamoda

Сфера

Одежда

Регион

Россия

Сдано

Октябрь 2024

Задача

Разработать ML‑решение, которое позволит снять с сотрудников рутинные задачи по ретуши фотографий — расположение объекта в кадре, коррекцию цвета фона и другие.

Решение

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

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

— Вторая нейронная сеть, Deep‑OAD — это модель глубокого обучения, которая определяет угол ориентации естественного изображения.

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

1Вид объекта в профиль

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

Для этого используется набор операций:

— Установка объекта на фоне. Альфа‑канал изображения — это пустое пространство, прозрачный слой. Из него создается маска, чтобы отделить обувь от фона. На маске определяются контуры обуви, и на основе самого большого контура вычисляется ограничивающий прямоугольник. По нему изображение обрезается, и полученный результат вставляется на новый прозрачный фон стандартного размера, центрируется и размещается с учетом необходимых отступов.

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

— Установка белого фона. Исходный фон изображения меняется на белый, уровень белого задается при инициализации. Альфа‑канал обуви накладывается на белый фон, чтобы слияние объекта с новым фоном было плавным.

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

— Коррекция фона. Оптимизирует освещение и тени на фоне, делает изображение более естественным. Применяется коррекция гаммы для осветления или затемнения определенных участков, а также гауссово размытие для создания мягких переходов между объектом и фоном.

2Вид объекта сверху

Изображение загружается по указанному пути, для его фона задается уровень белого. Используется модель сегментации объекта, добавляется альфа‑канал и применяются следующие операции:

— Коррекция поворота. Анализирует альфа‑канал изображения, чтобы определить ориентацию обуви. На основе анализа ширины контуров обуви с левой и правой стороны определяется, как следует повернуть изображение, чтобы обувь располагалась горизонтально.

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

— Позиционирование объекта. Вычисляет оптимальное положение обуви на изображении: обрезает его по контуру и центрирует на новом фоне с заданными размерами. При необходимости также масштабирует, чтобы изображение соответствовало заданным размерам и отступам.

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

3Обработка поворота обуви

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

— Поворот изображения. Эта операция использует нейросетевую модель Deep‑OAD для предсказания необходимого угла поворота изображения, при котором обувь будет ориентирована корректно.

— Удаление фона. Сегментирует изображение с помощью функции для удаления фона. На фото остается только обувь с альфа‑каналом для прозрачности.

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

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

Чтобы обучить модель, мы использовали большой массив изображений разных типов обуви, предоставленный компанией. После первой серии экспериментов поняли, что выборку нужно дополнить: например, нейросеть справлялась с обработкой кроссовок, но ошибалась при работе с туфлями. Дополнительное обучение помогло повысить точность работы модели. На обработку одного изображения уходит около 15 секунд — это существенно быстрее, чем если бы ретушь выполнял сотрудник. Вычисления производятся на центральном процессоре, на графическом процессоре скорость обработки в 3 раза быстрее.

Результат

ML-решение помогло ускорить процесс обработки фото и сняло с сотрудников однотипные, но требующие много времени задачи. Обработку изображения сервис осуществляет за 5–15 секунд, в зависимости от мощности процессора. Человеку на это нужно минимум несколько минут.


Стек технологий

  • Python Python Язык программирования

Выскажите мнение
Авторизуйтесь, чтобы добавить свой комментарий.
оставить заявку

Хотите заказать похожий проект?

KozhinDev с удовольствием обсудит вашу задачу

Оставить заявку