Добавить в корзинуПозвонить
Найти в Дзене
Цифровая Переплавка

Когда похожие иллюстрации — больше не проблема: как GPT-4o помогает находить «ту самую» картинку среди сотен почти идентичных

Можно ли распознать 350 очень похожих изображений машин, если они отличаются буквально оттенком цвета или незначительной деталью на кузове? Оказывается, можно — причём без громоздких локальных моделей и сверхдорогих серверов. В недавнем кейсе команда AskMona рассказала о том, как они сумели решить эту задачу, объединив классические методы поиска похожих изображений (KNN) и LLM-модель GPT-4o. Самое удивительное: проект был реализован всего несколькими инженерами в сжатые сроки и с минимальной инфраструктурой. Представьте себе стенд в музее с сотнями иллюстраций автомобилей: Обычная нейронная сеть для классификации (например, MobileNet с transfer learning) работала крайне нестабильно: Результат: модель то угадывала правильно, то катастрофически «промахивалась». В итоге у клиента оставалось впечатление, что система не даёт гарантированно надёжного результата. В основной продукт AskMona уже была встроена система поиска по эмбеддингам (VGG16), где изображения превращаются в векторы, а затем
Оглавление

Можно ли распознать 350 очень похожих изображений машин, если они отличаются буквально оттенком цвета или незначительной деталью на кузове? Оказывается, можно — причём без громоздких локальных моделей и сверхдорогих серверов. В недавнем кейсе команда AskMona рассказала о том, как они сумели решить эту задачу, объединив классические методы поиска похожих изображений (KNN) и LLM-модель GPT-4o. Самое удивительное: проект был реализован всего несколькими инженерами в сжатые сроки и с минимальной инфраструктурой.

Почему задача оказалась настолько сложной?

Представьте себе стенд в музее с сотнями иллюстраций автомобилей:

  • 🚗 Абсолютно одинаковый ракурс — вид сбоку на белом фоне.
  • 🚗 Минимальные различия — в некоторых случаях только номер, декаль или незначительная выгравировка в другом месте.
  • 🚗 350 «почти идентичных» экземпляров — задача при беглом взгляде кажется почти безнадёжной.

Обычная нейронная сеть для классификации (например, MobileNet с transfer learning) работала крайне нестабильно:

  • 🤖 Ограничение по обучающим данным: у каждого класса была всего одна исходная иллюстрация, которую пытались «размножить» с помощью аугментации.
  • 🌐 Браузерная реализация (через ONNX) приводила к компромиссам по объёму модели и точности.
  • ⚠️ Сложные условия в реальности: фотографии со стенда при разном освещении, тенях и искажениях ещё сильнее запутывали сеть.

Результат: модель то угадывала правильно, то катастрофически «промахивалась». В итоге у клиента оставалось впечатление, что система не даёт гарантированно надёжного результата.

Первый прорыв: использование KNN и крупных эмбеддингов

В основной продукт AskMona уже была встроена система поиска по эмбеддингам (VGG16), где изображения превращаются в векторы, а затем идёт поиск ближайших соседей (KNN). Однако для таких похожих картинок классическая VGG16 не давала нужной глубины признаков.

Ситуация изменилась, когда появилась возможность использовать AWS Titan — более продвинутый мультимодальный сервис, способный формировать «тонкие» эмбеддинги. И действительно, проверка показала, что этот механизм неплохо отличает даже почти одинаковые машины. Но проблемы оставались:

  • 🕵️ Наиболее похожие иллюстрации всё равно «сливались» в 2–3 ближайших соседа, и система не понимала, какой из них точнее.
  • 🤷 Автоматическая фильтрация могла ошибаться и выдавать неверный вариант на первом месте.

Пытались показывать пользователю несколько ближайших результатов, чтобы он сам выбирал: «А вот из этих трёх, похоже, это ваш автомобиль?» Но заказчик не хотел терять «магический эффект» мгновенного узнавания машины.

Второй прорыв: GPT-4o в роли «текущего эксперта»

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

Схема оказалась предельно простой:

  • 🏅 Шаг 1: делаем эмбеддинги искомого снимка с выставки, ищем ближайшие 2–3 кандидата в огромном каталоге (KNN).
  • 🏅 Шаг 2: передаём (через промпт) эти 2–3 картинки GPT-4o вместе с исходным «запросом», где описываем, что это за иллюстрация и в чём задача (например, «Какой из этих вариантов совпадает с изображённым авто?»).
  • 🏅 Шаг 3: модель делает «финальный выбор» или отмечает, что нет 100% совпадения.

Результаты оказались просто поразительными:

  • Точность значительно выросла: там, где KNN давал 2-3 варианта, GPT-4o чаще всего выбирал правильный.
  • Минимум дополнительных усилий: не нужно глубоко дообучать модель, достаточно указать в промпте, какие картинки следует сравнить.
  • Гибкость: если всё же остались 2 машины «один в один», GPT-4o может (хоть иногда и ошибаясь) рассказать, какой миллиметровый логотип отличает их, или определить, что в точности они неразличимы.

Да, система не стала на 100% идеальной: есть пара «двойников» машин, которые сбивали с толку и GPT-4o. Но количество успешных распознаваний стало настолько высоко, что клиент принял эту реализацию.

Личное мнение автора

На мой взгляд, пример AskMona прекрасно иллюстрирует, как современные LLM превращаются в универсальные инструменты, выходящие за рамки привычного текстового чат-бота.

  • 🤖 Гибридный подход «эмбеддинги + LLM-фильтрация» повторяет логику, которую мы уже видели в текстовых поисках (когда сначала делается поиск (retrieval), а затем LLM уточняет результат).
  • ⚙️ Удобная связка: KNN даёт «узкий список» кандидатов (быстро и недорого), а LLM «допроверяет» (медленнее и дороже, но только на несколько штук).
  • 🏗️ Не нужно быть специалистом по CV: достаточно понимать общие принципы ML и уметь формулировать задачу в промпте. Это заметно ускоряет разработку и снижает барьер входа.

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

Технические детали и уроки для будущих проектов

  • 🎨 Аугментация данных (Data augmentation) при единичном изображении класса — классический приём, но часто недостаточный, когда картинки почти идентичны.
  • 🕹️ Аппаратно всё реализовано через легковесный front-end (модель для эмбеддингов на сервере), а финальный «сравнительный анализ» — через вызов GPT-4o.
  • Цена запроса примерно 0.0001 USD (пример из кейса) за весь промпт, так как изображения сжимаются до низкого разрешения, а промпт получается компактным.

Ключевой урок: если ваша классическая CV-модель упирается в сложность/похожесть изображений, то комбинированный подход с «мультимодальными» LLM может стать недостающим элементом пазла.

Ссылки и дополнительные материалы

Отличное чтение для тех, кто ищет конкретные детали имплементации и хочет узнать, как именно команда AskMona готовила промпты и подбирала архитектуру.

Итоги

Данная история — ещё одно подтверждение того, что мир ML переживает «универсальную революцию» LLM. Когда-то для задач компьютерного зрения мы вынуждены были строить сложные пайплайны и тратить уйму времени на тонкую настройку. А теперь появляется GPT-4o (и другие аналоги), которые с уже готовым мультимодальным пониманием «дотягивают» классификацию до нужной точности.

Так что если вы работаете над похожей проблемой (множество почти идентичных изображений) и не хотите городить огород сложного CV, — возможно, стоит попробовать гибридный метод KNN + GPT-4o. Как показывает опыт AskMona, это может оказаться «волшебной палочкой» для борьбы с близнецами в вашей галерее.