CS663 | computer vision
  • outline
  • projects
  • syllabus
  • links

Object Detection API (TF2+): The important Configuration File

 

The following is an example of a configuration file used by Object Detection API (TF2+). It is used for training an EfficientDet D0

 

I have highlighted in

  • YELLOW the configuration values related to the model,   

  • PURPLE dealing with training configuration values

  • GREEN dealing with evaluation configuration values

 

   
 # SSD with EfficientNet-b0 + BiFPN feature extractor,
 # shared box predictor and focal loss (a.k.a EfficientDet-d0).
 # See EfficientDet, Tan et al, https://arxiv.org/abs/1911.09070
 # See Lin et al, https://arxiv.org/abs/1708.02002
 # Trained on COCO, initialized from an EfficientNet-b0 checkpoint.
 #
 # Train on TPU-8
model {
      ssd {
           inplace_batchnorm_update: true
           freeze_batchnorm: false
           num_classes: 1
           add_background_class: false
           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
                    use_matmul_gather: true
                }
            }

            similarity_calculator {
                iou_similarity {
                }
            }

            encode_background_as_zeros: true

            anchor_generator {
                multiscale_anchor_generator {
                    min_level: 3
                    max_level: 7
                    anchor_scale: 4.0
                    aspect_ratios: [1.0, 2.0, 0.5]
                    scales_per_octave: 3
                }
             }

            image_resizer {
                keep_aspect_ratio_resizer {
                    min_dimension: 512
                    max_dimension: 512
                    pad_to_max_dimension: true
                }
             }

            box_predictor {
                weight_shared_convolutional_box_predictor {
                    depth: 64
                    class_prediction_bias_init: -4.6
                    conv_hyperparams {
                      force_use_bias: true
                      activation: SWISH
                      regularizer {
                        l2_regularizer {
                           weight: 0.00004
                        }
                       }
                      initializer {
                        random_normal_initializer {
                          stddev: 0.01
                          mean: 0.0
                       }
                    }
                    batch_norm {
                      scale: true
                      decay: 0.99
                      epsilon: 0.001
                    }
                }

                num_layers_before_predictor: 3
                kernel_size: 3
                use_depthwise: true
               }
             }
               
            feature_extractor {
                    type: 'ssd_efficientnet-b0_bifpn_keras'
                    bifpn {
                       min_level: 3
                       max_level: 7
                       num_iterations: 3
                       num_filters: 64
                    }

                    conv_hyperparams {
                       force_use_bias: true
                       activation: SWISH
                       regularizer {
                          l2_regularizer {
                             weight: 0.00004
                       }
                     }
 
                    initializer {
                       truncated_normal_initializer {
                          stddev: 0.03
                          mean: 0.0
                        }
                     }
                    batch_norm {
                       scale: true,
                       decay: 0.99,
                       epsilon: 0.001,
                    }
                }
           }
                  
          loss {
               classification_loss {
                    weighted_sigmoid_focal {
                       alpha: 0.25
                       gamma: 1.5
                    }
                }
                localization_loss {
                    weighted_smooth_l1 {
                    }
                 }
                classification_weight: 1.0
                localization_weight: 1.0
            }


           normalize_loss_by_num_matches: true
           normalize_loc_loss_by_codesize: true

           post_processing {
                batch_non_max_suppression {
                    score_threshold: 1e-8
                    iou_threshold: 0.5
                    max_detections_per_class: 100
                    max_total_detections: 100
                }
                score_converter: SIGMOID
            }
       }          
   }

train_config: {
      fine_tune_checkpoint: "/home/farstrider/TensorFlow/FineTunedModels/Retrained_On_FLIR_One_Data_One_Class/checkpoint/ckpt-0"
      # THIS SHOULD WORK TOO -> fine_tune_checkpoint: "/home/farstrider/TensorFlow/SavedTraining/EfficientNet_D0_Retraining_On_FLIR_One_Data/ckpt-41"
      fine_tune_checkpoint_version: V2
      fine_tune_checkpoint_type: "detection"
      batch_size: 16
      sync_replicas: true
      startup_delay_steps: 0
      replicas_to_aggregate: 8
      use_bfloat16: true
      num_steps: 40000
      data_augmentation_options {
             random_horizontal_flip {
              }
       }
      data_augmentation_options {
             random_scale_crop_and_pad_to_square {
                    output_size: 512
                    scale_min: 0.1
                    scale_max: 2.0
              }
      }
      optimizer {
             momentum_optimizer: {
                    learning_rate: {
                      cosine_decay_learning_rate {
                         learning_rate_base: 8e-2
                         total_steps: 16000
                         warmup_learning_rate: .001
                         warmup_steps: 2500
                      }  
                    }
                    momentum_optimizer_value: 0.9
              }
              use_moving_average: false
       }
       max_number_of_boxes: 100
       unpad_groundtruth_tensors: false
}
train_input_reader: {
        label_map_path: "/home/farstrider/TensorFlow/LabelMaps/FLIR_retraining_map.pbtxt"
        tf_record_input_reader {
              input_path: "/home/farstrider/TensorFlow/TFRecords/FLIR_One_Retraining/Training.tfrecord"
        }
}
eval_config: {
         metrics_set: "coco_detection_metrics"
         use_moving_averages: false
         batch_size: 1
}
eval_input_reader: {
          label_map_path: "/home/farstrider/TensorFlow/LabelMaps/FLIR_retraining_map.pbtxt"
          shuffle: false
          num_epochs: 1
          tf_record_input_reader {
               input_path: "/home/farstrider/TensorFlow/TFRecords/FLIR_One_Retraining/Testing.tfrecord"
          }
}

 

 

cs663:computer vision

  • home
  • outline
  • projects
  • syllabus
  • links