如何为“节奏游戏”自动播放器检测符号

时间:2019-07-22 17:09:37

标签: python machine-learning neural-network

enter image description here enter image description here enter image description here

我正在开发使用Python自动播放的“节奏游戏”,但是我遇到了问题。

我的计划如下。

1捕获游戏中的特定范围。(无限重复)

2“ 1”表示检测预存图片。

3检测到时,输入键盘的“ S”按钮。

成功实现了“ 1”,但我无法实现数字“ 2”。

节奏游戏=当红色方框在白色方框中时,这是一个输入“ s”按钮的游戏。

我正在使用python Ver

enter image description here捕获范围

enter image description here要检测的照片

enter image description here我的代码

enter image description here是什么节奏游戏??

1 个答案:

答案 0 :(得分:0)

如果要检测自动播放器的符号,则可以应用神经网络,如sklearn,PyTorch或Keras支持的那样。第一种处理起来比较容易,但是PyTorch和Keras也可以使用图形卡(至少是Nvidia)来加快训练速度,因为它们支持cuda。

如果您说符号向下移动的五个“通道”,我将尝试从五个“通道”中的每个通道中抓取相同大小和相对位置的片段,以便捕获与该符号类似的部分每条车道。然后,您可以将这五个部分提供给训练有素的网络,让它确定是否有符号(和哪个)或是否没有符号,然后根据此决定在您的python代码中做出反应。

如果您可以设法抓住一个相似的区域,该区域在所有车道上都包含相似的符号,那么神经网络的工作将很容易,因此可以使其结构简单。但是,应用训练有素的NN(确定是否有符号)也需要时间,因此

  1. 使网络保持简单,因此它具有尽可能少的神经元(尽量不要夸大隐藏层)

  2. 我还将尝试使输入区域尽可能小(因此,一个足以容纳符号一部分而不是整个符号的片段)和

  3. 也许您可以添加一些快速的额外逻辑,以便检查车道的输入区域是否为空白(例如,仅包含背景色)或输入区域中是否存在其他内容,这可能会成为一个象征。因此,您可以避免NN不必要的工作,这基本上是大量的float操作。

所有这些只是为了使过程更快,因为更快意味着您可以检查频率更高的符号。

为了能够训练网络,我只需要实现代码即可,它捕获了车道的输入区域以及我在上述3.)中描述的逻辑(如果可以实现类似的东西)。这将作为稍后使用NN的最终程序的框架,您可以从中开始以获取网络的训练图像。但是您需要手工标记它们。那是工作的无聊部分。因此,您查看抓取的图像片段,并将图像的名称及其包含的if /符号保存在一个额外的文本文件中。 如果您在标记小片段时遇到问题,则可以作弊一点,使您的工作输入区域更大一些,因此,如果将符号输入到神经网络,则更容易识别符号,然后减小它们的大小。

顺便说一句。即使听起来对您来说很愚蠢,您也应该在训练期间将所有图像类型的比率以相似的比例输入到您的NN,因为稍后应用它们时会得到类似的比率。所以例如如果您无法实现3)中所述的逻辑,则还应放置大量图像,其中输入区域中没有符号,而不仅仅是一两个符号。这是因为NN仅在有足够的机会犯错时才学习。因此,如果您仅在训练数据中说出一幅没有符号的图像,那么您的NN可能会对其分类错误,但是由于它只是一幅图像,因此可能会被其他图像所取代,因此对于自动播放器而言,网络几乎一文不值。 / p>

好一点,这只有在调整网络权重以正确检测空白图像的情况下才会发生,这会导致网络对符号的其他片段不确定性增加。但这并非不可能。

顺便说一句。如果在车道中选择输入区域,我宁愿选择在垂直方向上比在水平方向上更大的矩形区域。如果您不能使用常规的NN(我不认为)成功,则可以尝试使用卷积层。但是无需这样做,我不会这样做,因为它会使网络变得更加复杂,从而使网络变慢。