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