3v324v23 commited on
Commit
6ee7888
·
1 Parent(s): 86e1696
Files changed (35) hide show
  1. anydoor/cldm/__pycache__/cldm.cpython-38.pyc +0 -0
  2. anydoor/cldm/__pycache__/ddim_hacked.cpython-38.pyc +0 -0
  3. anydoor/cldm/__pycache__/hack.cpython-38.pyc +0 -0
  4. anydoor/cldm/__pycache__/model.cpython-38.pyc +0 -0
  5. anydoor/configs/inference.yaml +1 -1
  6. anydoor/datasets/__pycache__/data_utils.cpython-38.pyc +0 -0
  7. anydoor/dinov2/__pycache__/hubconf.cpython-38.pyc +0 -0
  8. anydoor/dinov2/dinov2/__pycache__/__init__.cpython-38.pyc +0 -0
  9. anydoor/dinov2/dinov2/layers/__pycache__/__init__.cpython-38.pyc +0 -0
  10. anydoor/dinov2/dinov2/layers/__pycache__/attention.cpython-38.pyc +0 -0
  11. anydoor/dinov2/dinov2/layers/__pycache__/block.cpython-38.pyc +0 -0
  12. anydoor/dinov2/dinov2/layers/__pycache__/dino_head.cpython-38.pyc +0 -0
  13. anydoor/dinov2/dinov2/layers/__pycache__/drop_path.cpython-38.pyc +0 -0
  14. anydoor/dinov2/dinov2/layers/__pycache__/layer_scale.cpython-38.pyc +0 -0
  15. anydoor/dinov2/dinov2/layers/__pycache__/mlp.cpython-38.pyc +0 -0
  16. anydoor/dinov2/dinov2/layers/__pycache__/patch_embed.cpython-38.pyc +0 -0
  17. anydoor/dinov2/dinov2/layers/__pycache__/swiglu_ffn.cpython-38.pyc +0 -0
  18. anydoor/dinov2/dinov2/models/__pycache__/__init__.cpython-38.pyc +0 -0
  19. anydoor/dinov2/dinov2/models/__pycache__/vision_transformer.cpython-38.pyc +0 -0
  20. anydoor/ldm/__pycache__/util.cpython-38.pyc +0 -0
  21. anydoor/ldm/models/__pycache__/autoencoder.cpython-38.pyc +0 -0
  22. anydoor/ldm/models/diffusion/__pycache__/__init__.cpython-38.pyc +0 -0
  23. anydoor/ldm/models/diffusion/__pycache__/ddim.cpython-38.pyc +0 -0
  24. anydoor/ldm/models/diffusion/__pycache__/ddpm.cpython-38.pyc +0 -0
  25. anydoor/ldm/modules/__pycache__/attention.cpython-38.pyc +0 -0
  26. anydoor/ldm/modules/__pycache__/ema.cpython-38.pyc +0 -0
  27. anydoor/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-38.pyc +0 -0
  28. anydoor/ldm/modules/diffusionmodules/__pycache__/model.cpython-38.pyc +0 -0
  29. anydoor/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-38.pyc +0 -0
  30. anydoor/ldm/modules/diffusionmodules/__pycache__/util.cpython-38.pyc +0 -0
  31. anydoor/ldm/modules/distributions/__pycache__/__init__.cpython-38.pyc +0 -0
  32. anydoor/ldm/modules/distributions/__pycache__/distributions.cpython-38.pyc +0 -0
  33. anydoor/ldm/modules/encoders/__pycache__/__init__.cpython-38.pyc +0 -0
  34. anydoor/ldm/modules/encoders/__pycache__/modules.cpython-38.pyc +0 -0
  35. anydoor/run_inference_train_x.py +65 -13
anydoor/cldm/__pycache__/cldm.cpython-38.pyc CHANGED
Binary files a/anydoor/cldm/__pycache__/cldm.cpython-38.pyc and b/anydoor/cldm/__pycache__/cldm.cpython-38.pyc differ
 
anydoor/cldm/__pycache__/ddim_hacked.cpython-38.pyc CHANGED
Binary files a/anydoor/cldm/__pycache__/ddim_hacked.cpython-38.pyc and b/anydoor/cldm/__pycache__/ddim_hacked.cpython-38.pyc differ
 
anydoor/cldm/__pycache__/hack.cpython-38.pyc CHANGED
Binary files a/anydoor/cldm/__pycache__/hack.cpython-38.pyc and b/anydoor/cldm/__pycache__/hack.cpython-38.pyc differ
 
anydoor/cldm/__pycache__/model.cpython-38.pyc CHANGED
Binary files a/anydoor/cldm/__pycache__/model.cpython-38.pyc and b/anydoor/cldm/__pycache__/model.cpython-38.pyc differ
 
anydoor/configs/inference.yaml CHANGED
@@ -1,3 +1,3 @@
1
- pretrained_model: /work/wefa-door-master/adbase-step=48745.ckpt
2
  config_file: configs/anydoor.yaml
3
  save_memory: False
 
1
+ pretrained_model: /work/wefa-door-master/adbase-step=41250.ckpt
2
  config_file: configs/anydoor.yaml
3
  save_memory: False
anydoor/datasets/__pycache__/data_utils.cpython-38.pyc CHANGED
Binary files a/anydoor/datasets/__pycache__/data_utils.cpython-38.pyc and b/anydoor/datasets/__pycache__/data_utils.cpython-38.pyc differ
 
anydoor/dinov2/__pycache__/hubconf.cpython-38.pyc CHANGED
Binary files a/anydoor/dinov2/__pycache__/hubconf.cpython-38.pyc and b/anydoor/dinov2/__pycache__/hubconf.cpython-38.pyc differ
 
anydoor/dinov2/dinov2/__pycache__/__init__.cpython-38.pyc CHANGED
Binary files a/anydoor/dinov2/dinov2/__pycache__/__init__.cpython-38.pyc and b/anydoor/dinov2/dinov2/__pycache__/__init__.cpython-38.pyc differ
 
anydoor/dinov2/dinov2/layers/__pycache__/__init__.cpython-38.pyc CHANGED
Binary files a/anydoor/dinov2/dinov2/layers/__pycache__/__init__.cpython-38.pyc and b/anydoor/dinov2/dinov2/layers/__pycache__/__init__.cpython-38.pyc differ
 
anydoor/dinov2/dinov2/layers/__pycache__/attention.cpython-38.pyc CHANGED
Binary files a/anydoor/dinov2/dinov2/layers/__pycache__/attention.cpython-38.pyc and b/anydoor/dinov2/dinov2/layers/__pycache__/attention.cpython-38.pyc differ
 
anydoor/dinov2/dinov2/layers/__pycache__/block.cpython-38.pyc CHANGED
Binary files a/anydoor/dinov2/dinov2/layers/__pycache__/block.cpython-38.pyc and b/anydoor/dinov2/dinov2/layers/__pycache__/block.cpython-38.pyc differ
 
anydoor/dinov2/dinov2/layers/__pycache__/dino_head.cpython-38.pyc CHANGED
Binary files a/anydoor/dinov2/dinov2/layers/__pycache__/dino_head.cpython-38.pyc and b/anydoor/dinov2/dinov2/layers/__pycache__/dino_head.cpython-38.pyc differ
 
anydoor/dinov2/dinov2/layers/__pycache__/drop_path.cpython-38.pyc CHANGED
Binary files a/anydoor/dinov2/dinov2/layers/__pycache__/drop_path.cpython-38.pyc and b/anydoor/dinov2/dinov2/layers/__pycache__/drop_path.cpython-38.pyc differ
 
anydoor/dinov2/dinov2/layers/__pycache__/layer_scale.cpython-38.pyc CHANGED
Binary files a/anydoor/dinov2/dinov2/layers/__pycache__/layer_scale.cpython-38.pyc and b/anydoor/dinov2/dinov2/layers/__pycache__/layer_scale.cpython-38.pyc differ
 
anydoor/dinov2/dinov2/layers/__pycache__/mlp.cpython-38.pyc CHANGED
Binary files a/anydoor/dinov2/dinov2/layers/__pycache__/mlp.cpython-38.pyc and b/anydoor/dinov2/dinov2/layers/__pycache__/mlp.cpython-38.pyc differ
 
anydoor/dinov2/dinov2/layers/__pycache__/patch_embed.cpython-38.pyc CHANGED
Binary files a/anydoor/dinov2/dinov2/layers/__pycache__/patch_embed.cpython-38.pyc and b/anydoor/dinov2/dinov2/layers/__pycache__/patch_embed.cpython-38.pyc differ
 
anydoor/dinov2/dinov2/layers/__pycache__/swiglu_ffn.cpython-38.pyc CHANGED
Binary files a/anydoor/dinov2/dinov2/layers/__pycache__/swiglu_ffn.cpython-38.pyc and b/anydoor/dinov2/dinov2/layers/__pycache__/swiglu_ffn.cpython-38.pyc differ
 
anydoor/dinov2/dinov2/models/__pycache__/__init__.cpython-38.pyc CHANGED
Binary files a/anydoor/dinov2/dinov2/models/__pycache__/__init__.cpython-38.pyc and b/anydoor/dinov2/dinov2/models/__pycache__/__init__.cpython-38.pyc differ
 
anydoor/dinov2/dinov2/models/__pycache__/vision_transformer.cpython-38.pyc CHANGED
Binary files a/anydoor/dinov2/dinov2/models/__pycache__/vision_transformer.cpython-38.pyc and b/anydoor/dinov2/dinov2/models/__pycache__/vision_transformer.cpython-38.pyc differ
 
anydoor/ldm/__pycache__/util.cpython-38.pyc CHANGED
Binary files a/anydoor/ldm/__pycache__/util.cpython-38.pyc and b/anydoor/ldm/__pycache__/util.cpython-38.pyc differ
 
anydoor/ldm/models/__pycache__/autoencoder.cpython-38.pyc CHANGED
Binary files a/anydoor/ldm/models/__pycache__/autoencoder.cpython-38.pyc and b/anydoor/ldm/models/__pycache__/autoencoder.cpython-38.pyc differ
 
anydoor/ldm/models/diffusion/__pycache__/__init__.cpython-38.pyc CHANGED
Binary files a/anydoor/ldm/models/diffusion/__pycache__/__init__.cpython-38.pyc and b/anydoor/ldm/models/diffusion/__pycache__/__init__.cpython-38.pyc differ
 
anydoor/ldm/models/diffusion/__pycache__/ddim.cpython-38.pyc CHANGED
Binary files a/anydoor/ldm/models/diffusion/__pycache__/ddim.cpython-38.pyc and b/anydoor/ldm/models/diffusion/__pycache__/ddim.cpython-38.pyc differ
 
anydoor/ldm/models/diffusion/__pycache__/ddpm.cpython-38.pyc CHANGED
Binary files a/anydoor/ldm/models/diffusion/__pycache__/ddpm.cpython-38.pyc and b/anydoor/ldm/models/diffusion/__pycache__/ddpm.cpython-38.pyc differ
 
anydoor/ldm/modules/__pycache__/attention.cpython-38.pyc CHANGED
Binary files a/anydoor/ldm/modules/__pycache__/attention.cpython-38.pyc and b/anydoor/ldm/modules/__pycache__/attention.cpython-38.pyc differ
 
anydoor/ldm/modules/__pycache__/ema.cpython-38.pyc CHANGED
Binary files a/anydoor/ldm/modules/__pycache__/ema.cpython-38.pyc and b/anydoor/ldm/modules/__pycache__/ema.cpython-38.pyc differ
 
anydoor/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-38.pyc CHANGED
Binary files a/anydoor/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-38.pyc and b/anydoor/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-38.pyc differ
 
anydoor/ldm/modules/diffusionmodules/__pycache__/model.cpython-38.pyc CHANGED
Binary files a/anydoor/ldm/modules/diffusionmodules/__pycache__/model.cpython-38.pyc and b/anydoor/ldm/modules/diffusionmodules/__pycache__/model.cpython-38.pyc differ
 
anydoor/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-38.pyc CHANGED
Binary files a/anydoor/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-38.pyc and b/anydoor/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-38.pyc differ
 
anydoor/ldm/modules/diffusionmodules/__pycache__/util.cpython-38.pyc CHANGED
Binary files a/anydoor/ldm/modules/diffusionmodules/__pycache__/util.cpython-38.pyc and b/anydoor/ldm/modules/diffusionmodules/__pycache__/util.cpython-38.pyc differ
 
anydoor/ldm/modules/distributions/__pycache__/__init__.cpython-38.pyc CHANGED
Binary files a/anydoor/ldm/modules/distributions/__pycache__/__init__.cpython-38.pyc and b/anydoor/ldm/modules/distributions/__pycache__/__init__.cpython-38.pyc differ
 
anydoor/ldm/modules/distributions/__pycache__/distributions.cpython-38.pyc CHANGED
Binary files a/anydoor/ldm/modules/distributions/__pycache__/distributions.cpython-38.pyc and b/anydoor/ldm/modules/distributions/__pycache__/distributions.cpython-38.pyc differ
 
anydoor/ldm/modules/encoders/__pycache__/__init__.cpython-38.pyc CHANGED
Binary files a/anydoor/ldm/modules/encoders/__pycache__/__init__.cpython-38.pyc and b/anydoor/ldm/modules/encoders/__pycache__/__init__.cpython-38.pyc differ
 
anydoor/ldm/modules/encoders/__pycache__/modules.cpython-38.pyc CHANGED
Binary files a/anydoor/ldm/modules/encoders/__pycache__/modules.cpython-38.pyc and b/anydoor/ldm/modules/encoders/__pycache__/modules.cpython-38.pyc differ
 
anydoor/run_inference_train_x.py CHANGED
@@ -156,7 +156,7 @@ def inference_single_image(ref_image, ref_mask, tar_image, tar_mask, guidance_sc
156
  hint_image = hint[:,:,:-1]
157
  hint_mask = item['hint'][:,:,-1] * 255
158
  hint_mask = np.stack([hint_mask,hint_mask,hint_mask],-1)
159
- ref = cv2.resize(ref.astype(np.uint8), (512,512))
160
 
161
  seed = random.randint(0, 65535)
162
  if save_memory:
@@ -186,15 +186,14 @@ def inference_single_image(ref_image, ref_mask, tar_image, tar_mask, guidance_sc
186
  if save_memory:
187
  model.low_vram_shift(is_diffusing=True)
188
 
189
- # ====
190
  num_samples = 1 #gr.Slider(label="Images", minimum=1, maximum=12, value=1, step=1)
191
- image_resolution = 512 #gr.Slider(label="Image Resolution", minimum=256, maximum=768, value=512, step=64)
192
  strength = 1 #gr.Slider(label="Control Strength", minimum=0.0, maximum=2.0, value=1.0, step=0.01)
193
  guess_mode = False #gr.Checkbox(label='Guess Mode', value=False)
194
  #detect_resolution = 512 #gr.Slider(label="Segmentation Resolution", minimum=128, maximum=1024, value=512, step=1)
195
  ddim_steps = 50 #gr.Slider(label="Steps", minimum=1, maximum=100, value=20, step=1)
196
  scale = guidance_scale #gr.Slider(label="Guidance Scale", minimum=0.1, maximum=30.0, value=9.0, step=0.1)
197
- seed = -1 #gr.Slider(label="Seed", minimum=-1, maximum=2147483647, step=1, randomize=True)
198
  eta = 0.0 #gr.Number(label="eta (DDIM)", value=0.0)
199
 
200
  model.control_scales = [strength * (0.825 ** float(12 - i)) for i in range(13)] if guess_mode else ([strength] * 13) # Magic number. IDK why. Perhaps because 0.825**12<0.01 but 0.826**12>0.01
@@ -219,6 +218,20 @@ def inference_single_image(ref_image, ref_mask, tar_image, tar_mask, guidance_sc
219
  return gen_image
220
 
221
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
222
  if __name__ == '__main__':
223
 
224
  import os
@@ -236,35 +249,74 @@ if __name__ == '__main__':
236
  # Fixed reference image and its mask
237
  fixed_ref_image_name = 'we_picked_8.jpg'
238
  fixed_ref_image_path = os.path.join(image_dir, fixed_ref_image_name)
239
- fixed_ref_mask_path = os.path.join(image_parse_v3_dir, 'top_long_collar.png')
240
 
241
  # Ensure the save directory exists
242
  if not os.path.exists(save_dir):
243
  os.makedirs(save_dir)
244
 
245
  # Create list of cloth image names
246
- cloth_image_names = os.listdir(cloth_dir)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
247
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
248
  for cloth_image_name in cloth_image_names:
249
- # Construct paths for cloth and its mask
250
  cloth_image_path = os.path.join(cloth_dir, cloth_image_name)
251
  cloth_mask_path = os.path.join(cloth_mask_dir, cloth_image_name)
252
 
253
- # Load and process the cloth image and mask
254
  cloth_image = cv2.imread(cloth_image_path)
255
  cloth_image = cv2.cvtColor(cloth_image, cv2.COLOR_BGR2RGB)
256
  cloth_mask = (cv2.imread(cloth_mask_path) > 128).astype(np.uint8)[:, :, 0]
257
 
258
- # Load and process the fixed reference image and mask
259
  ref_image = cv2.imread(fixed_ref_image_path)
260
  ref_image = cv2.cvtColor(ref_image, cv2.COLOR_BGR2RGB)
261
  ref_mask = Image.open(fixed_ref_mask_path).convert('P')
262
- ref_mask = np.array(ref_mask) == 5 # Update this value if the mask classification is different
263
 
264
- # Generate the image using the provided function
265
  gen_image = inference_single_image(cloth_image, cloth_mask, ref_image, ref_mask)
266
- gen_path = os.path.join(save_dir, '5_' + cloth_image_name)
 
 
267
 
268
- # Concatenate and save the visualization
269
  vis_image = cv2.hconcat([cloth_image, ref_image, gen_image])
270
  cv2.imwrite(gen_path, cv2.cvtColor(vis_image, cv2.COLOR_RGB2BGR))
 
 
 
 
 
 
 
 
156
  hint_image = hint[:,:,:-1]
157
  hint_mask = item['hint'][:,:,-1] * 255
158
  hint_mask = np.stack([hint_mask,hint_mask,hint_mask],-1)
159
+ ref = cv2.resize(ref.astype(np.uint8), (512,682))
160
 
161
  seed = random.randint(0, 65535)
162
  if save_memory:
 
186
  if save_memory:
187
  model.low_vram_shift(is_diffusing=True)
188
 
 
189
  num_samples = 1 #gr.Slider(label="Images", minimum=1, maximum=12, value=1, step=1)
190
+ image_resolution = 768 #gr.Slider(label="Image Resolution", minimum=256, maximum=768, value=512, step=64)
191
  strength = 1 #gr.Slider(label="Control Strength", minimum=0.0, maximum=2.0, value=1.0, step=0.01)
192
  guess_mode = False #gr.Checkbox(label='Guess Mode', value=False)
193
  #detect_resolution = 512 #gr.Slider(label="Segmentation Resolution", minimum=128, maximum=1024, value=512, step=1)
194
  ddim_steps = 50 #gr.Slider(label="Steps", minimum=1, maximum=100, value=20, step=1)
195
  scale = guidance_scale #gr.Slider(label="Guidance Scale", minimum=0.1, maximum=30.0, value=9.0, step=0.1)
196
+ seed = 135 #gr.Slider(label="Seed", minimum=-1, maximum=2147483647, step=1, randomize=True)
197
  eta = 0.0 #gr.Number(label="eta (DDIM)", value=0.0)
198
 
199
  model.control_scales = [strength * (0.825 ** float(12 - i)) for i in range(13)] if guess_mode else ([strength] * 13) # Magic number. IDK why. Perhaps because 0.825**12<0.01 but 0.826**12>0.01
 
218
  return gen_image
219
 
220
 
221
+ def resize_and_crop(image, target_width, target_height, top_offset, bottom_offset):
222
+ # Crop the center horizontally
223
+ center_x = image.shape[1] // 2
224
+ half_width = target_width // 2
225
+ cropped_image = image[:, center_x - half_width:center_x + half_width]
226
+
227
+ # Crop the top or bottom part vertically
228
+ if top_offset:
229
+ cropped_image = cropped_image[:target_height]
230
+ elif bottom_offset:
231
+ cropped_image = cropped_image[-target_height:]
232
+
233
+ return cropped_image
234
+
235
  if __name__ == '__main__':
236
 
237
  import os
 
249
  # Fixed reference image and its mask
250
  fixed_ref_image_name = 'we_picked_8.jpg'
251
  fixed_ref_image_path = os.path.join(image_dir, fixed_ref_image_name)
252
+ fixed_ref_mask_path = os.path.join(image_parse_v3_dir, 'T_we_picked_8.png')
253
 
254
  # Ensure the save directory exists
255
  if not os.path.exists(save_dir):
256
  os.makedirs(save_dir)
257
 
258
  # Create list of cloth image names
259
+ cloth_image_names = os.listdir(cloth_dir)[:5]
260
+
261
+ # First loop for the top half
262
+ for cloth_image_name in cloth_image_names:
263
+ cloth_image_path = os.path.join(cloth_dir, cloth_image_name)
264
+ cloth_mask_path = os.path.join(cloth_mask_dir, cloth_image_name)
265
+
266
+ cloth_image = cv2.imread(cloth_image_path)
267
+ cloth_image = cv2.cvtColor(cloth_image, cv2.COLOR_BGR2RGB)
268
+ cloth_mask = (cv2.imread(cloth_mask_path) > 128).astype(np.uint8)[:, :, 0]
269
+
270
+ ref_image = cv2.imread(fixed_ref_image_path)
271
+ ref_image = cv2.cvtColor(ref_image, cv2.COLOR_BGR2RGB)
272
+ ref_mask = Image.open(fixed_ref_mask_path).convert('P')
273
+ ref_mask = np.array(ref_mask) == 1
274
+
275
+ gen_image = inference_single_image(cloth_image, cloth_mask, ref_image, ref_mask)
276
+ gen_path = os.path.join(save_dir, 'gen_top_' + cloth_image_name)
277
+ single_path = os.path.join(save_dir, 'single_top_' + cloth_image_name)
278
+ clothe_path = os.path.join(save_dir, 'single_cloth_top_' + cloth_image_name)
279
 
280
+ vis_image = cv2.hconcat([cloth_image, ref_image, gen_image])
281
+ cv2.imwrite(gen_path, cv2.cvtColor(vis_image, cv2.COLOR_RGB2BGR))
282
+ cv2.imwrite(clothe_path, cv2.cvtColor(cloth_image, cv2.COLOR_RGB2BGR))
283
+ cv2.imwrite(single_path, cv2.cvtColor(gen_image, cv2.COLOR_RGB2BGR))
284
+ top_image_path = os.path.join(save_dir, 'top_z_' + cloth_image_name)
285
+ top_half_cropped = resize_and_crop(gen_image, 512, 600, True, False)
286
+ cv2.imwrite(top_image_path, cv2.cvtColor(top_half_cropped, cv2.COLOR_RGB2BGR))
287
+
288
+
289
+
290
+ # Update the cloth directory and mask path for the bottom half processing
291
+ cloth_dir = '/work/pink_girl/cloth/trou'
292
+ fixed_ref_mask_path = os.path.join(image_parse_v3_dir, 'trou1.png')
293
+ cloth_image_names = os.listdir(cloth_dir)[:5]
294
+
295
+ # Second loop for the bottom half
296
  for cloth_image_name in cloth_image_names:
 
297
  cloth_image_path = os.path.join(cloth_dir, cloth_image_name)
298
  cloth_mask_path = os.path.join(cloth_mask_dir, cloth_image_name)
299
 
 
300
  cloth_image = cv2.imread(cloth_image_path)
301
  cloth_image = cv2.cvtColor(cloth_image, cv2.COLOR_BGR2RGB)
302
  cloth_mask = (cv2.imread(cloth_mask_path) > 128).astype(np.uint8)[:, :, 0]
303
 
 
304
  ref_image = cv2.imread(fixed_ref_image_path)
305
  ref_image = cv2.cvtColor(ref_image, cv2.COLOR_BGR2RGB)
306
  ref_mask = Image.open(fixed_ref_mask_path).convert('P')
307
+ ref_mask = np.array(ref_mask) == 2
308
 
 
309
  gen_image = inference_single_image(cloth_image, cloth_mask, ref_image, ref_mask)
310
+ gen_path = os.path.join(save_dir, 'gen_pant_' + cloth_image_name)
311
+ single_path = os.path.join(save_dir, 'single_pant_' + cloth_image_name)
312
+ clothe_path = os.path.join(save_dir, 'single_cloth_pant_' + cloth_image_name)
313
 
 
314
  vis_image = cv2.hconcat([cloth_image, ref_image, gen_image])
315
  cv2.imwrite(gen_path, cv2.cvtColor(vis_image, cv2.COLOR_RGB2BGR))
316
+ cv2.imwrite(clothe_path, cv2.cvtColor(cloth_image, cv2.COLOR_RGB2BGR))
317
+ cv2.imwrite(single_path, cv2.cvtColor(gen_image, cv2.COLOR_RGB2BGR))
318
+
319
+ # Replace the resizing and padding code for the bottom half
320
+ bottom_image_path = os.path.join(save_dir, 'bottom_z_' + cloth_image_name)
321
+ bottom_half_cropped = resize_and_crop(gen_image, 512, 600, False, True)
322
+ cv2.imwrite(bottom_image_path, cv2.cvtColor(bottom_half_cropped, cv2.COLOR_RGB2BGR))