deeplabv3+ 论文相关参数 代码解析 Flip MS SC random crop

目录

 

1.Flip

2. multi_scale input eval

3.SC 在aspp与deconv采用seperate conv

multi_scale 的参数传递是:

另外,如果batch size改变的话, 


1.Flip

input_preprocess.py

_PROB_OF_FLIP = 0.5

该参数控制flip,如果为1,那么进入的图像一定会被flip

如果为0.5,那么是否被flip,概率是50%

如果为0,那么只有随机数到0.才会被flip,也就是说等于负数肯定是不会被flip的。

  random_value = tf.random_uniform([])
  is_flipped = tf.less_equal(random_value, prob)
  outputs = tf.cond(is_flipped, flip, lambda: tensor_list)

这里random_value [0,1)

less_equal是<=

所以如果不想flip必须用负数

2. multi_scale input eval

多尺度输入是eval模块的一个能够大幅度提升准确率的操作。

该参数的控制在eval.py里面,可以通过参数传递控制,该参数是57行:

# Change to [0.5, 0.75, 1.0, 1.25, 1.5, 1.75] for multi-scale test.
flags.DEFINE_multi_float('eval_scales', [1.0],
                         'The scales to resize images for evaluation.')

可以通过运行eval.py文件传递参数控制:

python "${WORK_DIR}"/eval.py \
  --logtostderr \
  --eval_split="val" \
  --model_variant="xception_65" \
  --atrous_rates=6 \
  --atrous_rates=12 \
  --atrous_rates=18 \
  --output_stride=16 \
  --decoder_output_stride=4 \
  --eval_crop_size="513,513" \
  --checkpoint_dir="${TRAIN_LOGDIR}" \
  --eval_logdir="${EVAL_LOGDIR}" \
  --dataset_dir="${PASCAL_DATASET}" \
  --max_number_of_evaluations=1 \
  --eval_scales=[0.5,0.25,1.75]

官方网站https://github.com/tensorflow/models/blob/master/research/deeplab/g3doc/model_zoo.md得到了三个官方参数:

--eval_scales=[0.5:0.25:1.75]

当然你可以选择:

[0.5, 0.75, 1.0, 1.25, 1.5, 1.75] 

3.SC 在aspp与deconv采用seperate conv

该参数由model_options在model.py里面决定

 

model_common的实例化是在train.py里面:

  model_options = common.ModelOptions(
      outputs_to_num_classes=outputs_to_num_classes,
      crop_size=[int(sz) for sz in FLAGS.train_crop_size],
      atrous_rates=FLAGS.atrous_rates,
      output_stride=FLAGS.output_stride)

在common里面他默认是true:

flags.DEFINE_boolean('decoder_use_separable_conv', True,
                     'Employ separable convolution for decoder or not.')

所以如果你要改,那么你就要生成时传递false。

multi_scale 的参数传递是:

--eval_scales=0.5 
--eval_scales=0.75 
--eval_scales=1.0 
--eval_scales=1.25 
--eval_scales=1.5 
--eval_scales=1.75 

根据https://github.com/tensorflow/models/issues/4313

另外,如果batch size改变的话, 

--learning_rate_decay_step=4000也许应该相应的修改,因为,如果batch size 减小,那么同样的step,epoch就会减小,所以为了保持相应的epoch,需要增加step的数量,那么就会导致,衰减过快,最后learning rate很低,从而不起作用。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值