计算机系统应用教程网站

网站首页 > 技术文章 正文

CV技术:评估边缘检测?不要使用 RMSE、PSNR 或 SSIM

btikc 2024-10-25 10:52:55 技术文章 6 ℃ 0 评论

图像分割和边缘检测是密切相关的任务。以沿海分割模型的输出为例:

图 1:从分割蒙版到边缘图(来源:作者)(数据集:LICS)(CC BY 4.0)

该模型将把每个像素分类为陆地或海洋(分割掩码)。然后海岸线就是这种分类发生变化的像素(边缘图)。一般来说,可以使用图像分割模型输出的边界进行边缘检测。

我想在我的研究中使用这种关系来帮助评估沿海图像分割模型。类似的研究都使用基于混淆矩阵的指标,如准确率、精确率和召回率。这些指标将预测分割掩码中的所有像素与地面实况掩码进行比较。

问题在于,这些可能会高估最重要的地区——海岸线的表现。

大多数像素位于海洋中部或完全被陆地包围。这使得它们比靠近海岸线的像素更容易分类。您可以在图 2 中看到这一点。不幸的是,这些错误可能会被正确分类的像素所掩盖。

图 2:U-Net 预测分割掩码应用于 LICS 的示例 [2]。最后一张图片给出了预测结果。括号中的数字表示将预测结果与真实掩码进行比较时的准确率。覆盖预测结果的红线给出了真实海岸线边缘。我们可以看到,只有靠近海岸线的像素被错误分类(来源:作者)

通过将分割蒙版转换为边缘图,我们可以应用侧重于海岸线的评估指标。然而,涉及评估边缘检测模型的研究有限。更糟糕的是,没有研究专门将它们应用于海岸线检测问题。

因此我做了一个实验[1]。

结果帮助我了解哪种边缘检测评估指标最适合我的问题。然而,结论适用于一般的边缘检测。为了明白这一点,我将:

  • 解释实验
  • 通过视觉分析、趋势分析和数学推理讨论证据
  • 解释为什么这意味着你应该避免使用 RMSE、PSNR 和 SSIM

最终,我们将看到,考虑预测边缘像素和真实边缘像素之间的距离非常重要。您可以在GitHub上找到这些结果的代码。

什么是边缘检测?

边缘检测是计算机视觉领域的一项基本技术,旨在识别图像中的边界或像素强度的突然变化。这些边界或“边缘”可以是物体的边界、纹理过渡或表面方向的显著变化。

请记住,使用图像分割的边界只是边缘检测的一种方法。您还可以使用直接输出边缘图的深度学习模型。或者,您可以使用基于梯度的方法,如 Sobel 或 Canny。这些方法通过计算图像中像素强度的梯度或变化率来检测边缘。

图 3:基于梯度的边缘检测算法的输出(来源:作者)

最佳方法取决于检测过程的目标。在某些情况下,我们可能希望找到图像中的所有突出边缘。在其他情况下,我们可以专注于特定边缘,例如识别两个不同区域之间的边界。后一种情况与边缘检测评估指标相关。

边缘检测评估指标

边缘检测算法的输出称为边缘图。这些将是二进制图,其中边缘像素为正类 (1),非边缘像素为负类 (0)。当我们想要将检测到的边缘图与地面真实边缘图进行比较时,我们使用评估指标。

为了找到好的指标,我开始查阅调查论文 [4, 5]。其中包括基于混淆矩阵的建议指标。但是,请记住,其解释与应用于图像分割模型时不同。例如:

  • 真正例 (TP)是与地面真实边缘位于同一位置的预测边缘像素的数量。
  • 准确度是正确标记的边缘像素的百分比。

边缘检测的混淆矩阵(来源:作者)

调查论文还提到了一些更有趣的指标。这些指标有望捕捉到有关边缘检测问题的一些独特信息。

均方根误差 (RMSE) 和峰值信噪比 (PSNR)

均方误差 (MSE) 是另一种常用指标,已用于评估边缘检测模型。在此基础上,我们得到了 RMSE 和 PSNR。

MSE、RMSE 和 PSNR 的公式(来源:作者)

RMSE 值越小,表示性能越好。相比之下,PSNR 值越大,表示性能越好。由于这两个指标都基于 MSE,因此我们应该期望它们会得出类似的结论。

结构相似性指数(SSIM)

SSIM 是一种常用于评估图像质量的指标。它试图以一种更类似于人类视觉系统的方式来比较图像,以识别对称性 [6]。亮度 (l) 比较图像的亮度,对比度 (c) 测量像素变化的相似性,结构 (s) 比较图像中图案的相似性。

SSIM 公式(来源:作者)

同样,在将 SSIM 应用于边缘检测时,我们应该考虑到我们正在处理二进制图像。例如,亮度 (l) 现在将比较边缘像素的平均数量。结构 (s) 可能是最重要的组成部分,因为它最终是我们正在比较的图像的结构。

品质因数(FOM)

一个不太常见的指标是 FOM [5]。它测量检测到的边缘与地面真实边缘的平均距离。在我的问题中,这可以告诉我们预测的海岸线与实际海岸线之间的距离。

FOM 公式(来源:作者)

我找不到此指标的 Python 实现。因此,如果您有兴趣应用它,您可能会发现下面的代码很有帮助。

def fom(self,ref_img,img, alpha = 1.0 / 9):
        """
        Computes Pratt's Figure of Merit for the given image img, using a gold
        standard image as source of the ideal edge pixels.
        """
        
        # Compute the distance transform for the gold standard image.
        dist = distance_transform_edt(np.invert(ref_img))

        fom = 1.0 / np.maximum(
            np.count_nonzero(img),
            np.count_nonzero(ref_img))

        N, M = img.shape

        for i in range(N):
            for j in range(M):
                if img[i, j]:
                    fom += 1.0 / ( 1.0 + dist[i, j] * dist[i, j] * alpha)

        fom /= np.maximum(
            np.count_nonzero(img),
            np.count_nonzero(ref_img))    

        return fom

所有这些指标都被其他研究人员用来评估他们的边缘检测问题。例如:

  • SSIM 用于比较图像下采样前后边缘检测算法的质量 [7]。
  • 使用 PSNR 和 SSIM 的组合来评估医学图像中的预测边缘 [8]。
  • 类似地,FOM 也用于 X 射线图像 [9]。

这一切都表明这些指标可以解决我的问题。但我们不要妄下结论……

实验

为了更好地理解这些指标,我将它们应用于 Sentinel-2 水域边缘数据集 (SWED) [3]。具体来说,我使用了包含来自 49 个测试地点的 98 张 Sentinel-2 卫星图像的测试集。每个实例包括 12 个光谱带作为输入和一个二进制分割掩码,其中每个像素被分类为陆地 (0) 或水 (1),作为输出。如上所示,掩码被转换为边缘图。

来自 SWED 测试集的示例(来源:作者)(许可证:Sentinel Data 法律声明)

光谱带是卫星记录的不同波长的电磁辐射。这些包括正常的可见光波段(即红、绿和蓝)。它们还包括人眼不可见的波长,如红外光。我考虑了所有波段,但让我们重点关注近红外 (NIR) 波段。这对于遥感问题中的水体提取尤为重要 [10]。

我对每幅图像中的 NIR 波段应用了 Canny 边缘检测。之所以选择该算法,是因为它的灵活性。特别是,您可以改变上 (t1) 和下 (t2) 滞后阈值。通过改变阈值,我们可以改变 Canny 对图像边缘的敏感度。

这个想法是,随着我们增加阈值,Canny 应该对海浪和土地开发等因素造成的噪声边缘变得不那么敏感。然后,在某个时候,即使是突出的沿海边缘也应该被排除。您可以在图 4 中看到这种效果。

图 4:增加 Canny 滞后阈值的效果示例。下限 (t2) 和上限 (t1) 阈值在括号中给出。(来源:作者)

我使用了 6 个阈值级别 - [50,100]、[50,150]、[100,200]、[100,300]、[200,400]、[200,600],其中 t2 和 t1 分别给出。目标是了解边缘检测指标选择最佳阈值级别的可靠性。这是使用视觉和趋势分析完成的。然后更深入地了解度量公式有助于解释此分析的结果。

视觉分析

在应用 ED 指标之前,我们进行了视觉分析。对于 98 张海岸线图像中的每一张,我们都选择了与地面真实边缘图最相似的检测到的边缘图。换句话说,我们选择了最佳阈值水平。

然后,我们应用了 RMSE、PSNR、SSIM 和 FOM,并记录了产生这些指标最佳结果的阈值。这使我们能够将这些指标选择的检测到的边缘图与主题专家选择的检测到的边缘图进行比较。

图 5 显示了此分析中的一些示例。您可以看到,随着我们增加阈值(顶部),检测到的边缘会减少。对于每幅图像,每个指标的最佳值以粗体表示。请注意,RMSE、PSNR 和 SSIM 倾向于选择具有更高阈值的边缘图。相比之下,FOM 倾向于选择更好的边缘图。那就是当我们将指标选择的边缘图与参考/地面真实边缘图进行比较时。

图 5:FOM 正确识别与地面实况最相似的检测到的边缘图的示例。每行给出不同的示例图像。列给出使用增加的 Hysterious 阈值检测到的边缘图。粗体数字给出每个指标的最佳值。(来源:作者)

事实上,分析表明 FOM 是选择最佳阈值最可靠的指标。它可以在 92.6% 的时间内选择更好的阈值,在 66.3% 的时间内选择最佳阈值。这与 RMSE、PSNR 和 SSIM 相比,它们分别可以在 6.3%、6.3% 和 11.6% 的时间内选择最佳阈值。

这提供了清晰的经验证据,表明 FOM 是最合适的指标。然而,我们应该记住,这个过程是主观的。

趋势

图 6 中显示的趋势为 FOM 为何是最可靠的指标提供了更客观的证据。这些趋势给出了测试集中所有图像的指标平均值。

随着我们增加阈值,canny 会检测到更少的边缘。当我们这样做时,我们看到 RMSE、PSNR 和 SSIM 显示出单调的改进。因此,这些指标可能会选择边缘较少的图像,而不是最接近地面真相的图像。相比之下,我们没有看到 FOM 的这种单调改进。

图 6:NIR 光谱带的平均 RMSE、PSNR、SSIM 和 FOM,其中误差线由标准差给出。

图 6 中的误差线由每个阈值的度量值的标准偏差给出。我们可以看到 FOM 值的方差相对较大。这正是我们对能够识别最佳检测边缘图的度量所期望的。

由于每幅图像中存在不同的条件,我们预计最佳阈值会有所不同。例如,在一幅图像中,我们可能能够使用更高的阈值,因为海岸线与其他边缘更加明显。这会导致在所有图像中进行评估时阈值水平的变化性更高。

好吧,看起来只有 FOM 运行良好。问题是为什么?

一些数学

为了理解原因,我仔细研究了 RMSE、PSNR 和 SSIM 的公式。我们应该认为比较边缘图是比较两幅图像的一个特例。也就是说,像素值只能取 1 或 0。

这意味着 MSE 中的值 (Ei,j ? Gi,j )2 对于错误标记的像素将取 1,否则为 0。

(来源:作者)

这使我们能够根据基于混淆矩阵的度量来重新制定 MSE:

(来源:作者)

进一步分析表明,随着阈值的增加,标记为边缘的像素越来越少。这会导致 FP 越来越少,FN 越来越多。这些影响将对 MSE 产生相反的影响。然而,我们发现 FP 的下降速度往往高于 FN 的增加速度。随着阈值的增加,这会导致 MSE(以及 RMSE 和 PSNR)单调改善。

数学计算稍微复杂一些,但 SSIM 也可以用这种方式重新表述。你可以在论文的附录中找到证明。在这种情况下,关系并不那么清晰,但 SSIM 可能受到与 MSE 类似的影响。即随着我们增加阈值,混淆矩阵度量会单调变化。

(来源:作者)

这些单调变化解释了这个问题的结果。随着我们提高 Canny 的阈值水平,算法检测到的边缘更少。这导致 RMSE、PSNR 和 SSIM 的值单调改善。换句话说,这些指标倾向于选择产生较少边缘的阈值水平,而不是最接近地面真实边缘图的阈值水平。

这种效应并不一定存在于所有边缘检测问题中。其他方法(例如深度学习)不会有这种敏感机制。

尽管如此,MSE 和 SSIM 的重新表述表明这些指标与基于混淆矩阵度量的指标相比没有任何优势。对于任何边缘检测问题都是如此。使用它们会比准确率、精确率或召回率等常用指标增加不必要的复杂性。

所有这些指标的缺点是,无论错误标记的像素与地面真实边缘的距离如何,它们都会给予相同的权重。在我的问题中,距离实际海岸线几米远的海岸线像素与距离实际海岸线几公里远的海岸线像素被视为相同。

相比之下,FOM 结合了像素之间的距离。这为海岸线检测问题提供了有意义的解释——检测到的海岸线与实际海岸线之间的平均距离。

一般来说,FOM 将给出检测到的边界与地面真实边界之间的平均距离。当与混淆矩阵指标配对时,这可以在用于评估边缘检测或图像分割模型时提供独特的信息。

参考:

https://towardsdatascience.com/evaluating-edge-detection-dont-use-rmse-psnr-or-ssim-841a0f2a12cb

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表