我正在尝试使用 mobilenetv3_small_seg 架构训练 deeplabv3 模型。我训练了模型,但我得到的预测是一个完整的空白掩码,没有类预测。我遵循的培训步骤是:
在 Google Colab 中克隆了官方存储库。
我准备了只有一个类的数据集(在脸上分割嘴唇)。我遵循 Pascal VOC12 数据集格式。我创建了 RGB 蒙版 (0, 255, 0),其周围有白色边界 (255, 255, 255) 和黑色背景 (0, 0, 0),如下所示。
然后我在此脚本的帮助下将 RGB 蒙版转换为具有背景:0、前景:1 和边界:255 的单通道 png(8 位),如下所示:
然后,我通过修改此脚本成功地将数据集转换为 tfrecord 。
然后我在 data_generator.py 中添加了我的数据集描述,其中 ignore_label=255 和 num_classes=2。
最后,我开始使用以下命令进行训练:
!python train.py \ --logtostderr \ --training_number_of_steps=10000 \ --train_split="val" \ --model_variant="mobilenet_v3_small_seg" \ --decoder_output_stride=16 \ --train_crop_size="256,256" \ --train_batch_size=16 \ --dataset="pqr" \ --save_interval_secs=600 \ --save_summaries_secs=300 \ --save_summaries_images=True \ --log_steps=200 \ --train_logdir=${PATH_TO_TRAIN_DIR} \ --dataset_dir=${PATH_TO_DATASET}
训练完成后,我用几张不同的图像测试了模型。模型的输出是 (256, 256) 数组,所有值都等于 0。没有一个值我得到 1 或其他任何值。
我是机器学习的新手。我想知道
- 我的流程有什么问题?我看了很多教程,但我找不到答案。
- 我的数据集有什么问题吗?该数据集共包含 2000 张图像。
- 我找不到 mobilenetv3_small 的预训练权重。如果有人知道,请分享,以便我进行迁移学习。
- 我将类数设置为 2(背景和前景)。那正确吗?