#android #tensorflow #object-detection #image-recognition #object-recognition
#Android #обнаружение объектов #распознавание изображений #распознавание объектов
Вопрос:
Контекст
Я создаю приложение, которое выполняет обнаружение объектов в реальном времени с помощью модуля камеры устройства. Рендеринг похож на изображение ниже.
Допустим, я пытаюсь распознать яблоко, в большинстве случаев приложение распознает яблоко. Однако иногда приложение распознает неправильный фрукт (скажем, лимон) на нескольких кадрах камеры.
Цель
Поскольку распознавание плода запускает действие в моем коде, моя цель состоит в том, чтобы программно предотвратить краткое неправильное распознавание для запуска действия и учитывать только результат большинства.
Что я пробовал
Я попробовал так : если один и тот же фрукт распознается несколько кадров подряд, я предположил, что результат должен быть правильным. Но поскольку мое устройство обрабатывает распознавание изображений несколько раз в секунду, даже неверное предположение может быть распознано несколько раз подряд и приводит к неправильному действию.
Вопрос
Существуют ли какие-либо известные методы, позволяющие избежать такого поведения ?
Ответ №1:
Я чувствую, что вы уже ответили на свой собственный вопрос. В общем случае интерпретация вывода модели-это ее собственный этап настройки. Вы знаете, например, в задачах логистической регрессии, что пороговое значение НЕ обязательно должно быть 0,5. На самом деле, довольно часто можно изменить пороговое значение, чтобы увидеть, каков отзыв и точность при различных пороговых значениях, и вы можете выбрать пороговое значение, которое работает с учетом проблемы вашего бизнеса/продукта. (Обнаружение мошенничества может способствовать высокой отзывчивости, если вы никогда не хотите пропустить какое-либо мошенничество… или высокой точности, если вы не хотите раздражать пользователей множеством ложных срабатываний).
В видео эта широкая концепция, как вы знаете, распространяется на несколько кадров. Теперь у вас есть настройка гиперпараметров «сколько всего кадров?» и «сколько кадров голосует [apple]»?
Если вы анализируете фрукты, спускающиеся по конвейерной ленте один за другим, и вы знаете, что каждый фрукт будет находиться в кадре в течение X секунд, и вы снимаете со скоростью 60 кадров в секунду, возможно, вам нужно 60 * X кадров. И, может быть, вы хотите, чтобы 90% кадров согласились.
Вы захотите визуализировать, как часто ваш детектор «переворачивает» обнаружение, чтобы вы могли принять решение о бизнесе/продукте относительно того, каким должен быть ваш порог.
Этот ответ не очень помог дать вам здесь правило яркой линии, но я надеюсь, что он поможет предположить, что на самом деле правила яркой линии не существует. Вы должны понять проблему, чтобы задать ключевые гиперпараметры:
- Для каждого кадра достаточно ли 1-го акк, или мне нужна [.75] или более высокая уверенность?
- Сколько кадров получат право голоса? Скажем [100].
- Сколько коррелированных голосов необходимо для запуска фактического сигнала? может быть, это [85].
Вышеприведенный алгоритм предполагает, что вы принимаете хардмакс после шага 1. Другим вариантом было бы просто усреднить все 100 кадров и выбрать пороговое значение. это своего рода мягкая версия вышеприведенного алгоритма.