使用Bag of words / features和神经网络

时间:2017-01-31 16:10:26

标签: opencv neural-network feature-detection object-detection surf

我正在尝试实现一个包含以下步骤的对象检测模块:

1)用SURF提取图像描述符,创建一个大小为[x,64]的矩阵,其中x取决于图像中找到的关键点的数量;

2)使用特征/单词方法将描述符大小固定为[k,64]格式。其中k是使用k-means创建的聚类数。

3)使用生成的单词矩阵作为trainingSamples提供神经网络。

到目前为止,我已经实现了第1步和第2步,但我不太确定如何格式化NN的输出向量。在OpenCV CvANN_MLP上,输出向量中的行数应该具有相同的输入行数(否则返回what()异常),但输入行数是步骤2中k个簇的数量,所以我我不理解如何根据它来编写输出矩阵。

我知道输出矩阵应该有n列对应于我想要的输出中的类数(例如3个类:cat,dog和bird将在3列的矩阵上产生),但是我该如何组织基于输入行的这个矩阵的行?我读了这个相关的post,它使用matlab,它说每个特征应该是一行,但我不知道如何在OpenCV C ++上做到这一点。 如果有人对如何继续这样做有任何想法/提示,那将非常感激。

1 个答案:

答案 0 :(得分:0)

你做到了吗:

  

但是,在您训练神经网络之前,正如您所怀疑的那样   必须使用此特征向量表示您希望训练的每个图像。

在喂养神经网络之前?我缺乏使用神经网络的经验,但是在阅读this和你的问题后,似乎你正试图将词袋集群提供给你的神经网络,这是不正确的。