Views
No views yet
| Face | Generated Image 1 | Generated Image 2 | Generated Image 3 | Generated Image 4 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
git clone https://github.com/modelscope/DiffSynth-Studio.git
cd DiffSynth-Studio
pip install -e .1from diffsynth.pipelines.qwen_image import QwenImagePipeline, ModelConfig
2import torch
3from modelscope import snapshot_download, dataset_snapshot_download
4from PIL import Image
5
6pipe = QwenImagePipeline.from_pretrained(
7 torch_dtype=torch.bfloat16,
8 device="cuda",
9 model_configs=[
10 ModelConfig(model_id="Qwen/Qwen-Image-Edit", origin_file_pattern="transformer/diffusion_pytorch_model*.safetensors"),
11 ModelConfig(model_id="Qwen/Qwen-Image", origin_file_pattern="text_encoder/model*.safetensors"),
12 ModelConfig(model_id="Qwen/Qwen-Image", origin_file_pattern="vae/diffusion_pytorch_model.safetensors"),
13 ],
14 tokenizer_config=None,
15 processor_config=ModelConfig(model_id="Qwen/Qwen-Image-Edit", origin_file_pattern="processor/"),
16)
17snapshot_download("DiffSynth-Studio/Qwen-Image-Edit-F2P", local_dir="models/DiffSynth-Studio/Qwen-Image-Edit-F2P", allow_file_pattern="model.safetensors")
18pipe.load_lora(pipe.dit, "models/DiffSynth-Studio/Qwen-Image-Edit-F2P/model.safetensors")
19dataset_snapshot_download(
20 dataset_id="DiffSynth-Studio/example_image_dataset",
21 local_dir="./data/example_image_dataset",
22 allow_file_pattern="f2p/qwen_woman_face_crop.png"
23)
24face_image = Image.open("data/example_image_dataset/f2p/qwen_woman_face_crop.png").convert("RGB")1prompt = "Photography. A young woman wearing a yellow dress stands in a flower field, with a background of colorful flowers and green grass."
2image = pipe(prompt, edit_image=face_image, seed=42, num_inference_steps=40, height=1152, width=864)
3image.save(f"image.jpg")1import torch
2from PIL import Image
3import numpy as np
4from insightface.app import FaceAnalysis
5import cv2
6
7class FaceDetector(torch.nn.Module):
8
9 def __init__(self):
10 super().__init__()
11 providers = ["CUDAExecutionProvider", "CPUExecutionProvider"]
12 provider_options = [{"device_id": 0}, {}]
13 self.app_640 = FaceAnalysis(name='antelopev2', providers=providers, provider_options=provider_options)
14 self.app_640.prepare(ctx_id=0, det_size=(640, 640))
15 self.app_320 = FaceAnalysis(name='antelopev2', providers=providers, provider_options=provider_options)
16 self.app_320.prepare(ctx_id=0, det_size=(320, 320))
17 self.app_160 = FaceAnalysis(name='antelopev2', providers=providers, provider_options=provider_options)
18 self.app_160.prepare(ctx_id=0, det_size=(160, 160))
19
20 def _detect_face(self, id_image_cv2):
21 face_info = self.app_640.get(id_image_cv2)
22 if len(face_info) > 0:
23 return face_info
24 face_info = self.app_320.get(id_image_cv2)
25 if len(face_info) > 0:
26 return face_info
27 face_info = self.app_160.get(id_image_cv2)
28 return face_info
29
30 def crop_face(self, id_image):
31 face_info = self._detect_face(cv2.cvtColor(np.array(id_image), cv2.COLOR_RGB2BGR))
32 if len(face_info) == 0:
33 return None
34 else:
35 bbox = sorted(face_info, key=lambda x: (x['bbox'][2] - x['bbox'][0]) * (x['bbox'][3] - x['bbox'][1]))[-1]['bbox']
36 return id_image.crop(list(map(int, bbox)))
37
38
39face_detector = FaceDetector()
40face_image = face_detector.crop_face(Image.open("image_2.jpg"))
41face_image.save("face_crop.jpg")