Edison commited on
Commit
0b1de43
1 Parent(s): 6a7f883

Refactor: Improve error handling and add logging in app.py

Browse files
Files changed (2) hide show
  1. .gitignore +1 -0
  2. app.py +43 -18
.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ flagged
app.py CHANGED
@@ -2,6 +2,10 @@ import gradio as gr
2
  import torch
3
  from PIL import Image
4
  from diffusers import StableDiffusionControlNetPipeline, ControlNetModel
 
 
 
 
5
 
6
  # 加载模型和ControlNet
7
  model_id = "CompVis/stable-diffusion-v1-4"
@@ -14,34 +18,55 @@ def is_valid_pil_image(image):
14
  return isinstance(image, Image.Image)
15
 
16
  def generate_image(control_image, additional_prompt, reference_image1, reference_image2):
17
- # 检查输入图像是否为有效的 PIL 图像
18
- if not all(is_valid_pil_image(img) for img in [control_image, reference_image1, reference_image2]):
19
- return "Error: One or more input images are not valid PIL images."
20
-
21
  try:
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  # 第一步:使用 canny 模型生成初始图像
23
  initial_image = pipe(prompt=additional_prompt, control_image=control_image).images[0]
24
  if not is_valid_pil_image(initial_image):
25
- return "Error in Step 1: Generated image is not a valid PIL image."
26
- except Exception as e:
27
- return f"Error in Step 1: {str(e)}"
28
-
29
- try:
30
- # 第二步:使用第一张参考图像进行 reference_adain+attn 生成
31
  step2_image = pipe(prompt=additional_prompt, control_image=reference_image1).images[0]
 
 
 
 
32
  if not is_valid_pil_image(step2_image):
33
- return "Error in Step 2: Generated image is not a valid PIL image."
34
- except Exception as e:
35
- return f"Error in Step 2: {str(e)}"
36
-
37
- try:
38
- # 第三步:使用第二张参考图像进行 reference_adain+attn 生成
39
  final_image = pipe(prompt=additional_prompt, control_image=reference_image2).images[0]
 
 
 
 
40
  if not is_valid_pil_image(final_image):
41
- return "Error in Step 3: Generated image is not a valid PIL image."
 
 
 
 
42
  return final_image
43
  except Exception as e:
44
- return f"Error in Step 3: {str(e)}"
 
 
45
 
46
  # 定义Gradio接口
47
  interface = gr.Interface(
 
2
  import torch
3
  from PIL import Image
4
  from diffusers import StableDiffusionControlNetPipeline, ControlNetModel
5
+ import logging
6
+
7
+ # 配置日志记录
8
+ logging.basicConfig(level=logging.DEBUG)
9
 
10
  # 加载模型和ControlNet
11
  model_id = "CompVis/stable-diffusion-v1-4"
 
18
  return isinstance(image, Image.Image)
19
 
20
  def generate_image(control_image, additional_prompt, reference_image1, reference_image2):
 
 
 
 
21
  try:
22
+ logging.debug("Starting image generation process...")
23
+
24
+ # 打印传入的图像对象类型
25
+ logging.debug(f"Control Image type: {type(control_image)}")
26
+ logging.debug(f"Reference Image 1 type: {type(reference_image1)}")
27
+ logging.debug(f"Reference Image 2 type: {type(reference_image2)}")
28
+
29
+ # 检查输入图像是否为有效的 PIL 图像
30
+ if not all(is_valid_pil_image(img) for img in [control_image, reference_image1, reference_image2]):
31
+ error_message = "Error: One or more input images are not valid PIL images."
32
+ logging.error(error_message)
33
+ return error_message
34
+
35
  # 第一步:使用 canny 模型生成初始图像
36
  initial_image = pipe(prompt=additional_prompt, control_image=control_image).images[0]
37
  if not is_valid_pil_image(initial_image):
38
+ error_message = "Error in Step 1: Generated image is not a valid PIL image."
39
+ logging.error(error_message)
40
+ return error_message
41
+
42
+ # 第二步:使用第一张参考图像生成图像
 
43
  step2_image = pipe(prompt=additional_prompt, control_image=reference_image1).images[0]
44
+ if step2_image is None:
45
+ error_message = "Error in Step 2: Generated image is None (NoneType)."
46
+ logging.error(error_message)
47
+ return error_message
48
  if not is_valid_pil_image(step2_image):
49
+ error_message = "Error in Step 2: Generated image is not a valid PIL image."
50
+ logging.error(error_message)
51
+ return error_message
52
+
53
+ # 第三步:使用第二张参考图像生成图像
 
54
  final_image = pipe(prompt=additional_prompt, control_image=reference_image2).images[0]
55
+ if final_image is None:
56
+ error_message = "Error in Step 3: Generated image is None (NoneType)."
57
+ logging.error(error_message)
58
+ return error_message
59
  if not is_valid_pil_image(final_image):
60
+ error_message = "Error in Step 3: Generated image is not a valid PIL image."
61
+ logging.error(error_message)
62
+ return error_message
63
+
64
+ logging.debug("Image generation process completed successfully.")
65
  return final_image
66
  except Exception as e:
67
+ error_message = f"Error: {str(e)}"
68
+ logging.error(error_message)
69
+ return error_message
70
 
71
  # 定义Gradio接口
72
  interface = gr.Interface(