К тренажеру
ВопросHardmlsd-cv-retrievalРеальный собес

Как построить модель визуального сравнения объявлений авто

Есть база объявлений авто и якорное объявление. Нужно находить архивные объявления, где визуально другая машина: другой цвет, салон, колеса, кузов или ракурс. Как поставить задачу и обучить модель?

Короткий ответ

Задачу можно поставить как pairwise similarity/anomaly detection по двум объявлениям: сначала нормализовать ракурсы, затем обучить metric learning на positives и hard negatives, агрегировать photo-pair scores и дообучить reranker/heads под конкретные типы различий.

Полный разбор

Сначала нужно определить объект сравнения: не одна фотография, а пара объявлений с набором фото. Полезно выделить ракурсы автомобиля: фронт, зад, бок, диагонали, салон. Это снижает шум, потому что сравнение "салон против кузова" бессмысленно.

Данные: positives - тот же автомобиль, то же объявление или надежно совпадающая комплектация/история; easy negatives - явно другие автомобили; hard negatives - та же марка/модель/поколение, но отличия в деталях: цвет, колеса, решетка, салон, кузов. Именно hard negatives заставляют embedding ловить мелкие визуальные различия.

Модель: encoder изображения или пары изображений, metric learning с contrastive/triplet loss, in-batch negatives, а затем агрегация расстояний по сопоставимым ракурсам. Поверх embedding-признаков можно обучить GBDT/MLP reranker или отдельные heads: цвет, салон, внешний вид. На выходе нужен score и порог для автоматического удаления или отправки на ручную проверку.

Оценка: precision/recall по "чужим" объявлениям, cost-sensitive threshold, разбор ошибок по типам отличий и guardrail на false positives, потому что ошибочное удаление настоящей истории автомобиля вредно для продукта.

Теория

Это retrieval/metric-learning задача, близкая к RecSys по идеям embeddings, positives/negatives и hard negative mining, хотя домен визуальный.

Типичные ошибки

  • Сравнивать случайные фото без нормализации ракурса.
  • Обучаться только на easy negatives.
  • Не задать бизнес-порог и цену false positive.

Как отвечать на собеседовании

  • Сначала разложи entity: объявление -> набор фото -> ракурсы -> pairwise scores.
  • Обязательно назови hard negatives из той же модели/поколения авто.