model { ssd { num_classes: 2 box_coder { keypoint_box_coder { num_keypoints: 23 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 height_stride: 16 height_stride: 32 height_stride: 64 height_stride: 128 height_stride: 256 height_stride: 512 width_stride: 16 width_stride: 32 width_stride: 64 width_stride: 128 width_stride: 256 width_stride: 512 height_offset: 0 height_offset: 0 height_offset: 0 height_offset: 0 height_offset: 0 height_offset: 0 width_offset: 0 width_offset: 0 width_offset: 0 width_offset: 0 width_offset: 0 width_offset: 0 } } image_resizer { keep_aspect_ratio_resizer { min_dimension: 320 max_dimension: 640 convert_to_grayscale: true } } box_predictor { convolutional_box_predictor { min_depth: 0 max_depth: 0 num_layers_before_predictor: 0 use_dropout: false kernel_size: 3 box_code_size: 50 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" min_depth: 16 depth_multiplier: 0.25 use_explicit_padding: true 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 } } } 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: 10 } 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.5 max_detections_per_class: 100 max_total_detections: 100 } score_converter: SIGMOID } } } train_config: { fine_tune_checkpoint: "" num_steps: 10000000 batch_size: 32 data_augmentation_options { random_horizontal_flip { keypoint_flip_permutation: 1 keypoint_flip_permutation: 0 keypoint_flip_permutation: 2 keypoint_flip_permutation: 3 keypoint_flip_permutation: 5 keypoint_flip_permutation: 4 keypoint_flip_permutation: 6 keypoint_flip_permutation: 8 keypoint_flip_permutation: 7 keypoint_flip_permutation: 10 keypoint_flip_permutation: 9 keypoint_flip_permutation: 12 keypoint_flip_permutation: 11 keypoint_flip_permutation: 14 keypoint_flip_permutation: 13 keypoint_flip_permutation: 16 keypoint_flip_permutation: 15 keypoint_flip_permutation: 18 keypoint_flip_permutation: 17 keypoint_flip_permutation: 20 keypoint_flip_permutation: 19 keypoint_flip_permutation: 22 keypoint_flip_permutation: 21 } } data_augmentation_options { ssd_random_crop_fixed_aspect_ratio { } } optimizer { rms_prop_optimizer { learning_rate { exponential_decay_learning_rate { initial_learning_rate: 0.0004 decay_steps: 800720 decay_factor: 0.95 } } momentum_optimizer_value: 0.9 decay: 0.9 epsilon: 1.0 } } } train_input_reader { label_map_path: "PATH_TO_BE_CONFIGURED/face_person_with_keypoints_label_map.pbtxt" tf_record_input_reader { input_path: "PATH_TO_BE_CONFIGURED/faces_train.record-?????-of-00010" } num_keypoints: 23 } eval_config { num_visualizations: 10 metrics_set: "coco_detection_metrics" use_moving_averages: true parameterized_metric { coco_keypoint_metrics { class_label: "face" } } parameterized_metric { coco_keypoint_metrics { class_label: "PERSON" } } } eval_input_reader { label_map_path: "PATH_TO_BE_CONFIGURED/face_person_with_keypoints_label_map.pbtxt" shuffle: true num_epochs: 1 tf_record_input_reader { input_path: "PATH_TO_BE_CONFIGURED/faces_val.record-?????-of-00010" } num_keypoints: 23 } graph_rewriter { quantization { delay: 2000000 activation_bits: 8 weight_bits: 8 } }