code: def input_worker(q_in, roidb, batch_size):
      index = np.arange(len(roidb))
      np.random.shuffle(index)
      cur_from = 0
      while True:
          cur_to = cur_from + batch_size
          if cur_to > len(roidb):
              np.random.shuffle(index)
              cur_from = 0
              continue
          _roidb = [roidb[index[i]] for i in range(cur_from, cur_to)]
          istart = index[cur_from]
          q_in[istart % len(q_in)].put(_roidb)
          cur_from = cur_to
  
imports: from __future__ import print_function
  import sys
  import mxnet
  import numpy
  import random
  import datetime
  import multiprocessing
  import cv2
  from mxnet.executor_manager import _split_input_slice
  from rcnn.config import config
  from rcnn.io.image import tensor_vstack
  from rcnn.io.rpn import get_rpn_testbatch, get_rpn_batch, assign_anchor_fpn, get_crop_batch, AA
label_desc: Use image node_id 5 for calling the CropLoader2 obj's underlying member method code with example usage: obj.input_worker(q_in, roidb, batch_size) without return types