如何将个人PNG数据集放入Sci-Kit Learn用于图像识别



我正在尝试创建一个Python程序来识别图像,我正在使用Sci-Kit Learn机器学习包。我已经做了一个他们提供的识别数字的教程(这是教程的链接:http://scikit-learn.org/stable/tutorial/basic/tutorial.html#introduction)。现在,我想使用Sci-Kit Learn的svm.SVC分类器从我自己的PNG图像数据集中识别图像,但我不知道如何这样做。我读到fit(X, y)方法需要采用[n_samples, n_features]数组和[n_samples]数组;然而,我不太明白n_samplesn_features是什么意思。以下是我的程序中的相关代码:

from PIL import Image
import numpy as np
import glob
event_png_pair = []
for file in glob.glob('../../Pictures/Trial/*.png'):
    img = Image.open(file, 'r')
    ''' Some image resizing code '''
    img_conv = img.convert("L")
    datum = np.array(img_conv)
    ''' Some name parsing below '''
    name = file
    name = name.replace('.png', '')[::-1]
    name_list = list(name)
    number_char_list = name_list[:name_list.index('_')]
    number_list = number_char_list[::-1]
    event_number = int(''.join(number_list))
    ''' Create tuple with event number and corresponding np array from image '''
    event_png_pair.append((event_number, datum))

显然,上面的内容并没有多大帮助,它只是展示了我是如何解释PNG图像中的数据的。谁能提供一些指导,告诉我如何创建一个可以被Sci-Kit Learn解释的数据集?

更新:我现在要尝试创建一个像数字数据集一样的数据集,除了我自己的图像。我将n_samples作为图像数量,n_features作为图像数据。我的target将是一个数组[1, 2],因为我只是试图区分两种类型的图像。如果有任何有关如何将图像数据集放入Sci-Kit Learn的相关信息,请有人提供该信息。

如果您想使用原始像素作为特征(如在数字的例子中),您需要调整/重塑/填充图像,使每个图像具有相同数量的像素。然后,您需要将每个图像平铺成一行,并将它们堆叠成一个数组。这只适用于非常简单的,对齐和规范化的图像。

n_samples为图片数量。

n_features是图像数据本身。

您必须创建形状为(number of images x number of image points)的矩阵,然后传递给分类器。

您必须将所有图像调整为恒定的相同大小,例如256x256或128x128,或96x96或任何适合从中提取相关信息的大小。对于每个图像属于(大多数)一个(灰度)或三个(RGB)值表示给定的颜色。

如果你真的打算用最高的性能对图像进行分类,你应该使用卷积网络,你应该得到一个性能合理的GPU,但是这个过程也适用于CPU,但是速度要慢得多。

相关内容

  • 没有找到相关文章

最新更新