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

博主在使用tf-faster-rcnn进行数据集测试时遇到错误,由于测试是通过运行脚本文件train.sh启动,无法直接调试py文件。调试方法包括将sh文件中的参数添加到test.py运行时,并注意设置GPUID、数据集和网络模型参数。在执行过程中,需确保res101.yml与checkpoint文件路径正确,且在设置参数时避免使用单引号导致的报错问题。

近期利用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'>
<think>我们正在处理用户的问题:在Ubuntu终端中运行PyCharm.desktop文件时出现错误。 首先,我们需要理解.desktop文件是什么:它是Linux桌面环境中用于启动应用程序的快捷方式文件,通常位于/usr/share/applications/或~/.local/share/applications/目录下。 用户可能尝试在终端中执行类似以下命令:`./PyCharm.desktop`,但这通常不是正确的执行方式,因为.desktop文件不是可执行脚本。 常见的错误可能是权限问题,或者.desktop文件中的Exec字段指向的路径不正确。 根据用户提到的错误信息(虽然用户没有提供具体错误,但我们可以根据常见情况推测),我们给出以下步骤: 1. 确保.desktop文件具有可执行权限。 使用命令:`chmod +x PyCharm.desktop` 2. 通常,我们不会直接在终端中运行.desktop文件,而是通过文件管理器双击启动,或者通过应用程序菜单启动。如果需要在终端中启动PyCharm,我们应该直接运行PyCharm启动脚本,该脚本通常位于PyCharm安装目录的bin文件夹下,例如:`pycharm.sh`。 3. 如果用户确实想通过.desktop文件启动,可以尝试使用`gtk-launch`命令,但需要先将.desktop文件安装到用户或系统的applications目录中,然后使用其名称(不带路径)启动。例如: 将PyCharm.desktop文件复制到~/.local/share/applications/(如果当前用户使用)或/usr/share/applications/(需要root权限,系统所有用户使用) 然后运行:`gtk-launch PyCharm` (注意:这使用.desktop文件的基本名,即去掉后缀的文件名) 4. 检查.desktop文件的内容,特别是Exec字段,确保指向正确的可执行文件路径。可以使用文本编辑器查看。 5. 如果用户安装的是专业版,可能还需要激活,但这是另一个问题。 由于用户没有提供具体的错误信息,我们只能提供一般性建议。 另外,参考站内引用,用户之前可能遇到的是驱动问题,但这似乎不相关。因此,我们忽略这些引用。 现在,我们为用户提供详细的步骤。 注意:我们使用中文回答。</think>### 解决Ubuntu终端运行PyCharm.desktop文件报错的问题 在Ubuntu中直接运行`.desktop`文件通常会导致错误,因为这类文件是桌面入口文件而非可执行脚本。以下是完整的解决方案: #### 1. **检查文件权限** ```bash chmod +x PyCharm.desktop # 添加可执行权限 ``` 如果仍报错`Permission denied`,尝试: ```bash sudo chown $USER:$USER PyCharm.desktop # 更改文件所有者 ``` #### 2. **正确启动方式** **方法1:通过桌面环境启动** - 直接双击文件管理器中的`PyCharm.desktop`文件 - 或通过应用程序菜单搜索启动 **方法2:终端启动PyCharm程序** ```bash # 进入PyCharm安装目录(示例路径) cd ~/pycharm-2023.1/bin ./pycharm.sh # 执行启动脚本 ``` #### 3. **验证.desktop文件配置** 用文本编辑器检查`PyCharm.desktop`文件: ```ini [Desktop Entry] Type=Application Name=PyCharm Exec=/path/to/pycharm/bin/pycharm.sh # 关键!确保路径正确 Icon=/path/to/pycharm/bin/picon.png Categories=Development; ``` **重点检查**: - `Exec=`字段指向实际的`pycharm.sh`脚本路径 - 路径中不能包含`%`或`&`等特殊字符 #### 4. **修复无效的.desktop文件** 若文件损坏,可重新创建: ```bash echo "[Desktop Entry] Version=1.0 Type=Application Name=PyCharm Exec=/opt/pycharm/bin/pycharm.sh Icon=/opt/pycharm/bin/pycharm.png Terminal=false StartupWMClass=jetbrains-pycharm" > ~/.local/share/applications/jetbrains-pycharm.desktop ``` 更新桌面数据库: ```bash update-desktop-database ~/.local/share/applications ``` #### 5. **常见错误处理** - **报错"Unable to find .desktop file"**: 将文件移动到标准位置:`mv PyCharm.desktop ~/.local/share/applications/` - **报错"Not a valid .desktop file"**: 检查文件格式(必须使用`.ini`格式,UTF-8编码) - **依赖问题**: 安装必要依赖:`sudo apt install libfuse2`(PyCharm 2020.3+需要) > **关键提示**:Ubuntu默认禁止从非信任位置直接运行.desktop文件[^1],这是安全机制。建议始终通过应用程序菜单或主程序脚本启动
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值