faster_rcnn_inception_v2_coco.config的解析

參考:
https://blog.csdn.net/wubingwei12/article/details/88184140

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網絡擬合困難。因此,需要根據具體情況具體分析後,結合經驗值進行合理的設定。
在模型訓練時,可通過加密scales以及aspec_ratios來對RPN網絡產生影響,但是要注意把握計算量、訓練擬合難度、數據特徵等因素質檢的權衡,否則很容易導致模型的RPN網絡不收斂,從而使得訓練一直震盪。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章