shogi880's picture
Update app.py
a80fa65
raw
history blame contribute delete
No virus
4.21 kB
import gradio as gr
dictionary = {
"a boy who is bullied": "Young boy, around the age of 12, with a small frame, wearing worn and untidy clothes, with a slouching posture, sitting alone in a corner, with a sad and defeated expression on his face.",
"a playful man": "A young man in his mid-20s to early 30s, Has a playful and energetic demeanor, with a big smile always on his face, Has a lean and athletic build, Has messy, yet stylish hair that is always styled in a way that makes it look like he just got out of bed, Has a playful twinkle in his eye, and a hint of mischief in his expression, Wears casual, comfortable clothing that is both stylish and practical,Often seen with a bag or backpack, as if he's always ready for an adventure",
"an easygoing man": "A man in his late 20s to early 40s, Has an easygoing and relaxed demeanor, with a friendly smile and a laid-back attitude, Has an average build, not overly muscular nor skinny, Has well-groomed hair, styled in a way that makes him look approachable and friendly, Has a calm and content expression, with a hint of serenity in his eyes, Wears clothing that is comfortable and practical, with a preference for casual styles and earthy colors, Often seen with a guitar or a backpack, as if he's always ready for an impromptu adventure or a jam session"
}
def chatgpt(query):
return dictionary[query]
def generateimage1(query):
return query.replace(' ', '-') + '.png'
def generateimage2(query):
return query.replace(' ', '-') + '-chatgpt.png'
title = "# ChatPrompt: Unleash the power of Stable Diffusion with ChatGPT and conquer abstract prompts!"
description = """
Stable Diffusion struggles with **unclear and vague prompts**, but by harnessing the **advanced reasoning capabilities of ChatGPT**. We can generate detailed and descriptive prompts for improved and unparalleled generation results.
(Work by [@shogi880](https://github.com/shogi880),[@CR-Gjx](https://github.com/CR-Gjx))
"""
example = """
### Note: we don't implement the ChatGPT and Stable Diffusion pipeline.
### To get ChatPrompt with following prompts ([ChatGPT](https://chat.openai.com)):
- `Act as a professional character designer. Please generate prompts include detail appearance descriptions that related to the personality. Here's your first question: 'a gentle man':`
- `Please generate detailed prompts from abstract prompts. "a gentle man". Let's think step by step:`
### Then try ChatPrompt on free SD spaces:
- [Stabilityai/Stable-Diffusion-2.1](https://huggingface.co/spaces/stabilityai/stable-diffusion)
- [runwayml/Stable-Diffusion-v1-5](https://huggingface.co/spaces/pujianto17/runwayml-stable-diffusion-v1-5)
- Anime Character Design with SD [(AI Mage)](https://aimage.xyz)
"""
co_create_magicprompt = """
### Co-create with ChatPrompt and MagicPrompt.
Compare with [Magicprompt](https://huggingface.co/spaces/Gustavosta/MagicPrompt-Stable-Diffusion), we augment detail content prompts instead of visual prompts."""
i_spy_a_metaphor = """
### Compare with [I Spy a Metaphor: Large Language Models and Diffusion Models Co-Create Visual Metaphors](https://openreview.net/forum?id=_2SBqIkiDW).
We aim to utilize ChatGPT in zero-shot setting.
We recently became aware of this concurrent work and find it interesting (Feb 5 2023).
"""
concept_image = "![The concept of co-creative ChatPrompt and MagicPrompt](https://huggingface.co/spaces/shogi880/ChatGPT-StableDiffusion-CharacterDesign/resolve/main/co-create-magic.png)"
with gr.Blocks() as demo:
gr.Markdown(title)
gr.Markdown(description)
gr.Markdown(co_create_magicprompt)
gr.Markdown(concept_image)
gr.Markdown(i_spy_a_metaphor)
gr.Markdown(example)
with gr.Row():
inpprompt = gr.Dropdown(list(dictionary.keys()), value=list(dictionary.keys())[0])
outprompt = gr.Textbox()
with gr.Row():
out1image = gr.Image()
out2image = gr.Image()
btn = gr.Button("Show me the result!")
btn.click(fn=chatgpt, inputs=inpprompt, outputs=outprompt)
btn.click(fn=generateimage1, inputs=inpprompt, outputs=out1image)
btn.click(fn=generateimage2, inputs=inpprompt, outputs=out2image)
demo.launch()