К тренажеру
ВопросMediumcomputer-visionРеальный собес

Metric learning для сопоставления авто по фото

Как построить систему, которая по фотографиям объявлений понимает, что в отчете оказалась другая машина, и удаляет ошибочные совпадения?

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

Нужно нормализовать ракурсы, получить embeddings по сопоставимым фото, сравнить пары объявлений и обучить головы/классификатор на признаки визуальных отличий.

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

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

Дальше строятся embeddings и признаки различия: cosine distance, color mismatch, wheel/interior/options mismatch, агрегаты по нескольким фото. Поверх них можно обучить классификатор или несколько голов, которые отдельно отвечают за цвет, колеса, салон и другие визуальные отличия.

В production такой пайплайн часто запускается batch-скриптом: единоразово чистит исторические ошибки, затем периодически пересматривает новые кандидаты. Важны precision и ручная валидация, потому что ложное удаление полезной истории портит продукт.

Теория

Metric learning полезен, когда важна не классификация одного объекта, а расстояние или различие между парой объектов.

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

  • Сравнивать любые две фотографии без учета ракурса.
  • Оптимизировать только recall и получать опасные false positives.
  • Не объяснить, как добывать hard negatives и разметку.

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

  • Скажи про view normalization и hard negatives.
  • Сразу назови production risk: лучше не удалить, чем удалить неверно.