如何在《使命召唤》中使用OpenCV搜索玩家模型

我正在尝试创建一个程序,能够在《使命召唤》游戏视频中识别出人形。我从这段视频中整理了大约2200张独立的图片,这些图片中有的包含人形,有的则没有。我随后尝试训练一个神经网络来区分这两组图片。

然后,我将每个视频帧分成几百个网格矩形,并用我的ANN检查每个矩形。这些矩形是重叠的,试图捕捉位于网格矩形之间的身影,但这种方法似乎效果不佳。因此,我有几个问题:

  1. 神经网络是合适的方法吗?我读到它们与其他机器学习算法相比速度非常快,最终我计划将其用于实时视频,速度非常重要。

  2. 在图像帧中搜索身影以在ANN上测试的最佳方法是什么?我觉得我的方法不是很好。它的速度和准确性肯定不高。处理一张960 x 540的图像需要大约一秒钟,并且准确性很差。

  3. 我遇到的另一个问题是构建作为ANN输入的特征向量的最佳方法。目前,我只是将所有输入图像缩小到25 x 50像素,并创建一个包含每个像素强度的特征向量。这是一个非常大的向量(1250个浮点数)。构建特征向量有哪些更好的方法?

有关我在这里所做的更详细的解释,请参见:CodAI: 计算机视觉

编辑:我希望能得到更多细节。计算特征的最佳方法是什么?我需要能够识别出许多不同姿势的人形。我是否需要为识别直立、蹲伏和俯卧的不同姿势创建单独的分类器?


回答:

  • 使用原始强度作为特征向量是行不通的1。光照等因素会引起太多的变化。
  • 作为第一步,一个好的特征可以考虑HOG。OpenCV 2.2有一个GPU(CUDA)版本的检测器,速度很快。
  • 神经网络可能不是最佳选择。通常你会使用SVM或提升作为分类器2。并不是说神经网络不够强大,而是很难调整训练/参数。经常会陷入局部最小值等问题。
  • 对于俯卧、蹲伏和站立的身影,你肯定需要不同的分类器,并在混合模型中使用它们。
  • 你问的是“最佳方法” – 人类检测远非一个已解决的问题,所以没有人知道最佳方法。上面提到的方法已知效果相当好。
  • 如果你想要一个好的结果,你绝对要利用你的目标是特定的 – 因此,利用你在《使命召唤》中试图检测人类这一事实。你需要检查的位置范围不是整个图像,身影将靠近地面。这允许你加速搜索并减少误检。如果可以,减少渲染的细节 – 细节越少,变化越少,这意味着学习问题更容易解决。

脚注:
1 对于挑剔的人:没有一个高度复杂的分类器。
2 你也可以使用一系列提升的分类器来提高速度,而不会在检测率上损失太多。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注