我正在编写一个Android应用程序,可以找到给定Set游戏的解决方案。我想处理图像并将其转换为一个卡片阵列,这是我已经编写的一个类。但是,我之前没有做任何图像处理,但我的计划是使用像Neuroph这样的东西创建一个神经网络来识别每张卡,但是有81种不同的卡,所以这看起来很耗时。我的另一个想法是识别卡片独立的颜色,以减少可能的卡数量为27,但我仍然不知道如何做到这一点。例如,如果我使用此图像:
我希望能够提取第一个是没有填充的单个紫色椭圆,第二个是填充的3个绿色钻石,第三个是条纹的2个红色波浪形。
答案 0 :(得分:0)
通过使用像InceptionV3这样的训练图像识别神经网络的特征向量,这是相当直接的。有instructions online使用InceptionV3识别您的特定事物。哎呀,作为训练集的一部分,你只需要为每张独特的卡获得瓶颈功能。当您获得新卡时,获取其瓶颈功能并将其(使用cosine distance)与独特的卡瓶颈功能进行比较。具有最小余弦距离的那个可能匹配。每张独特的卡片只有1个训练样例。
使用每张卡的示例和瓶颈特征向量存储名称。
如果您有时间为每种类型的卡提供超过1个示例,请执行此操作。您的数据结构将是[卡片类型,瓶颈功能向量]和[卡片类型,卡片名称]中的另一种。对于成千上万的培训示例来说,这不会很好地扩展,但是每种卡类型只有少数示例,这将非常好。