py-faster-rcnn代码有问题吧

Background:
 我在跑py-faster-rcnn,用alt方法的时候,跑到stage1的第二步即第一次训练fast rcnn的时候,创建data层失败了,看了下代码发现是cfg.HAS_RPN没有被train_fast_rcnn()赋值成功,即在这个函数里被设置为false后,到layer.py的时候又变成了true。
 
Debug:
我读了一下代码,发现在train_faster_rcnn_alt_opt_py中,调用的train_fast_rcnn()是这样的(7/13/14行跟踪了一下)
def train_fast_rcnn(queue=None, imdb_name=None, init_model=None, solver=None,
max_iters=None, cfg=None, rpn_file=None):
"""Train a Fast R-CNN using proposals generated by an RPN.
"""
print("TRAIN.HAS_RPN:%r"%cfg.TRAIN.HAS_RPN)
cfg.TRAIN.HAS_RPN = False # not generating prosals on-the-fly
print("TRAIN.HAS_RPN:%r"%cfg.TRAIN.HAS_RPN)---------'HAS_RPN' = false
cfg.TRAIN.PROPOSAL_METHOD = 'rpn' # use pre-computed RPN proposals instead
cfg.TRAIN.IMS_PER_BATCH = 2
print 'Init model: {}'.format(init_model)
print 'RPN proposals: {}'.format(rpn_file)
print('Using config:')
pprint.pprint(cfg)-----------------------------------'HAS_RPN' = true??
print("TRAIN.HAS_RPN:%r"%cfg.TRAIN.HAS_RPN)----------'HAS_RPN' = false

import caffe
_init_caffe(cfg)

roidb, imdb = get_roidb(imdb_name, rpn_file=rpn_file)
output_dir = get_output_dir(imdb)
print 'Output will be saved to `{:s}`'.format(output_dir)
# Train Fast R-CNN
model_paths = train_net(solver, roidb, output_dir,
pretrained_model=init_model,
max_iters=max_iters)
# Cleanup all but the final model
for i in model_paths[:-1]:
os.remove(i)
fast_rcnn_model_path = model_paths[-1]
# Send Fast R-CNN model path over the multiprocessing queue
queue.put({'model_path': fast_rcnn_model_path})

大概就是改一下cfg然后调用train_net()。
然后我们看他调用的train_net()函数,是在train.py里,而train.py中的cfg不是从上面传过去的,而是直接从config.py中读取的(因为当我注释掉开头的from config import cfg后就找不到cfg了)!!
这就是说,上面这个函数中对cfg的更改啥用都没有!那么,你们是怎么跑起来的……
 
 
已邀请:

Flames

赞同来自:

我的平台是win10+cuda9.2+cudnn7,然后caffe是build好复制到faster-rcnn的python下的,没有make啥的,不过windows大家都这样吧。

要回复问题请先登录注册