Я пытаюсь обнаружить объекты и текст, используя firebase MLKit в режиме прямой трансляции с камеры в android. Для обработки изображения существуют определенные c распознаватели ( FirebaseVisionTextRecognizer , FirebaseVisionObjectDetector ). Если я использую эти распознаватели один за другим, все работает нормально, я могу получить ответ на желание.
Однако я хочу обнаруживать как объекты, так и текст одновременно, используя ту же камеру, что и приложение Google Lens. Чтобы добиться этого, во-первых, я попытался запустить оба распознавателя вместе, но есть большая задержка (требуется время для выполнения определенного c кадра), поскольку оба запускаются последовательно, и, следовательно, работало только обнаружение текста, но не обнаружение объекта. Это означает, что нет никакого результата от обнаружения объекта.
Затем я попытался выполнить оба распознавателя параллельно, задержка уменьшилась, но не настолько, чтобы API обнаружения вернул ответ. Когда в ленте камеры нет текста, обнаружение объектов работает хорошо, но когда в ленте камеры есть текст, задержка увеличивается, и поэтому нет объектов отслеживания.
Примечание. Я проверил задержку вызова функции после обнаружения (код, который выполняется после обнаружения объекта), и это не занимает много времени. Распознавателям требуется больше времени для обработки изображения в случае параллельного выполнения. Я тестирую на телефоне Samsung Galaxy S30s и думаю, что у него не так уж и плохой процессор.
Несколько набросков из кода:
- Использование FirebaseVisionObjectDetectorOptions.STREAM_MODE , enableMultipleObjects = false и enableClassification = false для обнаружения объекта
- Использование формата
FirebaseVisionImageMetadata.IMAGE_FORMAT_NV21
при сборке FirebaseVisionImageMetadata - В соответствии с лучшими практиками, определенными Google, удаление последних кадров при обнаружении
- Использование OnDeviceObjectDetector для обнаружения объектов
- Для обнаружения текста я использую OnDeviceTextRecognizer
Мне нужна помощь, чтобы понять, как приложение Google Lens выполняет несколько распознавателей вместе, но не в моем приложении. Что я могу сделать, чтобы включить несколько распознавателей в одном кадре камеры?