title: Tensorflow object detection pipeline and configuration
body: <p>There is a <a href="https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md" rel="nofollow noreferrer">ssd_mobilenet_v1_0.75_depth_coco</a> model available that I'd like to retrain, because I don't need all 90 classes (need only one) and I'll use it on ARM CPU so I am trying to make it faster.</p>
  
  <p>I am confused about configuration file. In the archive there is a file pipeline.config and I thought about using it with ObjectDetection Api. I have some questions:</p>
  
  <ol>
  <li>What can be changed in that config file?</li>
  <li>Can I change parameters of feature_extractor also? Isn't this part frozen and the process changes classification layer only?</li>
  <li>What training parameters are most important if I want to train it on CPU with 16GB RAM? Any reasonable values for batch_size and num_steps.</li>
  </ol>
  
  <p><strong>EDIT</strong></p>
  
  <pre><code>model {
    ssd {
      num_classes: 1
      box_coder {
        faster_rcnn_box_coder {
          y_scale: 10.0
          x_scale: 10.0
          height_scale: 5.0
          width_scale: 5.0
        }
      }
      matcher {
        argmax_matcher {
          matched_threshold: 0.5
          unmatched_threshold: 0.5
          ignore_thresholds: false
          negatives_lower_than_unmatched: true
          force_match_for_each_row: true
        }
      }
      similarity_calculator {
        iou_similarity {
        }
      }
      anchor_generator {
        ssd_anchor_generator {
          num_layers: 6
          min_scale: 0.2
          max_scale: 0.95
          aspect_ratios: 1.0
          aspect_ratios: 2.0
          aspect_ratios: 0.5
          aspect_ratios: 3.0
          aspect_ratios: 0.3333
        }
      }
      image_resizer {
        fixed_shape_resizer {
          height: 300
          width: 300
        }
      }
      box_predictor {
        convolutional_box_predictor {
          min_depth: 0
          max_depth: 0
          num_layers_before_predictor: 0
          use_dropout: false
          dropout_keep_probability: 0.8
          kernel_size: 1
          box_code_size: 4
          apply_sigmoid_to_scores: false
          conv_hyperparams {
            activation: RELU_6,
            regularizer {
              l2_regularizer {
                weight: 0.00004
              }
            }
            initializer {
              truncated_normal_initializer {
                stddev: 0.03
                mean: 0.0
              }
            }
            batch_norm {
              train: true,
              scale: true,
              center: true,
              decay: 0.9997,
              epsilon: 0.001,
            }
          }
        }
      }
     feature_extractor {
        type: "ssd_mobilenet_v1"
        depth_multiplier: 0.75
        min_depth: 16
        conv_hyperparams {
          regularizer {
            l2_regularizer {
              weight: 3.99999989895e-05
            }
          }
          initializer {
            truncated_normal_initializer {
              mean: 0.0
              stddev: 0.0299999993294
            }
          }
          activation: RELU_6
          batch_norm {
            decay: 0.97000002861
            center: true
            scale: true
            epsilon: 0.0010000000475
            train: true
          }
        }
        override_base_feature_extractor_hyperparams: true
      }
      loss {
        classification_loss {
          weighted_sigmoid {
          }
        }
        localization_loss {
          weighted_smooth_l1 {
          }
        }
        hard_example_miner {
          num_hard_examples: 3000
          iou_threshold: 0.99
          loss_type: CLASSIFICATION
          max_negatives_per_positive: 3
          min_negatives_per_image: 0
        }
        classification_weight: 1.0
        localization_weight: 1.0
      }
      normalize_loss_by_num_matches: true
      post_processing {
        batch_non_max_suppression {
          score_threshold: 1e-8
          iou_threshold: 0.6
          max_detections_per_class: 100
          max_total_detections: 100
        }
        score_converter: SIGMOID
      }
    }
  }
  train_config {
    batch_size: 24
    data_augmentation_options {
      random_horizontal_flip {
      }
    }
    data_augmentation_options {
      ssd_random_crop {
      }
    }
    optimizer {
      rms_prop_optimizer: {
        learning_rate: {
          exponential_decay_learning_rate {
            initial_learning_rate: 0.004
            decay_steps: 5000
            decay_factor: 0.95
          }
        }
        momentum_optimizer_value: 0.9
        decay: 0.9
        epsilon: 1.0      
      }
      use_moving_average: false
    }
    fine_tune_checkpoint: "/content/pretrained_model/model.ckpt"
    from_detection_checkpoint: true
    load_all_detection_checkpoint_vars: false
    num_steps: 40000
  }
  train_input_reader {
    label_map_path: "/content/classes.pbtxt"
    tf_record_input_reader {
      input_path: "/content/gdrive/My Drive/coco_train_300.record"
    }
  }
  eval_config {
    num_examples: 2693
    metrics_set: "coco_detection_metrics"
    use_moving_averages: false
    num_visualizations: 20
  }
  eval_input_reader {
    label_map_path: "/content/classes.pbtxt"
    shuffle: false
    num_readers: 1
    tf_record_input_reader {
      input_path: "/content/gdrive/My Drive/coco_val_300.record"
    }
  }
  </code></pre>
  
  <p>It learns, but after 40k steps loss is still at 5. Input dataset is resized to 300x300.</p>
  
  <p><a href="https://i.stack.imgur.com/CdHTk.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/CdHTk.jpg" alt="enter image description here"></a></p>