faster-rcnn参数介绍

  • 最近想写的东西有点多,先随便写点吧,也让我屡屡思路——说白了就是太懒
model {
  faster_rcnn {
    num_classes: 3  //获取要识别的类数
    image_resizer {
      keep_aspect_ratio_resizer {
        min_dimension: 128  //最小的图片像素
        max_dimension: 1024  //最大的图片像素
      }
    }
    feature_extractor {  // 特征提取的配置
      type: "faster_rcnn_resnet101"
      first_stage_features_stride: 16  //rpn特征图的输出
    }
    first_stage_anchor_generator {  //构建Anchor
      grid_anchor_generator {  //构建过程二选一,是使用grid_anchor_generator还是ssd_anchor_generator 使用传入的参数对grid_anchor_generator进行初始化
        height_stride: 16  //锚点的高度 default = 16
        width_stride: 16  //锚点的高度 default = 16
        scales: 0.1
        scales: 0.25
        scales: 0.5
        scales: 0.75
        scales: 1.0
        scales: 2.0
        aspect_ratios: 0.5
        aspect_ratios: 1.0
        aspect_ratios: 1.5
        aspect_ratios: 2.0
      }
    }
    first_stage_box_predictor_conv_hyperparams {  //卷积神经网络的参数
      op: CONV
      regularizer {
        l2_regularizer {  //选择一种归一化方法
          weight: 0.00002
        }
      }
      initializer {
        truncated_normal_initializer { //选择一种初始化方法
          stddev: 0.00999999977648
        }
      }
    }
    first_stage_nms_score_threshold: 0.0 //用于第一层的nms的值 default=0.0
    first_stage_nms_iou_threshold: 0.66  //第一层中重叠率的阈值  default=0.7
    first_stage_max_proposals: 100  //多少个rpn提出的nms进入第二阶段 default=300
    first_stage_localization_loss_weight: 2.0  //第一阶段的定位的损失权重在反向中的比例  default=1.0
    first_stage_objectness_loss_weight: 1.0  第一阶段总物品判断的损失比例 default=1.0
    initial_crop_size: 14  //ROI 池化层上切取的输出的大小
    maxpool_kernel_size: 2  //在ROI pooling上切取的feature map上进行池化是的核的大小
    maxpool_stride: 2  // 上面的有了核的大小,现在是步长
    second_stage_box_predictor {  //第二个识别阶段的参数
      mask_rcnn_box_predictor {
        fc_hyperparams {
          op: FC
          regularizer {
            l2_regularizer {
              weight: 0.0000012
            }
          }
          initializer {  //初始化权重的方式
            variance_scaling_initializer {  //选择一种初始化方法
              factor: 1.0
              uniform: true
              mode: FAN_AVG
            }
          }
        }
        use_dropout: true
        dropout_keep_probability: 1.0
      }
    }
    second_stage_post_processing {  //在第二阶段的box的预测上的预处理
      batch_non_max_suppression {
        score_threshold: 0.300000011921  //前景box的最低阈值 default = 0.0
        iou_threshold: 0.600000023842  //进行融合是的IOU阈值 default = 0.6
        max_detections_per_class: 40  //每一个类别最多返回多少个检测 default = 100
        max_total_detections: 40  // 总共最多返回多少个 default = 100
      }
      score_converter: SOFTMAX  // Score converter to use
    }
    second_stage_localization_loss_weight: 2.0  //第二阶段定位的损失比例
    second_stage_classification_loss_weight: 1.0  //第二阶段的识别的损失比例
  }
}
train_config {
  batch_size: 1
  data_augmentation_options {  // 数据扩容的选项
    random_horizontal_flip {
    }
  }
  data_augmentation_options {
    random_crop_image {
    }
  }
  data_augmentation_options {
    random_adjust_brightness {
    }
  }
  optimizer {
    momentum_optimizer {
      learning_rate {
        manual_step_learning_rate {
          initial_learning_rate: 0.000300000014249
          schedule {
            step: 1
            learning_rate: 0.000300000014249
          }
          schedule {
            step: 900000
            learning_rate: 2.99999992421e-05
          }
          schedule {
            step: 1200000
            learning_rate: 3.00000010611e-06
          }
        }
      }
      momentum_optimizer_value: 0.8666625
    }
    use_moving_average: false  // default=false
  }
  gradient_clipping_by_norm: 10.0   如果大于0,在将梯度在这个值进行截断
  fine_tune_checkpoint: "/********/model.ckpt"
  // 如果是从一个检测(detection)模型进行恢复,则分类
  // 数量必须相等,如果不定则检查点要从一个识别(classification)模型恢复
  from_detection_checkpoint: true  //default=false
}

 num_classes: 该参数为必调项,与该模型设计需要检测的缺陷种类数量相同。
 image_resizer: 该参数为原始图像的缩放尺寸指示,通常有两种配置方式:
 keep_aspect_ratio_resizer:输入图像的大小是可变的,但是需要保持长宽比,
它有两个子参数:min_dimension和max_dimension,表示最小和最大维度,例如:
min_dimension :800
max_dimension:1000
image_resizer配置-固定长宽比
其含义是对于任一个图片,最短的边最小是800,最长的边最大是1024。举例:假设输入的图像尺寸是100 * 100,则会调整到800 * 800;输入为2000 * 2000,会调整为1024 * 1024,输入为900 * 1000,则首先会将短边调整到800,然后长边按比例调整到(800 / 900) * 1000。
 feature_extractor:表示用于特征提取的backbone网络的选型
First_stage_features_stride表示第一阶段特征提取步长,根据经验,训练时可以保持 16 不变,如果待检测目标比较密集且较小,则可以尝试将其修改为8,以降低特征提取步长,提高特征提取密度,从而提升模型效果。修改为4的话会导致及结算量巨大,而且容易导致训练的过度抖动,难以拟合,因此建议最小改成8。
 first_stage_anchor_generator:用于指示在RPN网络在feature map上生成锚点的策略。
对RPN的性能有较大影响,因为它直接影响着提取出来的候选框区域的数量、大小、密度等因素。如果生成的proposals太少,或者尺度不合理,则可能导致对于大小目标检测的失衡,或者对部分目标的漏检;而设置的太多,则又会增加训练难度,加大运算量,同时使得RPN网络拟合困难。因此,需要根据具体情况具体分析后,结合经验值进行合理的设定。
first_stage_anchor_generator {
grid_anchor_generator {
height_stride: 16
width_stride: 16
scales: 0.1
scales: 0.25
scales: 0.5
scales: 1.0
scales: 2.0
aspect_ratios: 0.5
aspect_ratios: 1.0
aspect_ratios: 1.5
aspect_ratios: 2.0
}
}
相邻的Anchor中心点横向间隔为16,纵向间隔也是16。
对于每一个anchor中心点,以它为中心围绕其生成20个anchor。这20个anchor的尺寸分别为0.1, 0.25,0.5,1.0,2.0;长宽比分别为0.5,1.0,1.5,2.0。也就是说,分别会以中心点坐标为中心,生成长0.1,宽0.10.5;长0.10.5,宽0.1 … … 的共20个anchor,所有的长宽分别是[scales] x [aspect_ratios]。
在模型训练时,可通过加密scales以及aspec_ratios来对RPN网络产生影响,但是要注意把握计算量、训练拟合难度、数据特征等因素质检的权衡,否则很容易导致模型的RPN网络不收敛,从而使得训练一直震荡。

你可能感兴趣的:(技术,算法,faster-rcnn)