teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

参考サイトを追記しました

2021/04/08 13:08

投稿

zassota
zassota

スコア1

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,5 @@
1
1
  下記サイトを参考に、kerasでpix2pixが動くようにしました。
2
+ https://qiita.com/mine820/items/36ffc3c0aea0b98027fd
2
3
  タイトルの通り、学習済みのgeneratorモデルを保存し、トレーニング画像以外のテスト画像で変換を行いたいと考えております。
3
4
  def train()のブロックの最下段にmodel.saveを追記しました。
4
5
  保存されたモデル(.h5)をロードして画像変換を行おうとしたところ、うまくいきませんでした。学習初期?のような画像が生成されました。

1

コード情報の追記

2021/04/08 13:08

投稿

zassota
zassota

スコア1

title CHANGED
File without changes
body CHANGED
@@ -83,5 +83,86 @@
83
83
  print("")
84
84
  print('Epoch %s/%s, Time: %s' % (e + 1, epoch, time.time() - starttime))
85
85
 
86
- generator_model.save('C:/フォルダーの場所/MyNet.h5')
86
+ generator_model.save('C:/フォルダーの場所/model.h5')
87
+ ```
88
+
89
+ 以下、追記
90
+ 「保存されたモデル(.h5)をロードして画像変換」は下記になります。
91
+ ```python
92
+ import keras
93
+ from keras import optimizers
94
+ from matplotlib import pyplot as plt
95
+ from keras.preprocessing.image import ImageDataGenerator
96
+ from keras.models import Sequential, Model
97
+ from keras.layers import Dense, Dropout, Activation, Flatten
98
+ from keras.layers import Conv2D, MaxPooling2D, Add, Input, Multiply
99
+ from keras.callbacks import ModelCheckpoint, CSVLogger
100
+ from keras import optimizers
101
+ from keras.layers import GlobalAveragePooling2D
102
+ import cv2
103
+ import os, glob, random
104
+ import os, tkinter, tkinter.filedialog, tkinter.messagebox
105
+ from PIL import Image
106
+ import pickle
107
+ import numpy as np
108
+ import time
109
+ import datetime
110
+ import random
111
+ import keras.backend as K
112
+
113
+ def psnr(y_true, y_pred):
114
+ return -10*K.log(K.mean(K.flatten((y_true - y_pred))**2)) / np.log(10)
115
+
116
+ random.seed(0)
117
+
118
+ img_width = 256
119
+ img_height = 256
120
+
121
+ print('学習済みモデルを指定')
122
+ root = tkinter.Tk()
123
+ root.withdraw()
124
+ fTyp = [("","*")]
125
+ iDir = os.path.abspath(os.path.dirname(__file__))
126
+ file_path = tkinter.filedialog.askopenfilename(filetypes = fTyp,initialdir = iDir)
127
+ print(file_path)
128
+
129
+ from keras.models import load_model
130
+ model = load_model(file_path, custom_objects={'psnr': psnr, 'val_psnr': psnr})
131
+ model.summary()
132
+
133
+
134
+ print('データセットのフォルダを指定')
135
+ root = tkinter.Tk()
136
+ root.withdraw()
137
+ fTyp = [("","*")]
138
+ iDir = os.path.abspath(os.path.dirname(__file__))
139
+ file_path = tkinter.filedialog.askdirectory(initialdir = iDir)
140
+ print(file_path+'/*.jpg')
141
+
142
+ x_val = []
143
+ fn=glob.glob(file_path+'/*.jpg')
144
+ for nm in fn:
145
+ img = cv2.imread(nm)
146
+ x_val.append(img)
147
+ x_val = np.asarray(x_val)
148
+ x_val = x_val.astype('float32')
149
+ x_val = x_val / 255.0
150
+ #x_val = x_val.reshape((len(x_val), 256, 256, 3))
151
+
152
+
153
+ decoded_imgs = model.predict(x_val)
154
+
155
+ if not os.path.exists('C:/フォルダの場所'):
156
+ os.makedirs('C:/フォルダの場所')
157
+
158
+ i = -1
159
+ for nm in fn:
160
+ nm = nm.split('\')[1]
161
+ i = i + 1
162
+ ax = decoded_imgs[i].reshape(img_height, img_width, 3)
163
+ cv2.imwrite('C:/フォルダの場所/'+nm,ax*255)
164
+
165
+ print('結果が保存')
166
+
167
+
87
168
  ```