Commit c07b073e authored by A. Unique TensorFlower's avatar A. Unique TensorFlower Committed by TF Object Detection Team
Browse files

adding config files for models with keypoints

PiperOrigin-RevId: 324584977
parent 39ee0ac9
# CenterNet meta-architecture from the "Objects as Points" [2] paper with the
# hourglass[1] backbone. This config achieves an mAP of 42.8/64.5 +/- 0.16 on
# COCO 17 (averaged over 5 runs). This config is TPU compatible.
# [1]: https://arxiv.org/abs/1603.06937
# [2]: https://arxiv.org/abs/1904.07850
model {
center_net {
num_classes: 90
feature_extractor {
type: "hourglass_104"
channel_means: 104.01361846923828
channel_means: 114.03422546386719
channel_means: 119.91659545898438
channel_stds: 73.60276794433594
channel_stds: 69.89082336425781
channel_stds: 70.91507720947266
bgr_ordering: true
}
image_resizer {
keep_aspect_ratio_resizer {
min_dimension: 1024
max_dimension: 1024
pad_to_max_dimension: true
}
}
object_detection_task {
task_loss_weight: 1.0
offset_loss_weight: 1.0
scale_loss_weight: 0.10000000149011612
localization_loss {
l1_localization_loss {
}
}
}
object_center_params {
object_center_loss_weight: 1.0
classification_loss {
penalty_reduced_logistic_focal_loss {
alpha: 2.0
beta: 4.0
}
}
min_box_overlap_iou: 0.699999988079071
max_box_predictions: 100
}
keypoint_label_map_path: "PATH_TO_BE_CONFIGURED"
keypoint_estimation_task {
task_name: "human_pose"
task_loss_weight: 1.0
loss {
localization_loss {
l1_localization_loss {
}
}
classification_loss {
penalty_reduced_logistic_focal_loss {
alpha: 2.0
beta: 4.0
}
}
}
keypoint_class_name: "/m/01g317"
keypoint_label_to_std {
key: "left_ankle"
value: 0.8899999856948853
}
keypoint_label_to_std {
key: "left_ear"
value: 0.3499999940395355
}
keypoint_label_to_std {
key: "left_elbow"
value: 0.7200000286102295
}
keypoint_label_to_std {
key: "left_eye"
value: 0.25
}
keypoint_label_to_std {
key: "left_hip"
value: 1.0700000524520874
}
keypoint_label_to_std {
key: "left_knee"
value: 0.8899999856948853
}
keypoint_label_to_std {
key: "left_shoulder"
value: 0.7900000214576721
}
keypoint_label_to_std {
key: "left_wrist"
value: 0.6200000047683716
}
keypoint_label_to_std {
key: "nose"
value: 0.25999999046325684
}
keypoint_label_to_std {
key: "right_ankle"
value: 0.8899999856948853
}
keypoint_label_to_std {
key: "right_ear"
value: 0.3499999940395355
}
keypoint_label_to_std {
key: "right_elbow"
value: 0.7200000286102295
}
keypoint_label_to_std {
key: "right_eye"
value: 0.25
}
keypoint_label_to_std {
key: "right_hip"
value: 1.0700000524520874
}
keypoint_label_to_std {
key: "right_knee"
value: 0.8899999856948853
}
keypoint_label_to_std {
key: "right_shoulder"
value: 0.7900000214576721
}
keypoint_label_to_std {
key: "right_wrist"
value: 0.6200000047683716
}
keypoint_regression_loss_weight: 0.10000000149011612
keypoint_heatmap_loss_weight: 1.0
keypoint_offset_loss_weight: 1.0
offset_peak_radius: 3
per_keypoint_offset: true
}
}
}
train_config {
batch_size: 128
data_augmentation_options {
random_horizontal_flip {
keypoint_flip_permutation: 0
keypoint_flip_permutation: 2
keypoint_flip_permutation: 1
keypoint_flip_permutation: 4
keypoint_flip_permutation: 3
keypoint_flip_permutation: 6
keypoint_flip_permutation: 5
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
}
}
data_augmentation_options {
random_adjust_hue {
}
}
data_augmentation_options {
random_adjust_contrast {
}
}
data_augmentation_options {
random_adjust_saturation {
}
}
data_augmentation_options {
random_adjust_brightness {
}
}
data_augmentation_options {
random_square_crop_by_scale {
scale_min: 0.6000000238418579
scale_max: 1.2999999523162842
}
}
optimizer {
adam_optimizer {
learning_rate {
cosine_decay_learning_rate {
learning_rate_base: 0.0010000000474974513
total_steps: 250000
warmup_learning_rate: 0.0002500000118743628
warmup_steps: 5000
}
}
epsilon: 1.0000000116860974e-07
}
use_moving_average: false
}
fine_tune_checkpoint: "PATH_TO_BE_CONFIGURED"
num_steps: 250000
max_number_of_boxes: 100
unpad_groundtruth_tensors: false
fine_tune_checkpoint_type: "detection"
fine_tune_checkpoint_version: V2
}
train_input_reader: {
label_map_path: "PATH_TO_BE_CONFIGURED/label_map.txt"
tf_record_input_reader {
input_path: "PATH_TO_BE_CONFIGURED/train2017-?????-of-00256.tfrecord"
}
num_keypoints: 17
}
eval_config {
num_visualizations: 10
metrics_set: "coco_detection_metrics"
use_moving_averages: false
min_score_threshold: 0.20000000298023224
max_num_boxes_to_visualize: 20
batch_size: 1
parameterized_metric {
coco_keypoint_metrics {
class_label: "person"
keypoint_label_to_sigmas {
key: "left_ankle"
value: 0.08900000154972076
}
keypoint_label_to_sigmas {
key: "left_ear"
value: 0.03500000014901161
}
keypoint_label_to_sigmas {
key: "left_elbow"
value: 0.07199999690055847
}
keypoint_label_to_sigmas {
key: "left_eye"
value: 0.02500000037252903
}
keypoint_label_to_sigmas {
key: "left_hip"
value: 0.10700000077486038
}
keypoint_label_to_sigmas {
key: "left_knee"
value: 0.08699999749660492
}
keypoint_label_to_sigmas {
key: "left_shoulder"
value: 0.07900000363588333
}
keypoint_label_to_sigmas {
key: "left_wrist"
value: 0.06199999898672104
}
keypoint_label_to_sigmas {
key: "nose"
value: 0.026000000536441803
}
keypoint_label_to_sigmas {
key: "right_ankle"
value: 0.08900000154972076
}
keypoint_label_to_sigmas {
key: "right_ear"
value: 0.03500000014901161
}
keypoint_label_to_sigmas {
key: "right_elbow"
value: 0.07199999690055847
}
keypoint_label_to_sigmas {
key: "right_eye"
value: 0.02500000037252903
}
keypoint_label_to_sigmas {
key: "right_hip"
value: 0.10700000077486038
}
keypoint_label_to_sigmas {
key: "right_knee"
value: 0.08699999749660492
}
keypoint_label_to_sigmas {
key: "right_shoulder"
value: 0.07900000363588333
}
keypoint_label_to_sigmas {
key: "right_wrist"
value: 0.06199999898672104
}
}
}
keypoint_edge {
start: 0
end: 1
}
keypoint_edge {
start: 0
end: 2
}
keypoint_edge {
start: 1
end: 3
}
keypoint_edge {
start: 2
end: 4
}
keypoint_edge {
start: 0
end: 5
}
keypoint_edge {
start: 0
end: 6
}
keypoint_edge {
start: 5
end: 7
}
keypoint_edge {
start: 7
end: 9
}
keypoint_edge {
start: 6
end: 8
}
keypoint_edge {
start: 8
end: 10
}
keypoint_edge {
start: 5
end: 6
}
keypoint_edge {
start: 5
end: 11
}
keypoint_edge {
start: 6
end: 12
}
keypoint_edge {
start: 11
end: 12
}
keypoint_edge {
start: 11
end: 13
}
keypoint_edge {
start: 13
end: 15
}
keypoint_edge {
start: 12
end: 14
}
keypoint_edge {
start: 14
end: 16
}
}
eval_input_reader: {
label_map_path: "PATH_TO_BE_CONFIGURED/label_map.txt"
shuffle: false
num_epochs: 1
tf_record_input_reader {
input_path: "PATH_TO_BE_CONFIGURED/val2017-?????-of-00032.tfrecord"
}
num_keypoints: 17
}
# CenterNet meta-architecture from the "Objects as Points" [2] paper with the
# hourglass[1] backbone. This config achieves an mAP of 40.0/61.4 +/- 0.16 on
# COCO 17 (averaged over 5 runs). This config is TPU compatible.
# [1]: https://arxiv.org/abs/1603.06937
# [2]: https://arxiv.org/abs/1904.07850
model {
center_net {
num_classes: 90
feature_extractor {
type: "hourglass_104"
bgr_ordering: true
channel_means: [104.01362025, 114.03422265, 119.9165958 ]
channel_stds: [73.6027665 , 69.89082075, 70.9150767 ]
}
image_resizer {
keep_aspect_ratio_resizer {
min_dimension: 512
max_dimension: 512
pad_to_max_dimension: true
}
}
object_detection_task {
task_loss_weight: 1.0
offset_loss_weight: 1.0
scale_loss_weight: 0.1
localization_loss {
l1_localization_loss {
}
}
}
object_center_params {
object_center_loss_weight: 1.0
min_box_overlap_iou: 0.7
max_box_predictions: 100
classification_loss {
penalty_reduced_logistic_focal_loss {
alpha: 2.0
beta: 4.0
}
}
}
keypoint_label_map_path: "PATH_TO_BE_CONFIGURED"
keypoint_estimation_task {
task_name: "human_pose"
task_loss_weight: 1.0
loss {
localization_loss {
l1_localization_loss {
}
}
classification_loss {
penalty_reduced_logistic_focal_loss {
alpha: 2.0
beta: 4.0
}
}
}
keypoint_class_name: "/m/01g317"
keypoint_label_to_std {
key: "left_ankle"
value: 0.89
}
keypoint_label_to_std {
key: "left_ear"
value: 0.35
}
keypoint_label_to_std {
key: "left_elbow"
value: 0.72
}
keypoint_label_to_std {
key: "left_eye"
value: 0.25
}
keypoint_label_to_std {
key: "left_hip"
value: 1.07
}
keypoint_label_to_std {
key: "left_knee"
value: 0.89
}
keypoint_label_to_std {
key: "left_shoulder"
value: 0.79
}
keypoint_label_to_std {
key: "left_wrist"
value: 0.62
}
keypoint_label_to_std {
key: "nose"
value: 0.26
}
keypoint_label_to_std {
key: "right_ankle"
value: 0.89
}
keypoint_label_to_std {
key: "right_ear"
value: 0.35
}
keypoint_label_to_std {
key: "right_elbow"
value: 0.72
}
keypoint_label_to_std {
key: "right_eye"
value: 0.25
}
keypoint_label_to_std {
key: "right_hip"
value: 1.07
}
keypoint_label_to_std {
key: "right_knee"
value: 0.89
}
keypoint_label_to_std {
key: "right_shoulder"
value: 0.79
}
keypoint_label_to_std {
key: "right_wrist"
value: 0.62
}
keypoint_regression_loss_weight: 0.1
keypoint_heatmap_loss_weight: 1.0
keypoint_offset_loss_weight: 1.0
offset_peak_radius: 3
per_keypoint_offset: true
}
}
}
train_config: {
batch_size: 128
num_steps: 250000
data_augmentation_options {
random_horizontal_flip {
keypoint_flip_permutation: 0
keypoint_flip_permutation: 2
keypoint_flip_permutation: 1
keypoint_flip_permutation: 4
keypoint_flip_permutation: 3
keypoint_flip_permutation: 6
keypoint_flip_permutation: 5
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
}
}
data_augmentation_options {
random_crop_image {
min_aspect_ratio: 0.5
max_aspect_ratio: 1.7
random_coef: 0.25
}
}
data_augmentation_options {
random_adjust_hue {
}
}
data_augmentation_options {
random_adjust_contrast {
}
}
data_augmentation_options {
random_adjust_saturation {
}
}
data_augmentation_options {
random_adjust_brightness {
}
}
data_augmentation_options {
random_absolute_pad_image {
max_height_padding: 200
max_width_padding: 200
pad_color: [0, 0, 0]
}
}
optimizer {
adam_optimizer: {
epsilon: 1e-7 # Match tf.keras.optimizers.Adam's default.
learning_rate: {
cosine_decay_learning_rate {
learning_rate_base: 1e-3
total_steps: 250000
warmup_learning_rate: 2.5e-4
warmup_steps: 5000
}
}
}
use_moving_average: false
}
max_number_of_boxes: 100
unpad_groundtruth_tensors: false
fine_tune_checkpoint_version: V2
fine_tune_checkpoint: "PATH_TO_BE_CONFIGURED"
fine_tune_checkpoint_type: "detection"
}
train_input_reader: {
label_map_path: "PATH_TO_BE_CONFIGURED/label_map.txt"
tf_record_input_reader {
input_path: "PATH_TO_BE_CONFIGURED/train2017-?????-of-00256.tfrecord"
}
num_keypoints: 17
}
eval_config: {
metrics_set: "coco_detection_metrics"
use_moving_averages: false
num_visualizations: 10
max_num_boxes_to_visualize: 20
min_score_threshold: 0.2
batch_size: 1;
parameterized_metric {
coco_keypoint_metrics {
class_label: "person"
keypoint_label_to_sigmas {
key: "nose"
value: 0.026
}
keypoint_label_to_sigmas {
key: "left_eye"
value: 0.025
}
keypoint_label_to_sigmas {
key: "right_eye"
value: 0.025
}
keypoint_label_to_sigmas {
key: "left_ear"
value: 0.035
}
keypoint_label_to_sigmas {
key: "right_ear"
value: 0.035
}
keypoint_label_to_sigmas {
key: "left_shoulder"
value: 0.079
}
keypoint_label_to_sigmas {
key: "right_shoulder"
value: 0.079
}
keypoint_label_to_sigmas {
key: "left_elbow"
value: 0.072
}
keypoint_label_to_sigmas {
key: "right_elbow"
value: 0.072
}
keypoint_label_to_sigmas {
key: "left_wrist"
value: 0.062
}
keypoint_label_to_sigmas {
key: "right_wrist"
value: 0.062
}
keypoint_label_to_sigmas {
key: "left_hip"
value: 0.107
}
keypoint_label_to_sigmas {
key: "right_hip"
value: 0.107
}
keypoint_label_to_sigmas {
key: "left_knee"
value: 0.087
}
keypoint_label_to_sigmas {
key: "right_knee"
value: 0.087
}
keypoint_label_to_sigmas {
key: "left_ankle"
value: 0.089
}
keypoint_label_to_sigmas {
key: "right_ankle"
value: 0.089
}
}
}
# Provide the edges to connect the keypoints. The setting is suitable for
# COCO's 17 human pose keypoints.
keypoint_edge { # nose-left eye
start: 0
end: 1
}
keypoint_edge { # nose-right eye
start: 0
end: 2
}
keypoint_edge { # left eye-left ear
start: 1
end: 3
}
keypoint_edge { # right eye-right ear
start: 2
end: 4
}
keypoint_edge { # nose-left shoulder
start: 0
end: 5
}
keypoint_edge { # nose-right shoulder
start: 0
end: 6
}
keypoint_edge { # left shoulder-left elbow
start: 5
end: 7
}
keypoint_edge { # left elbow-left wrist
start: 7
end: 9
}
keypoint_edge { # right shoulder-right elbow
start: 6
end: 8
}
keypoint_edge { # right elbow-right wrist
start: 8
end: 10
}
keypoint_edge { # left shoulder-right shoulder
start: 5
end: 6
}
keypoint_edge { # left shoulder-left hip
start: 5
end: 11
}
keypoint_edge { # right shoulder-right hip
start: 6
end: 12
}
keypoint_edge { # left hip-right hip
start: 11
end: 12
}
keypoint_edge { # left hip-left knee
start: 11
end: 13
}
keypoint_edge { # left knee-left ankle
start: 13
end: 15
}
keypoint_edge { # right hip-right knee
start: 12
end: 14
}
keypoint_edge { # right knee-right ankle
start: 14
end: 16
}
}
eval_input_reader: {
label_map_path: "PATH_TO_BE_CONFIGURED/label_map.txt"
tf_record_input_reader {
input_path: "PATH_TO_BE_CONFIGURED/train2017-?????-of-00256.tfrecord"
}
num_keypoints: 17
}
# CenterNet meta-architecture from the "Objects as Points" [1] paper
# with the ResNet-v1-50 backbone. The ResNet backbone has a few differences
# as compared to the one mentioned in the paper, hence the performance is
# slightly worse. This config is TPU comptatible.
# [1]: https://arxiv.org/abs/1904.07850
#
model {
center_net {
num_classes: 90
feature_extractor {
type: "resnet_v1_50_fpn"
}
image_resizer {
keep_aspect_ratio_resizer {
min_dimension: 512
max_dimension: 512
pad_to_max_dimension: true
}
}
object_detection_task {
task_loss_weight: 1.0
offset_loss_weight: 1.0
scale_loss_weight: 0.1
localization_loss {
l1_localization_loss {
}
}
}
object_center_params {
object_center_loss_weight: 1.0
min_box_overlap_iou: 0.7
max_box_predictions: 100
classification_loss {
penalty_reduced_logistic_focal_loss {
alpha: 2.0
beta: 4.0
}
}
}
keypoint_label_map_path: "PATH_TO_BE_CONFIGURED"
keypoint_estimation_task {
task_name: "human_pose"
task_loss_weight: 1.0
loss {
localization_loss {
l1_localization_loss {
}
}
classification_loss {
penalty_reduced_logistic_focal_loss {
alpha: 2.0
beta: 4.0
}
}
}
keypoint_class_name: "/m/01g317"
keypoint_label_to_std {
key: "left_ankle"
value: 0.89
}
keypoint_label_to_std {
key: "left_ear"
value: 0.35
}
keypoint_label_to_std {
key: "left_elbow"
value: 0.72
}
keypoint_label_to_std {
key: "left_eye"
value: 0.25
}
keypoint_label_to_std {
key: "left_hip"
value: 1.07
}
keypoint_label_to_std {
key: "left_knee"
value: 0.89
}
keypoint_label_to_std {
key: "left_shoulder"
value: 0.79
}
keypoint_label_to_std {
key: "left_wrist"
value: 0.62
}
keypoint_label_to_std {
key: "nose"
value: 0.26
}
keypoint_label_to_std {
key: "right_ankle"
value: 0.89
}
keypoint_label_to_std {
key: "right_ear"
value: 0.35
}
keypoint_label_to_std {
key: "right_elbow"
value: 0.72
}
keypoint_label_to_std {
key: "right_eye"
value: 0.25
}
keypoint_label_to_std {
key: "right_hip"
value: 1.07
}
keypoint_label_to_std {
key: "right_knee"
value: 0.89
}
keypoint_label_to_std {
key: "right_shoulder"
value: 0.79
}
keypoint_label_to_std {
key: "right_wrist"
value: 0.62
}
keypoint_regression_loss_weight: 0.1
keypoint_heatmap_loss_weight: 1.0
keypoint_offset_loss_weight: 1.0
offset_peak_radius: 3
per_keypoint_offset: true
}
}
}
train_config: {
batch_size: 128
num_steps: 250000
data_augmentation_options {
random_horizontal_flip {
keypoint_flip_permutation: 0
keypoint_flip_permutation: 2
keypoint_flip_permutation: 1
keypoint_flip_permutation: 4
keypoint_flip_permutation: 3
keypoint_flip_permutation: 6
keypoint_flip_permutation: 5
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
}
}
data_augmentation_options {
random_crop_image {
min_aspect_ratio: 0.5
max_aspect_ratio: 1.7
random_coef: 0.25
}
}
data_augmentation_options {
random_adjust_hue {
}
}
data_augmentation_options {
random_adjust_contrast {
}
}
data_augmentation_options {
random_adjust_saturation {
}
}
data_augmentation_options {
random_adjust_brightness {
}
}
data_augmentation_options {
random_absolute_pad_image {
max_height_padding: 200
max_width_padding: 200
pad_color: [0, 0, 0]
}
}
optimizer {
adam_optimizer: {
epsilon: 1e-7 # Match tf.keras.optimizers.Adam's default.
learning_rate: {
cosine_decay_learning_rate {
learning_rate_base: 1e-3
total_steps: 250000
warmup_learning_rate: 2.5e-4
warmup_steps: 5000
}
}
}
use_moving_average: false
}
max_number_of_boxes: 100
unpad_groundtruth_tensors: false
fine_tune_checkpoint_version: V2
fine_tune_checkpoint: "PATH_TO_BE_CONFIGURED"
fine_tune_checkpoint_type: "classification"
}
train_input_reader: {
label_map_path: "PATH_TO_BE_CONFIGURED/label_map.txt"
tf_record_input_reader {
input_path: "PATH_TO_BE_CONFIGURED/train2017-?????-of-00256.tfrecord"
}
num_keypoints: 17
}
eval_config: {
metrics_set: "coco_detection_metrics"
use_moving_averages: false
num_visualizations: 10
max_num_boxes_to_visualize: 20
min_score_threshold: 0.2
batch_size: 1;
parameterized_metric {
coco_keypoint_metrics {
class_label: "person"
keypoint_label_to_sigmas {
key: "nose"
value: 0.026
}
keypoint_label_to_sigmas {
key: "left_eye"
value: 0.025
}
keypoint_label_to_sigmas {
key: "right_eye"
value: 0.025
}
keypoint_label_to_sigmas {
key: "left_ear"
value: 0.035
}
keypoint_label_to_sigmas {
key: "right_ear"
value: 0.035
}
keypoint_label_to_sigmas {
key: "left_shoulder"
value: 0.079
}
keypoint_label_to_sigmas {
key: "right_shoulder"
value: 0.079
}
keypoint_label_to_sigmas {
key: "left_elbow"
value: 0.072
}
keypoint_label_to_sigmas {
key: "right_elbow"
value: 0.072
}
keypoint_label_to_sigmas {
key: "left_wrist"
value: 0.062
}
keypoint_label_to_sigmas {
key: "right_wrist"
value: 0.062
}
keypoint_label_to_sigmas {
key: "left_hip"
value: 0.107
}
keypoint_label_to_sigmas {
key: "right_hip"
value: 0.107
}
keypoint_label_to_sigmas {
key: "left_knee"
value: 0.087
}
keypoint_label_to_sigmas {
key: "right_knee"
value: 0.087
}
keypoint_label_to_sigmas {
key: "left_ankle"
value: 0.089
}
keypoint_label_to_sigmas {
key: "right_ankle"
value: 0.089
}
}
}
# Provide the edges to connect the keypoints. The setting is suitable for
# COCO's 17 human pose keypoints.
keypoint_edge { # nose-left eye
start: 0
end: 1
}
keypoint_edge { # nose-right eye
start: 0
end: 2
}
keypoint_edge { # left eye-left ear
start: 1
end: 3
}
keypoint_edge { # right eye-right ear
start: 2
end: 4
}
keypoint_edge { # nose-left shoulder
start: 0
end: 5
}
keypoint_edge { # nose-right shoulder
start: 0
end: 6
}
keypoint_edge { # left shoulder-left elbow
start: 5
end: 7
}
keypoint_edge { # left elbow-left wrist
start: 7
end: 9
}
keypoint_edge { # right shoulder-right elbow
start: 6
end: 8
}
keypoint_edge { # right elbow-right wrist
start: 8
end: 10
}
keypoint_edge { # left shoulder-right shoulder
start: 5
end: 6
}
keypoint_edge { # left shoulder-left hip
start: 5
end: 11
}
keypoint_edge { # right shoulder-right hip
start: 6
end: 12
}
keypoint_edge { # left hip-right hip
start: 11
end: 12
}
keypoint_edge { # left hip-left knee
start: 11
end: 13
}
keypoint_edge { # left knee-left ankle
start: 13
end: 15
}
keypoint_edge { # right hip-right knee
start: 12
end: 14
}
keypoint_edge { # right knee-right ankle
start: 14
end: 16
}
}
eval_input_reader: {
label_map_path: "PATH_TO_BE_CONFIGURED/label_map.txt"
shuffle: false
num_epochs: 1
tf_record_input_reader {
input_path: "PATH_TO_BE_CONFIGURED/val2017-?????-of-00032.tfrecord"
}
num_keypoints: 17
}
# CenterNet meta-architecture from the "Objects as Points" [1] paper
# with the ResNet-v2-50 backbone. The ResNet backbone has a few differences
# as compared to the one mentioned in the paper, hence the performance is
# slightly worse. This config is TPU comptatible.
# [1]: https://arxiv.org/abs/1904.07850
model {
center_net {
num_classes: 90
feature_extractor {
type: "resnet_v2_50"
}
image_resizer {
keep_aspect_ratio_resizer {
min_dimension: 512
max_dimension: 512
pad_to_max_dimension: true
}
}
object_detection_task {
task_loss_weight: 1.0
offset_loss_weight: 1.0
scale_loss_weight: 0.1
localization_loss {
l1_localization_loss {
}
}
}
object_center_params {
object_center_loss_weight: 1.0
min_box_overlap_iou: 0.7
max_box_predictions: 100
classification_loss {
penalty_reduced_logistic_focal_loss {
alpha: 2.0
beta: 4.0
}
}
}
keypoint_label_map_path: "PATH_TO_BE_CONFIGURED"
keypoint_estimation_task {
task_name: "human_pose"
task_loss_weight: 1.0
loss {
localization_loss {
l1_localization_loss {
}
}
classification_loss {
penalty_reduced_logistic_focal_loss {
alpha: 2.0
beta: 4.0
}
}
}
keypoint_class_name: "/m/01g317"
keypoint_label_to_std {
key: "left_ankle"
value: 0.89
}
keypoint_label_to_std {
key: "left_ear"
value: 0.35
}
keypoint_label_to_std {
key: "left_elbow"
value: 0.72
}
keypoint_label_to_std {
key: "left_eye"
value: 0.25
}
keypoint_label_to_std {
key: "left_hip"
value: 1.07
}
keypoint_label_to_std {
key: "left_knee"
value: 0.89
}
keypoint_label_to_std {
key: "left_shoulder"
value: 0.79
}
keypoint_label_to_std {
key: "left_wrist"
value: 0.62
}
keypoint_label_to_std {
key: "nose"
value: 0.26
}
keypoint_label_to_std {
key: "right_ankle"
value: 0.89
}
keypoint_label_to_std {
key: "right_ear"
value: 0.35
}
keypoint_label_to_std {
key: "right_elbow"
value: 0.72
}
keypoint_label_to_std {
key: "right_eye"
value: 0.25
}
keypoint_label_to_std {
key: "right_hip"
value: 1.07
}
keypoint_label_to_std {
key: "right_knee"
value: 0.89
}
keypoint_label_to_std {
key: "right_shoulder"
value: 0.79
}
keypoint_label_to_std {
key: "right_wrist"
value: 0.62
}
keypoint_regression_loss_weight: 0.1
keypoint_heatmap_loss_weight: 1.0
keypoint_offset_loss_weight: 1.0
offset_peak_radius: 3
per_keypoint_offset: true
}
}
}
train_config: {
batch_size: 128
num_steps: 250000
data_augmentation_options {
random_horizontal_flip {
keypoint_flip_permutation: 0
keypoint_flip_permutation: 2
keypoint_flip_permutation: 1
keypoint_flip_permutation: 4
keypoint_flip_permutation: 3
keypoint_flip_permutation: 6
keypoint_flip_permutation: 5
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
}
}
data_augmentation_options {
random_crop_image {
min_aspect_ratio: 0.5
max_aspect_ratio: 1.7
random_coef: 0.25
}
}
data_augmentation_options {
random_adjust_hue {
}
}
data_augmentation_options {
random_adjust_contrast {
}
}
data_augmentation_options {
random_adjust_saturation {
}
}
data_augmentation_options {
random_adjust_brightness {
}
}
data_augmentation_options {
random_absolute_pad_image {
max_height_padding: 200
max_width_padding: 200
pad_color: [0, 0, 0]
}
}
optimizer {
adam_optimizer: {
epsilon: 1e-7 # Match tf.keras.optimizers.Adam's default.
learning_rate: {
cosine_decay_learning_rate {
learning_rate_base: 1e-3
total_steps: 250000
warmup_learning_rate: 2.5e-4
warmup_steps: 5000
}
}
}
use_moving_average: false
}
max_number_of_boxes: 100
unpad_groundtruth_tensors: false
fine_tune_checkpoint_version: V2
fine_tune_checkpoint: "PATH_TO_BE_CONFIGURED"
fine_tune_checkpoint_type: "classification"
}
train_input_reader: {
label_map_path: "PATH_TO_BE_CONFIGURED/label_map.txt"
tf_record_input_reader {
input_path: "PATH_TO_BE_CONFIGURED/train2017-?????-of-00256.tfrecord"
}
num_keypoints: 17
}
eval_config: {
metrics_set: "coco_detection_metrics"
use_moving_averages: false
num_visualizations: 10
max_num_boxes_to_visualize: 20
min_score_threshold: 0.2
batch_size: 1;
parameterized_metric {
coco_keypoint_metrics {
class_label: "person"
keypoint_label_to_sigmas {
key: "nose"
value: 0.026
}
keypoint_label_to_sigmas {
key: "left_eye"
value: 0.025
}
keypoint_label_to_sigmas {
key: "right_eye"
value: 0.025
}
keypoint_label_to_sigmas {
key: "left_ear"
value: 0.035
}
keypoint_label_to_sigmas {
key: "right_ear"
value: 0.035
}
keypoint_label_to_sigmas {
key: "left_shoulder"
value: 0.079
}
keypoint_label_to_sigmas {
key: "right_shoulder"
value: 0.079
}
keypoint_label_to_sigmas {
key: "left_elbow"
value: 0.072
}
keypoint_label_to_sigmas {
key: "right_elbow"
value: 0.072
}
keypoint_label_to_sigmas {
key: "left_wrist"
value: 0.062
}
keypoint_label_to_sigmas {
key: "right_wrist"
value: 0.062
}
keypoint_label_to_sigmas {
key: "left_hip"
value: 0.107
}
keypoint_label_to_sigmas {
key: "right_hip"
value: 0.107
}
keypoint_label_to_sigmas {
key: "left_knee"
value: 0.087
}
keypoint_label_to_sigmas {
key: "right_knee"
value: 0.087
}
keypoint_label_to_sigmas {
key: "left_ankle"
value: 0.089
}
keypoint_label_to_sigmas {
key: "right_ankle"
value: 0.089
}
}
}
# Provide the edges to connect the keypoints. The setting is suitable for
# COCO's 17 human pose keypoints.
keypoint_edge { # nose-left eye
start: 0
end: 1
}
keypoint_edge { # nose-right eye
start: 0
end: 2
}
keypoint_edge { # left eye-left ear
start: 1
end: 3
}
keypoint_edge { # right eye-right ear
start: 2
end: 4
}
keypoint_edge { # nose-left shoulder
start: 0
end: 5
}
keypoint_edge { # nose-right shoulder
start: 0
end: 6
}
keypoint_edge { # left shoulder-left elbow
start: 5
end: 7
}
keypoint_edge { # left elbow-left wrist
start: 7
end: 9
}
keypoint_edge { # right shoulder-right elbow
start: 6
end: 8
}
keypoint_edge { # right elbow-right wrist
start: 8
end: 10
}
keypoint_edge { # left shoulder-right shoulder
start: 5
end: 6
}
keypoint_edge { # left shoulder-left hip
start: 5
end: 11
}
keypoint_edge { # right shoulder-right hip
start: 6
end: 12
}
keypoint_edge { # left hip-right hip
start: 11
end: 12
}
keypoint_edge { # left hip-left knee
start: 11
end: 13
}
keypoint_edge { # left knee-left ankle
start: 13
end: 15
}
keypoint_edge { # right hip-right knee
start: 12
end: 14
}
keypoint_edge { # right knee-right ankle
start: 14
end: 16
}
}
eval_input_reader: {
label_map_path: "PATH_TO_BE_CONFIGURED/label_map.txt"
shuffle: false
num_epochs: 1
tf_record_input_reader {
input_path: "PATH_TO_BE_CONFIGURED/val2017-?????-of-00032.tfrecord"
}
num_keypoints: 17
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment