如何使用我捕获的图像的HOG特征向量训练MLP模型?

时间:2018-04-08 17:11:54

标签: python-3.x opencv machine-learning computer-vision

我有一张图片,代码应该解释我做了什么。

blob=cv2.imread('right_test.png')
bwblob=cv2.cvtColor(blob,cv2.COLOR_BGR2GRAY)

resized_bwblob=cv2.resize(bwblob,(24,20),interpolation=cv2.INTER_AREA)
fd_blob, hog_blob = hog(resized_bwblob, orientations=9, pixels_per_cell=(4,4),cells_per_block=(2, 2),block_norm='L2-Hys', visualise=True)
print(fd_blob)

现在,该程序返回长度为720的HOG特征向量。 我想使用从上面的代码获得的特征向量训练MLP分类器模型。 我提到了链接:http://scikit-learn.org/stable/modules/neural_networks_supervised.html

from sklearn.neural_network import MLPClassifier

X = (n_samples, n_features)
y = (n_samples,)

clf = MLPClassifier(solver='lbfgs', alpha=1e-5,
                    hidden_layer_sizes=(5, 2), random_state=1)

clf.fit(X, y)                         

如何将我所拥有的特征向量与上面代码中的X和y值相关联?

1 个答案:

答案 0 :(得分:0)

假设您的要素向量fd_blob具有形状(720, ),那么您需要执行以下操作才能将其提供给模型:

fd_blob = fd_blob.reshape(-1, 720)

这将是您的X

对于y,它取决于你试图用这个模型做什么,但如果你不得不问这个问题那么你可能应该先阅读一下机器学习,然后再继续学习。 通常,如果您的目标是一维的,或者(n_samples,)用于更通用的方法,您希望它是一个形状(n_samples, output_size)的数组。在您的情况下,n_samples = 1

另请注意,单个训练样本不适合训练神经网络。

干杯