code: def flow_warp(self, input, flow, size):
      input_shape = paddle.shape(input)
      norm = size[::-1].reshape([1, 1, 1, -1])
      norm.stop_gradient = True
      h_grid = paddle.linspace(-1.0, 1.0, size[0]).reshape([-1, 1])
      h_grid = h_grid.tile([size[1]])
      w_grid = paddle.linspace(-1.0, 1.0, size[1]).reshape([-1, 1])
      w_grid = w_grid.tile([size[0]]).transpose([1, 0])
      grid = paddle.concat(
          [w_grid.unsqueeze(2), h_grid.unsqueeze(2)], axis=2
      )
      grid.unsqueeze(0).tile([input_shape[0], 1, 1, 1])
      grid = grid + paddle.transpose(flow, (0, 2, 3, 1)) / norm
  
      output = F.grid_sample(input, grid)
      return output
  
imports: import cv2
  import numpy
  import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg.cvlibs import manager
  from paddleseg.models import layers
  from paddleseg.models.backbones import resnet_vd
  from paddleseg.models import deeplab
  from paddleseg.utils import utils
label_desc: Use image node_id 3 for calling the SqueezeBodyEdge obj's underlying member method code with example usage: obj.flow_warp(input, flow, size) and returns: output