code: def reader(images=None, paths=None):
      """
      Preprocess to yield image.
  
      Args:
          images (list(numpy.ndarray)): images data, shape of each is [H, W, C]
          paths (list[str]): paths to images.
  
      Yield:
          each (collections.OrderedDict): info of original image, preprocessed image.
      """
      component = list()
      if paths:
          for im_path in paths:
              each = OrderedDict()
              assert os.path.isfile(
                  im_path
              ), "The {} isn't a valid file path.".format(im_path)
              im = cv2.imread(im_path).astype("float32")
              each["org_im"] = im
              each["org_im_path"] = im_path
              each["org_im_shape"] = im.shape
              component.append(each)
      if images is not None:
          assert type(images) is list, "images should be a list."
          for im in images:
              each = OrderedDict()
              each["org_im"] = im
              each["org_im_path"] = "ndarray_time={}".format(
                  round(time.time(), 6) * 1e6
              )
              each["org_im_shape"] = im.shape
              component.append(each)
  
      for element in component:
          img = element["org_im"].copy()
          img = cv2.resize(img, (513, 513)).astype(np.float32)
          img -= np.array([104.008, 116.669, 122.675])
          img /= np.array([1.0, 1.0, 1.0])
          img = img.transpose((2, 0, 1))
          element["image"] = img
          yield element
  
imports: import os
  import time
  from collections import OrderedDict
  import cv2
  import numpy
label_desc: Use image node_id 1 for calling a global function with example usage: reader(images, paths) without return types