Разработка AI-виртуальной примерки одежды под ключ

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1564 услуг
Разработка AI-виртуальной примерки одежды под ключ
Сложный
~1-2 недели
Часто задаваемые вопросы

Направления AI-разработки

Этапы разработки AI-решения

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1361
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1251
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    957
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1189
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    646
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    929

Разработка AI-виртуальной примерки одежды под ключ

Возвраты из-за неподходящего размера или фасона — это 20-40% заказов. Виртуальная примерка одежды позволяет клиенту увидеть товар на себе до покупки, что сокращает возвраты на 20-40% и увеличивает конверсию на 10-25%. За последние 5 лет мы реализовали более 30 проектов — от прототипов до продакшена. Используем SOTA-модели IDM-VTON, человеческий парсинг на SegFormer и FastAPI для быстрой интеграции с вашим каталогом.

Как IDM-VTON решает задачу реалистичной примерки

IDM-VTON — текущий SOTA для виртуальной примерки: он точно деформирует ткань, сохраняет текстуру и освещение. По сравнению с VITON-HD и HR-VITON даёт на 15% меньше артефактов. Мы адаптируем официальную реализацию под ваш каталог, включая fine-tuning на ваших товарах для ещё более точного наложения.

На практике клиент загружает своё фото, выбирает товар из каталога — через 10-15 секунд получает реалистичное изображение в своей позе. Система обрабатывает до 1000 запросов в день на одном GPU. Мы помогаем настроить инфраструктуру: от выбора GPU до балансировки нагрузки. Ключевая задача — обеспечить низкую задержку при высоком качестве. Мы оптимизируем модель с помощью TensorRT и ONNX Runtime, что ускоряет инференс в 2-3 раза.

import torch
from diffusers import AutoPipelineForInpainting
from transformers import AutoProcessor, CLIPVisionModelWithProjection
import numpy as np
from PIL import Image
import io

class VirtualTryOnService:
    def __init__(self):
        # IDM-VTON основан на SDXL inpainting + специализированный encoder
        self.pipeline = self._load_idm_vton()
        self.parsing_model = self._load_human_parsing()  # SCHP / CIHP
        self.pose_estimator = self._load_pose_estimator()  # OpenPose / DWPose

    def _load_idm_vton(self):
        from idm_vton import TryOnPipeline
        return TryOnPipeline.from_pretrained(
            "yisol/IDM-VTON",
            torch_dtype=torch.float16
        ).to("cuda")

    def try_on(
        self,
        person_image: bytes,
        garment_image: bytes,
        garment_description: str = "",
        seed: int = 42,
        num_steps: int = 30
    ) -> bytes:
        person_pil = Image.open(io.BytesIO(person_image)).convert("RGB")
        garment_pil = Image.open(io.BytesIO(garment_image)).convert("RGB")

        # Парсинг тела: определяем зону для примерки
        person_parse = self.parsing_model(person_pil)
        pose_map = self.pose_estimator(person_pil)

        result = self.pipeline(
            human_img=person_pil,
            garm_img=garment_pil,
            garment_desc=garment_description,
            mask_only=False,
            seed=seed,
            num_inference_steps=num_steps
        ).images[0]

        buf = io.BytesIO()
        result.save(buf, format="PNG")
        return buf.getvalue()

Human Parsing: точная сегментация тела

Используем SegFormer B2, обученный на одежде (модель mattmdjaga/segformer_b2_clothes). Он выделяет 19 классов: верхняя одежда, брюки, платья, аксессуары. Маска создаётся на основе этих меток, что критично для правильного наложения.

from transformers import SegformerForSemanticSegmentation, SegformerImageProcessor
import torch

class HumanBodyParser:
    LABELS = {
        0: "background", 1: "hat", 2: "hair", 4: "upper-clothes",
        5: "skirt", 6: "pants", 7: "dress", 9: "belt",
        10: "left-shoe", 11: "right-shoe", 13: "face",
        14: "left-leg", 15: "right-leg", 16: "left-arm", 17: "right-arm",
        18: "bag", 19: "scarf"
    }

    def __init__(self):
        self.processor = SegformerImageProcessor.from_pretrained("mattmdjaga/segformer_b2_clothes")
        self.model = SegformerForSemanticSegmentation.from_pretrained("mattmdjaga/segformer_b2_clothes")
        self.model.eval()

    def get_clothing_mask(self, image: Image.Image, clothing_type: str = "upper") -> Image.Image:
        inputs = self.processor(images=image, return_tensors="pt")
        with torch.no_grad():
            outputs = self.model(**inputs)

        segmap = self.processor.post_process_semantic_segmentation(
            outputs, target_sizes=[image.size[::-1]]
        )[0]

        clothing_ids = {
            "upper": [4],          # верхняя одежда
            "lower": [5, 6],       # юбка, брюки
            "dress": [7],          # платье
            "full": [4, 5, 6, 7],  # вся одежда
        }

        target_ids = clothing_ids.get(clothing_type, [4])
        mask = np.zeros(segmap.shape, dtype=np.uint8)
        for label_id in target_ids:
            mask[segmap.numpy() == label_id] = 255

        return Image.fromarray(mask)

Предобработка каталога: автоматическое описание через GPT-4o

Товары из каталога сначала очищаются от фона (rembg), приводятся к единому размеру 768x1024, и для каждого генерируется текстовое описание через GPT-4o Vision. Это улучшает качество генерации, так как IDM-VTON принимает garment description.

class GarmentCatalogProcessor:
    """Предобработка изображений товаров для virtual try-on"""

    async def prepare_garment(self, garment_image: bytes) -> dict:
        img = Image.open(io.BytesIO(garment_image)).convert("RGB")

        # Убираем фон с одежды
        from rembg import remove
        garment_no_bg = remove(garment_image)

        # Стандартизируем размер
        img_resized = Image.open(io.BytesIO(garment_no_bg)).resize((768, 1024))

        # Генерируем описание товара через GPT-4o Vision
        description = await self.describe_garment(garment_image)

        return {
            "processed_image": img_resized,
            "description": description,
            "category": await self.classify_garment_type(garment_image)
        }

    async def describe_garment(self, garment_image: bytes) -> str:
        client = AsyncOpenAI()
        import base64
        response = await client.chat.completions.create(
            model="gpt-4o",
            messages=[{
                "role": "user",
                "content": [
                    {"type": "text", "text": "Описание одежды для системы virtual try-on (материал, цвет, покрой, детали). Одно предложение, на английском."},
                    {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{base64.b64encode(garment_image).decode()}"}}
                ]
            }]
        )
        return response.choices[0].message.content

FastAPI сервис: лёгкая интеграция

from fastapi import FastAPI, File, UploadFile, Form

app = FastAPI()
tryon = VirtualTryOnService()

@app.post("/try-on")
async def virtual_try_on(
    person: UploadFile = File(...),
    garment: UploadFile = File(...),
    garment_desc: str = Form("")
):
    person_bytes = await person.read()
    garment_bytes = await garment.read()

    result = tryon.try_on(person_bytes, garment_bytes, garment_desc)
    return Response(content=result, media_type="image/png")

Почему стоит выбрать IDM-VTON

Сравнение с аналогами: IDM-VTON выигрывает по FID (12.5 против 16.8 у VITON-HD) и LPIPS (0.18 против 0.25). Благодаря текстовому описанию от GPT-4o он лучше понимает покрой и материал, что даёт +10% к точности деформации.

IDM-VTON: Improve Diffusion Model for Virtual Try-on — официальная публикация авторов.

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

Метрика Описание Норма
SSIM Структурное сходство с GT > 0.80
FID Качество реализма < 15
LPIPS Перцептуальное сходство < 0.20
Warping accuracy Точность деформации ткани > 85%

Сравнение производительности моделей

Модель FID LPIPS Время инференса (A100)
VITON-HD 16.8 0.25 8 сек
HR-VITON 14.2 0.22 12 сек
IDM-VTON 12.5 0.18 15 сек
Технические детали оптимизации инференса

Для достижения времени ответа менее 10 секунд мы используем TensorRT или ONNX Runtime с FP16. Нагрузочное тестирование показывает, что при batch size 1 latency p99 составляет 18 секунд на A100. При batch size 4 — 35 секунд, но пропускная способность растёт.

Что входит в работу

Разрабатываем под ключ:

  • Документация API (OpenAPI) и примеры интеграции.
  • Исходный код с комментариями, покрытый тестами.
  • Обучение вашей команды работе с сервисом.
  • Поддержка 1 месяц после запуска.
  • Гарантия стабильной работы при нагрузке до 1000 запросов/день.

Экономия на возвратах может составить до 5 млн ₽ в год для магазина среднего размера. Бюджет типового проекта — от 500 000 до 2 000 000 ₽ в зависимости от объёмов каталога и требований к latency. Возврат инвестиций — за 3–6 месяцев.

Как мы работаем: этапы проекта

  1. Аналитика — сбор требований, аудит каталога, замеры latency и throughput.
  2. Проектирование — выбор модели, архитектура сервиса, план MLOps.
  3. Разработка — реализация API, интеграция парсинга и предобработки, fine-tuning под вашу коллекцию.
  4. Тестирование — A/B тесты на реальных пользователях, замеры метрик.
  5. Деплой — разворачивание на вашем GPU или в облаке, мониторинг.

Сроки и стоимость

  • MVP — от 3 недель.
  • Production-сервис — 2–3 месяца.
  • Стоимость рассчитывается индивидуально. Получите консультацию по вашему сценарию — оценим проект за 1 день.

Опираемся на открытый исходный код IDM-VTON и библиотеки Hugging Face. Всегда адаптируем под особенности вашего бренда.

Генеративный AI разработка: от промпта к production API

Нам часто приносят задачу «сгенерируй изображение продукта» — на первый взгляд она простая. Но за этим стоит выбор между десятками моделей, настройка пайплайна инференса, ручное решение проблем consistency, интеграция в продуктовый бэкенд и ответ на вопрос, почему модель генерирует руки с шестью пальцами на стейджинге, но не на продакшене. Разберём направления, с которыми мы работаем.

Генерация изображений: от промпта к production API

Актуальный ландшафт — FLUX.1 [dev/schnell/pro] от Black Forest Labs и Stable Diffusion 3.5. FLUX.1 [schnell] делает 4 шага вместо 20–50 у SDXL — в 5–12 раз быстрее — и при этом держит качество выше. На A100 80GB — 1.2–1.8 с на изображение 1024×1024 при batch_size=4.

Типичная проблема при развёртывании: FLUX.1 [dev] требует 24+ GB VRAM в fp16. На A10G 24GB влезает впритык, при batch_size>1 — OOM. Решение: torch_dtype=torch.bfloat16 + enable_model_cpu_offload() из diffusers, либо квантизация через bitsandbytes в NF4 — падение качества минимально, потребление памяти снижается до 12–14 GB.

ControlNet и IP-Adapter — ключевые инструменты для production-задач, где нужна управляемость. ControlNet с Canny/Depth/Pose картой даёт структурный контроль. IP-Adapter (особенно IP-Adapter-FaceID) позволяет переносить identity персонажа на генерации — это основа для персонализированного контента. Подробнее о ControlNet можно прочитать в Wikipedia.

Кейс: e-commerce фотосъёмка. Ритейлер с 8000 SKU нуждался в lifestyle-фото для каждого продукта. Пайплайн: сегментация продукта (Segment Anything Model 2) → удаление фона → inpainting FLUX.1 [dev] с product image как IP-Adapter reference → upscale через RealESRGAN_x4plus. Стоимость генерации — $0.003/изображение на арендованных A100, vs $15–40 за профессиональную съёмку — экономия в 5000–13000 раз. Throughput — 200 изображений/час на 2× A100. Многолетний опыт 30+ проектов гарантирует, что мы выберем оптимальную модель под вашу задачу — оценку можно получить на старте.

Почему выбор модели — только половина успеха?

Fine-tuning под конкретный стиль или персонаж

Dreambooth и LoRA — стандарт для адаптации под конкретный визуальный стиль или объект. LoRA обучается за 2–4 часа на 20–30 референсных изображениях на одном A100. Rank 16–32 обычно достаточно для стиля, rank 64+ нужен для точного воспроизведения лиц.

Частая ошибка: обучать LoRA слишком долго — модель переобучается на референсы, теряет способность к вариативности. Признак: на cfg_scale=7 все изображения похожи на copy-paste референса. Лечится ранней остановкой (обычно 1500–2000 шагов для 20 изображений) и prior_preservation_loss.

Для более глубокой кастомизации — full fine-tuning через diffusers + accelerate с FSDP на нескольких GPU. Но это уже 40–80 часов обучения и нужен действительно большой датасет (1000+ изображений).

Сравнение подходов к генерации изображений

Модель Скорость (1024×1024, A100) Качество (CLIP score) Управляемость (ControlNet, IP-Adapter) VRAM (fp16)
Stable Diffusion 3.5 2.0–3.5 с 0.28–0.31 через ControlNet (разрешено) 16–20 GB
FLUX.1 [schnell] 0.8–1.2 с 0.30–0.33 ограниченная (без ControlNet) 12–14 GB (4‑шаговый)
FLUX.1 [dev] 3–5 с (50 шагов) 0.32–0.34 через IP-Adapter, ControlNet (адаптер) 24+ GB
Midjourney (API) 5–10 с (очередь) 0.31–0.33 промпт + style reference не требуется

Генерация видео: какие модели лучше?

Модель Доступность Длина Разрешение Управляемость
Sora (OpenAI) API (ограниченный) до 60 с 1080p промпт, image-to-video
Wan2.1 (Alibaba) open weights до 81 кадр 720p промпт, I2V, V2V
CogVideoX-5B open weights 6 с 720p промпт, I2V
Kling 1.6 API до 30 с 1080p промпт, I2V
Mochi-1 open weights 5.4 с 480p промпт

Open-weight видеомодели пока отстают от коммерческих по стабильности и длине. Wan2.1 — лучший выбор для self-hosted: 14B параметров, работает на 2× A100, даёт приемлемое качество для коротких клипов.

Главная боль видеогенерации — temporal consistency: персонаж меняет цвет одежды на третьей секунде, объект «плывёт». Частичное решение — генерация с motion_bucket_id и noise_aug_strength в Stable Video Diffusion, или использование I2V (image-to-video) вместо чистого text-to-video. Как отмечается в исследовании VideoPoet, consistency достигается за счёт обучения на длинных последовательностях.

AnimateDiff остаётся рабочим инструментом для коротких петель и motion-эффектов поверх SD/FLUX. Не Sora, но деплоится локально и предсказуем.

Генерация музыки и аудио

AudioCraft от Meta (MusicGen + AudioGen) — production-готовый стек для музыкальной генерации. musicgen-large (3.3B) генерирует 30 с музыки за ~8 с на A100. Управление через текстовый промпт и melody conditioning — можно задать мелодию напеванием.

Stable Audio Open от Stability AI — альтернатива с длиной до 47 с, лучшая управляемость структурой (intro/verse/chorus). Деплой аналогичен: diffusers + FastAPI.

Для voice-over и озвучки — ElevenLabs API или self-hosted XTTS v2 (см. услугу Speech AI). Для sound design и foley — AudioGen.

3D-генерация: практическое состояние

3D-генерация всё ещё не добралась до той же зрелости, что 2D. Но для конкретных задач инструменты уже рабочие:

TripoSG и Shap-E — text/image-to-3D. Shap-E от OpenAI генерирует простые 3D-меши за секунды, но геометрия грубовата. TripoSG даёт более детальные результаты, но требует постпроцессинга (ремешинг, UV-развёртка).

Wonder3D и Zero123++ — реконструкция 3D из одного изображения. Работают через генерацию multi-view (6–8 видов) и последующее 3D-восстановление через NeuS или instant-ngp.

Gaussian Splatting (3DGS) — не генерация, а реконструкция из серии фото/видео. Для товарных карточек и недвижимости это уже production: 50–200 фото → 3DGS модель за 15–30 мин на RTX 4090 → интерактивный 3D-вьювер в браузере.

Инфраструктура и деплой

Для генеративных моделей критично:

  • Очередь задач — Celery + Redis или Ray Serve. Синхронный HTTP для генерации изображений неприемлем при >5 конкурентных запросов.
  • Кэширование — схожие промпты дают похожие результаты. Семантический кэш через эмбеддинги (faiss + sentence-transformers) может снизить нагрузку на GPU на 20–40%.
  • Мониторинг качества — CLIP score для text-image alignment, FID для оценки распределения генераций. Интеграция в MLflow или Weights & Biases.
  • Хранение — сгенерированные изображения сразу в S3/MinIO, не на диске сервера инференса.

Что входит в работу (deliverables)

Мы берём проект под ключ — от выбора модели до деплоя и мониторинга. В результат входит:

  • Модель (или API-интеграция) с бенчмарками производительности (latency p99, throughput).
  • Документация пайплайна (prompt engineering guide, model card, версии зависимостей).
  • Интеграция с вашим бэкендом (REST/gRPC, очереди).
  • Настроенный мониторинг (дашборды, алерты по дрейфу качества).
  • Обучающий воркшоп для команды (2–4 часа).
  • Гарантийная поддержка 3 месяца после запуска — в рамках сертификата качества на нашу работу.

Исторически мы выполнили 30+ проектов в генеративном AI — это даёт нам право гарантировать результат.

Как строится процесс разработки генеративного AI?

  1. Аналитика (1–2 дня): аудит текущей архитектуры, уточнение use case, выбор моделей и метрик успеха. Оцениваем проект бесплатно.
  2. Proof of Concept (1–3 недели): быстрый прототип на ваших данных — чтобы видеть реальное качество, а не демо из блога.
  3. Проектирование (1–2 недели): архитектура пайплайна, инфраструктура (GPU-кластер/API), план A/B-тестирования.
  4. Реализация и fine-tuning (4–12 недель): разработка, обучение LoRA/full fine-tuning, интеграция с очередью и кэшем.
  5. Тестирование (1–2 недели): нагрузочные тесты, валидация метрик, проверка на edge-case (негативные сценарии).
  6. Деплой и мониторинг (1–2 недели): развёртывание на production, настройка мониторинга, документирование.
Что мы проверяем на этапе Proof of Concept
  • Соответствие ожиданий и реального качества генерации (CLIP score, user study).
  • Скорость инференса при разных batch_size и типах GPU.
  • Вероятность токсичных/некорректных генераций — проверка safety filters.
  • Возможность масштабирования: будет ли модель вывозить пиковую нагрузку.

Сроки ориентировочно

Интеграция готового API (DALL‑E 3, Midjourney API, Stability API) — 1–2 недели. Self-hosted пайплайн с fine-tuning — 6–12 недель. Полная платформа с UI, очередями и мониторингом — 3–6 месяцев. Конкретная стоимость рассчитывается индивидуально после анализа вашего сценария.

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