识别文本文件中的“图形”模式

时间:2012-09-30 18:12:52

标签: java pattern-matching neural-network feature-detection

我有一个任意大小的文本文件,模拟我们称之为雷达的二维输出。在此输出中,我希望能够识别已知的模式。我们称之为目标检测。

目标可能看起来像这样,每个X点亮的像素,意味着雷达检测到可能是敌人的一部分,并且每个空白都被关闭像素。

sample figures

并且雷达数据以引入“干扰”的形式出现,即图形不会打开所有像素。所以我想在检测中也包含某种概率。

我从来没有做过类似的事情,我正在寻找一般建议。我正在尝试不同的方法,我相信我会以某种方式解决它,但我真的希望有一些指导方针,阅读资源或类似的这种模式匹配,因为我认为这是非常有趣但没有之前有机会解决这样的问题。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

感知器采用一组输入的加权线性组合,并输出1或0,具体取决于结果是正还是负。可以说,AI是通过权重实现的,它们决定了数据的分割。一方导致正面,另一面负面。可以将此拆分视为图表上的一条线。例如,如果权重给出一条线y = x,则输入x = 2,y = 4将为正,输入x = -1,y = 1将为负。通过向系统呈现正和负输入的集合并调整权重来训练权重,直到训练集的输出与期望的输出匹配。

输入数量由像素数量给出,每个像素都有自己的输入和相关权重,因此权重是与图像大小相同的数组。

对于你的例子,你需要一组敌人目标的图像,其中一些具有预期的噪音。这些所需的输出是正的,因此将所有图像呈现给感知器并检查输出。如果输出不是1,则调整权重。接下来显示非敌人图像并检查输出为0.如果不调整权重。继续显示正图像并检查输出为1,负像检查0,调整权重,直到这些是你得到的输出。

最初,权重设置为小的随机数。如果实际输出与所需的输出不匹配(不会开始),请按以下等式调整每个权重:

w(t + 1)= w(t)+ a(d-y)x

所以新的重量是旧的重量加上所需输出的α倍减去实际结果乘以输入(对于那个像素)

随着训练的进行,可以更改Alpha。首先,它很大,因此收敛很快。随着时间的推移,最好减少数量以减慢收敛速度,因此它更准确。 Alpha,学习率应为0

所以在Java中:

创建一个权重数组并将它们初始化为小的随机数。

创建一组输入图像和相应的所需输出。

选择随机图像并将其呈现给系统。 - 将权重乘以权重,求它们并找到符号。

根据所需输出检查输出。如果它们相同则选择另一个输入图像。如果存在差异,则通过等式调整权重,然后选择另一个输入图像。

继续显示输入,直到总误差低于某个阈值。

当训练系统时,可以向系统呈现看不见的图像。如果它是敌方目标,它将输出1,如果不是0。

所有细节都可以在网上找到,维基页面,有更多的解释,但希望它有所帮助。