我正在尝试创建一个程序,可以在使命召唤的游戏视频中找到人物.我已经从这个视频中编制了一个约2200个单独图像的列表,其中包含人物或不包含人物.然后我尝试训练神经网络来分辨两组图像之间的差异.
然后,我将每个视频帧分成几百个网格矩形,然后用我的ANN检查每个视频帧.矩形重叠以尝试捕获网格之间的数字,但这似乎不能很好地工作.所以我有几个问题:
>神经网络是否可行?我已经读过它们与其他机器学习算法相比非常快,最终我计划将它与实时视频一起使用,速度非常重要.
>搜索图像框架中的数字以在ANN上进行测试的最佳方法是什么?我觉得我这样做的方式并不是很好.它绝对不是非常快或准确.每帧图像960 x 540大约需要一秒钟,并且精度很差.
>我遇到的另一个问题是构建要用作ANN输入的特征向量的最佳方法.目前,我只是将所有输入图像缩小到25 x 50像素,并创建一个包含每个像素强度的特征向量.这是一个非常大的矢量(1250浮点数).有哪些更好的方法来构建特征向量?
有关我在此处所做的更详细说明:CodAI: Computer Vision
编辑:我想要更多细节.计算要素的最佳方法是什么.我需要能够识别出许多不同位置的人物形象.我是否需要创建单独的分类器来识别直立,蹲伏和俯卧之间的区别?
解决方法
>使用原始强度作为特征向量不起作用1.照明等引起的变化太大
>作为第一步看待的一个很好的功能是HOG. opencv 2.2有一个快速的GPU(cuda)版本的探测器.
>神经网络可能不是最好的方法.通常你会使用SVM或boost作为分类器2.并不是神经网络不够强大,而是很难让训练/参数正确.你经常陷入局部最小等.
>对于俯卧/蹲伏/站立的数字,您肯定需要不同的分类器并在混合模型中使用它们.
>你问了一个“最好的方法” – 人类检测到目前为止还没有解决问题,所以没有人知道最好的方法.众所周知,上面提到的事情非常好.
>如果你想要一个好的结果,你肯定想利用你的目标是特定的 – 所以,利用你试图检测人类的职责.您需要检查的位置范围不是整个图像,数字将靠近地面.这使您可以加快搜索速度并减少错误检测.如果可以的话,减少渲染的细节 – 更少的细节意味着更少的变化,这意味着更容易学习的问题.
>作为第一步看待的一个很好的功能是HOG. opencv 2.2有一个快速的GPU(cuda)版本的探测器.
>神经网络可能不是最好的方法.通常你会使用SVM或boost作为分类器2.并不是神经网络不够强大,而是很难让训练/参数正确.你经常陷入局部最小等.
>对于俯卧/蹲伏/站立的数字,您肯定需要不同的分类器并在混合模型中使用它们.
>你问了一个“最好的方法” – 人类检测到目前为止还没有解决问题,所以没有人知道最好的方法.众所周知,上面提到的事情非常好.
>如果你想要一个好的结果,你肯定想利用你的目标是特定的 – 所以,利用你试图检测人类的职责.您需要检查的位置范围不是整个图像,数字将靠近地面.这使您可以加快搜索速度并减少错误检测.如果可以的话,减少渲染的细节 – 更少的细节意味着更少的变化,这意味着更容易学习的问题.
脚注:1对于nitpickers:没有高度复杂的分类器.2您还可以使用级联的增强分类器来提高速度,而不会过多地提高检测率.