Spaces:
Sleeping
Sleeping
File size: 3,560 Bytes
945eea6 91372b6 945eea6 91372b6 945eea6 91372b6 4e2d827 945eea6 91372b6 945eea6 9ac6aec 945eea6 91372b6 945eea6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
#!/usr/bin/env python
from __future__ import annotations
import pathlib
import gradio as gr
from model import Model
repo_dir = pathlib.Path(__file__).parent
def create_demo():
TITLE = '# [ELITE Demo](https://github.com/csyxwei/ELITE)'
USAGE='''To run the demo, you should:
1. Upload your image.
2. **Draw a mask on the object part.**
3. Input proper text prompts, such as "A photo of S" or "A S wearing sunglasses", where "S" denotes your customized concept.
4. Click the Run button. You can also adjust the hyperparameters to improve the results.
'''
model = Model()
with gr.Blocks(css=repo_dir / 'style.css') as demo:
gr.Markdown(TITLE)
gr.Markdown(USAGE)
with gr.Row():
with gr.Column():
with gr.Box():
image = gr.Image(label='Input', tool='sketch', type='pil')
# gr.Markdown('Draw a mask on your object.')
gr.Markdown('Upload your image and **draw a mask on the object part**')
prompt = gr.Text(
label='Prompt',
placeholder='e.g. "A photo of S", "A S wearing sunglasses"',
info='Use "S" for your concept.')
lambda_ = gr.Slider(
label='Lambda',
minimum=0,
maximum=1.5,
step=0.1,
value=0.6,
info=
'The larger the lambda, the more consistency between the generated image and the input image, but less editability.'
)
run_button = gr.Button('Run')
with gr.Accordion(label='Advanced options', open=False):
seed = gr.Slider(
label='Seed',
minimum=-1,
maximum=1000000,
step=1,
value=-1,
info=
'If set to -1, a different seed will be used each time.'
)
guidance_scale = gr.Slider(label='Guidance scale',
minimum=0,
maximum=50,
step=0.1,
value=5.0)
num_steps = gr.Slider(
label='Steps',
minimum=1,
maximum=100,
step=1,
value=300,
info=
'In the paper, the number of steps is set to 100, but in this demo the default value is 20 to reduce inference time.'
)
with gr.Column():
result = gr.Image(label='Result')
paths = sorted([
path.as_posix()
for path in (repo_dir / 'ELITE/test_datasets').glob('*')
if 'bg' not in path.stem
])
gr.Examples(examples=paths, inputs=image, examples_per_page=20)
inputs = [
image,
prompt,
seed,
guidance_scale,
lambda_,
num_steps,
]
prompt.submit(fn=model.run, inputs=inputs, outputs=result)
run_button.click(fn=model.run, inputs=inputs, outputs=result)
return demo
if __name__ == '__main__':
demo = create_demo()
demo.queue(api_open=False).launch()
|