Pycharm中:训练/测试神经网络由运行脚本文件(train.sh)启动,程序出错,如何进行debug操作?

近期利用tf-faster-rcnn跑自己的数据集.测试检测效果.

训练部分已经跑通,见博客:链接.

现在进行测试时出现错误.
想要进行Debug,但是由于它是运行的脚本文件进行的测试,无法直接运行某个py文件,进行调试,故卡在这里.

脚本文件如下(以测试脚本为例):

#!/bin/bash

set -x
set -e
#set -v

export PYTHONUNBUFFERED="True"

GPU_ID=$1
DATASET=$2
NET=$3

array=( $@ )
len=${#array[@]}
EXTRA_ARGS=${array[@]:3:$len}
EXTRA_ARGS_SLUG=${EXTRA_ARGS// /_}

case ${DATASET} in
  pascal_voc)
    TRAIN_IMDB="voc_2007_trainval"
    TEST_IMDB="voc_2007_test"
#    ITERS=70000   # 默认
    ITERS=110000
    ANCHORS="[8,16,32]"
    RATIOS="[0.5,1,2]"
    ;;
  pascal_voc_0712)
    TRAIN_IMDB="voc_2007_trainval+voc_2012_trainval"
    TEST_IMDB="voc_2007_test"
    ITERS=110000
    ANCHORS="[8,16,32]"
    RATIOS="[0.5,1,2]"
    ;;
  coco)
    TRAIN_IMDB="coco_2014_train+coco_2014_valminusminival"
    TEST_IMDB="coco_2014_minival"
    ITERS=490000
    ANCHORS="[4,8,16,32]"
    RATIOS="[0.5,1,2]"
    ;;
  *)
    echo "No dataset given"
    exit
    ;;
esac

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

set +x
if [[ ! -z  ${EXTRA_ARGS_SLUG}  ]]; then
  # 设定测试时使用的ckpt文件
  NET_FINAL=output/${NET}/${TRAIN_IMDB}/${EXTRA_ARGS_SLUG}/${NET}_faster_rcnn_iter_${ITERS}.ckpt
else
  NET_FINAL=output/${NET}/${TRAIN_IMDB}/default/${NET}_faster_rcnn_iter_${ITERS}.ckpt
fi
set -x

if [[ ! -z  ${EXTRA_ARGS_SLUG}  ]]; then
  CUDA_VISIBLE_DEVICES=${GPU_ID} time python ./tools/test_net.py \
    --imdb ${TEST_IMDB} \
    --model ${NET_FINAL} \
    --cfg experiments/cfgs/${NET}.yml \
    --tag ${EXTRA_ARGS_SLUG} \
    --net ${NET} \
    --set ANCHOR_SCALES ${ANCHORS} ANCHOR_RATIOS ${RATIOS} \
          ${EXTRA_ARGS}
else
  CUDA_VISIBLE_DEVICES=${GPU_ID} time python ./tools/test_net.py \
    --imdb ${TEST_IMDB} \
    --model ${NET_FINAL} \
    --cfg experiments/cfgs/${NET}.yml \
    --net ${NET} \
    --set ANCHOR_SCALES ${ANCHORS} ANCHOR_RATIOS ${RATIOS} \
          ${EXTRA_ARGS}
fi

运行测试命令,终端执行:
./experiments/scripts/test_faster_rcnn.sh 0 pascal_voc res101
运行test_faster_rcnn.sh文件,并设定三个参数 GPUID= 0, 数据集:pascal_voc, 网络模型: res101

调试方法:将sh文件中的以下参数,加入到test.py运行时Edit Configurations中的Parameters中.
设定以下参数

    --imdb ${TEST_IMDB} \
    --model ${NET_FINAL} \
    --cfg experiments/cfgs/${NET}.yml \
    --net ${NET} \
    --set ANCHOR_SCALES ${ANCHORS} ANCHOR_RATIOS ${RATIOS} \
          ${EXTRA_ARGS}

实际加入参数为:

--imdb voc_2007_test --model ../output/res101/voc_2007_trainval/default/res101_faster_rcnn_iter_110000.ckpt --cfg ../experiments/cfgs/res101.yml --net res101 --set ANCHOR_SCALES [8,16,32] ANCHOR_RATIOS [0.5,1,2]

其中需要注意:
路径问题:
1.res101.yml文件与110000.ckpt文件的相对路径写对;
2.–set 设置中 ANCHOR_SCALES '[8,16,32]' 是错的,注意没有单引号;
若有单引号,会出现如下报错:

 type <class 'str'> does not match original type <class 'list'>

你可能感兴趣的:(深度学习)