test
Browse files- anydoor/cldm/__pycache__/cldm.cpython-38.pyc +0 -0
- anydoor/cldm/__pycache__/ddim_hacked.cpython-38.pyc +0 -0
- anydoor/cldm/__pycache__/hack.cpython-38.pyc +0 -0
- anydoor/cldm/__pycache__/model.cpython-38.pyc +0 -0
- anydoor/configs/inference.yaml +1 -1
- anydoor/datasets/__pycache__/data_utils.cpython-38.pyc +0 -0
- anydoor/dinov2/__pycache__/hubconf.cpython-38.pyc +0 -0
- anydoor/dinov2/dinov2/__pycache__/__init__.cpython-38.pyc +0 -0
- anydoor/dinov2/dinov2/layers/__pycache__/__init__.cpython-38.pyc +0 -0
- anydoor/dinov2/dinov2/layers/__pycache__/attention.cpython-38.pyc +0 -0
- anydoor/dinov2/dinov2/layers/__pycache__/block.cpython-38.pyc +0 -0
- anydoor/dinov2/dinov2/layers/__pycache__/dino_head.cpython-38.pyc +0 -0
- anydoor/dinov2/dinov2/layers/__pycache__/drop_path.cpython-38.pyc +0 -0
- anydoor/dinov2/dinov2/layers/__pycache__/layer_scale.cpython-38.pyc +0 -0
- anydoor/dinov2/dinov2/layers/__pycache__/mlp.cpython-38.pyc +0 -0
- anydoor/dinov2/dinov2/layers/__pycache__/patch_embed.cpython-38.pyc +0 -0
- anydoor/dinov2/dinov2/layers/__pycache__/swiglu_ffn.cpython-38.pyc +0 -0
- anydoor/dinov2/dinov2/models/__pycache__/__init__.cpython-38.pyc +0 -0
- anydoor/dinov2/dinov2/models/__pycache__/vision_transformer.cpython-38.pyc +0 -0
- anydoor/ldm/__pycache__/util.cpython-38.pyc +0 -0
- anydoor/ldm/models/__pycache__/autoencoder.cpython-38.pyc +0 -0
- anydoor/ldm/models/diffusion/__pycache__/__init__.cpython-38.pyc +0 -0
- anydoor/ldm/models/diffusion/__pycache__/ddim.cpython-38.pyc +0 -0
- anydoor/ldm/models/diffusion/__pycache__/ddpm.cpython-38.pyc +0 -0
- anydoor/ldm/modules/__pycache__/attention.cpython-38.pyc +0 -0
- anydoor/ldm/modules/__pycache__/ema.cpython-38.pyc +0 -0
- anydoor/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-38.pyc +0 -0
- anydoor/ldm/modules/diffusionmodules/__pycache__/model.cpython-38.pyc +0 -0
- anydoor/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-38.pyc +0 -0
- anydoor/ldm/modules/diffusionmodules/__pycache__/util.cpython-38.pyc +0 -0
- anydoor/ldm/modules/distributions/__pycache__/__init__.cpython-38.pyc +0 -0
- anydoor/ldm/modules/distributions/__pycache__/distributions.cpython-38.pyc +0 -0
- anydoor/ldm/modules/encoders/__pycache__/__init__.cpython-38.pyc +0 -0
- anydoor/ldm/modules/encoders/__pycache__/modules.cpython-38.pyc +0 -0
- 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=
|
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,
|
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 =
|
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 =
|
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, '
|
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) ==
|
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, '
|
|
|
|
|
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))
|