質問編集履歴

2

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

2021/04/08 13:08

投稿

zassota
zassota

スコア1

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

1

コード情報の追記

2021/04/08 13:08

投稿

zassota
zassota

スコア1

test CHANGED
File without changes
test CHANGED
@@ -168,6 +168,168 @@
168
168
 
169
169
 
170
170
 
171
- generator_model.save('C:/フォルダーの場所/MyNet.h5')
171
+ generator_model.save('C:/フォルダーの場所/model.h5')
172
172
 
173
173
  ```
174
+
175
+
176
+
177
+ 以下、追記
178
+
179
+ 「保存されたモデル(.h5)をロードして画像変換」は下記になります。
180
+
181
+ ```python
182
+
183
+ import keras
184
+
185
+ from keras import optimizers
186
+
187
+ from matplotlib import pyplot as plt
188
+
189
+ from keras.preprocessing.image import ImageDataGenerator
190
+
191
+ from keras.models import Sequential, Model
192
+
193
+ from keras.layers import Dense, Dropout, Activation, Flatten
194
+
195
+ from keras.layers import Conv2D, MaxPooling2D, Add, Input, Multiply
196
+
197
+ from keras.callbacks import ModelCheckpoint, CSVLogger
198
+
199
+ from keras import optimizers
200
+
201
+ from keras.layers import GlobalAveragePooling2D
202
+
203
+ import cv2
204
+
205
+ import os, glob, random
206
+
207
+ import os, tkinter, tkinter.filedialog, tkinter.messagebox
208
+
209
+ from PIL import Image
210
+
211
+ import pickle
212
+
213
+ import numpy as np
214
+
215
+ import time
216
+
217
+ import datetime
218
+
219
+ import random
220
+
221
+ import keras.backend as K
222
+
223
+
224
+
225
+ def psnr(y_true, y_pred):
226
+
227
+ return -10*K.log(K.mean(K.flatten((y_true - y_pred))**2)) / np.log(10)
228
+
229
+
230
+
231
+ random.seed(0)
232
+
233
+
234
+
235
+ img_width = 256
236
+
237
+ img_height = 256
238
+
239
+
240
+
241
+ print('学習済みモデルを指定')
242
+
243
+ root = tkinter.Tk()
244
+
245
+ root.withdraw()
246
+
247
+ fTyp = [("","*")]
248
+
249
+ iDir = os.path.abspath(os.path.dirname(__file__))
250
+
251
+ file_path = tkinter.filedialog.askopenfilename(filetypes = fTyp,initialdir = iDir)
252
+
253
+ print(file_path)
254
+
255
+
256
+
257
+ from keras.models import load_model
258
+
259
+ model = load_model(file_path, custom_objects={'psnr': psnr, 'val_psnr': psnr})
260
+
261
+ model.summary()
262
+
263
+
264
+
265
+
266
+
267
+ print('データセットのフォルダを指定')
268
+
269
+ root = tkinter.Tk()
270
+
271
+ root.withdraw()
272
+
273
+ fTyp = [("","*")]
274
+
275
+ iDir = os.path.abspath(os.path.dirname(__file__))
276
+
277
+ file_path = tkinter.filedialog.askdirectory(initialdir = iDir)
278
+
279
+ print(file_path+'/*.jpg')
280
+
281
+
282
+
283
+ x_val = []
284
+
285
+ fn=glob.glob(file_path+'/*.jpg')
286
+
287
+ for nm in fn:
288
+
289
+ img = cv2.imread(nm)
290
+
291
+ x_val.append(img)
292
+
293
+ x_val = np.asarray(x_val)
294
+
295
+ x_val = x_val.astype('float32')
296
+
297
+ x_val = x_val / 255.0
298
+
299
+ #x_val = x_val.reshape((len(x_val), 256, 256, 3))
300
+
301
+
302
+
303
+
304
+
305
+ decoded_imgs = model.predict(x_val)
306
+
307
+
308
+
309
+ if not os.path.exists('C:/フォルダの場所'):
310
+
311
+ os.makedirs('C:/フォルダの場所')
312
+
313
+
314
+
315
+ i = -1
316
+
317
+ for nm in fn:
318
+
319
+ nm = nm.split('\')[1]
320
+
321
+ i = i + 1
322
+
323
+ ax = decoded_imgs[i].reshape(img_height, img_width, 3)
324
+
325
+ cv2.imwrite('C:/フォルダの場所/'+nm,ax*255)
326
+
327
+
328
+
329
+ print('結果が保存')
330
+
331
+
332
+
333
+
334
+
335
+ ```