Faster R-CNN模型评估重复报错:忽略已添加图像ID问题求助
问题:评估Faster R-CNN模型时持续抛出重复Image ID警告并中断
使用faster_rcnn_resnet101_v1_1024x1024_coco17_tpu-8预训练模型,训练过程无异常,但执行评估命令时,加载cuDNN版本8400后,持续抛出WARNING:tensorflow:Ignoring ground truth/detection with image id 1016176252 since it was previously added警告直至中断。已尝试添加num_examples和max_evals参数调整无效,另一数据集评估正常。
执行命令
python model_main_tf2.py --pipeline_config_path=./training_outlook_action_ctx/training_1/pipeline.config --model_dir=./training_outlook_action_ctx/training_1 --checkpoint_dir=./training_outlook_action_ctx/training_1
报错信息
WARNING:tensorflow:Ignoring ground truth with image id 1016176252 since it was previously added W0810 10:17:12.131517 140545620840832 coco_evaluation.py:113] Ignoring ground truth with image id 1016176252 since it was previously added WARNING:tensorflow:Ignoring detection with image id 1016176252 since it was previously added W0810 10:17:12.131881 140545620840832 coco_evaluation.py:196] Ignoring detection with image id 1016176252 since it was previously added ...
pipeline.config配置
# Faster R-CNN with Resnet-50 (v1) # Trained on COCO, initialized from Imagenet classification checkpoint # This config is TPU compatible. model { faster_rcnn { num_classes: 7 image_resizer { fixed_shape_resizer { width: 1024 height: 1024 } } feature_extractor { type: 'faster_rcnn_resnet101_keras' batch_norm_trainable: true } 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 } } } share_box_across_classes: true } } 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 use_static_shapes: true use_matmul_crop_and_resize: true clip_anchors_to_image: true use_static_balanced_label_sampler: true use_matmul_gather_in_matcher: true } } train_config: { batch_size: 2 sync_replicas: true startup_delay_steps: 0 replicas_to_aggregate: 8 num_steps: 200000 optimizer { momentum_optimizer: { learning_rate: { cosine_decay_learning_rate { learning_rate_base: .04 total_steps: 100000 warmup_learning_rate: .013333 warmup_steps: 2000 } } momentum_optimizer_value: 0.9 } use_moving_average: false } fine_tune_checkpoint_version: V2 fine_tune_checkpoint: "/pretrained_models/faster_rcnn_resnet101_v1_1024x1024_coco17_tpu-8/checkpoint/ckpt-0" fine_tune_checkpoint_type: "detection" data_augmentation_options { random_horizontal_flip { } } data_augmentation_options { random_adjust_hue { } } data_augmentation_options { random_adjust_contrast { } } data_augmentation_options { random_adjust_saturation { } } data_augmentation_options { random_square_crop_by_scale { scale_min: 0.6 scale_max: 1.3 } } max_number_of_boxes: 100 unpad_groundtruth_tensors: false use_bfloat16: true # works only on TPUs } train_input_reader: { label_map_path: "./training_outlook_action_ctx/data/label_map.pbtxt" tf_record_input_reader { input_path: "./training_outlook_action_ctx/data/train.records" } } eval_config: { metrics_set: "coco_detection_metrics" use_moving_averages: false batch_size: 2 } eval_input_reader: { label_map_path: "./training_outlook_action_ctx/data/label_map.pbtxt" shuffle: false tf_record_input_reader { input_path: "./training_outlook_action_ctx/data/train.records" } }
环境信息
- OS: Debian GNU/Linux 11 (bullseye)
- Python: 3.9.12
- Tensorflow: 2.9.1
解决方法
- 检查并修复数据集重复数据:警告核心原因是评估用的TFRecord文件中存在重复的image id,同一个ID被多次写入。需要检查生成TFRecord的脚本,确保每个图像只被处理一次,重新生成无重复数据的TFRecord。
- 更换评估数据集:当前配置中eval_input_reader使用的是训练集
train.records,建议替换为独立的测试集test.records,符合评估逻辑的同时避免重复ID问题。 - 过滤重复记录:如果必须使用训练集评估,可编写脚本遍历TFRecord,过滤掉重复image id的记录后重新生成文件。
内容的提问来源于stack exchange,提问作者edi graovac
相关产品推荐
相关产品推荐

