简介和说明:
1.本文包含两个部分,一个是关于ROIdatabase的函数分析,一个是关于minibatch生成的函数分析;
2.由于直接用文字表述函数之间的调用关系很麻烦,因此我使用标题的等级来表示。标题等级高一级的函数调用下面标题等级低一级的函数,因此目录可以一定程度上体现出函数调用关系
3.为了突出主要部分,文章中列出的函数的有些部分做了些简化和省略,有些地方的函数调用也直接简化为function(...)
的形式;
4.本文分析的代码基于tensorflow,代码可从github上下载,网址为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('+')] #the function above
roidb = roidbs[0]
if len(roidbs) > 1:
for r in roidbs[1:]:
roidb.extend(r)
tmp = get_imdb(imdb_names.split('+')[1