Зачем выводить больше данных с помощью вывода INT8 с помощью TensorRT

Реализован вывод движка 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.

Почему при использовании INT8 размер вывода в 5 раз больше?

Мой код вывода

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))

person batuman    schedule 19.06.2019    source источник


Ответы (1)


Это связано с тем, что размер пакета поезда составляет 50, и для этого размера пакета выделяется память.

Необходимо изменить форму как output = outputs.reshape ((50, 60, 80, 57))

Затем возьмите тензор [0], то есть результат, когда мы делаем вывод с одним изображением.

person batuman    schedule 20.06.2019