如何用任意数量的邻居解析CFG?

时间:2012-05-06 17:14:16

标签: machine-learning svm context-free-grammar image-segmentation

我正在研究一个试图使用无上下文语法来解析图像的项目。我们正在尝试构建图像片段树,然后使用机器学习来使用这些视觉语法来解析图像。

我发现SVM-CFG看起来很理想,问题在于它是为字符串解析而设计的,其中字符串中的每个终端最多有两个邻居(前后字)。在我们的视觉语法中,每个片段可以在任意数量的其他片段旁边。

解析这些视觉语法的最佳方法是什么?具体来说,我可以编码我的数据以使用SVM-CFG吗?或者我将不得不编写自己的内核/解析库?

1 个答案:

答案 0 :(得分:1)

SVM-CFG是SVM-struct中使用的切割平面优化算法的具体实现(此处描述http://www.cs.cornell.edu/People/tj/publications/tsochantaridis_etal_04a.pdf,第4节)。

在每一步中,切割平面算法调用一个函数来查找得分最高的结构化输出分配(在SVM-CFG中这是得分最高的分析)。

对于一维字符串,SVM-CFG运行动态编程算法以在多项式时间内找到最高得分解析。

您可以扩展SVM-struct以返回图像的最高得分解析,但不存在执行此操作的多项式时间算法!

以下是解析图像的最先进技术的参考:http://www.socher.org/uploads/Main/SocherLinNgManning_ICML2011.pdf。他们遇到了同样的问题,寻找图像分割的最高得分解析,因此他们使用贪心算法来找到近似解(见4.2节)。您可以将类似的贪婪算法合并到SVM-struct中。