TensorFlow:如何处理图像分割中的无效标记数据?
TensorFlow: How to handle void labeled data in image segmentation?
我想知道如何使用 TensorFlow 处理图像分割中未标记的部分。比如我的输入是一张高*宽*通道的图片。标签太高*宽了,每个像素一个标签。
图像的某些部分已注释,其他部分未注释。我希望这些部分对梯度计算没有任何影响。此外,我对预测这个“空”标签的网络不感兴趣。
是否有标签或功能?目前我正在使用 tf.nn.sparse_softmax_cross_entropy_with_logits
.
如果我没理解错的话,每张图片中都有一部分标签为 void,您对此根本不感兴趣。既然没有一种简单的方法来获得这个空点背后的真正价值,为什么不将这些点映射到背景标签并尝试为您的模型获取结果呢?我会尝试在预处理状态下清除此无效标签中的数据标签,并将其替换为背景标签。
另一种可能的策略,如果您不想简单地将空白标签映射到背景,则 运行 一个遮罩(从上到下从右到左的连续运动)来检查来自一个空像素(假设一个 5x5 像素的区域)并为空像素分配除 void 之外最常见的标签。
此外,您始终可以保留更好的数据子集,过滤无效标签百分比超过阈值的数据。您可以只保留没有空标签的图像,或者更可能的是,您可以保留只有低于阈值(例如 5%)的未标记点的图像。在此图像中,您可以实施上述策略来替换 void 标签。
我不是 100% 熟悉 TF。但是,你考虑过使用loss的weights
参数吗?
查看 tf.loses.sparse_softmax_cross_entropy
它有一个参数 weights
weights
: Coefficients for the loss. This must be scalar or of same rank as labels
您可以将 weight
of "void" 个像素设置为零,从而使损失忽略它们。
您也可以从 tf.nn.sparse_softmax_cross_entropy_with_logits
中删除减少并使用 tf.losses.compute_weighted_loss
执行加权。
我想知道如何使用 TensorFlow 处理图像分割中未标记的部分。比如我的输入是一张高*宽*通道的图片。标签太高*宽了,每个像素一个标签。
图像的某些部分已注释,其他部分未注释。我希望这些部分对梯度计算没有任何影响。此外,我对预测这个“空”标签的网络不感兴趣。
是否有标签或功能?目前我正在使用 tf.nn.sparse_softmax_cross_entropy_with_logits
.
如果我没理解错的话,每张图片中都有一部分标签为 void,您对此根本不感兴趣。既然没有一种简单的方法来获得这个空点背后的真正价值,为什么不将这些点映射到背景标签并尝试为您的模型获取结果呢?我会尝试在预处理状态下清除此无效标签中的数据标签,并将其替换为背景标签。
另一种可能的策略,如果您不想简单地将空白标签映射到背景,则 运行 一个遮罩(从上到下从右到左的连续运动)来检查来自一个空像素(假设一个 5x5 像素的区域)并为空像素分配除 void 之外最常见的标签。
此外,您始终可以保留更好的数据子集,过滤无效标签百分比超过阈值的数据。您可以只保留没有空标签的图像,或者更可能的是,您可以保留只有低于阈值(例如 5%)的未标记点的图像。在此图像中,您可以实施上述策略来替换 void 标签。
我不是 100% 熟悉 TF。但是,你考虑过使用loss的weights
参数吗?
查看 tf.loses.sparse_softmax_cross_entropy
它有一个参数 weights
weights
: Coefficients for the loss. This must be scalar or of same rank as labels
您可以将 weight
of "void" 个像素设置为零,从而使损失忽略它们。
您也可以从 tf.nn.sparse_softmax_cross_entropy_with_logits
中删除减少并使用 tf.losses.compute_weighted_loss
执行加权。