Распознавание спутниковых снимков: почему искусственный интеллект пока не идеален и как сервис распознавания капчи- картинок пришёл на помощь – практический пример
До недавнего времени я был уверен, что ручная расшифровка капчи утрачивает свою актуальность, особенно если речь идёт о простых изображениях, где нужно просто распознать текст. Однако, как оказалось, всё не так однозначно.
Конечно, современные алгоритмы (то есть ИИ) легко справляются с чтением простого текста, но как только задача усложняется, начинаются проблемы. А если задача масштабная? Тогда возникает вопрос: насколько можно доверять полученным результатам, особенно если с самого начала они оставляли желать лучшего.
Мне нужно было автоматически подсчитать объекты на спутниковом снимке. В принципе, любой внимательный человек смог бы выполнить эту работу, но идея автоматизации показалась мне привлекательной. Моментальное решение — применить нейросеть, ведь они уже умеют анализировать изображения и выдавать результаты.
Поначалу даже не приходило в голову использовать сервисы, где реальные люди распознают капчи картинки, ведь задача была не о типичной капче, верно? Но, как оказалось, многие проекты по разметке данных выросли именно из таких сервисов, где задействован человеческий фактор.
В моём случае потребовалось получить конкретное числовое значение, а не выделенную область. И вот тут появилась идея: почему бы не заменить стандартное изображение капчи на наш спутниковый снимок и не отправить его на сервис распознавания под видом обычной картинки, попросив посчитать объекты и ввести цифру в текстовое поле?
Нейросеть против капчи: почему ИИ не справился с подсчётом объектов
Представьте себе: куча спутниковых снимков отелей и курортов, на которых нужно зафиксировать количество пляжных зонтов и других элементов. На первый взгляд — простая задача. Но чем глубже копаешься, тем больше возникают сложности: плохое качество изображений, недостаточный контраст и недостатки используемых алгоритмов.
Нейросети дали задание подсчитать круглые объекты на нескольких снимках. Сначала всё казалось нормальным: я загрузил изображение, сформировал запрос вроде «ты классный аналитик, посчитай, сколько зонтов на снимке», и ожидал адекватного ответа. Однако результат оказался абсурдным — число, полученное ИИ, значительно превышало реальное количество.
Это напомнило мне анекдот про военного и двух учёных в воздушном шаре:
Два учёных, летя на воздушном шаре, заметили, что аппарат начал снижаться. Они увидели человека внизу и спросили:
«Подскажите, где мы?»
«В воздушном шаре», — молвил человек.
«Это солдат», — сказал один из учёных.
«Почему?» — удивился второй.
«Потому что ответ быстрый и точный, но совершенно бесполезный!»
Так и с нейросетью — она дала быстрый и «точный» ответ, скажем, 60 зонтов, хотя в реальности их было намного меньше. Последующие попытки с выделением конкретных областей давали непоследовательные результаты, что наводило на мысль о том, что модель сильно «галлюцинирует».
Методы, которые не принесли успеха
Нейросеть пробовала несколько классических подходов, но ни один из них не оказался эффективным. Вот что она использовала:
1. Хаффовский метод для обнаружения окружностей (Hough Circle Transform)
Суть: автоматический поиск круглых объектов с помощью алгоритма OpenCV, анализирующего контуры и градиенты яркости.
Плюсы:
- Отлично работает при хорошем контрасте.
- Быстро выдаёт результаты.
Минусы:
- Может принять камни или бассейны за зонты.
- Трудно обрабатывать частично закрытые объекты.
Результат: подсчитало 88 зонтов — завышенная цифра из-за ложных срабатываний.
2. Морфологический анализ
Суть: применение операций (открытие, закрытие, фильтрация шума) для выделения объектов, после чего производится поиск контуров.
Плюсы:
- Эффективен при регулярном расположении объектов.
- Устраняет мелкие шумы.
Минусы:
- Проблемы при наложении зонтов и сложных тенях.
- Может пропустить менее заметные элементы.
Результат: дал 44 зонта — чуть точнее, но всё ещё с ошибками.
3. Кластеризация методом K-means
Суть: группировка пикселей по цвету и яркости для выделения объектов по их тональности и расположению.
Плюсы:
- Хорош для сегментации больших изображений с повторяющимися элементами.
Минусы:
- Не учитывает форму объектов, только цвет.
- Требует точной настройки числа кластеров.
Результат: получилось 132 зонта — число сильно завышено из-за перекрытий.
4. Гистограммный анализ
Суть: анализ распределения яркости и цвета для определения частоты определённых оттенков (например, белых зонтов).
Плюсы:
- Прост в реализации и применим даже к снимкам низкого качества.
Минусы:
- Не разделяет объекты по форме.
- Может ошибочно оценить количество, если на изображении много однотонных элементов.
Результат: подсчитало 87 зонтов — близко к реальному, но всё равно не идеально.
В конце я попросил нейросеть провести «визуальный» анализ изображения, как если бы его считал человек. И что же? Такой метод дал наиболее точный результат: 38 зонтов и 80–90 шезлонгов. Но даже тут остаётся сомнение, действительно ли ИИ выполнял анализ так, как описывал.
Когда спутниковые снимки «маскируются» под капчу
Вот в чём фишка: вместо того чтобы полагаться исключительно на нейросеть, я решил попробовать нечто иное. Воспользовавшись сервисом распознавания image CAPTCHA, где за обработку изображений отвечают реальные люди, мы отправили снимок с просьбой посчитать количество зонтов. Работники должны были ввести число, и, если ответ не выглядел как типичный автоматический «123», можно было поверить, что работа сделана тщательно.
Видео-демонстрация этого подхода:
Такой ручной метод дал значительно более надёжные результаты по сравнению с нейросетью. Для сравнения я даже использовал модель GPT-4, которая на момент тестирования умела работать с изображениями, но и она не смогла справиться с задачей так, как это сделали люди.
Дальнейшие перспективы и сбор команды профессионалов
Если копнуть глубже, можно создать группу ответственных специалистов, которые будут выполнять такие задачи точно по заданным параметрам. Конечно, для этого потребуется тесное сотрудничество с поддержкой сервиса распознавания капчи, ведь разобраться во всех нюансах в одиночку сложно, но идея имеет потенциал.
Финансовая сторона вопроса
Перейдём к цифрам. В демонстрационном режиме стоимость одного распознавания составляла всего 0,001 доллара, что означает 1 доллар за 1000 изображений. Возможно, именно такая низкая цена и заставляла некоторых работников не уделять задаче должного внимания. Но если поднять ставку до, скажем, 3 долларов за 1000 снимков — экономика начинает играть в нашу пользу.
Для сравнения, если использовать API OpenAI с моделью GPT-4, то по тарифам за 1 миллион токенов приходится платить около 0,0150 доллара, плюс затраты на кэширование и ответ. Поскольку отправка изображения в формате base64 занимала примерно 850 тысяч токенов, стоимость одного снимка получалась около 0,0150 доллара, то есть 15 долларов за 1000 изображений.
«Экономия на использовании нейросети вызывает вопросы»
Даже на таком уровне разница очевидна. Я не призываю никого выбирать один метод вместо другого — просто делюсь реальными цифрами и собственным опытом. Возможно, у кого-то будут другие примеры или взгляды на ситуацию.