Python TensorFlow:如何处理图像分割中的空白标记数据?

Python TensorFlow:如何处理图像分割中的空白标记数据?,python,tensorflow,neural-network,deep-learning,image-segmentation,Python,Tensorflow,Neural Network,Deep Learning,Image Segmentation,我想知道如何在使用TensorFlow进行图像分割时处理图像中未标记的部分。例如,我的输入是高度*宽度*通道的图像。标签的大小太高*太宽,每个像素有一个标签 图像的某些部分已注释,其他部分未注释。我希望这些部分对梯度计算没有任何影响。此外,我对网络预测这种“无效”标签不感兴趣 这有标签或函数吗?目前,我正在使用tf.nn.sparse\u softmax\u cross\u entropy\u with\u logits如果我理解正确,您对每个带有标签空白的图像都有一部分不感兴趣。既然没有一种简

我想知道如何在使用TensorFlow进行图像分割时处理图像中未标记的部分。例如,我的输入是高度*宽度*通道的图像。标签的大小太高*太宽,每个像素有一个标签

图像的某些部分已注释,其他部分未注释。我希望这些部分对梯度计算没有任何影响。此外,我对网络预测这种“无效”标签不感兴趣


这有标签或函数吗?目前,我正在使用
tf.nn.sparse\u softmax\u cross\u entropy\u with\u logits

如果我理解正确,您对每个带有标签空白的图像都有一部分不感兴趣。既然没有一种简单的方法可以获得这个空白点后面的真实值,为什么不将这些点映射到背景标签,并尝试获得模型的结果呢?我将尝试在预处理状态下清除此空标签中的数据标签,并用背景标签替换它们

另一种可能的策略是,如果您不想简单地将空白标签映射到背景,则可以运行一个遮罩(从上到下从右到左连续移动)来检查空白像素中的相邻像素(例如5x5像素的区域),并为空白像素指定除空白外最常见的标签


此外,您还可以始终保留更好的数据子集,过滤空标签百分比超过阈值的数据。您可以只保留没有空白标签的图像,或者更可能的是,您可以保留只有低于阈值(例如5%)的未标记点的图像。在这些图像中,您可以实现前面提到的替换无效标签的策略

我对TF不是100%熟悉。但是,您是否考虑过使用损失的
权重
参数?
查看它有一个参数
weights

权重
:损失系数。这必须是标量或与标签具有相同的等级

您可以将“void”像素的
权重设置为零,从而使损失忽略它们


您还可以使用_logits
tf.nn.sparse\u softmax\u cross\u entropy\u中删除减少值,并用于执行加权。

反问:您如何知道哪些部分的标签不正确?或者,您的网络如何知道哪些部分的标签不正确?请查看此数据集,例如:图像的像素标记为“void”,甚至是背景数据。我就是这样知道的。网络如何知道这一点几乎是我的问题。好吧,这并不是说图像的某些部分没有正确注释,只是它们被注释了一些应该忽略的指示?你所谓的“可能无效数据”可能是一种需要半监督学习的情况,并且有多种方法可以让它工作,以及用Tensorflow实现一个实现。你的问题太广泛了,从表面上看,甚至与软件开发无关。考虑对半监督学习任务做更多的研究,因为目前不能有一个规范的答案适合堆栈溢出的答案。理想情况下,你会使用像素的“信息增益”损失(这是一个泛化的“交叉熵”损失)我已经尝试了你的第一个建议。我已将所有空数据标记为0,不幸的是,网络随后会对非空区域进行0标记预测。我想这是因为我的数据的性质。这就是为什么我希望有一个像caffe一样的空白标签。网络总是会对像素进行错误分类,即使在训练数据中也不可能有完美的准确性。您替换了多少像素,图像中有多少百分比的图像有空标签?也许您应该过滤所有带有无效标签的图像,并运行您的模型,以查看您的代码是否存在其他问题,而不是带有无效标签的图像。仅供参考,对于您的非稀疏需求,还存在引用