code: def iterate(self):
      for image_id, image_details in self._image_to_details.items():
          if self._stop_iteration():
              return
  
          filename = image_details["file_name"]
          width = image_details["width"]
          height = image_details["height"]
  
          gt_boxes = self._image_to_bboxes.get(image_id, [])
          if len(gt_boxes) == 0:
              continue
  
          if self._should_skip(image_id):
              continue
  
          # Read the image *after* checking whether any ground truth box is
          # present.
          try:
              image_path = self._get_image_path(filename)
              image = read_image(image_path)
          except tf.errors.NotFoundError:
              tf.logging.debug(
                  'Error reading image or annotation for "{}".'.format(
                      image_id
                  )
              )
              self.errors += 1
              continue
  
          record = {
              "width": width,
              "height": height,
              "depth": 3,
              "filename": filename,
              "image_raw": image,
              "gt_boxes": gt_boxes,
          }
          self._will_add_record(record)
          self.yielded_records += 1
  
          yield record
  
file_path: luminoth/luminoth/tools/dataset/readers/object_detection/coco.py
imports: import json
  import os
  import tensorflow
  from luminoth.tools.dataset.readers import InvalidDataDirectory
  from luminoth.tools.dataset.readers.object_detection import ObjectDetectionReader
  from luminoth.utils.dataset import read_image
label_desc: Use image node_id 4 for calling the COCOReader obj's underlying member method code with example usage: obj.iterate() without return types