前提・実現したいこと
画像処理の学習プログラムを作成しています。
今回、70万枚ほどのデータを入力データとするのですが、データ量が大きく、読み込む際に以下のプログラムを実行途中でPCが固まってしまいます。
まだ学習を行う以前の問題なのですが、この際にはどう対処すればよいでしょうか...?
該当のソースコード
Jupyternotebook
1# 入力データの読み込み 2 3# 入力画像ディレクトリのパス 4input_dir = os.path.join('fiw','fiwlist') 5# 各画像の縦横サイズ 6image_size=224 7 8print("Loading image data from [{}] ...".format(input_dir)) 9 10# x: 入力画像,y: 教師ラベル 11x = None 12y = None 13x, y = load_fiw_fiwlist(input_dir, image_size) 14
出力
Loading image data from [fiw/fiwlist] ...
読み込みを行っているのですが、このまま固まってしまいます。
試したこと
バッチサイズを設定してみましたが、うまく行きません。。
補足情報(入力データのプログラム(該当ソースの前に実行))
Jupyternotebook
1# データセットの読み込み関数 2def load_fiw_fiwlist(input_dir, img_size): 3 # 画像ファイル名が記載されたファイル 4 file_list_path = os.path.join(input_dir,'data_new2','filename.txt') 5 6 # ファイル行数取得 7 f_rows = sum([1 for _ in open('fiw/fiwlist/maisuu.txt')]) 8 a=1 9 10 # 1からファイル最終行まで 11 while a<=f_rows: 12 # 指定行をファイルから改行コードを削除して取得 13 target_line = linecache.getline('fiw/fiwlist/maisuu.txt', int(a)).rstrip('\n') 14 15 # linecacheのキャッシュクリア 16 linecache.clearcache() 17 # 各ラベルの画像数 18 label_data=int(target_line) 19 20 x = [] 21 y = [] 22 label_idx=0 23 24 25 f = open(file_list_path, 'r', encoding='utf-8') 26 # 各画像ファイルを読み込む 27 for i, line in enumerate(f): 28 if i > 0 and (i % label_data) == 0: 29 label_idx = label_idx + 1 30 31 filename = os.path.join(input_dir, 'data_new2', line.strip()) 32 #print("Loading image No: {} Label: {}: path: [{}] ...".format(i, label_idx, filename)) 33 try: 34 img =img_to_array( load_img(filename, target_size = (image_size, image_size))) 35 loader_data=DataLoader(dataset=img,batch_size=16384,shuffle=True,num_workers=4) 36 x.append(loader_data) 37 y.append(label_idx) 38 except ZeroDivisionError: 39 print("ZeroDivisionError!!") 40 pass 41 a=a+1 42 return x,y
上記のデータを、「該当のソースコード」で記載した入力データ読込のところで読み込み量を制限し、入力すれば良いということでしょうか...?
あなたの回答
tips
プレビュー