|
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 |
|
} |
|
} |
|
|