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: лучше не удалить, чем удалить неверно.