我编写了一些图像分析软件,它可以确定图像中最主要物体的基本形状、颜色和尺寸。
我还创建了一个对象数据库供算法选择:
Item | Shape | Colors | Width range | Height range Box | rectangle | brown, black, white | 20-50 cm | 10-30 cm Basketball | circle | orange | 20-25cm | 20-25 cm Backpack | rectangle | black | 40-50 cm | 20-30 cm . . . etc.
举个例子,系统检测到一个宽42厘米,高26厘米的黑色矩形。在这种情况下,"box"one_answers"backpack"都符合正确答案。有没有什么好办法能让我们有根据地猜测出这两件东西是哪个,比如75%的可能性是背包,25%的可能性是盒子(可能是基于盒子有可能有3种不同的颜色和更大的尺寸范围,而背包只能是黑色的)?
也欢迎其他建议。我必须自学图像识别,所以如果有其他的东西我应该试着从图像中拉出来,或者一个不同的方式,我应该去数据库,这些评论也将是非常感激的!
很抱歉用了这么高级的描述,却没有解释它的工作原理,但是你可以很容易地填满一本书来回答这个问题,现在已经是下午1点了,所以我不得不简短地说:
除了记录盒子和背包的可接受尺寸范围外,您还需要定义一个概率分布。最可能的是2D正态分布,然后记录均值和方差,而不是范围。用合适的概率分布对形状、颜色等变量做同样的处理。
然后生成两个具有几百个数据点的数据集,如下所示:
p_1 = (shape=rectangle, color=black, width=12, height=34)
p_2 = (shape=circle, color=red, width=34, height=11)
...
对于其中一个集合,手动将它们分类为最符合描述的对象。这将成为您的验证集。
取另一个数据集,并使用该数据训练一个分类算法,如Fisher的线性判别。您将获得一个转换T
,它将最大化类(表示对象的数据点组)之间的"距离",并最小化属于同一组的点之间的"距离"。
当程序检测到具有
属性的新对象时o = (shape=rectangle, color=black, width=42, height=26)
您将从Fisher's LD获得的变换应用于您分类的数据点的变换并测量相关性(标量向量积),即计算与对象o实际上是背包/盒子的概率相关的(T*o)*(T*p_backpack)'
和(T*o)*(T*p_box)'
。
如果您正在考虑人工智能,请查看http://pybrain.org/
这是一个非常高级的python AI库。我有一些好运气使用它进行模式识别(使用神经网络)。它很容易操作,可以让您快速尝试不同的方法。
我会尝试使用由用户输入填充的AI算法。