code: def image_preprocessing(image_buffer, bbox, train, thread_id=0):
    
    if bbox is None:
      raise ValueError('Please supply a bounding box.')
  
    image = decode_jpeg(image_buffer)
    height = FLAGS.image_size
    width = FLAGS.image_size
  
    if train:
      image = distort_image(image, height, width, bbox, thread_id)
    else:
      image = eval_image(image, height, width)
  
    # Finally, rescale to [-1,1] instead of [0, 1)
    image = tf.subtract(image, 0.5)
    image = tf.multiply(image, 2.0)
    return image
docs: Decode and preprocess one image for evaluation or training.
  
    Args:
      image_buffer: JPEG encoded string Tensor
      bbox: 3-D float Tensor of bounding boxes arranged [1, num_boxes, coords]
        where each coordinate is [0, 1) and the coordinates are arranged as
        [ymin, xmin, ymax, xmax].
      train: boolean
      thread_id: integer indicating preprocessing thread
  
    Returns:
      3-D float Tensor containing an appropriately scaled image
  
    Raises:
      ValueError: if user does not provide bounding box