Python 如何训练单目标识别?

Python 如何训练单目标识别?,python,language-agnostic,machine-learning,object-recognition,pybrain,Python,Language Agnostic,Machine Learning,Object Recognition,Pybrain,我正在考虑做一个小项目,涉及使用某种机器学习识别简单的二维对象。我认为最好让每个网络只识别一种类型的对象。下面是我的两个问题: 我应该使用什么样的网络?我能想到的两个可行的方法是简单的前馈网络和Hopfield网络。因为我还想知道有多少输入看起来像目标,Hopfield网络可能不适合 如果我使用的是需要监督学习的东西,而我只需要一个输出单元来指示输入与目标的相似程度,那么在培训过程中我应该展示哪些反例?我敢肯定,仅仅给出正面的例子是行不通的(网络将学会总是说‘是’) 图像将是低分辨率的黑白图像。

我正在考虑做一个小项目,涉及使用某种机器学习识别简单的二维对象。我认为最好让每个网络只识别一种类型的对象。下面是我的两个问题:

  • 我应该使用什么样的网络?我能想到的两个可行的方法是简单的前馈网络和Hopfield网络。因为我还想知道有多少输入看起来像目标,Hopfield网络可能不适合

  • 如果我使用的是需要监督学习的东西,而我只需要一个输出单元来指示输入与目标的相似程度,那么在培训过程中我应该展示哪些反例?我敢肯定,仅仅给出正面的例子是行不通的(网络将学会总是说‘是’)


  • 图像将是低分辨率的黑白图像。

    首先,请注意使用的分类方法。 如果您打算使用图像像素本身作为特征,神经网络可能是一种合适的分类方法。在这种情况下,我认为最好是训练同一个网络来区分不同的对象,而不是为每个对象使用单独的网络,因为这样可以让网络专注于最具辨别力的特征

    但是,如果您打算从图像中提取合成特征并基于它们进行分类,我建议考虑其他分类方法,例如SVM。 原因是神经网络通常需要设置许多参数(例如网络大小和结构),这使得构建分类器的过程更长、更复杂

    特别是关于你的神经网络相关问题,我建议使用前馈网络,它相对容易构建和训练,带有softmax输出层,允许为各种类别分配概率。 如果你使用一个单一的网络进行分类,那么关于负面例子的问题就无关紧要了;对于每一类,其他类都是它的反面例子。如果您决定使用不同的网络,您可以使用相同的反例(即其他类),但根据经验,我建议每个正面示例显示的负面示例不超过2-10个

    编辑: 根据下面的评论,问题似乎在于确定给定图像(图形)与给定概念的拟合程度,例如,用户提供的树图形与树有多相似

    在本例中,我建议使用一种完全不同的方法:从每个图形中提取视觉特征,并根据所有过去用户提供的图形及其分类(可能的话,加上您生成的预定义集)执行knn分类。您可以通过与同一类示例的标称距离或最接近匹配的类分布来对相似性进行评分


    我知道这不一定是你要问的,但在我看来,这似乎是一种更简单、更直接的方法,特别是考虑到示例和类的数量预计将不断增长的事实

    首先,关于使用的分类方法的说明。 如果您打算使用图像像素本身作为特征,神经网络可能是一种合适的分类方法。在这种情况下,我认为最好是训练同一个网络来区分不同的对象,而不是为每个对象使用单独的网络,因为这样可以让网络专注于最具辨别力的特征

    但是,如果您打算从图像中提取合成特征并基于它们进行分类,我建议考虑其他分类方法,例如SVM。 原因是神经网络通常需要设置许多参数(例如网络大小和结构),这使得构建分类器的过程更长、更复杂

    特别是关于你的神经网络相关问题,我建议使用前馈网络,它相对容易构建和训练,带有softmax输出层,允许为各种类别分配概率。 如果你使用一个单一的网络进行分类,那么关于负面例子的问题就无关紧要了;对于每一类,其他类都是它的反面例子。如果您决定使用不同的网络,您可以使用相同的反例(即其他类),但根据经验,我建议每个正面示例显示的负面示例不超过2-10个

    编辑: 根据下面的评论,问题似乎在于确定给定图像(图形)与给定概念的拟合程度,例如,用户提供的树图形与树有多相似

    在本例中,我建议使用一种完全不同的方法:从每个图形中提取视觉特征,并根据所有过去用户提供的图形及其分类(可能的话,加上您生成的预定义集)执行knn分类。您可以通过与同一类示例的标称距离或最接近匹配的类分布来对相似性进行评分

    我知道这不一定是你要问的,但在我看来,这似乎是一种更简单、更直接的方法,特别是考虑到示例和类的数量预计将不断增长的事实

    玩一玩,看看您是否喜欢使用特征检测/描述进行对象检测。如果它看起来很匹配,那么您可以尝试opencv包中包含的find_obj.py演示

    然而,我发现演示非常混乱,因为我还不熟悉基本概念。我制作了一个更线性的演示,可以解释一些事情,如果你愿意,还可以指出一些陷阱。

    玩一玩,看看你是否喜欢使用功能检测/描述进行对象检测。如果它看起来是一个很好的匹配,那么你可以尝试查找