'Run per image evaluation on given images and store results (a list of dict) in self.evalImgs
:return: None'

def evaluate(self):

    tic = time.time()
    print 'Running    per    image    evaluation...                        '
    p = self.params
    p.imgIds = list(np.unique(p.imgIds))
    if p.useCats:
        p.catIds = list(np.unique(p.catIds))
    p.maxDets = sorted(p.maxDets)
    self.params = p
    self._prepare()
    catIds = (p.catIds if p.useCats else [(-1)])
    computeIoU = self.computeIoU
    self.ious = {(imgId, catId): computeIoU(imgId, catId) for imgId in p.imgIds for catId in catIds}
    evaluateImg = self.evaluateImg
    maxDet = p.maxDets[(-1)]
    self.evalImgs = [evaluateImg(imgId, catId, areaRng, maxDet) for catId in catIds for areaRng in p.areaRng for imgId in p.imgIds]
    self._paramsEval = copy.deepcopy(self.params)
    toc = time.time()
    print ('DONE    (t=%0.2fs).' % (toc - tic))
