-
def load_gt_roidb(dataset_name, image_set_name, root_path, dataset_path, result_path=None, flip=False):
-
def load_proposal_roidb(dataset_name, image_set_name, root_path, dataset_path, result_path=None, proposal=‘rpn’, append_gt=True, flip=False,proposal_path=‘proposals’, only_gt=False, get_imdb=False, load_mask=False):
eval(expression, globals=None, locals=None) --- 官方文档中的解释是,将字符串str当成有效的表达式来求值并返回计算结果。[1]
imdb = eval(dataset_name)(image_set_name, root_path, dataset_path, result_path,load_mask=load_mask)
roidb = imdb.gt_roidb()
imdb.gt_roidb
imdb.py
def gt_roidb(self):
raise NotImplementedError
在子类中实现 coco.py coco继承自IMDB
class coco(IMDB):
def __init__(self, image_set, root_path, data_path, result_path=None, mask_size=-1, binary_thresh=None, load_mask=False):
gt_roidb作用:返回值 gt_roidb,存储三个文件_gt_roidb.pkl, _index_roidb.pkl, _sindex_roidb.pkl, 返回值gt_roidb通过遍历image_set_index中的index,调用self._load_coco_annotation(index),也就是说, roidb其实就是每个图片的coco标注的集合,每个集合元素的形式如下
gt_roidb实现代码
def gt_roidb(self):
cache_file = os.path.join(self.cache_path, self.name + '_gt_roidb.pkl')
index_file = os.path.join(self.cache_path, self.name + '_index_roidb.pkl')
sindex_file = os.path.join(self.cache_path, self.name + '_sindex_roidb.pkl')
if os.path.exists(cache_file) and os.path.exists(index_file):
with open(cache_file, 'rb') as fid:
roidb = cPickle.load(fid)
with open(index_file, 'rb') as fid:
self.image_set_index = cPickle.load(fid)
print '{} gt roidb loaded from {}'.format(self.name, cache_file)