Labels not showing correct name

226 Views Asked by At

i am pretty new to this all so bare with me here.

I've made myself a program to recognise tools, issue is, while running it will see the object, but the name will be N/A, note that this doesn't happen to every label (doesn't recognise screwdrivers yet but when it thinks it sees one, it does label it Screwdriver instead of N/A)

Now, I've checked countless forums from people with this issue and i cannot find why this is happening. I have 16 classes for the 16 objects, labelmap is in order and exactly as shown on multiple other sites.

All out of idea's here ..

:pipeline:

model {   ssd {
num_classes: 16
image_resizer {
  keep_aspect_ratio_resizer {
    min_dimension: 512
    max_dimension: 512
    pad_to_max_dimension: false
  }
}
feature_extractor {
  type: "ssd_efficientnet-b0_bifpn_keras"
  conv_hyperparams {
    regularizer {
      l2_regularizer {
        weight: 4e-05
      }
    }
    initializer {
      truncated_normal_initializer {
        mean: 0.0
        stddev: 0.03
      }
    }
    activation: SWISH
    batch_norm {
      decay: 0.99
      scale: true
      epsilon: 0.001
    }
    force_use_bias: true
  }
  bifpn {
    min_level: 3
    max_level: 7
    num_iterations: 3
    num_filters: 64
  }
}
box_coder {
  faster_rcnn_box_coder {
    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
    use_matmul_gather: true
  }
}
similarity_calculator {
  iou_similarity {
  }
}
box_predictor {
  weight_shared_convolutional_box_predictor {
    conv_hyperparams {
      regularizer {
        l2_regularizer {
          weight: 4e-05
        } 
      }
      initializer {
        random_normal_initializer {
          mean: 0.0
          stddev: 0.01
        }
      }
      activation: SWISH
      batch_norm {
        decay: 0.99
        scale: true
        epsilon: 0.001
      }
      force_use_bias: true
    }
    depth: 64
    num_layers_before_predictor: 3
    kernel_size: 3
    class_prediction_bias_init: -4.6
    use_depthwise: true
  }
}
anchor_generator {
  multiscale_anchor_generator {
    min_level: 3
    max_level: 7
    anchor_scale: 4.0
    aspect_ratios: 1.0
    aspect_ratios: 2.0
    aspect_ratios: 0.5
    scales_per_octave: 3
  }
}
post_processing {
  batch_non_max_suppression {
    score_threshold: 1e-08
    iou_threshold: 0.5
    max_detections_per_class: 100
    max_total_detections: 100
  }
  score_converter: SIGMOID
}
normalize_loss_by_num_matches: true
loss {
  localization_loss {
    weighted_smooth_l1 {
    }
  }
  classification_loss {
    weighted_sigmoid_focal {
      gamma: 1.5
      alpha: 0.25
    }
  }
  classification_weight: 1.0
  localization_weight: 1.0
}
encode_background_as_zeros: true
normalize_loc_loss_by_codesize: true
inplace_batchnorm_update: true
freeze_batchnorm: false
add_background_class: false   } } train_config {   batch_size: 1   data_augmentation_options {
random_horizontal_flip {
}   }   data_augmentation_options {
random_scale_crop_and_pad_to_square {
  output_size: 512
  scale_min: 0.1
  scale_max: 2.0
}   }   sync_replicas: true   optimizer {
momentum_optimizer {
  learning_rate {
    cosine_decay_learning_rate {
      learning_rate_base: 0.08
      total_steps: 300000
      warmup_learning_rate: 0.001
      warmup_steps: 2500
    }
  }
  momentum_optimizer_value: 0.9
}
use_moving_average: false   }   fine_tune_checkpoint: "C:/Users/djust/Desktop/Object_detection/models/research/object_detection/efficientdet_d0_coco17_tpu-32/checkpoint/ckpt-0"

num_steps: 300000 startup_delay_steps: 0.0 replicas_to_aggregate: 8 max_number_of_boxes: 100 unpad_groundtruth_tensors: false
fine_tune_checkpoint_type: "detection" use_bfloat16: false
fine_tune_checkpoint_version: V2 } train_input_reader {
label_map_path: "C:/Users/djust/Desktop/Object_detection/models/research/object_detection/training/labelmap.pbtxt" tf_record_input_reader { input_path: "C:/Users/djust/Desktop/Object_detection/models/research/object_detection/train.record" } } eval_config { metrics_set: "coco_detection_metrics"
use_moving_averages: false batch_size: 1 } eval_input_reader {
label_map_path: "C:/Users/djust/Desktop/Object_detection/models/research/object_detection/training/labelmap.pbtxt" shuffle: false num_epochs: 1 tf_record_input_reader { input_path: "C:/Users/djust/Desktop/Object_detection/models/research/object_detection/test.record" } }

:Labelmap:

item { display_name: 'person' name: 'person' id: 1 } item { display_name: 'crimping_tool' name: 'crimping_tool' id: 2 } item { display_name: 'drill_set' name: 'drill_set' id: 3 } item { display_name: 'utility_knife' name: 'utility_knife' id: 4 } item { display_name: 'screwdriver' name: 'screwdriver' id: 5 } item { display_name: 'stripping_pliers' name: 'stripping_pliers' id: 6 } item { display_name: 'cutting_pliers' name: 'cutting_pliers' id: 7 } item { display_name: 'stripping_tool' name: 'stripping_tool' id: 8 } item { display_name: 'pliers' name: 'pliers' id: 9 } item { display_name: 'pipewrench' name: 'pipewrench' id: 10 } item { display_name: 'measuring_tool' name: 'measuring_tool' id: 11 } item { display_name: 'cable_cutter_angled' name: 'cable_cutter_angled' id: 12 } item { display_name: 'stripping_tool_2' name: 'stripping_tool_2' id: 13 } item { display_name: 'wrench' name: 'wrench' id: 14 } item { display_name: 'hexkey_set' name: 'hexkey_set' id: 15 } item { display_name: 'drill_set_2' name: 'drill_set_2' id: 16 }

1

There are 1 best solutions below

1
On

A possible cause could be that in the TFrecords that you use the "label ID" is not correct. Can you validate that when converting your images and annotations to those TF records that the 'image/object/class/label' is set correctly?

'image/object/class/label':
    dataset_util.int64_list_feature(category_ids)

I also noticed there is a "display_name" in your labelmap file, I've never used the display_name and I'm not sure if that could also be a cause of your N/A labels.

If the labels are correctly set in the tfrecord, then I would advise to try a labelmap file with the following structure: item { id: 1 name: 'person' }

item { id: 2 name: 'crimping_tool' }

item { id: 3 name: 'drill_set' }

...