Более быстрый RCNN обнаруживает только 20 объектов на изображение - PullRequest
0 голосов
/ 22 апреля 2020

Итак, у меня есть реализация API tenorlfow модели Faster RCNN, и я обучил ее значениям по умолчанию максимальных объектов / классов (100/300), но она обнаруживает только 20 объектов на каждом изображении ! Не меньше и не больше 20! Проблема в том ... нет ограничения до 20 ... Ограничение было 100/300. Кто-нибудь знает, почему это может произойти?

Кроме того, обнаружения не находятся в одной определенной c области изображения ... они разбросаны, так что я могу только догадываться, что это не проблема обрезки.

здесь обучающий конфигурационный файл : (я также обучил модель с большими минимальными / максимальными размерами, чтобы убедиться, что я не потерял никаких деталей, но это ничего не изменило)

Спасибо всем, кто нашел время, чтобы ответить!

faster_rcnn {
 num_classes: 2
 image_resizer {
   keep_aspect_ratio_resizer {
     min_dimension: 600
     max_dimension: 1024
   }
 }
 feature_extractor {
   type: 'faster_rcnn_inception_v2'
   first_stage_features_stride: 16
 }
 first_stage_anchor_generator {
   grid_anchor_generator {
     scales: [0.25, 0.5, 1.0, 2.0]
     aspect_ratios: [0.5, 1.0, 2.0]
     height_stride: 16
     width_stride: 16
   }
 }
 first_stage_box_predictor_conv_hyperparams {
   op: CONV
   regularizer {
     l2_regularizer {
       weight: 0.0
     }
   }
   initializer {
     truncated_normal_initializer {
       stddev: 0.01
     }
   }
 }
 first_stage_nms_score_threshold: 0.0
 first_stage_nms_iou_threshold: 0.7
 first_stage_max_proposals: 300
 first_stage_localization_loss_weight: 2.0
 first_stage_objectness_loss_weight: 1.0
 initial_crop_size: 14
 maxpool_kernel_size: 2
 maxpool_stride: 2
 second_stage_box_predictor {
   mask_rcnn_box_predictor {
     use_dropout: false
     dropout_keep_probability: 1.0
     fc_hyperparams {
       op: FC
       regularizer {
         l2_regularizer {
           weight: 0.0
         }
       }
       initializer {
         variance_scaling_initializer {
           factor: 1.0
           uniform: true
           mode: FAN_AVG
         }
       }
     }
   }
 }
 second_stage_post_processing {
   batch_non_max_suppression {
     score_threshold: 0.0
     iou_threshold: 0.6
     max_detections_per_class: 100
     max_total_detections: 300
   }
   score_converter: SOFTMAX
 }
 second_stage_localization_loss_weight: 2.0
 second_stage_classification_loss_weight: 1.0
}
}

train_config: {
batch_size: 1
optimizer {
 momentum_optimizer: {
   learning_rate: {
     manual_step_learning_rate {
       initial_learning_rate: 0.0002
       schedule {
         step: 40000
         learning_rate: .0002
       }
       schedule {
         step: 900000
         learning_rate: .00002
       }
       schedule {
         step: 1200000
         learning_rate: .000002
       }
     }
   }
   momentum_optimizer_value: 0.9
 }
 use_moving_average: false
}
gradient_clipping_by_norm: 10.0
fine_tune_checkpoint: "C:/tensorflow1/models/research/object_detection/faster_rcnn_inception_v2_coco_2018_01_28/model.ckpt"
from_detection_checkpoint: true
# Note: The below line limits the training process to 200K steps, which we
# empirically found to be sufficient enough to train the pets dataset. This
# effectively bypasses the learning rate schedule (the learning rate will
# never decay). Remove the below line to train indefinitely.
num_steps: 200000
data_augmentation_options {
 random_horizontal_flip {
 }
}
}


train_input_reader: {
tf_record_input_reader {
 input_path: "C:/tensorflow1/models/research/object_detection/training/train.record"
}
label_map_path: "C:/tensorflow1/models/research/object_detection/training/labelmap.pbtxt"
}

eval_config: {
num_examples: 5
# Note: The below line limits the evaluation process to 10 evaluations.
# Remove the below line to evaluate indefinitely.
max_evals: 10
}

eval_input_reader: {
tf_record_input_reader {
 input_path: "C:/tensorflow1/models/research/object_detection/training/test.record"
}
label_map_path: "C:/tensorflow1/models/research/object_detection/training/labelmap.pbtxt"
shuffle: false
num_readers: 1
}

1 Ответ

0 голосов
/ 29 апреля 2020

возможно, вы используете vis_util.visualize_boxes_and_labels_on_image_array (...) для визуализации вашего bbox, попробуйте сначала изменить функцию, эта функция ограничивает bbox до 20 ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...