faster-rcnn之shell脚本开始训练:./experiments/scripts/faster_rcnn_alt_opt.sh0zfpascal_voc(代码片段)

sloanqin sloanqin     2022-12-14     639

关键词:

【说明】:欢迎加入:faster-rcnn 交流群 238138700,这是作者提供的一个运行训练的脚本,我们来看看这个脚本做了什么工作,如果要运行需要输入哪些参数;

【使用】:如果要训练一个网络,可以在shell中输入:./experiments/scripts/faster_rcnn_alt_opt.sh 0 ZF pascal_voc

这样就指定了gpu编号,网络名称,数据集名称三个参数,就可以了


#!/bin/bash
# Usage:
# ./experiments/scripts/faster_rcnn_alt_opt.sh GPU NET DATASET [options args to train,test_net.py]
# DATASET is only pascal_voc for now
#
# Example:
# ./experiments/scripts/faster_rcnn_alt_opt.sh 0 VGG_CNN_M_1024 pascal_voc \\
#   --set EXP_DIR foobar RNG_SEED 42 TRAIN.SCALES "[400, 500, 600, 700]"

set -x
set -e

export PYTHONUNBUFFERED="True"

GPU_ID=$1
NET=$2
NET_lc=$NET,,
DATASET=$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"
    PT_DIR="pascal_voc"
    ITERS=40000
    ;;
  coco)
    echo "Not implemented: use experiments/scripts/faster_rcnn_end2end.sh for coco"
    exit
    ;;
  *)
    echo "No dataset given"
    exit
    ;;
esac

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

time ./tools/train_faster_rcnn_alt_opt.py --gpu $GPU_ID \\
  --net_name $NET \\
  --weights data/imagenet_models/$NET.v2.caffemodel \\
  --imdb $TRAIN_IMDB \\
  --cfg experiments/cfgs/faster_rcnn_alt_opt.yml \\
  $EXTRA_ARGS

set +x
NET_FINAL=`grep "Final model:" $LOG | awk 'print $3'`
set -x

time ./tools/test_net.py --gpu $GPU_ID \\
  --def models/$PT_DIR/$NET/faster_rcnn_alt_opt/faster_rcnn_test.pt \\
  --net $NET_FINAL \\
  --imdb $TEST_IMDB \\
  --cfg experiments/cfgs/faster_rcnn_alt_opt.yml \\
  $EXTRA_ARGS


按行解析:

set -x

set -e

关于set可以参考链接点击打开链接,set -x :将后面执行的命令输出到屏幕,便于调试;set -e:如果命令返回值不是0则退出shell;


后面的这一段就是输入3个参数

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


这一段没去纠结细节,反正大意就是获取剩下的参数,放在EXTRA_ARGS变量中
array=( $@ )
len=$#array[@]
EXTRA_ARGS=$array[@]:3:$len
EXTRA_ARGS_SLUG=$EXTRA_ARGS// /_


然后就是根据出入的参数dataset,使用case语句选择执行,这里有3个分支,分别是pascal_voc,coco和其他

case $DATASET in
  pascal_voc)
    TRAIN_IMDB="voc_2007_trainval"
    TEST_IMDB="voc_2007_test"
    PT_DIR="pascal_voc"
    ITERS=40000
    ;;
  coco)
    echo "Not implemented: use experiments/scripts/faster_rcnn_end2end.sh for coco"
    exit
    ;;
  *)
    echo "No dataset given"
    exit
    ;;
esac


再下面就是调用python脚本执行训练和测试了:

time ./tools/train_faster_rcnn_alt_opt.py --gpu $GPU_ID \\
  --net_name $NET \\
  --weights data/imagenet_models/$NET.v2.caffemodel \\
  --imdb $TRAIN_IMDB \\
  --cfg experiments/cfgs/faster_rcnn_alt_opt.yml \\
  $EXTRA_ARGS


set +x
NET_FINAL=`grep "Final model:" $LOG | awk 'print $3'`
set -x


time ./tools/test_net.py --gpu $GPU_ID \\
  --def models/$PT_DIR/$NET/faster_rcnn_alt_opt/faster_rcnn_test.pt \\
  --net $NET_FINAL \\
  --imdb $TEST_IMDB \\
  --cfg experiments/cfgs/faster_rcnn_alt_opt.yml \\
  $EXTRA_ARGS


从上面可以看出,作者搞这么麻烦,其实一句话调用train_faster_rcnn_alt_opt.py就得了,费这么大劲,无语

比如训练,直接使用python脚本的话,如下输入:

./tools/train_faster_rcnn_alt_opt.py --gpu 0 --net_name ZF --weights data/imagenet_models/ZF.v2.caffemodel --imdb voc_2007_trainval --cfg experiments/cfgs/faster_rcnn_alt_opt.yml






faster-rcnn之训练数据是如何准备的:imdb和roidb的产生(代码片段)

【说明】:欢迎加入:faster-rcnn交流群238138700,关于imdb和roidb的生成都是在函数train_rpn的中,所以我们从这个函数开始,逐个跟进看如何执行得到我们需要的imdb和roidb:deftrain_rpn(queue=None,imdb_name=None,in... 查看详情

折腾faster-rcnn(三)--训练篇

...(空格分隔):Linux深度学习前面,我们已经成功跑起来faster-rcnn,并且自己动手训练了PascalVOC2007图像集,但是笔者接下来继续沿着官方文件跑PascalVOC2012,训练到第二阶段的某个点,程序就开始报错退出。查看logs发现,找不到... 查看详情

深度学习和目标检测系列教程10-300:通过torch训练第一个faster-rcnn模型(代码片段)

@Author:Runsen上次介绍了Faster-RCNN模型,那么今天就开始训练第一个Faster-RCNN模型。本文将展示如何在水果图像数据集上使用Faster-RCNN模型。代码的灵感来自此处的Pytorch文档教程和Kagglehttps://pytorch.org/tutorials/intermediate/torc... 查看详情

为啥faster-rcnn端到端训练只做近似?

】为啥faster-rcnn端到端训练只做近似?【英文标题】:Whyfaster-rcnnendtoendtrainingonlymakesapproximation?为什么faster-rcnn端到端训练只做近似?【发布时间】:2018-05-0107:07:05【问题描述】:在更快的rcnn(https://arxiv.org/abs/1506.01497)中,有两种... 查看详情

faster-rcnn训练自己的数据集

...n.net/sinat_30071459/article/details/50723212按照下面这个博客修改faster-rcnn源码,训练自己的数据:http://blog.csdn.net/sinat_30071459/article/details/51332084训练自己的数据的时候如果提示assert(boxes[:,2] 查看详情

如何在faster-rcnn上训练自己的数据集

参考技术A不要发私信 查看详情

shell脚本之tr命令使用

...!‘|tr"A-Z""a-z"helloworld!!!这里的"A-Z"、"a-z"都表示集合,shell脚本中定义集合类型很简单,即指定集合序列即可,但是对于上边的情形,不得非输入所有集合类型,可以通过“开始字符-结束字符”方式进行集合定义。使用tr命... 查看详情

faster-rcnn之基于roidbget_minibatch(数据准备操作)(代码片段)

【说明】:欢迎加入:faster-rcnn交流群238138700,这个函数,输入是roidb,根据roidb中给出的图片的信息,读取图片的源文件,然后整理成blobs,供给网络训练使用;defget_minibatch(roidb,num_classes):这个... 查看详情

在自定义数据集上训练 Faster-RCNN 模型时加载检查点

】在自定义数据集上训练Faster-RCNN模型时加载检查点【英文标题】:LoadingcheckpointswhiletrainingaFaster-RCNNmodelonacustomdataset【发布时间】:2021-12-1002:16:09【问题描述】:我正在尝试使用Faster-RCNN架构(准确地说是FasterR-CNNResNet50V1640x640,... 查看详情

faster-rcnn训练自己的数据集——备忘

...。刚刚调通,记下来,以备以后自己少走些弯路。配置py-faster-rcnn没什么好记的,文档也很多。先说下数据集,需要准备三个文件夹:Annotations  Images &n 查看详情

shell脚本之购物车清单脚本(代码片段)

想要提升shell脚本能力,练习必不可少。真正有效的练习方法之一就是穷举法。所谓的穷举法,就是把一个脚本练到极致。任何脚本都讲究循序渐进,先从最简单的功能开始,逐渐增加难度。在同一个难度的级别&#... 查看详情

shell脚本之购物车清单脚本(代码片段)

想要提升shell脚本能力,练习必不可少。真正有效的练习方法之一就是穷举法。所谓的穷举法,就是把一个脚本练到极致。任何脚本都讲究循序渐进,先从最简单的功能开始,逐渐增加难度。在同一个难度的级别&#... 查看详情

转载faster-rcnn+zf用自己的数据集训练模型(matlab版本)

...以看http://blog.csdn.net/sinat_30071459/article/details/50723212) Faster-RCNN源码下载地址:Matlab版本:https://github.com/ShaoqingRen/faster_rcnnPyt 查看详情

pytorch Faster-RCNN 的验证损失

】pytorchFaster-RCNN的验证损失【英文标题】:ValidationlossforpytorchFaster-RCNN【发布时间】:2020-06-0522:10:21【问题描述】:我目前正在使用从pytorch预训练的Faster-RCNN模型(例如在torchvisiontutorial中)的迁移学习对自定义数据集进行对象检... 查看详情

windows下使用自己制作的数据集训练faster-rcnn(tensorflow版)用于目标检测

步骤一下载配置windows下tensorflow版faster-rcnn,参考博客:windows10下运行tensorflow版的faster-Rcnn步骤二制作自己的数据集参考博客:http://blog.csdn.net/u011574296/article/details/78953681步骤三用你的Annotations,Imag 查看详情

深度学习和目标检测系列教程11-300:小麦数据集训练faster-rcnn模型(代码片段)

@Author:Runsen上次训练的Faster-RCNN的数据格式是xml和jpg图片提供,在很多Object-Detection中,数据有的是csv格式,数据集来源:https://www.kaggle.com/c/global-wheat-detectionwidth和heigth是图片的长和宽,b 查看详情

shell脚本之for循环

#!/bin/bashechowhatprogramminglanuagesdoyouknow?foriinpythonC#javarubyperldoechoiknow:$idone  [[email protected]Desktop]#./for.shwhatprogramminglanuagesdoyouknow?iknow:pythoniknow:C#iknow:javaikn 查看详情

shell脚本之while

#!/bin/bashechoifnumsmallerthan5,itwillcontinuenum=0while[$num-lt5]doechonowthenumis$numletnum++done  [[email protected]Desktop]#./while.shifnumsmallerthan5,itwillcontinuenowthenumis0nowthenumis1 查看详情