我想评估我的屏幕上是否发生了某个事件,每次事件发生时,屏幕特定区域会显示一个特定的框/图像,该区域的结构非常相似。
我已经从该屏幕区域收集了一组84×94的.png
RGB
图像,我想构建一个分类器来告诉我事件是否正在发生。
因此,我的想法是创建一个包含两列的pd.DataFrame
(df
),df['np_array']
包含每张图片作为np.array
,而df['is_category']
包含布尔值,指示该图像是否表示事件正在发生。
结构看起来像这样(大小不同):
我已经将图像调整为10×10用于训练,并转换为灰度
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-learn分类器
我之前从未尝试过图像识别,提前感谢任何帮助!
回答:
如果它是一个10×10的灰度图像,你可以将其展平:
import numpy as npfrom sklearn import ensemble# 生成随机2d数组image_data = np.random.rand(10,10, 100)# 生成随机标签labels = np.random.randint(0,2, 100)X = image_data.reshape(100, -1)# 然后使用任何scikit-learn分类模型clf = ensemble.RandomForestClassifier()clf.fit(X, y)
顺便说一句,对于图像,最佳性能的算法是卷积神经网络。