Определение цели файла H5

Я загрузил несколько файлов H5, которые, насколько я понимаю, содержат обученные модели для распознавания изображений. Я могу успешно применять эти модели к изображениям с помощью Python, Keras, Tensorflow и ImageAI.

Из некоторых примеров в Интернете я также выяснил, что одна из моделей была обучена обнаружению автомобилей и людей. Я загрузил в него несколько изображений машин, и это сработало.

Теперь я пытаюсь получить эту информацию из самого файла H5, чтобы я мог передать некоторые ожидаемые данные и некоторые неожиданные данные в детектор, чтобы увидеть, что происходит.

Я искал stackru о том, как читать файл H5 и получать из него информацию [1], [2], [3], [4], но все, что я получаю, - это просто набор технических данных.

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

Как мы видим на изображении, прямоугольники имеют надписи вроде car а также truck, так что это тип объектов, которые он может распознать. Я хочу получить именно эту информацию из файла H5.

у меня есть

import h5py

def printH5Content(filename: str):
    with h5py.File(filename, 'r') as f:
        print("Keys: %s" % f.keys())
        a_group_key = list(f.keys())[0]
        print(list(f[a_group_key]))

printH5Content(model_path)

но это дает мне только

Keys: <KeysViewHDF5 ['model_weights']>
['add_1', 'add_10', 'add_11', 'add_12', 'add_13', 'add_14', ... 'zero_padding2d_4', 'zero_padding2d_5']

Также посетитель не дает дополнительной информации:

def printH5Content(filename: str):
    with h5py.File(filename, 'r') as f:
        f.visit(print)

Как мне получить слова car а также truck из файла H5, чтобы я мог узнать, для чего он был обучен?

Редактировать из комментариев:

Я убежден, что термин car а также truckдолжен быть внутри файла H5 путем исключения. У меня есть 3 входа: код, модель H5 и изображение JPG.

  1. JPG - это просто набор пикселей. Он ничего не знает о содержании.
  2. Мой код состоит всего из 6 строк и не содержит никаких терминов
  3. Остался единственный вариант - файл H5.

Минимальная версия моего кода:

from imageai.Detection import ObjectDetection
detector = ObjectDetection()
detector.setModelTypeAsTinyYOLOv3()
detector.setModelPath("./models/yolo-tiny.h5")
detector.loadModel()
detection = detector.detectObjectsFromImage(input_image="./input/cars.jpg", output_image_path="./output/cars.jpg")

1 ответ

Решение

Я ошибался, полагая, что терминов нет в коде. Их нет в моем коде, а в импортированной библиотеке ImageAI. Это можно подтвердить, используя ImageAI даже без загрузки файла H5:

from imageai.Detection import ObjectDetection
detector = ObjectDetection()
detector.setModelTypeAsTinyYOLOv3()
for _, value in detector.numbers_to_names.items():
    print(value)

Это дает список из 80 элементов, которые могут быть обнаружены ImageAI, включая car а также truck.

Другие вопросы по тегам