Не удалось инициализировать детектор. Входной тензор имеет тип kTfliteFloat32 ML Kit
Я хотел бы знать, можно ли реализовать модель даркнета (yolov4-tiny), преобразованную в .tflite, в студии Android с помощью ML Kit. Я пытался использовать этот репозиторий: https://github.com/googlesamples/mlkit/tree/master/android/vision-quickstart , но когда я заменяю свою модель обнаружения пользовательских объектов, приложение возвращает эту ошибку: Не удалось обработать . Ошибка: не удалось инициализировать детектор. Входной тензор имеет тип kTfliteFloat32: он требует указания метаданных NormalizationOptions для предварительной обработки входных изображений. Причина: ноль. Не могли бы вы дать мне совет? Пожалуйста. Я пытаюсь подсчитывать объекты в реальном времени, я думаю, что комплект ML - это единственный способ отслеживать и подсчитывать объекты без повторения. Заранее спасибо.
2 ответа
Вы можете запустить этот код для исправления этой ошибки
from tflite_support.metadata_writers import object_detector
from tflite_support.metadata_writers import writer_utils
from tflite_support import metadata
ObjectDetectorWriter = object_detector.MetadataWriter
_MODEL_PATH = "yolo_without_metadata.tflite"
# Task Library expects label files that are in the same format as the one below.
_LABEL_FILE = "labelmap.txt"
_SAVE_TO_PATH = "yolo_with_metadata.tflite"
# Normalization parameters is required when reprocessing the image. It is
# optional if the image pixel values are in range of [0, 255] and the input
# tensor is quantized to uint8. See the introduction for normalization and
# quantization parameters below for more details.
# https://www.tensorflow.org/lite/convert/metadata#normalization_and_quantization_parameters)
_INPUT_NORM_MEAN = 127.5
_INPUT_NORM_STD = 127.5
# Create the metadata writer.
writer = ObjectDetectorWriter.create_for_inference(
writer_utils.load_file(_MODEL_PATH), [_INPUT_NORM_MEAN], [_INPUT_NORM_STD],
[_LABEL_FILE])
# Verify the metadata generated by metadata writer.
print(writer.get_metadata_json())
# Populate the metadata into the model.
writer_utils.save_file(writer.populate(), _SAVE_TO_PATH)
вы пытаетесь использовать функцию обнаружения и отслеживания настраиваемых объектов ML Kit ? Для этой функции поддерживаемой пользовательской моделью является модель классификатора, а не модель детектора. Более подробную информацию можно найти на странице https://developers.google.com/ml-kit/custom-models.