class_docstr: Performs COCO evaluation on each epoch.
      
class_docstr_tok: ["Performs","COCO","evaluation","on","each","epoch","."]
code: def on_epoch_end(self, epoch, logs=None):
      logs = logs or {}
  
      coco_tag = [
          "AP @[ IoU=0.50:0.95 | area=   all | maxDets=100 ]",
          "AP @[ IoU=0.50      | area=   all | maxDets=100 ]",
          "AP @[ IoU=0.75      | area=   all | maxDets=100 ]",
          "AP @[ IoU=0.50:0.95 | area= small | maxDets=100 ]",
          "AP @[ IoU=0.50:0.95 | area=medium | maxDets=100 ]",
          "AP @[ IoU=0.50:0.95 | area= large | maxDets=100 ]",
          "AR @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ]",
          "AR @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ]",
          "AR @[ IoU=0.50:0.95 | area=   all | maxDets=100 ]",
          "AR @[ IoU=0.50:0.95 | area= small | maxDets=100 ]",
          "AR @[ IoU=0.50:0.95 | area=medium | maxDets=100 ]",
          "AR @[ IoU=0.50:0.95 | area= large | maxDets=100 ]",
      ]
      coco_eval_stats = evaluate_coco(
          self.generator, self.model, self.threshold
      )
  
      if coco_eval_stats is not None:
          for index, result in enumerate(coco_eval_stats):
              logs[coco_tag[index]] = result
  
          if self.tensorboard:
              import tensorflow as tf
  
              writer = tf.summary.create_file_writer(
                  self.tensorboard.log_dir
              )
              with writer.as_default():
                  for index, result in enumerate(coco_eval_stats):
                      tf.summary.scalar(
                          "{}. {}".format(index + 1, coco_tag[index]),
                          result,
                          step=epoch,
                      )
                  writer.flush()
  
imports: from tensorflow import keras
  from ..utils.coco_eval import evaluate_coco
label_desc: Use image node_id 2 for calling the CocoEval obj's underlying member method code with example usage: obj.on_epoch_end(epoch, logs) without return types