Tensorflow 对象检测 API:TensorBoard 中损坏的训练图像

Posted

技术标签:

【中文标题】Tensorflow 对象检测 API:TensorBoard 中损坏的训练图像【英文标题】:Tensorflow Object Detection API: Corrupted training images in TensorBoard 【发布时间】:2021-02-17 14:39:29 【问题描述】:

我在 TensorFlow 2 中使用 TensorFlow 对象检测 API,但在 TensorBoard 中显示的训练图像存在问题,如下所示:

虽然评估图像看起来正常,但问题不在于数据序列化。

为了确保它不是通过图像增强来完成的,我只在配置文件中进行了水平翻转。查看完整的配置文件:

model 
  center_net 
    num_classes: 3
    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
        
      
    
  


train_config: 

  batch_size: 5
  num_steps: 10000

  data_augmentation_options 
    random_horizontal_flip 
    
  
  optimizer 
    adam_optimizer: 
      epsilon: 1e-7  # Match tf.keras.optimizers.Adam's default.
      learning_rate: 
        cosine_decay_learning_rate 
          learning_rate_base: 0.3e-3
          total_steps: 10000
          warmup_learning_rate: 0.3e-3
          warmup_steps: 1000
        
      
    
    use_moving_average: false
  
  max_number_of_boxes: 100
  unpad_groundtruth_tensors: false

  fine_tune_checkpoint_version: V2
  fine_tune_checkpoint: "C:/ObjectDetection/FaceMaskDetection/Zoo/centernet_resnet50_v1_fpn_512x512_coco17_tpu-8/checkpoint/ckpt-0"
  fine_tune_checkpoint_type: "fine_tune"


train_input_reader: 
  label_map_path: "C:/ObjectDetection/FaceMaskDetection/Dataset/TFRecord/label_map.pbtxt"
  tf_record_input_reader 
    input_path: "C:/ObjectDetection/FaceMaskDetection/Dataset/TFRecord/train.record"
  


eval_config: 
  metrics_set: "coco_detection_metrics"
  use_moving_averages: false
  batch_size: 1;


eval_input_reader: 
  label_map_path: "C:/ObjectDetection/FaceMaskDetection/Dataset/TFRecord/label_map.pbtxt"
  shuffle: false
  num_epochs: 1
  tf_record_input_reader 
    input_path: "C:/ObjectDetection/FaceMaskDetection/Dataset/TFRecord/eval.record"
  

我正在使用centernet_resnet50_v1_fpn_512x512_coco17_tpu-8。奇怪的是损失和mAP看起来都很合理,我认为我无法用如此糟糕的训练图像获得这些数字。只是一些可视化错误吗?

【问题讨论】:

我也遇到了同样的问题。我非常有信心我的 TFRecords 很好,因为我将它们与我们自己的培训工具包一起使用。此外,验证可视化不会暴露任何问题。我相信训练图像在保存到摘要之前会在某处重新归一化(乘以 255),这会导致这种情况。 【参考方案1】:

我之前会遇到类似的问题,你的图像很可能没问题。这似乎是一个影响 Tensorboard 可视化的 Tensorboard/Tensorflow 标准化错误。这里有一个广泛的问题:https://github.com/tensorflow/models/issues/9115

您可以在此处阅读详细信息,总体而言,唯一的缺点是图像在 Tensorboard 中看起来很奇怪。

【讨论】:

以上是关于Tensorflow 对象检测 API:TensorBoard 中损坏的训练图像的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow 对象检测 API - 对象检测 api 中的损失意味着啥?

TensorFlow 对象检测 API 中未检测到任何内容

具有奇怪检测结果的 TensorFlow 对象检测 api

Tensorflow 对象检测 API 中的过拟合

Tensorflow 对象检测 API - 验证丢失行为

Tensorflow 2 对象检测 API:Numpy 版本错误