在deeplab上训练我自己的数据集,但推理全黑



我尝试在 TensorFlow 模型花园中的 deeplab 模型上训练自己的数据集,随着时间的推移,我可以得到一个减少的损失结果,我使用官方存储库提供的预训练模型。

但是当我尝试使用最新的检查点查看或尝试将模型冻结为 .pb 并进行推理时,结果除了黑色图像(我使用 NumPy 检查这些图像时,所有像素均为 0(。

我的训练脚本是这样的:

python deeplab/train.py 
--logtostderr 
--num_clones=1 
--training_number_of_steps=500000 
--train_split="train" 
--model_variant="xception_65" 
--atrous_rates=6 
--atrous_rates=12 
--atrous_rates=18 
--output_stride=16 
--decoder_output_stride=4 
--train_crop_size="513,513" 
--train_batch_size=2 
--dataset={$OWN_DATASET} 
--train_logdir={$TRAIN_LOGDIR} 
--dataset_dir={$DATASET_DIR}  
--tf_initial_checkpoint={$INITIAL_CHECKPOINT}

以前有人发生过吗?

这是一个旧线程,我不知道您是否还需要帮助,但您没有提供有关数据集的太多信息。以下是一些常规提示:

  1. 尝试将这些标志设置为 train.py

    --fine_tune_batch_norm=False 
    --initialize_last_layer=False 
    --last_layers_contain_logits_only=True 
    
  2. 确保您的 SegmentationClassRaw 文件夹标签掩码为 0、1、2、3...,其中 0 是背景,1、2、3、...是单独的类。运行"asarray(image("以查看这些像素并确保标签正确。

  3. 如果数据集不平衡,可以尝试在 train.py 中设置不同标签的权重。

    --label_weights=1   # Weight for label 0 (Background)
    --label_weights=10   #Weight for label 1 (Object class 1)
    --label_weights=15   #Weight for label 2 (Object class 2)
    
  4. 如果全部失败,请尝试更大的数据集。225 张图像和 2000 个步骤(带有初始 mobilenetv2 检查点(的数据集大小为我产生了结果,尽管由于数据集大小很小,准确性/性能不是很好。作为参考点,这个小数据集在2000步后损失了大约0.05-0.06。

相关内容

  • 没有找到相关文章

最新更新