Распознавание снимков — почему нейросеть не лучший выбор, и как мне помог сервис распознаваний капчи — личный опыт

в 7:09, , рубрики: распознавание изображений, распознавание объектов
Распознавание снимков — почему нейросеть не лучший выбор, и как мне помог сервис распознаваний капчи — личный опыт - 1

До определенного момента я свято верил в то, что в современном мире ручное распознавание капчи постепенно становится анахронизмом, особенно, когда речь идет о таких простых капчах - как капча картинка (где необходимо просто распознать текст на фотографии и ввести его в текстовом формате). Но знаете, оказалось все не так однозначно (как бы это ни звучало). 

Распознавание снимков — почему нейросеть не лучший выбор, и как мне помог сервис распознаваний капчи — личный опыт - 2

Вероятно простой текст на картинке думающая машина (читай ИИ) распознать сможет, но чем сложнее задача, тем больше возникает вопросов. А если задача большая? Тут уже появляется следующий вопрос - вопрос доверия результату, особенно, если на старте эти самые результаты были неоднозначные.

Но, обо всем по порядку:

Вводная часть и при чем тут сервис распознавания капчи картинки?

Мне понадобилось посчитать количество объектов на спутниковом снимке (в принципе, вовлеченный и мотивированный человек эту задачу выполнит без труда, но захотелось ее автоматизировать) и самое разумное решение, которое возникает в голове - использовать нейросеть, благо они уже прокачались до того, что умеют считывать снимки, анализировать их и выдавать осмысленные ответы.

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

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

Решение было найдено именно в этом ключе! Мы заменяем капчу картинку на наш спутниковый снимок и засылаем его на сервис распознавания капчи под видом капчи картинки с задачей - посчитать количество объектов и в поле для текстового поля поставить нужную цифру.

Но я опять отвлекся, обещал же по порядку…

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

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

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

Нейросети было предложено посчитать количество круглых объектов на картинке и предложено несколько разных картинок. В процессе работы стало понятно, что нейросеть не справляется и пишет откровенную чушь (количество, которое писала нейросеть в конце сильно отличалось в большую сторону, от реального).

Сперва все казалось очень круто - загрузил первый снимок, сформировал промт в стиле - “ты крутой аналитик данных, изучи картинку и посчитай количество зонтов на снимке”

После того, как я изучил ответ нейросети я вспомнил анекдот про военного и двух ученых в воздушном шаре:

Двое ученых во время полета на воздушном шаре столкнулись с определенными сложностями и их шар начал снижаться. Внизу они увидели человека, и спросили у него: “Уважаемый, подскажите, где мы находимся?”

  • “В воздушном шаре”, - не задумываясь ответил этот человек.

  • “Это военнослужащий”, - сказал один ученый другому. 

  • “Почему ты так решил?”, - спросил второй ученый

  • “ну как же, ответ быстрый, четкий, но нахер никому не нужный”!

Распознавание снимков — почему нейросеть не лучший выбор, и как мне помог сервис распознаваний капчи — личный опыт - 3

Так и с нейросетью - она ответила максимально быстро и точно, условно, 60 зонтов. Вот только их там было меньше.

Дальше были еще попытки, выделения конкретные области, где считать, но все тщетно… Ответы отличались каждый раз один от другого, что наводило на мысль о сильном галлюцинировании модели.

Методы, которые не работают

Да простят меня авторы методик, которые применяла нейросеть для подсчетов, но они все на практике оказались нерабочими. Вот что использовал искусственный интеллект при работе со снимками:

Распознавание снимков — почему нейросеть не лучший выбор, и как мне помог сервис распознаваний капчи — личный опыт - 4

1. Метод Хафа для обнаружения окружностей (Hough Circle Transform)

📌 Суть метода:

  • Автоматизированный поиск круглых объектов на изображении с использованием HoughCircles из OpenCV.

  • Метод применяет алгоритмы обработки контуров и выделяет окружности по градиентам яркости.

📌 Плюсы: ✅ Хорошо распознает зонты при четком контрасте с фоном.
✅ Работает быстро и автоматически.

📌 Минусы: ❌ Может ошибочно считать другие круглые объекты (например, камни, бассейны).
❌ Трудности при нахождении частично скрытых объектов.

📌 Результат для изображения:

  • Пляжные зонты: 88 (результат завышен из-за ложных срабатываний).


2. Морфологический анализ

📌 Суть метода:

  • Используются морфологические операции (открытие, закрытие, фильтрация шумов) для выделения зонтов и шезлонгов.

  • Сначала применяется бинаризация, затем поиск контуров.

📌 Плюсы: ✅ Эффективно при регулярном расположении объектов.
✅ Позволяет удалять шум и мелкие детали.

📌 Минусы: ❌ Работает хуже, если зонты перекрываются или имеют сложные тени.
❌ Может пропускать малозаметные объекты.

📌 Результат для изображения:

  • Пляжные зонты: 44 (точнее, чем метод Хафа, но все еще возможны ошибки).


3. Кластеризация методом K-means

📌 Суть метода:

  • Кластеризация пикселей по цвету и интенсивности с использованием K-means.

  • Позволяет выделить разные объекты по их тону и расположению.

📌 Плюсы: ✅ Хорош для группировки схожих объектов.
✅ Подходит для анализа больших изображений с повторяющимися элементами.

📌 Минусы: ❌ Не умеет различать объекты по форме, только по цвету.
❌ Требует точной настройки количества кластеров.

📌 Результат для изображения:

  • Пляжные зонты: 132 (перекрытия с другими объектами дали завышенный результат).


4. Гистограммный анализ

📌 Суть метода:

  • Исследуется распределение пикселей по яркости и цвету.

  • Оценивается частота встречаемости определенных оттенков (например, белых зонтов).

📌 Плюсы: ✅ Простая реализация.
✅ Позволяет анализировать изображения с низким качеством.

📌 Минусы: ❌ Не разделяет объекты по форме.
❌ Завышенные или заниженные оценки, если на пляже много белых зон.

📌 Результат для изображения:

  • Пляжные зонты: 87 (близко к реальному значению, но все еще неточная оценка).

И в самом конце я попросил ее проанализировать картинку без указанных методов, а просто, как человек, вот что мы получили:

Визуальный подсчет (анализ как человек)

📌 Суть метода:

  • Рассматривается изображение и объекты подсчитываются вручную.

  • Пляжные зонты отличаются по форме (круглые) и цвету (обычно светлые).

  • Шезлонги имеют прямоугольную форму и расположены в структурированных рядах.

📌 Плюсы: ✅ Высокая точность, если объекты хорошо различимы.
✅ Можно учитывать особенности ландшафта и различия между объектами.

📌 Минусы: ❌ Долгое выполнение при анализе большого количества изображений.
❌ Возможен человеческий фактор — субъективность в подсчете.

📌 Результат для изображения:

  • Пляжные зонты: 38

  • Шезлонги: 80-90

На удивление, данный метод показал самый точный результат из всех вышеизложенных (но все же посчитать точное количество так нейросеть и не смогла). Ну и опять же, у меня есть серьезные сомнения, что нейросеть и вправду применила визуальный подсчет, так как описала.

Таким образом задача по использованию нейросети для распознавания спутниковых снимков полностью провалилась, полностью!

Распознавание под видом CAPTCHA картинки спутниковых снимков (синергия сервиса по распознаванию капчи и сервиса по разметке объектов)

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

Итак - на входе мы подавали работникам спутниковый снимок и задачу - посчитать количество зонтов на снимке, в ответе работник должен написать число. Далее, методом нехитрого анализа мы проверяем работу, понимая, что посчитать все объекты за 3-4 секунды на снимке нереально, а значит работник заведомо схалтурил, но когда затраченное время больше, и результат не похож на автоматически введенные “123”, ответ засчитывается.

Таким образом ручное распознавание капчи картинки дало положительный результат, по сравнению с нейросетью. Для сравнения я использовал модель 4о, так как на момент написания статьи только на умела работать с картинками.

Распознавание снимков — почему нейросеть не лучший выбор, и как мне помог сервис распознаваний капчи — личный опыт - 5

Распознавание снимков под видом капчи картинки более продвинутым способом.

 Если развить тему дальше, то я вообще вижу это так - можно сформировать пул адекватных работников, которые не делают намеренных ошибок, которые выполняют задачу четко по ТЗ (пускай в своей нише, пускай небольшую задачу, но выполняют как надо) и далее работать с конкретной группой работников.

Но тут уже придется работать более тесно с поддержкой сервиса, так как самостоятельно вряд ли удастся разобраться в этом, но идея мне кажется может сработать.

Финансовая сторона вопроса

Теперь что касается затрат, в демонстрационном режиме стоимость одного распознавания была 0,001$ за снимок, что в пересчете не 1000 снимков получается 1 доллар (может поэтому не особо охотно работники брались за эту задачу). Но, если установить цену выше, скажем 3 доллара за 1000 снимков, уже получается интереснее, по идее.

Теперь сравним со стоимостью API Open AI, если использовать версию 4о, по тарифам за 1 млн токенов вы платите 0,0150$ плюс кэш и плюс ответ, но нас сейчас интересует эта цифра - 1 млн токенов.

Так как оправку изображения на сервер нейросети я осуществлял в base64 (предварительно перекодировав снимок в этот формат), то один снимок у меня занял примерно 850к токенов - плюс минус. Учитывая плату за кеширование и обратный ответ нейросети будем считать 0,0150$ мы будем платить за 1 картинку, что в пересчете на 1000 картинок получается 15 баксов.

Экономия на использовании нейросети вызывает вопросы

Экономия на использовании нейросети вызывает вопросы

Даже на этом уровне видна разница, согласитесь? Ни кого ни к чему не призываю и не агитирую, только голые цифры и мой опыт. У меня он такой, вероятно у кого-то есть другие примеры.

Автор: Markus_automation

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js