4

我想提出一些关于计算机视觉研究的抽象问题。通过搜索网络和阅读论文,我还不能完全回答这些问题。

  1. 有人如何知道计算机视觉算法是否正确?
  2. 我们如何在计算机视觉的背景下定义“正确”?
  3. 形式化证明对理解计算机视觉算法的正确性有影响吗?

一点背景知识:我即将开始攻读计算机科学博士学位。我喜欢设计快速并行算法并证明这些算法的正确性。我也在一些课堂项目中使用过 OpenCV,尽管我没有接受过太多计算机视觉方面的正式培训。

一位潜在的论文顾问找到了我,他致力于为计算机视觉设计更快、更具可扩展性的算法(例如快速图像分割)。我试图了解解决计算机视觉问题的常见做法。

4

4 回答 4

3

你只是没有证明它们。

您可以在一组测试用例上测试您的算法,并将输出与先前已知的算法或正确答案进行比较(例如,当您识别文本时,您可以生成一组图像,而不是通常不可能做到的正式证明你知道文本说什么的地方)。

于 2012-04-06T23:26:50.277 回答
2

这是我个人的看法,所以请看它的价值。

您现在无法证明大多数计算机视觉方法的正确性。我认为当前的大多数方法都是某种“配方”,其中成分被丢弃,直到“结果”足够好。你能证明布朗尼蛋糕是正确的吗?

它在某种程度上与机器学习的演变方式有点相似。起初,人们做神经网络,但它只是一个大“汤”,碰巧或多或少地起作用。它有时有效,但在其他情况下无效,而且没有人真正知道为什么。然后统计学习(通过 Vapnik 等)开始了,并带有一些真正的数学备份。您可以证明您拥有最小化特定损失函数的独特超平面,PCA 为您提供与给定矩阵最接近的固定秩矩阵(考虑到我相信的 Frobenius 范数)等等......

现在,计算机视觉中仍有一些“正确”的东西,但它们非常有限。我想到的是小波:它们是正交函数基中最稀疏的表示。(即:以最小误差表示图像近似值的最压缩方式)

于 2012-04-09T06:51:02.363 回答
2

在实践中,计算机视觉更像是一门经验科学:您收集数据,思考可以解释数据某些方面的简单假设,然后检验这些假设。对于人脸识别等高级 CV 任务,您通常没有明确的“正确”定义,因此无法证明正确性。

但是,低级算法是另一回事:您通常在这里对“正确”一个清晰的数学定义。例如,如果您发明了一种算法,可以比已知算法更有效地计算中值滤波器或形态学运算,或者可以更好地并行化,那么您当然必须证明它的正确性,就像任何其他算法一样。

对可以形式化的计算机视觉算法有某些要求也很常见:例如,您可能希望您的算法对旋转和平移保持不变——这些是可以形式化证明的属性。有时也可以创建信号和噪声的数学模型,并设计一个具有最佳信噪比的滤波器(IIRC Wiener 滤波器或 Canny 边缘检测器就是这样设计的)。

许多图像处理/计算机视觉算法都有某种“重复直到收敛”循环(例如蛇或 Navier-Stokes 修复和其他基于 PDE 的方法)。您至少会尝试证明该算法对于任何输入都收敛。

于 2012-04-09T08:56:03.553 回答
1

计算机视觉算法不像您可以证明的定理,它们通常试图将图像数据解释为我们人类更容易理解的术语。像人脸识别、运动检测、视频监控等。确切的正确性是不可计算的,就像在图像压缩算法的情况下,你可以很容易地通过图像的大小找到结果。用于显示计算机视觉方法(尤其是分类问题)结果的最常用方法是精度与召回率、准确率与误报率的图表。这些是在各种站点上可用的标准数据库上测量的。通常,您为正确检测设置的参数越严格,产生的误报就越多。典型的做法是根据你的要求从图中选择点'

于 2012-04-09T06:34:17.627 回答