###前提・実現したいこと
data/testのフォルダの中に三つのフォルダがあり、それぞれアウター、パンツ、シャツの画像を入れています。
この三つの種類の画像自体を一つのフォルダにまとめて、分類するにはどうすればいいですか?
###発生している問題・エラーメッセージ
エラーメッセージ
###該当のソースコード
from keras.models import Sequential
from keras.layers import Activation, Dense, Dropout, Convolution2D, Flatten, MaxPooling2D
from keras.utils.np_utils import to_categorical
from keras.optimizers import Adagrad
from keras.optimizers import Adam
import numpy as np
from PIL import Image
import os
image_list = []
label_list = []
for dir in os.listdir("data/train"):
if dir == ".DS_Store":
continue
dir1 = "data/train/" + dir label = 0 if dir == "outerwear": label = 0 elif dir == "pants": label = 1 elif dir == "shirt": label = 2 for file in os.listdir(dir1): if file != ".DS_Store": label_list.append(label) filepath = dir1 + "/" + file image = np.array(Image.open(filepath).resize((100, 100))) print(filepath) image = image.transpose(2, 0, 1) print(image.shape) image_list.append(image / 255.)
image_list = np.array(image_list)
Y = to_categorical(label_list)
model = Sequential()
model.add(Convolution2D(32, 3, 3, border_mode='same', input_shape=(3, 100, 100)))
model.add(Activation("relu"))
model.add(Convolution2D(32, 3, 3))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2, 2), border_mode=("same")))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(200))
model.add(Activation("relu"))
model.add(Dropout(0.2))
model.add(Dense(200))
model.add(Activation("relu"))
model.add(Dropout(0.2))
model.add(Dense(3))
model.add(Activation("softmax"))
opt = Adam(lr=0.0001)
model.compile(loss="categorical_crossentropy", optimizer=opt, metrics=["accuracy"])
model.fit(image_list, Y, nb_epoch=100, batch_size=25, validation_split=0.1)
total = 0.
ok_count = 0.
for dir in os.listdir("data/test"):
if dir == ".DS_Store":
continue
dir1 = "data/test/" + dir label = 0 if dir == "outerwear": label = 0 elif dir == "pants": label = 1 elif dir == "shirt": label = 2 for file in os.listdir(dir1): if file != ".DS_Store": label_list.append(label) filepath = dir1 + "/" + file image = np.array(Image.open(filepath).resize((100, 100))) print(filepath) image = image.transpose(2, 0, 1) result = model.predict_classes(np.array([image / 255.])) print("label:", label, "result:", result[0]) total += 1. if label == result[0]: ok_count += 1.
print("seikai: ", ok_count / total * 100, "%")
###試したこと
課題に対してアプローチしたことを記載してください
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/10 11:34
退会済みユーザー
2018/01/10 11:43
退会済みユーザー
2018/01/10 11:46
2018/01/10 13:14
2018/01/11 04:28