Spaces:
Runtime error
Runtime error
| import os | |
| import gradio as gr | |
| import rembg | |
| import spaces | |
| import torch | |
| from diffusers import DiffusionPipeline | |
| from instantMesh.src.utils.infer_util import ( | |
| remove_background, resize_foreground) | |
| pipe = DiffusionPipeline.from_pretrained( | |
| "playgroundai/playground-v2.5-1024px-aesthetic", | |
| torch_dtype=torch.float16, | |
| variant="fp16" | |
| ).to("cuda") | |
| def generate_prompt(subject, style, color_scheme, angle, lighting_type, additional_details): | |
| return f"A 3D cartoon render of {subject}, featuring the entire body and shape, on a transparent background. The style should be {style}, with {color_scheme} colors, emphasizing the essential features and lines. The pose should clearly showcase the full form of the {subject} from a {angle} perspective. Lighting is {lighting_type}, highlighting the volume and depth of the subject. {additional_details}. Output as a high-resolution PNG with no background." | |
| def generate_image(subject, style, color_scheme, angle, lighting_type, additional_details): | |
| prompt = generate_prompt(subject, style, color_scheme, | |
| angle, lighting_type, additional_details) | |
| results = pipe(prompt, num_inference_steps=25, guidance_scale=7.5) | |
| return results.images[0] | |
| def check_input_image(input_image): | |
| if input_image is None: | |
| raise gr.Error("No image selected!") | |
| def preprocess(input_image): | |
| rembg_session = rembg.new_session() | |
| input_image = remove_background(input_image, rembg_session) | |
| input_image = resize_foreground(input_image, 0.85) | |
| return input_image | |
| def image_generation_ui(): | |
| with gr.Row(): | |
| subject = gr.Textbox(label='Subject', scale=2) | |
| style = gr.Dropdown( | |
| label='Style', | |
| choices=['Pixar-like', 'Disney-esque', 'Anime-inspired'], | |
| value='Pixar-like', | |
| multiselect=False, | |
| scale=2 | |
| ) | |
| color_scheme = gr.Dropdown( | |
| label='Color Scheme', | |
| choices=['Vibrant', 'Pastel', 'Monochromatic', 'Black and White'], | |
| value='Vibrant', | |
| multiselect=False, | |
| scale=2 | |
| ) | |
| angle = gr.Dropdown( | |
| label='Angle', | |
| choices=['Front', 'Side', 'Three-quarter'], | |
| value='Front', | |
| multiselect=False, | |
| scale=2 | |
| ) | |
| lighting_type = gr.Dropdown( | |
| label='Lighting Type', | |
| choices=['Bright and Even', 'Dramatic Shadows', 'Soft and Warm'], | |
| value='Bright and Even', | |
| multiselect=False, | |
| scale=2 | |
| ) | |
| additional_details = gr.Textbox(label='Additional Details', scale=2) | |
| submit_prompt = gr.Button('Generate Image', scale=1, variant='primary') | |
| with gr.Row(variant="panel"): | |
| with gr.Column(): | |
| with gr.Row(): | |
| input_image = gr.Image( | |
| label="Input Image", | |
| image_mode="RGBA", | |
| sources="upload", | |
| type="pil", | |
| elem_id="content_image", | |
| ) | |
| processed_image = gr.Image( | |
| label="Processed Image", | |
| image_mode="RGBA", | |
| type="pil", | |
| interactive=False | |
| ) | |
| with gr.Row(): | |
| submit_process = gr.Button( | |
| "Remove Background", elem_id="process", variant="primary") | |
| with gr.Row(variant="panel"): | |
| gr.Examples( | |
| examples=[os.path.join("examples/images", img_name) | |
| for img_name in sorted(os.listdir("examples/images"))], | |
| inputs=[input_image], | |
| label="Examples", | |
| cache_examples=False, | |
| examples_per_page=16 | |
| ) | |
| submit_prompt.click(fn=generate_image, inputs=[subject, style, color_scheme, angle, lighting_type, additional_details], outputs=input_image).success( | |
| fn=preprocess, inputs=[input_image], outputs=[processed_image] | |
| ) | |
| submit_process.click(fn=check_input_image, inputs=[input_image]).success( | |
| fn=preprocess, inputs=[input_image], outputs=[processed_image], | |
| ) | |
| return input_image, processed_image | |