Определение цели файла 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.
- JPG - это просто набор пикселей. Он ничего не знает о содержании.
- Мой код состоит всего из 6 строк и не содержит никаких терминов
- Остался единственный вариант - файл 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
.