1

tensorflow模型转换为TensorRT,Tensorflow的ResizeArea(图中upsample)需要实现plugin。 在此处输入图像描述

所以 ResizeArea 是在 CUDA 中实现的。我的 TensorRT 输入是 NCHW 格式。

uff_path = model_to_uff(model_path)
parser.register_input(ModelData.INPUT_NAME, (3, height, width), trt.UffInputOrder.NCHW)
parser.register_output(ModelData.OUTPUT_NAME)
parser.parse(uff_path, network)

所以我的 CUDA 代码实现了 NCHW 重采样。我想确保我的重采样格式是正确的。

方法_1

NCHW resizearea(4 次上采样)样本。

channel_1      channel_2        channel_3
3,1,2,0,       0,4,3,1,         2,0,2,3,
3,0,1,2,       0,1,2,1,         2,0,4,2,
4,1,2,2,       1,3,2,4,         2,3,4,2,

channel_1                         channel_2                         channel_3  
3,3,3,3,1,1,1,1,2,2,2,2,0,0,0,0,  0,0,0,0,4,4,4,4,3,3,3,3,1,1,1,1,  2,2,2,2,0,0,0,0,2,2,2,2,3,3,3,3,
3,3,3,3,1,1,1,1,2,2,2,2,0,0,0,0,  0,0,0,0,4,4,4,4,3,3,3,3,1,1,1,1,  2,2,2,2,0,0,0,0,2,2,2,2,3,3,3,3,
3,3,3,3,1,1,1,1,2,2,2,2,0,0,0,0,  0,0,0,0,4,4,4,4,3,3,3,3,1,1,1,1,  2,2,2,2,0,0,0,0,2,2,2,2,3,3,3,3,
3,3,3,3,1,1,1,1,2,2,2,2,0,0,0,0,  0,0,0,0,4,4,4,4,3,3,3,3,1,1,1,1,  2,2,2,2,0,0,0,0,2,2,2,2,3,3,3,3,
3,3,3,3,0,0,0,0,1,1,1,1,2,2,2,2,  0,0,0,0,1,1,1,1,2,2,2,2,1,1,1,1,  2,2,2,2,0,0,0,0,4,4,4,4,2,2,2,2,
3,3,3,3,0,0,0,0,1,1,1,1,2,2,2,2,  0,0,0,0,1,1,1,1,2,2,2,2,1,1,1,1,  2,2,2,2,0,0,0,0,4,4,4,4,2,2,2,2,
3,3,3,3,0,0,0,0,1,1,1,1,2,2,2,2,  0,0,0,0,1,1,1,1,2,2,2,2,1,1,1,1,  2,2,2,2,0,0,0,0,4,4,4,4,2,2,2,2,
3,3,3,3,0,0,0,0,1,1,1,1,2,2,2,2,  0,0,0,0,1,1,1,1,2,2,2,2,1,1,1,1,  2,2,2,2,0,0,0,0,4,4,4,4,2,2,2,2,
4,4,4,4,1,1,1,1,2,2,2,2,2,2,2,2,  1,1,1,1,3,3,3,3,2,2,2,2,4,4,4,4,  2,2,2,2,3,3,3,3,4,4,4,4,2,2,2,2,
4,4,4,4,1,1,1,1,2,2,2,2,2,2,2,2,  1,1,1,1,3,3,3,3,2,2,2,2,4,4,4,4,  2,2,2,2,3,3,3,3,4,4,4,4,2,2,2,2,
4,4,4,4,1,1,1,1,2,2,2,2,2,2,2,2,  1,1,1,1,3,3,3,3,2,2,2,2,4,4,4,4,  2,2,2,2,3,3,3,3,4,4,4,4,2,2,2,2,
4,4,4,4,1,1,1,1,2,2,2,2,2,2,2,2,  1,1,1,1,3,3,3,3,2,2,2,2,4,4,4,4,  2,2,2,2,3,3,3,3,4,4,4,4,2,2,2,2,

每个像素上采样 4 次(例如,第一个像素 3 水平和垂直上采样 4 次)。这被认为是 NCHW 格式上采样。

方法_2

另一种实现方式被认为是 NHWC 格式的上采样。 在此处输入图像描述

在此处输入图像描述

3 通道数据 (83,86,77) 水平和垂直上采样。

Method_1 是 NCHW 上采样的正确方法吗?

4

2 回答 2

0

方法 1 似乎没问题,因为 TensorRT 期望 CHW 如文档中所述 NHWC 是 TF 格式,您是否AlignCorners在插件层考虑?另请注意,调整大小是最近的邻居,在 pytorch 中我使用 onnx-trt 进行双线性插值,这给出了更好的结果(在分割的情况下,也许你的情况 nn 是好的)。

于 2019-09-03T11:56:19.727 回答
0

用了一段时间后。问题解决了。TensorRT 以 NCHW 格式工作。Tensorflow 模型采用 NHWC 格式。所以在我的插件中,需要以 NCHW 格式进行上采样,但输出需要更改为 NHWC 格式,以便它可以与下一个 Tensorflow 操作接口。

于 2019-09-04T06:22:23.730 回答