Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/oktopuzSlid/detectorPlacas/llms.txt

Use this file to discover all available pages before exploring further.

DetectorPlacas ships with a pre-trained SSD MobileNet v1 model and a pipeline.config file that fully describes how that model was trained. Every value documented on this page comes directly from the actual files in the repository — no defaults or assumptions have been added. Understanding these artifacts helps you evaluate the model’s characteristics and re-train or fine-tune it for your own dataset.

Model Artifacts

The following files make up the complete model bundle. All detection scripts load frozen_inference_graph.pb at runtime; the checkpoint files are needed only for fine-tuning.
FilePurpose
inference_graph/frozen_inference_graph.pbPrimary inference artifact. Loaded by all three detection scripts via tf.gfile.GFile and tf.import_graph_def.
inference_graph/model.ckpt.data-00000-of-00001Checkpoint variable data — the actual weight values.
inference_graph/model.ckpt.indexIndex file mapping variable names to their offsets in the data file.
inference_graph/model.ckpt.metaMetaGraph definition describing the graph structure and collections.
saved_model/saved_model.pbSavedModel format export for serving or TF 2 compatibility layers.
checkpointPlain-text pointer file: model_checkpoint_path: "model.ckpt" and all_model_checkpoint_paths: "model.ckpt".
labelmap.pbtxtLabel map defining the single detection class (license_plate, id: 1).

Pipeline Configuration

The sections below break down every major block in pipeline.config. Expand each accordion to see the configuration values and a corresponding snippet.
The model uses the SSD (Single Shot MultiBox Detector) framework with a MobileNet v1 feature extractor. The input is fixed at 300×300 pixels.
ParameterValue
ArchitectureSSD
num_classes1
Image resizerfixed_shape_resizer — 300×300
Feature extractor typessd_mobilenet_v1
depth_multiplier1.0
min_depth16
ActivationRELU_6
Batch norm decay0.9997
Batch norm epsilon0.001
L2 regularizer weight4e-05
Initializertruncated_normal_initializer (mean=0.0, stddev=0.03)
model {
  ssd {
    num_classes: 1
    image_resizer {
      fixed_shape_resizer {
        height: 300
        width: 300
      }
    }
    feature_extractor {
      type: "ssd_mobilenet_v1"
      depth_multiplier: 1.0
      min_depth: 16
      conv_hyperparams {
        regularizer {
          l2_regularizer {
            weight: 4e-05
          }
        }
        initializer {
          truncated_normal_initializer {
            mean: 0.0
            stddev: 0.03
          }
        }
        activation: RELU_6
        batch_norm {
          decay: 0.9997
          center: true
          scale: true
          epsilon: 0.001
          train: true
        }
      }
    }
  }
}
The faster RCNN box coder scales the encoded bounding-box deltas so that the regression targets have a magnitude suitable for training.
ParameterValue
Coder typefaster_rcnn_box_coder
y_scale10.0
x_scale10.0
height_scale5.0
width_scale5.0
box_coder {
  faster_rcnn_box_coder {
    y_scale: 10.0
    x_scale: 10.0
    height_scale: 5.0
    width_scale: 5.0
  }
}
The argmax matcher assigns ground-truth boxes to anchors based on IoU overlap, using symmetric matched and unmatched thresholds.
ParameterValue
Matcher typeargmax_matcher
matched_threshold0.5
unmatched_threshold0.5
ignore_thresholdsfalse
negatives_lower_than_unmatchedtrue
force_match_for_each_rowtrue
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
  }
}
The SSD anchor generator creates default boxes across 6 feature map layers, with scale ranging from 0.2 to 0.95 and five aspect ratios per location.
ParameterValue
num_layers6
min_scale0.2
max_scale0.95
Aspect ratios1.0, 2.0, 0.5, 3.0, 0.3333
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
  }
}
After the network produces raw scores and boxes, post-processing applies Non-Maximum Suppression and converts scores with a sigmoid function.
ParameterValue
score_threshold1e-08
iou_threshold0.6
max_detections_per_class100
max_total_detections100
Score converterSIGMOID
post_processing {
  batch_non_max_suppression {
    score_threshold: 1e-08
    iou_threshold: 0.6
    max_detections_per_class: 100
    max_total_detections: 100
  }
  score_converter: SIGMOID
}
The model uses separate loss functions for bounding-box regression and class prediction, with a hard example miner to focus training on difficult samples.
ParameterValue
Localization lossweighted_smooth_l1
Classification lossweighted_sigmoid
num_hard_examples3000
Hard example miner iou_threshold0.5
Hard example miner loss_typeCLASSIFICATION
max_negatives_per_positive3
min_negatives_per_image0
classification_weight1.0
localization_weight1.0
loss {
  localization_loss {
    weighted_smooth_l1 {
    }
  }
  classification_loss {
    weighted_sigmoid {
    }
  }
  hard_example_miner {
    num_hard_examples: 3000
    iou_threshold: 0.5
    loss_type: CLASSIFICATION
    max_negatives_per_positive: 3
    min_negatives_per_image: 0
  }
  classification_weight: 1.0
  localization_weight: 1.0
}
Training uses the Adam optimizer with a manual learning-rate step schedule. The model is fine-tuned from an existing checkpoint rather than trained from scratch.
ParameterValue
batch_size16
Data augmentationrandom_horizontal_flip, ssd_random_crop
OptimizerAdam
num_steps200,000
fine_tune_checkpointinference_graph/model.ckpt
from_detection_checkpointtrue
load_all_detection_checkpoint_varstrue
Learning rate schedule:
Step rangeLearning rate
0 → 4,5000.0002
4,500 → 7,0000.0001
7,000 → 10,0008e-05
10,000+4e-05
train_config {
  batch_size: 16
  data_augmentation_options {
    random_horizontal_flip {
    }
  }
  data_augmentation_options {
    ssd_random_crop {
    }
  }
  optimizer {
    adam_optimizer {
      learning_rate {
        manual_step_learning_rate {
          initial_learning_rate: 0.0002
          schedule {
            step: 4500
            learning_rate: 0.0001
          }
          schedule {
            step: 7000
            learning_rate: 8e-05
          }
          schedule {
            step: 10000
            learning_rate: 4e-05
          }
        }
      }
    }
    use_moving_average: false
  }
  fine_tune_checkpoint: "inference_graph/model.ckpt"
  from_detection_checkpoint: true
  num_steps: 200000
  load_all_detection_checkpoint_vars: true
}
Evaluation is run against a held-out set of 1,100 examples using COCO detection metrics.
ParameterValue
num_examples1100
metrics_setcoco_detection_metrics
use_moving_averagesfalse
eval_config {
  num_examples: 1100
  metrics_set: "coco_detection_metrics"
  use_moving_averages: false
}
The train_input_reader and eval_input_reader sections in pipeline.config contain Windows absolute paths hardcoded to the original developer’s machine (e.g. C:/Users/OKTOPUZ-SLID/Desktop/detector-placas/data/). Before using this config to retrain or evaluate the model, update both label_map_path and input_path values to point to the correct locations on your own system.

Build docs developers (and LLMs) love