4

目前,我正在努力使用在我自己的数据集上训练的deeplabV3+来改进语义分割问题的结果。我已经使用模型动物园中的不同预训练模型成功训练了 deeplabV3+几次,全部基于xception_65,但我的结果保持在相同的miou范围内,大约在这个区间[10, 11]附近。我只有一个具有 11GB GPU 内存的 GPU 可供使用。我的数据集有8 个类,对象大小从小到大不等,而且非常不平衡。以下是标签权重:[1, 4, 4, 17, 42, 36, 19, 20]。在我的数据集中,我有757个训练实例和100 个 验证

训练时的一般趋势是:前 10k 次迭代我的损失减少了,但随后它只是振荡。
我试过了:

  • 调整参数,例如:学习率、last_layer_gradient_multiplier、权重衰减

  • 训练各种图像尺寸321、513、769

  • 在这个公式中使用上述权重进行某种加权

    权重 = tf.to_float(tf.equal(scaled_labels, 0)) * 1 + tf.to_float(tf.equal(scaled_labels, 1)) * 4 + tf.to_float(tf.equal(scaled_labels, 2)) * 4 + tf.to_float(tf.equal(scaled_labels, 3)) * 17 + tf.to_float(tf.equal(scaled_labels, 4)) * 42 + tf.to_float(tf.equal(scaled_labels, 5)) * 36 + tf. to_float(tf.equal(scaled_labels, 6)) * 19 + tf.to_float(tf.equal(scaled_labels, 7)) * 20 + tf.to_float(tf.equal(scaled_labels, ignore_label)) * 0.0

我在没有微调批量标准化参数(fine_tune_batch_norm = False)的情况下进行了训练。尽管我也尝试使用 321 裁剪大小训练这些参数(fine_tune_batch_norm = True),以便能够在我的 GPU中适应12的批量大小。

关键是我需要一些技巧来弄清楚我可以做些什么来改善这些结果。你们有什么感想?我需要更多数据来增加我的 miou 或硬件吗?

4

0 回答 0