質問編集履歴
2
参考サイトを追記しました
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
コード情報の追記
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:/フォルダーの場所/
|
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
|
```
|