tensorflow 中的 faster-rcnn 配置文件

faster-rcnn config file in tensorflow

我在 tensorflow 中使用 Google API for object detection 来训练和推断自定义数据集。

我想调整配置文件的参数以更好地适应我的样本(例如区域提案数量、ROI bbox 大小等)。 为此,我需要知道每个参数的作用。 不幸的是,配置文件(找到 here )没有注释或解释。 有些,例如 "num classes" 是不言自明的,但其他的则很棘手。

我发现 this file 有更多评论,但无法 'translate' 符合我的格式。

我想知道以下其中一项: 1. google的API配置文件各参数说明 要么 2. 'translation' 从官方的 faster-rcnn 到 google 的 API 配置 或者至少 3.全面回顾faster-rcnn参数技术细节(官方文章没有提供所有细节)

感谢您的帮助!

配置文件示例:

# Faster R-CNN with Resnet-101 (v1) configuration for MSCOCO Dataset.
# Users should configure the fine_tune_checkpoint field in the train config as
# well as the label_map_path and input_path fields in the train_input_reader and
# eval_input_reader. Search for "PATH_TO_BE_CONFIGURED" to find the fields that
# should be configured.

model {
  faster_rcnn {
    num_classes: 90
    image_resizer {
      keep_aspect_ratio_resizer {
    min_dimension: 600
    max_dimension: 1024
      }
    }
    feature_extractor {
      type: 'faster_rcnn_resnet101'
      first_stage_features_stride: 16
    }
    first_stage_anchor_generator {
      grid_anchor_generator {
    scales: [0.25, 0.5, 1.0, 2.0]
    aspect_ratios: [0.5, 1.0, 2.0]
    height_stride: 16
    width_stride: 16
      }
    }
    first_stage_box_predictor_conv_hyperparams {
      op: CONV
      regularizer {
    l2_regularizer {
      weight: 0.0
    }
      }
      initializer {
    truncated_normal_initializer {
      stddev: 0.01
    }
      }
    }
    first_stage_nms_score_threshold: 0.0
    first_stage_nms_iou_threshold: 0.7
    first_stage_max_proposals: 300
    first_stage_localization_loss_weight: 2.0
    first_stage_objectness_loss_weight: 1.0
    initial_crop_size: 14
    maxpool_kernel_size: 2
    maxpool_stride: 2
    second_stage_box_predictor {
      mask_rcnn_box_predictor {
    use_dropout: false
    dropout_keep_probability: 1.0
    fc_hyperparams {
      op: FC
      regularizer {
        l2_regularizer {
          weight: 0.0
        }
      }
      initializer {
        variance_scaling_initializer {
          factor: 1.0
          uniform: true
          mode: FAN_AVG
        }
      }
    }
      }
    }
    second_stage_post_processing {
      batch_non_max_suppression {
    score_threshold: 0.0
    iou_threshold: 0.6
    max_detections_per_class: 100
    max_total_detections: 300
      }
      score_converter: SOFTMAX
    }
    second_stage_localization_loss_weight: 2.0
    second_stage_classification_loss_weight: 1.0
  }
}

train_config: {
  batch_size: 1
  optimizer {
    momentum_optimizer: {
      learning_rate: {
    manual_step_learning_rate {
      initial_learning_rate: 0.0003
      schedule {
        step: 0
        learning_rate: .0003
      }
      schedule {
        step: 900000
        learning_rate: .00003
      }
      schedule {
        step: 1200000
        learning_rate: .000003
      }
    }
      }
      momentum_optimizer_value: 0.9
    }
    use_moving_average: false
  }
  gradient_clipping_by_norm: 10.0
  fine_tune_checkpoint: "PATH_TO_BE_CONFIGURED/model.ckpt"
  from_detection_checkpoint: true
  # Note: The below line limits the training process to 200K steps, which we
  # empirically found to be sufficient enough to train the pets dataset. This
  # effectively bypasses the learning rate schedule (the learning rate will
  # never decay). Remove the below line to train indefinitely.
  num_steps: 200000
  data_augmentation_options {
    random_horizontal_flip {
    }
  }
}

train_input_reader: {
  tf_record_input_reader {
    input_path: "PATH_TO_BE_CONFIGURED/mscoco_train.record"
  }
  label_map_path: "PATH_TO_BE_CONFIGURED/mscoco_label_map.pbtxt"
}

eval_config: {
  num_examples: 8000
  # Note: The below line limits the evaluation process to 10 evaluations.
  # Remove the below line to evaluate indefinitely.
  max_evals: 10
}

eval_input_reader: {
  tf_record_input_reader {
    input_path: "PATH_TO_BE_CONFIGURED/mscoco_val.record"
  }
  label_map_path: "PATH_TO_BE_CONFIGURED/mscoco_label_map.pbtxt"
  shuffle: false
  num_readers: 1
  num_epochs: 1
}

我找到了两个可以阐明配置文件的来源: 1. tensorflow github 中的文件夹 protos 涵盖了所有配置选项,并对每个选项进行了一些注释。您应该查看 faster_rcnn.proto 、 eval.proto 和 train.proto 以获得最常见的 2. Algorithmia 的 This 博客 post 全面介绍了在 Google 的 Open Images 数据集上下载、准备和训练更快的 RCNN 的所有步骤。 2/3-way through,有一些关于配置选项的讨论。