Arb*_*Arb 3 image-processing image-segmentation tensorflow pytorch semantic-segmentation
我是语义分割的新手。我使用 FCN 来训练我的数据集。在数据集中有一些未知类的像素。我想从我的损失中排除这个类。所以我根据整个数据集的类分布定义了一个权重,并将未知类的权重设置为零,如下所示。但我仍然得到这门课的预测。你知道如何正确排除一个特定的类吗?
loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits
(logits=logits, labels=tf.squeeze(annotation,
squeeze_dims=[3]),name="entropy"))
weighted_losses = (loss * weights)
train_op = optimizer.minimize(weighted_losses,
var_list=tf.trainable_variables(),
global_step=tf.train.get_global_step())
Run Code Online (Sandbox Code Playgroud)
我不知道 pytorch,但我听说损失函数中有一些用于此目的的“ignore_index”,您可以忽略特定的类。如果这是解决我的问题的正确方法,你知道张量流中是否有一些等价的东西吗?
对于语义分割,您有 2 个“特殊”标签:一个是“背景”(通常为 0),另一个是“忽略”(通常为 255 或 -1)。
当目标标签中有“忽略”像素时,您的模型不能(也不应该)输出“忽略”标签。尽管如此,您的模型应该输出一些东西。这个像素被标记为“忽略”这一事实意味着无论您的模型输出该像素的任何内容都将被损失函数忽略(假设您告诉损失忽略“忽略”像素)。此外,如果您的测试/验证集具有“忽略”标签意味着无论您的模型为这些像素输出什么,评分机制都会将其忽略,并且不会被视为正确或不正确的预测。
总结一下:即使ground truth有“ignore”标签,模型也不能也不应该输出“ignore”。它只是输出它感觉像的任何有效标签,它完全没问题。
对于 tensorflow,您可以查看此线程。
归档时间: |
|
查看次数: |
1183 次 |
最近记录: |