问题描述
我对此很陌生,所以在这里露面了。
我已经为自己编写了一个程序来识别工具,问题是,在运行该程序时会看到该对象,但是名称为N / A,请注意,并不是每个标签都出现这种情况(无法识别螺丝刀)但是,当它认为看到一个时,便将其标记为“螺丝起子”而不是“不适用”
现在,我已经检查了无数人遇到此问题的论坛,但我找不到发生这种情况的原因。 我有16个对象的16个类,labelmap顺序正确,并且与其他多个站点上显示的完全一样。
所有的想法都在这里..
:管道:
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"
numsteps:300000 startup_delay_steps:0.0 copys_to_aggregate: 8个max_number_of_Boxes:100个unpad_groundtruth_tensors:false
fine_tune_checkpoint_type:“检测到” use_bfloat16:false
fine_tune_checkpoint_version:V2} train_input_reader {
label_map_path: “ C:/用户/调整/桌面/ Object_detection /模型/研究/ object_detection /培训/labelmap.pbtxt” tf_record_input_reader { input_path:“ C:/用户/调整/桌面/ Object_detection /模型/研究/object_detection/train.record” }} eval_config {metrics_set:“ coco_detection_metrics”
use_moving_averages:错误batch_size:1} eval_input_reader {
label_map_path: “ C:/用户/调整/桌面/ Object_detection /模型/研究/ object_detection /培训/labelmap.pbtxt” 随机播放:错误num_epochs:1 tf_record_input_reader { input_path:“ C:/用户/调整/桌面/ Object_detection /模型/研究/object_detection/test.record” }
:标签图:
项目{ display_name:“人” 名称:“人” id:1}项目{ display_name:“压接工具” 名称:“ crimping_tool” id:2}项目{ display_name:“ drill_set” 名称:“ drill_set” id:3}项目{ display_name:“实用刀” 名称:“ utility_knife” id:4}项目{ display_name:“螺丝刀” 名称:'screwdriver' id:5}项目{ display_name:“ stripping_pliers” 名称:“ stripping_pliers” id:6}项目{ display_name:“ cutting_pliers” 名称:“ cutting_pliers” id:7}项目{ display_name:“ stripping_tool” 名称:“ stripping_tool” id:8}项目{ display_name:“钳子” 名称:“钳子” id:9}项目{ display_name:'管道扳手' 名称:'pipeWrench' id:10}项目{ display_name:“测量工具” 名称:“ measuring_tool” id:11}项目{ 显示名称:“ cable_cutter_angled” 名称:“ cable_cutter_angled” id:12}项目{ display_name:“ stripping_tool_2” 名称:“ stripping_tool_2” id:13}项目{ display_name:“扳手” 名称:“扳手” id:14}项目{ display_name:“ hexkey_set” 名称:“ hexkey_set” id:15}项目{ display_name:“ drill_set_2” 名称:“ drill_set_2” id:16}
解决方法
可能的原因可能是您在TF记录中使用的“标签ID”不正确。当将图像和注释转换为正确设置了“图像/对象/类/标签”的那些TF记录时,您是否可以验证?
'image/object/class/label':
dataset_util.int64_list_feature(category_ids)
我还注意到您的labelmap文件中有一个“ display_name”,我从未使用过display_name,而且不确定是否还会导致您的N / A标签。
如果在tfrecord中正确设置了标签,那么我建议尝试使用以下结构的labelmap文件: 项目{ 编号:1 名称:“人” }
项目{ id:2 名称:“ crimping_tool” }
项目{ id:3 名称:“ drill_set” }
...