#tensorflow #tensorflow-lite #google-mlkit
#tensorflow #tensorflow-lite #google-mlkit
Вопрос:
Если я использую предварительно подготовленную модель обнаружения объектов TFLite в MLKit, я получаю следующую ошибку:
CalculatorGraph::Run() failed in Run: Calculator::Open() for node "BoxClassifierCalculator" failed: #vk Unexpected number of dimensions for output index 0: got 3D, expected either 2D (BxN with B=1) or 4D (BxHxWxN with B=1, W=1, H=1).
Есть идеи, что я могу делать неправильно?
Ответ №1:
В настоящее время ML Kit не поддерживает пользовательскую модель обнаружения объектов. В настоящее время ML Kit позволяет разработчикам использовать только пользовательские модели классификации изображений. Здесь перечислены все модели TFLite, совместимые с ML Kit:
https://tfhub.dev/ml-kit/collections/image-classification/1
Если вы хотите выполнить обнаружение объектов, вы можете попробовать API обнаружения объектов ML Kit: https://developers.google.com/ml-kit/vision/object-detection
Если вы хотите использовать пользовательскую модель обнаружения объектов, вы можете попробовать библиотеку задач TFLite:
https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview .
Комментарии:
1. Как скоро в будущем будет поддерживаться пользовательская модель tflite для API обнаружения объектов mlkit?
2. У меня такая же проблема, я использую developers.google.com/ml-kit/vision/object-detection/… предполагается, что она поддерживает пользовательские модели. Есть идеи?
3. Он поддерживает совместимые пользовательские модели классификации, перечисленные здесь: tfhub.dev/ml-kit/collections/image-classification/1 , но не пользовательские модели обнаружения или другие произвольные пользовательские модели.
4. Нет ближайшего плана поддержки пользовательской модели обнаружения.
5. Тогда что делает это обнаружение пользовательской модели? developers.google.com/ml-kit/vision/object-detection /…
Ответ №2:
Ну, поскольку я узнал об этом из этого сообщения здесь, на SO, я продолжил искать другие варианты. И учебное пособие, размещенное здесь: Tensor Flow Lite OBJ detection, отлично справилось с задачей.
Прежде всего, добавлен
implementation 'org.tensorflow:tensorflow-lite-task-vision:0.2.0'
Для build.gradle, и этот простой код сработал как шарм. Очевидно, мне нужно внести некоторые изменения, чтобы отразить мои конкретные потребности, но он обнаруживает без ошибок.
val image = TensorImage.fromBitmap(bitmap)
val options = ObjectDetector.ObjectDetectorOptions.builder()
.setMaxResults(5)
.setScoreThreshold(0.5f)
.build()
val detector = ObjectDetector.createFromFileAndOptions(
this, // the application context
"model.tflite", // must be same as the filename in assets folder
options
)
В этой ссылке приведено более подробное объяснение, слишком много, чтобы его можно было сюда добавить.
Надеюсь, это поможет кому-то еще.
Ответ №3:
Теперь вы можете создавать пользовательские модели MLKit с помощью облачного сервиса Vertex AI / AutoML от Google, и он хорошо работает с API CameraX с помощью ImageAnalysis Analyzer
. Следуйте приведенному здесь руководству, чтобы создать и обучить модель TFLite с вашими собственными изображениями через браузер (или используйте облачный интерфейс командной строки Google, если вам нужно загрузить их много). После этого в этом руководстве вы узнаете практически все, что вам нужно для добавления модели в ваш проект, а также о том, как обнаруживать и помечать объекты с помощью MLKit.