我的FCN被训练为检测10个不同的类并产生500x500x10
的输出,其中每个最终维度是不同类别的预测概率。
通常,我已经看到使用统一阈值,例如0.5
,来对概率矩阵进行二值化。但是,在我的情况下,这并没有完全削减它,因为当阈值为0.3
时,某些类的IoU增加,而对于其他类,则为0.8
。
因此,我不必随意选择每个类的阈值,而是使用更概率的方法来确定阈值。我想过使用CRF,但这也需要进行阈值处理。关于如何进行的任何想法?
示例:考虑具有5种不同鸟类的森林图像。现在我试图输出一个已分割森林和五只鸟的图像,6个类,每个类都有一个单独的标签。网络输出6个混淆矩阵,表示像素落入特定类别的置信度。现在,像素的正确答案并不总是具有最高置信度值的类。因此,一种尺寸适合所有方法或最大值方法将不起作用。
CRF后处理方法
您无需设置阈值即可使用CRF。我不熟悉任何用于CRF的python库,但原则上,您需要定义的是:
这只是您如何定义CRF的一个示例。
端到端NN方法
为您的网络添加一个损失,这会损害具有不同类别邻居的像素。请注意,对于新正则化损失的权重,您仍然会得到一个可调参数。