Реализован вывод движка INT8 с использованием TensorRT.
Размер пакета обучения — 50, а размер пакета логического вывода — 1.
Но при выводе на выходе
[outputs] = common.do_inference(context, bindings=bindings, inputs=inputs, outputs=outputs, stream=stream, batch_size=1)
Выходной размер 13680000.
Он должен быть 273600. Использование FP32/FP16 дало выходной размер 273600.
Почему размер вывода в 5 раз больше при использовании INT8?
Мой код вывода
with engine.create_execution_context() as context:
fps_time = time.time()
inputs, outputs, bindings, stream = common.allocate_buffers(engine)
im = np.array(frm, dtype=np.float32, order='C')
#im = im[:,:,::-1]
inputs[0].host = im.flatten()
[outputs] = common.do_inference(context, bindings=bindings, inputs=inputs, outputs=outputs, stream=stream, batch_size=1)
outputs = outputs.reshape((60, 80, 57))
Это связано с тем, что размер пакета поезда равен 50, и для этого размера пакета выделяется память.
Нужно переформировать как outputs = outputs.reshape((50, 60, 80, 57))
Затем возьмите тензор [0], который является результатом, когда мы делаем вывод с одним изображением.