code: def torch_img_to_np_img(torch_img):
      """convert a torch image to matplotlib-able numpy image
      torch use Channels x Height x Width
      numpy use Height x Width x Channels
      Arguments:
          torch_img {[type]} -- [description]
      """
      assert isinstance(
          torch_img, torch.Tensor
      ), f"cannot process data type: {type(torch_img)}"
      if len(torch_img.shape) == 4 and (
          torch_img.shape[1] == 3 or torch_img.shape[1] == 1
      ):
          return np.transpose(
              torch_img.detach().cpu().numpy(), (0, 2, 3, 1)
          )
      if len(torch_img.shape) == 3 and (
          torch_img.shape[0] == 3 or torch_img.shape[0] == 1
      ):
          return np.transpose(
              torch_img.detach().cpu().numpy(), (1, 2, 0)
          )
      elif len(torch_img.shape) == 2:
          return torch_img.detach().cpu().numpy()
      else:
          raise ValueError("cannot process this image")
  
imports: import os
  import random
  import numpy
  import open3d
  import torch
  import pytorch3d
  import matplotlib.pyplot
  import matplotlib
  from scipy import ndimage
  from tqdm import tqdm
  from models.smpl import SMPL, vertices2joints
label_desc: Use image node_id 5 for calling a global function with example usage: torch_img_to_np_img(torch_img) and returns: np, np, torch_img