5
5
import sys
6
6
from lib import utils
7
7
from PyQt4 .QtCore import *
8
- import cv2
8
+
9
9
10
10
class Constrained_OPT (QThread ):
11
11
def __init__ (self , opt_solver , batch_size = 32 , n_iters = 25 , topK = 16 , morph_steps = 16 , interp = 'linear' ):
@@ -35,7 +35,7 @@ def __init__(self, opt_solver, batch_size=32, n_iters=25, topK=16, morph_steps=1
35
35
self .order = None
36
36
self .init_constraints () # initialize
37
37
self .init_z () # initialize latent vectors
38
- self .just_fixed = True
38
+ self .just_fixed = True
39
39
self .weights = None
40
40
41
41
def is_fixed (self ):
@@ -55,7 +55,7 @@ def init_z(self, frame_id=-1, image_id=-1):
55
55
print ('set z as image %d, frame %d' % (image_id , frame_id ))
56
56
self .prev_z = self .z_seq [image_id , frame_id ]
57
57
58
- if self .prev_z is None : #random initialization
58
+ if self .prev_z is None : # random initialization
59
59
self .z_init = np_rng .uniform (- 1.0 , 1.0 , size = (self .batch_size , nz ))
60
60
self .opt_solver .set_smoothness (0.0 )
61
61
self .z_const = self .z_init
@@ -79,25 +79,19 @@ def update(self): # update ui
79
79
80
80
def save_constraints (self ):
81
81
[im_c , mask_c , im_e , mask_e ] = self .combine_constraints (self .constraints )
82
- # write image
83
- # im_c2 = cv2.cvtColor(im_c, cv2.COLOR_RGB2BGR)
84
- # cv2.imwrite('input_color_image.png', im_c2)
85
- # cv2.imwrite('input_color_mask.png', mask_c)
86
- # cv2.imwrite('input_edge_map.png', im_e)
87
82
self .prev_im_c = im_c .copy ()
88
83
self .prev_mask_c = mask_c .copy ()
89
84
self .prev_im_e = im_e .copy ()
90
- self .prev_mask_e = mask_e .copy ()
85
+ self .prev_mask_e = mask_e .copy ()
91
86
92
87
def init_constraints (self ):
93
88
self .prev_im_c = None
94
89
self .prev_mask_c = None
95
90
self .prev_im_e = None
96
91
self .prev_mask_e = None
97
92
98
-
99
93
def combine_constraints (self , constraints ):
100
- if constraints is not None : # [hack]
94
+ if constraints is not None : # [hack]
101
95
# print('combine strokes')
102
96
[im_c , mask_c , im_e , mask_e ] = constraints
103
97
if self .prev_im_c is None :
@@ -113,22 +107,21 @@ def combine_constraints(self, constraints):
113
107
if self .prev_im_c is None :
114
108
im_c_f = im_c
115
109
else :
116
- im_c_f = self .prev_im_c .copy ()
117
- mask_c3 = np .tile (mask_c , [1 ,1 , im_c .shape [2 ]])
118
- np .copyto (im_c_f , im_c , where = mask_c3 .astype (np .bool )) #[hack]
110
+ im_c_f = self .prev_im_c .copy ()
111
+ mask_c3 = np .tile (mask_c , [1 , 1 , im_c .shape [2 ]])
112
+ np .copyto (im_c_f , im_c , where = mask_c3 .astype (np .bool )) # [hack]
119
113
120
114
if self .prev_im_e is None :
121
115
im_e_f = im_e
122
116
else :
123
117
im_e_f = self .prev_im_e .copy ()
124
- mask_e3 = np .tile (mask_e , [1 ,1 , im_e .shape [2 ]])
118
+ mask_e3 = np .tile (mask_e , [1 , 1 , im_e .shape [2 ]])
125
119
np .copyto (im_e_f , im_e , where = mask_e3 .astype (np .bool ))
126
120
127
121
return [im_c_f , mask_c_f , im_e_f , mask_e_f ]
128
122
else :
129
123
return [self .prev_im_c , self .prev_mask_c , self .prev_im_e , self .prev_mask_e ]
130
124
131
-
132
125
def set_constraints (self , constraints ):
133
126
self .constraints = constraints
134
127
@@ -140,7 +133,6 @@ def get_z(self, image_id, frame_id):
140
133
else :
141
134
return None
142
135
143
-
144
136
def get_image (self , image_id , frame_id , useAverage = False ):
145
137
if self .to_update :
146
138
if self .current_ims is None or self .current_ims .size == 0 :
@@ -158,7 +150,7 @@ def get_image(self, image_id, frame_id, useAverage=False):
158
150
frame_id = frame_id % self .img_seq .shape [1 ]
159
151
image_id = image_id % self .img_seq .shape [0 ]
160
152
if useAverage and self .weights is not None :
161
- return utils .average_image (self .img_seq [:,frame_id ,...], self .weights )
153
+ return utils .average_image (self .img_seq [:, frame_id , ...], self .weights )
162
154
else :
163
155
return self .img_seq [image_id , frame_id ]
164
156
@@ -188,10 +180,10 @@ def get_current_results(self):
188
180
return self .current_ims
189
181
190
182
def run (self ): # main function
191
- time_to_wait = 33 # 33 millisecond
183
+ time_to_wait = 33 # 33 millisecond
192
184
while (1 ):
193
- t1 = time ()
194
- if self .to_set_constraints :# update constraints
185
+ t1 = time ()
186
+ if self .to_set_constraints : # update constraints
195
187
self .to_set_constraints = False
196
188
197
189
if self .constraints is not None and self .iter_count < self .max_iters :
@@ -204,11 +196,11 @@ def run(self): # main function
204
196
self .to_update = False
205
197
self .iter_count += 1
206
198
207
- t_c = int (1000 * (time ()- t1 ))
199
+ t_c = int (1000 * (time () - t1 ))
208
200
print ('update one iteration: %03d ms' % t_c , end = '\r ' )
209
201
sys .stdout .flush ()
210
202
if t_c < time_to_wait :
211
- self .msleep (time_to_wait - t_c )
203
+ self .msleep (time_to_wait - t_c )
212
204
213
205
def update_invert (self , constraints ):
214
206
constraints_c = self .combine_constraints (constraints )
@@ -218,7 +210,7 @@ def update_invert(self, constraints):
218
210
219
211
if self .topK > 1 :
220
212
cost_sort = cost_all [order ]
221
- thres_top = 2 * np .mean (cost_sort [0 :min (int (self .topK / 2.0 ), len (cost_sort ))])
213
+ thres_top = 2 * np .mean (cost_sort [0 :min (int (self .topK / 2.0 ), len (cost_sort ))])
222
214
ids = cost_sort - thres_top < 1e-10
223
215
topK = np .min ([self .topK , sum (ids )])
224
216
else :
@@ -233,7 +225,7 @@ def update_invert(self, constraints):
233
225
self .current_ims = gx_t [order ]
234
226
# compute weights
235
227
cost_weights = cost_all [order ]
236
- self .weights = np .exp (- (cost_weights - np .mean (cost_weights )) / (np .std (cost_weights )+ 1e-10 ))
228
+ self .weights = np .exp (- (cost_weights - np .mean (cost_weights )) / (np .std (cost_weights ) + 1e-10 ))
237
229
self .current_zs = z_t [order ]
238
230
self .emit (SIGNAL ('update_image' ))
239
231
@@ -248,14 +240,14 @@ def gen_morphing(self, interp='linear', n_steps=8):
248
240
z_seq = []
249
241
250
242
for n in range (n_steps ):
251
- ratio = n / float (n_steps - 1 )
243
+ ratio = n / float (n_steps - 1 )
252
244
z_t = utils .interp_z (z1 , z2 , ratio , interp = interp )
253
245
seq = self .opt_solver .gen_samples (z0 = z_t )
254
246
img_seq .append (seq [:, np .newaxis , ...])
255
- z_seq .append (z_t [:,np .newaxis ,...])
247
+ z_seq .append (z_t [:, np .newaxis , ...])
256
248
self .img_seq = np .concatenate (img_seq , axis = 1 )
257
249
self .z_seq = np .concatenate (z_seq , axis = 1 )
258
- print ('generate morphing sequence (%.3f seconds)' % (time ()- t ))
250
+ print ('generate morphing sequence (%.3f seconds)' % (time () - t ))
259
251
260
252
def reset (self ):
261
253
self .prev_z = self .z0
@@ -271,7 +263,4 @@ def reset(self):
271
263
self .to_set_constraints = False
272
264
self .iter_total = 0
273
265
self .iter_count = 0
274
- self .weights = None
275
-
276
-
277
-
266
+ self .weights = None
0 commit comments