用于图像分割的后处理多类预测?

时间:2018-08-17 15:02:17

标签: image-processing machine-learning neural-network computer-vision

我的FCN受过训练,可以检测10个不同的类别,并生成500x500x10的输出,每个最终维度都是不同类别的预测概率。

通常,我已经看到使用统一阈值(例如0.5)对概率矩阵进行二值化。但是,就我而言,这还不能完全解决,因为当阈值为0.3时,某些类别的IoU会增加,而对于其他类别,其IoU则为0.8

因此,我不必为每个类随意选择阈值,而可以使用概率更大的方法来最终确定阈值。我考虑过使用CRF,但这还需要完成阈值设置。有关如何进行的任何想法?

示例:考虑一张有5种不同鸟类的森林的图像。现在,我正在尝试输出将森林和五只鸟(六类)分割开的图像,每只鸟都有一个单独的标签。网络输出6个混淆矩阵,表示像素属于特定类别的置信度。现在,像素的正确答案并不总是具有最高置信度值的类别。因此,一个大小适合所有方法,否则最大值方法将不起作用。

1 个答案:

答案 0 :(得分:1)

CRF后处理方法

您无需设置阈值即可使用CRF。我对CRF的任何python库都不熟悉,但是原则上,您需要定义的是:

  1. 每个节点的10个类别的概率分布 (像素),这只是网络的输出。
  2. 垂直方向电位:10×10矩阵,其中元素Aij表示一个像素属于i类,另一个像素属于j类的配置的“强度”。如果将电势设置为对角线的值(alpha >> 1),而对角线的值设置为1,则alpha是使您保持预测一致性的正则化力(如果像素X为Y类,则相邻像素为X更有可能属于同一类别。

这只是如何定义CRF的一个示例。

端到端NN方法

给您的网络造成损失,这将惩罚具有不同类别邻居的像素。请注意,对于新的正则化损失的权重,您仍将得到一个可调参数。