PythonMania

普段はロボットとAIを組み合わせて色々作ってます。Python関係以外も色々投稿していくと思います。

【Python】画像認識 - Kerasで学習を行えるようにデータセットを整形する 【DeepLearning】

f:id:mizuhiki0111:20190430180019p:plain



from sklearn.model_selection import train_test_split
import numpy as np
from PIL import Image
import os
from glob import glob
from sklearn.preprocessing import LabelEncoder
import cv2

#画像のサイズ指定
ScaleTo = 70
seed = 7

#トレーニングデータの読み込み
data_dir = "~/train"
path = "~/train/*/*.png"
files = glob(path)

trainImg = []
trainLabel = []
j = 1
num = len(files)

#画像データの読み込み
for img in files:
    print(str(j) + "/" + str(num) , end="\r")
    trainImg.append(cv2.resize(cv2.imread(img) ,(ScaleTo,ScaleTo)))
    #trainLabel.append(img.split("/")[-2])
    j += 1

#ラベルデータの読み込み
for dir in os.listdir(data_dir):
    if dir == ".DS_Store":
        continue

    dir1 = data_dir + "/" + dir

    label = dir

    for file in os.listdir(dir1):
        if file != "Thumbs.db":

            # 配列label_listに正解ラベルを追加
            trainLabel.append(label)
        

# kerasに渡すためにnumpy配列に変換。
image_list = np.array(trainImg)
label_list = np.array(trainLabel)

#ラベルをエンコード
le = LabelEncoder()
le = le.fit(label_list)
label_list = le.transform(label_list)
#ワンホットエンコーディング
label_list = np_utils.to_categorical(label_list)
#トレーニング・テスト用にデータを分割
X_train, X_test, y_train, y_test = train_test_split(image_list, label_list, test_size=0.33, random_state=111)