tf-faster-rcnn调试笔记(1)

Posted by Kiri on July 17, 2018

tf-faster-rcnn调试笔记(1)

trainval_net.py调试笔记

sh文件修改:

#!/bin/bash

set -x
set -e

export PYTHONUNBUFFERED="True"

NET=vgg1

LOG="experiments/logs/vgg16_voc_2007_trainval__vgg16.txt.`date +'%Y-%m-%d_%H-%M-%S'`"
exec &> >(tee -a "$LOG")
echo Logging output to "$LOG"

set +x
NET_FINAL=output/vgg16/voc_2007_trainval/default/vgg16_faster_rcnn_iter_70000.ckpt
set -x

if [ ! -f ${NET_FINAL}.index ]; then
   CUDA_VISIBLE_DEVICES=0 time python ./tools/trainval_net.py \
     --weight data/imagenet_weights/vgg16.ckpt \
     --imdb voc_2007_trainval \
     --imdbval voc_2007_test \
     --iters 70000 \
     --cfg experiments/cfgs/vgg16.yml \
     --net vgg16 \
     --set ANCHOR_SCALES [8,16,32] ANCHOR_RATIOS [0.5,1,2] \
      TRAIN.STEPSIZE [50000]
fi

./experiments/scripts/test_faster_rcnn.sh $@

pycharm中设置输入参数:

--weight
/home/lab/tf-faster-rcnn/data/imagenet_weights/vgg16.ckpt
--imdb
voc_2007_trainval
--imdbval
voc_2007_test
--iters
70000
--cfg
/home/lab/tf-faster-rcnn/experiments/cfgs/vgg16.yml
--net
vgg1
--set
ANCHOR_SCALES
'[8,16,32]'
ANCHOR_RATIOS
'[0.5,1,2]'
TRAIN.STEPSIZE
'[50000]'

avatar

Error:

/usr/bin/python2.7 /home/lab/tf-faster-rcnn/tools/trainval_net.py --weight /home/lab/tf-faster-rcnn/data/imagenet_weights/vgg16.ckpt --imdb voc_2007_trainval --imdbval voc_2007_test --iters 70000 --cfg /home/lab/tf-faster-rcnn/experiments/cfgs/vgg16.yml --net vgg16 --set ANCHOR_SCALES '[8,16,32]' ANCHOR_RATIOS '[0.5,1,2]' TRAIN.STEPSIZE '[50000]'
/usr/local/lib/python2.7/dist-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
  from ._conv import register_converters as _register_converters
Traceback (most recent call last):
  File "/home/lab/tf-faster-rcnn/tools/trainval_net.py", line 97, in <module>
    cfg_from_list(args.set_cfgs)
  File "/home/lab/tf-faster-rcnn/tools/../lib/model/config.py", line 386, in cfg_from_list
    type(value), type(d[subkey]))
AssertionError: type <type 'str'> does not match original type <type 'list'>
Called with args:
Namespace(cfg_file='/home/lab/tf-faster-rcnn/experiments/cfgs/vgg16.yml', imdb_name='voc_2007_trainval', imdbval_name='voc_2007_test', max_iters=70000, net='vgg16', set_cfgs=['ANCHOR_SCALES', "'[8,16,32]'", 'ANCHOR_RATIOS', "'[0.5,1,2]'", 'TRAIN.STEPSIZE', "'[50000]'"], tag=None, weight='/home/lab/tf-faster-rcnn/data/imagenet_weights/vgg16.ckpt')

Process finished with exit code 1

Debug:

/usr/bin/python2.7 /home/lab/pycharm-community-2018.1.3/helpers/pydev/pydevd.py --multiproc --qt-support=auto --client 127.0.0.1 --port 36633 --file /home/lab/tf-faster-rcnn/tools/trainval_net.py --weight /home/lab/tf-faster-rcnn/data/imagenet_weights/vgg16.ckpt --imdb voc_2007_trainval --imdbval voc_2007_test --iters 70000 --cfg /home/lab/tf-faster-rcnn/experiments/cfgs/vgg16.yml --net vgg16 --set ANCHOR_SCALES '[8,16,32]' ANCHOR_RATIOS '[0.5,1,2]' TRAIN.STEPSIZE '[50000]'
pydev debugger: process 26710 is connecting

Connected to pydev debugger (build 181.4892.64)
/usr/local/lib/python2.7/dist-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
  from ._conv import register_converters as _register_converters
Called with args:
Namespace(cfg_file='/home/lab/tf-faster-rcnn/experiments/cfgs/vgg16.yml', imdb_name='voc_2007_trainval', imdbval_name='voc_2007_test', max_iters=70000, net='vgg16', set_cfgs=['ANCHOR_SCALES', "'[8,16,32]'", 'ANCHOR_RATIOS', "'[0.5,1,2]'", 'TRAIN.STEPSIZE', "'[50000]'"], tag=None, weight='/home/lab/tf-faster-rcnn/data/imagenet_weights/vgg16.ckpt')
Traceback (most recent call last):
  File "/home/lab/pycharm-community-2018.1.3/helpers/pydev/pydevd.py", line 1664, in <module>
    main()
  File "/home/lab/pycharm-community-2018.1.3/helpers/pydev/pydevd.py", line 1658, in main
    globals = debugger.run(setup['file'], None, None, is_module)
  File "/home/lab/pycharm-community-2018.1.3/helpers/pydev/pydevd.py", line 1068, in run
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "/home/lab/tf-faster-rcnn/tools/trainval_net.py", line 97, in <module>
    cfg_from_list(args.set_cfgs)
  File "/home/lab/tf-faster-rcnn/tools/../lib/model/config.py", line 386, in cfg_from_list
    type(value), type(d[subkey]))
AssertionError: type <type 'str'> does not match original type <type 'list'>

Process finished with exit code 1

解决上述报错,对main函数中的相关代码屏蔽后:

if __name__ == '__main__':
  args = parse_args()

  print('Called with args:')
  print(args)

  #if args.cfg_file is not None:
  #  cfg_from_file(args.cfg_file)
  #if args.set_cfgs is not None:
  #  cfg_from_list(args.set_cfgs)

  print('Using config:')
  pprint.pprint(cfg)

  np.random.seed(cfg.RNG_SEED)

  # train set
  imdb, roidb = combined_roidb(args.imdb_name)
  print('{:d} roidb entries'.format(len(roidb)))

  # output directory where the models are saved
  output_dir = get_output_dir(imdb, args.tag)
  print('Output will be saved to `{:s}`'.format(output_dir))

  # tensorboard directory where the summaries are saved during training
  tb_dir = get_output_tb_dir(imdb, args.tag)
  print('TensorFlow summaries will be saved to `{:s}`'.format(tb_dir))

  # also add the validation set, but with no flipping images
  orgflip = cfg.TRAIN.USE_FLIPPED
  cfg.TRAIN.USE_FLIPPED = False
  _, valroidb = combined_roidb(args.imdbval_name)
  print('{:d} validation roidb entries'.format(len(valroidb)))
  cfg.TRAIN.USE_FLIPPED = orgflip

  # load network
  if args.net == 'vgg16':
    net = vgg16()
  elif args.net == 'res50':
    net = resnetv1(num_layers=50)
  elif args.net == 'res101':
    net = resnetv1(num_layers=101)
  elif args.net == 'res152':
    net = resnetv1(num_layers=152)
  elif args.net == 'mobile':
    net = mobilenetv1()
  else:
    raise NotImplementedError

  train_net(net, imdb, roidb, valroidb, output_dir, tb_dir,
            pretrained_model=args.weight,
            max_iters=args.max_iters)

运行截图: avatar

test_net.py调试笔记

sh文件修改:

#!/bin/bash

set -x
set -e

export PYTHONUNBUFFERED="True"

NET=vgg16

LOG="experiments/logs/test_vgg16_voc_2007_trainval.txt.`date +'%Y-%m-%d_%H-%M-%S'`"
exec &> >(tee -a "$LOG")
echo Logging output to "$LOG"

set +x
NET_FINAL=output/vgg16/voc_2007_trainval/default/vgg16_faster_rcnn_iter_70000.ckpt
set -x

CUDA_VISIBLE_DEVICES=0 time python ./tools/test_net.py \
  --imdb voc_2007_trainval \
  --model ${NET_FINAL} \
  --cfg experiments/cfgs/vgg16.yml \
  --net vgg16 \
  --set ANCHOR_SCALES [8,16,32] ANCHOR_RATIOS [0.5,1,2]

pycharm中设置输入参数:

--imdb
voc_2007_test
--model
/home/lab/tf-faster-rcnn/output/vgg16/voc_2007_trainval/default/vgg16_faster_rcnn_iter_70000.ckpt
--cfg
/home/lab/tf-faster-rcnn/experiments/cfgs/vgg16.yml
--net
vgg16
--set
ANCHOR_SCALES
'[8,16,32]'
ANCHOR_RATIOS
'[0.5,1,2]'

屏蔽main函数中如下代码:

#if args.cfg_file is not None:
#  cfg_from_file(args.cfg_file)
#if args.set_cfgs is not None:
#  cfg_from_list(args.set_cfgs)

运行截图:

avatar