我试图实现的上下文:
我在使用 scikit 进行图像分类时遇到问题。我有 Cifar 10 数据、训练和测试图像。有 10000 张训练图像和 1000 张测试图像。每个测试/训练图像都存储在测试/训练 npy 文件中,作为 4 维矩阵(高度、宽度、rgb、样本)。我也有测试/训练标签。我有一个“computeFeature”方法,它利用定向梯度直方图方法将图像域特征表示为向量。我试图在训练和测试数据上迭代此方法,以便我可以创建一组可以稍后使用的特征,以便对图像进行分类。我尝试使用 I 创建一个 for 循环并将结果存储在一个 numpy 数组中。然后我必须继续应用 PCA/LDA 并使用 SVC 和 CNN 等(任何图像分类方法)进行图像分类。
import numpy as np
import skimage.feature
from sklearn.decomposition import PCA
trnImages = np.load('trnImage.npy')
tstImages = np.load('tstImage.npy')
trnLabels = np.load('trnLabel.npy')
tstLabels = np.load('tstLabel.npy')
from sklearn.svm import SVC
def computeFeatures(image):
hog_feature, hog_as_image = skimage.feature.hog(image, visualize=True, block_norm='L2-Hys')
return hog_feature
trnArray = np.zeros([10000,324])
tstArray = np.zeros([1000,324])
for i in range (0, 10000 ):
trnFeatures = computeFeatures(trnImages[:,:,:,i])
trnArray[i,:] = trnFeatures
for i in range (0, 1000):
tstFeatures = computeFeatures(tstImages[:,:,:,i])
tstArray[i,:] = tstFeatures
pca = PCA(n_components = 2)
trnModel = pca.fit_transform(trnArray)
pca = PCA(n_components = 2)
tstModel = pca.fit_transform(tstArray)
# Divide the dataset into the two sets.
test_data = tstModel
test_labels = tstLabels
train_data = trnModel
train_labels = trnLabels
C = 1
model = SVC(kernel='linear', C=C)
model.fit(train_data, train_labels.ravel())
y_pred = model.predict(test_data)
accuracy = np.sum(np.equal(test_labels, y_pred)) / test_labels.shape[0]
print('Percentage accuracy on testing set is: {0:.2f}%'.format(accuracy))
准确度打印为 100%,我很确定这是错误的,但我不确定为什么?
蓝山帝景
哆啦的时光机
相关分类