SIFT输入到ANN

时间:2017-02-21 05:33:06

标签: python opencv neural-network classification sift

我尝试使用人工神经网络对图像进行分类,我想尝试的方法是:

  1. 获取功能描述符(暂时使用SIFT)
  2. 使用神经网络分类
  3. 我正在使用OpenCV3和Python。

    我对机器学习比较新,我有以下问题 -

    我分析的每张图片都会有不同数量的关键点'因此2D'描述符的不同维度'阵列。我如何决定ANN的输入。例如,对于一个样本图像,描述符形状为(12211,128),因此我将此数组展平并将其用作输入,在这种情况下,我必须担心每个图像的输入大小不同,或者我是否计算其他内容输入?

2 个答案:

答案 0 :(得分:0)

如果在获取特征提取器之前对每个图像应用标准化,那将是一件好事。

答案 1 :(得分:0)

我不确定这是否是一个确切的解决方案,但这对我有用。主要思想如下:

  • 将图片划分为MxN网格。
  • 为每个子图像获取一定数量的特征点。
  • 连接所有子图像的结果,以获得整个图像的特征向量。

支持代码大致如下(函数“pre_process_image”):

if (Input.GetKeyDown(KeyCode.R))
    {
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    }

然而,非常慢。我正在研究一种使用PCA最佳选择功能的方法。