我是将数据转化为VOC格式,所以修改Deformable-ConvNets\lib\dataset\pascal_voc.py文件:
注释掉load_pascal_annotation函数中
filename = os.path.join(self.data_path, 'Annotations', index + '.xml') tree = ET.parse(filename) size = tree.find('size') roi_rec['height'] = float(size.find('height').text) roi_rec['width'] = float(size.find('width').text) #im_size = cv2.imread(roi_rec['image'], cv2.IMREAD_COLOR|cv2.IMREAD_IGNORE_ORIENTATION).shape #assert im_size[0] == roi_rec['height'] and im_size[1] == roi_rec['width'] objs = tree.findall('object') if not self.config['use_diff']: non_diff_objs = [obj for obj in objs if int(obj.find('difficult').text) == 0] objs = non_diff_objs
将
num_objs = len(objs)
改为num_objs = 1
注释掉:注释掉evaluate_detections中的:for ix, obj in enumerate(objs): bbox = obj.find('bndbox') # Make pixel indexes 0-based x1 = float(bbox.find('xmin').text) y1 = float(bbox.find('ymin').text) x2 = float(bbox.find('xmax').text) y2 = float(bbox.find('ymax').text) cls = class_to_index[obj.find('name').text.lower().strip()] boxes[ix, :] = [x1, y1, x2, y2] gt_classes[ix] = cls overlaps[ix, cls] = 1.0
info = self.do_python_eval() return info
然后将tester.py中pred_eval函数中info_str = imdb.evaluate_detections(all_boxes) if logger: logger.info('evaluate detections: \n{}'.format(info_str))
改为:imdb.evaluate_detections(all_boxes)