0

このチュートリアルに従って、簡単な画像分類を作成しました。

https://blog.hyperiondev.com/index.php/2019/02/18/machine-learning/

トレーニングの前に、次のようにデータセット内の画像をベクトル化します。

train_data = scipy.io.loadmat('extra_32x32.mat')
# extract the images and labels from the dictionary object
X = train_data['X']
y = train_data['y']

# example: view an image (e.g. 25) and print its corresponding label
img_index = 25
plt.imshow(X[:,:,:,img_index])
plt.show()
print(y[img_index])

X = X.reshape(X.shape[0]*X.shape[1]*X.shape[2],X.shape[3]).T
y = y.reshape(y.shape[0],)
X, y = shuffle(X, y, random_state=42)

トレーニングが完了したら、別の画像 (データセットにはありません) をアップロードし、それを分類器に渡して、予測されているかどうかを確認します (精度スコアと共に)。

しかし、どうすれば写真を渡すことができますか?私はこれを試しました:

jpgfile = Image.open("63.jpg") 
value = clf.predict(jpgfile)

次のエラーが発生しました。

Found array with dim 3. Estimator expected <= 2.

では、個別の x、y 値がないため、それに応じてベクトル化するにはどうすればよいでしょうか。

4

1 に答える 1

0

ロード後にイメージを再形成する必要があります:

jpgfile = Image.open("63.jpg") 
jpgfile = jpgfile.resize((32, 32) # resize image to 32*32
img_as_matrix = numpy.array(jpgfile)  # convert to numpy array
img_as_matrix = img_as_matrix.reshape(img_as_matrix.shape[0]*img_as_matrix.shape[1]*img_as_matrix.shape[2],1).T  # Reshape and transpose image as the train images
# Here the second dim is 1, since there is only 1 image instead of X.shape[3] images 

value = clf.predict(img_as_matrix)
于 2020-10-26T11:05:19.597 に答える