title: Upsampling Tensor for TensorRT
body: <p>The tensorflow model is converted to TensorRT and Tensorflow's ResizeArea(upsample in the picture) need to implement plugin.
  <a href="https://i.stack.imgur.com/BGTnw.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/BGTnw.png" alt="enter image description here"></a></p>
  
  <p>So ResizeArea is implemented in CUDA.
  My TensorRT input is NCHW format.</p>
  
  <pre><code>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)
  </code></pre>
  
  <p>So my CUDA code is implemented NCHW resampling.
  I like to make sure my resampling format is correct.</p>
  
  <p><strong>Method_1</strong></p>
  
  <p>NCHW resizearea(4 times upsampling) sample.</p>
  
  <pre><code>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,
  </code></pre>
  
  <p>Each pixel is 4 times upsampled(for example, first pixel 3 is upsample 4 times horizontally and vertically). That is considered as NCHW format upsampling.</p>
  
  <p><strong>Method_2</strong></p>
  
  <p>Another way implemented is considered upsampling in NHWC format.
  <a href="https://i.stack.imgur.com/fiYRK.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/fiYRK.png" alt="enter image description here"></a></p>
  
  <p><a href="https://i.stack.imgur.com/fyf10.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/fyf10.png" alt="enter image description here"></a></p>
  
  <p>3-channel data (83,86,77) is upsampled horizontally and vertically.</p>
  
  <p>Is Method_1 is correct way of NCHW upsampling?</p>