class_docstr: Image database.
class_docstr_tok: ["Image","database","."]
docstr: all_boxes is a list of length number-of-classes.
  Each list element is a list of length number-of-images.
  Each of those list elements is either an empty list []
  or a numpy array of detection.
  
  all_boxes[class][image] = [] or np.array of shape #dets x 5
docstr_tok: ["all_boxes","is","a","list","of","length","number-of-classes",".","Each","list","element","is","a","list","of","length","number-of-images",".","Each","of","those","list","elements","is","either","an","empty","list","[","]","or","a","numpy","array","of","detection",".","all_boxes","[","class","]","[","image","]","=","[","]","or","np.array","of","shape","#","dets","x","5"]
code: def evaluate_detections(self, all_boxes, output_dir=None):
      """
      all_boxes is a list of length number-of-classes.
      Each list element is a list of length number-of-images.
      Each of those list elements is either an empty list []
      or a numpy array of detection.
  
      all_boxes[class][image] = [] or np.array of shape #dets x 5
      """
      raise NotImplementedError
  
imports: import os
  import os.path
  import PIL
  import numpy
  import scipy.sparse
  from builtins import range
  import sys
  from .utils.cython_bbox import bbox_overlaps
label_desc: Use image node_id 12 for calling the imdb obj's underlying member method code with example usage: obj.evaluate_detections(all_boxes, output_dir) without return types