前提・実現したいこと
Python初心者です。
気か学習のyoutube見て、Pythonを使って画像認識ができるということを知り、オリジナルの画像分類を作ろうと考えています。
youtubeに記載していたコードをそのまま利用し、画像を4万枚ほど集めて実行したところメモリ不足になり途中で落ちます。
再び実行し、タスクマネージャーでメモリを確認したところ2000MB以上利用しており、そのまま落ちました。
ソースコード➀では画像をリスト配列に格納していましたが、numpy配列を利用することでメモリ不足を解決できると記事を読み、➁のプログラムを作りましたが、読み込み速度が➀に比べ遅くなりメモリの消費量が多く使えたものではありませんでした。
これを解決する方法ご存じの方、ご教授お願い致します。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
ソースコード ➀ import tensorflow as tf import glob from tqdm import tqdm x_train= [] x_test=[] y_train=[] y_test=[] for f in tqdm(glob.glob("D:/画像判定/対象/*/*/*.jpg")): img_data=tf.io.read_file(f) img_data=tf.io.decode_jpeg(img_data) img_data=tf.image.resize(img_data,[240,240]) if f.split("\")[1]=="train": x_train=x_train.append(img_data) y_train=y_train.append(int(f.split("\")[2].split("_")[0])) elif f.split("\")[1]=="Test": x_test=x_train.append(img_data) y_test=y_train.append(int(f.split("\")[2].split("_")[0])) ➁ x_train= np.empty((0,240,240,3)) x_test=np.empty((0,240,240,3)) y_train=np.empty((0),int) y_test=np.empty((0),int) for f in tqdm(glob.glob("D:/画像判定/対象/*/*/*.jpg")): img_data=tf.io.read_file(f) img_data=tf.io.decode_jpeg(img_data) img_data=np.expand_dims(img_data,axis=0) if f.split("\")[1]=="train": category=np.expand_dims(np.array(int(f.split("\")[2].split("_")[0])),axis=0) x_train=np.append(x_train, img_data,axis=0) Y_train=np.append(y_train, category,axis=0) elif f.split("\")[1]=="Test": category=np.expand_dims(np.array(int(f.split("\")[2].split("_")[0])),axis=0) x_test=np.append(x_test, img_data,axis=0) y_test=np.append(y_test, category,axis=0)
試したこと
ここに問題に対して試したことを記載してください。
画像をリスト配列ではなくnumpy配列に格納するコードに修正
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。