Есть ли правильный способ программно предотвратить краткое неправильное распознавание (в приложении для обнаружения объектов) для запуска действия?

#android #tensorflow #object-detection #image-recognition #object-recognition

#Android #обнаружение объектов #распознавание изображений #распознавание объектов

Вопрос:

Контекст

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

Цель

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

Что я пробовал

Я попробовал так : если один и тот же фрукт распознается несколько кадров подряд, я предположил, что результат должен быть правильным. Но поскольку мое устройство обрабатывает распознавание изображений несколько раз в секунду, даже неверное предположение может быть распознано несколько раз подряд и приводит к неправильному действию.

Вопрос

Существуют ли какие-либо известные методы, позволяющие избежать такого поведения ?

Ответ №1:

Я чувствую, что вы уже ответили на свой собственный вопрос. В общем случае интерпретация вывода модели-это ее собственный этап настройки. Вы знаете, например, в задачах логистической регрессии, что пороговое значение НЕ обязательно должно быть 0,5. На самом деле, довольно часто можно изменить пороговое значение, чтобы увидеть, каков отзыв и точность при различных пороговых значениях, и вы можете выбрать пороговое значение, которое работает с учетом проблемы вашего бизнеса/продукта. (Обнаружение мошенничества может способствовать высокой отзывчивости, если вы никогда не хотите пропустить какое-либо мошенничество… или высокой точности, если вы не хотите раздражать пользователей множеством ложных срабатываний).

В видео эта широкая концепция, как вы знаете, распространяется на несколько кадров. Теперь у вас есть настройка гиперпараметров «сколько всего кадров?» и «сколько кадров голосует [apple]»?

Если вы анализируете фрукты, спускающиеся по конвейерной ленте один за другим, и вы знаете, что каждый фрукт будет находиться в кадре в течение X секунд, и вы снимаете со скоростью 60 кадров в секунду, возможно, вам нужно 60 * X кадров. И, может быть, вы хотите, чтобы 90% кадров согласились.

Вы захотите визуализировать, как часто ваш детектор «переворачивает» обнаружение, чтобы вы могли принять решение о бизнесе/продукте относительно того, каким должен быть ваш порог.

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

  1. Для каждого кадра достаточно ли 1-го акк, или мне нужна [.75] или более высокая уверенность?
  2. Сколько кадров получат право голоса? Скажем [100].
  3. Сколько коррелированных голосов необходимо для запуска фактического сигнала? может быть, это [85].

Вышеприведенный алгоритм предполагает, что вы принимаете хардмакс после шага 1. Другим вариантом было бы просто усреднить все 100 кадров и выбрать пороговое значение. это своего рода мягкая версия вышеприведенного алгоритма.