text: # Copyright 2020 NVIDIA
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  #     http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  
  import torch
  import torchvision.transforms as transforms
  import torch.nn.functional as F
  import cv2
  import PIL.Image
  import numpy as np
  
  mean = torch.Tensor([0.485, 0.456, 0.406]).cuda()
  std = torch.Tensor([0.229, 0.224, 0.225]).cuda()
  
  def preprocess(image):
      device = torch.device('cuda')
      image = PIL.Image.fromarray(image)
      image = transforms.functional.to_tensor(image).to(device)
      image.sub_(mean[:, None, None]).div_(std[:, None, None])
      return image[None, ...]