几点说明介绍:
1.全文分成两部分,关于ROI database的函数分析和关于minibatch的函数分析
2.文字描述函数调用关系有些乱,因此使用标题等级来体现函数之间的层次关系,标题等级高的函数调用/含有标题等级低的函数
3.函数内容有的不太重要的部分做了简化或者省略,为了突出层次关系,函数内部的对其他函数内部的调用有些只是使用了`function(...)`的形式
4.本文参考的代码基于tensorflow,代码链接为
https://github.com/endernewton/tf-faster-rcnn
ROIDB
最顶层文件:trainval_net.py
def parse_args():
def combined_roidb(imdb_names):
if __name__ == '__main__':
(1)combined_roidb()
def combined_roidb(imdb_names):
def get_roidb(imdb_name):
imdb = get_imdb(imdb_name) (1)/lib/tools/factory.py
imdb.set_proposal_method(cfg.TRAIN.PROPOSAL_METHOD) (2)/lib/dataset/imdb.py
roidb = get_training_roidb(imdb) (3)/lib/model/train_val.py
return roidb
roidbs = [get_roidb(s) for s in imdb_names.split('+')]
roidb = roidbs[0]
if len(roidbs) > 1:
for r in roidbs[1:]:
roidb.extend(r)
tmp = get_imdb(imdb_names.split('+')[1])
imdb = datasets.imdb.imdb(imdb_names, tmp.classes)
else:
imdb = get_imdb(imdb_names)