Python - 图像识别分类器

时间:2017-02-15 12:14:34

标签: python machine-learning scikit-learn object-recognition

我想评估一下是否在我的屏幕上发生了一个事件,每当它发生时,一个特定的盒子/图像会显示在一个结构非常相似的屏幕区域中。

我从该屏幕区域收集了一堆84x94 .png RGB张图片,我想建立一个分类器来告诉我事件是否正在发生。

因此,我的想法是创建一个包含2列的pd.DataFramedf),df['np_array']将每张图片包含为np.arraydf['is_category']包含布尔值告诉该图像是否表明事件正在发生。

结构如下(使用!=大小):

我已将图像调整为10x10进行训练并转换为灰度

df = pd.DataFrame(
    {'np_array': [np.random.random((10, 10,2)) for x in range(0,10)],
     'is_category': [bool(random.getrandbits(1)) for x in range(0,10)]
    })

我的问题是我不能通过clf.fit(df['np_array'],df['is_category'])

来适应scikit学习分类器

我之前从未尝试过图像识别,非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

如果它是10x10灰度图像,您可以将其展平:

import numpy as np
from sklearn import ensemble

# generate random 2d arrays
image_data = np.random.rand(10,10, 100)

# generate random labels
labels = np.random.randint(0,2, 100)

X = image_data.reshape(100, -1)

# then use any scikit-learn classification model
clf = ensemble.RandomForestClassifier()
clf.fit(X, y)

顺便说一句,对于图像,性能最佳的算法是卷积神经网络。