Iam-Famous / app.py
openfree's picture
Update app.py
e11c667 verified
raw
history blame
7.03 kB
import torch
import spaces
from diffusers import StableDiffusionPipeline, DDIMScheduler, AutoencoderKL
from transformers import AutoFeatureExtractor
from ip_adapter.ip_adapter_faceid import IPAdapterFaceID, IPAdapterFaceIDPlus
from huggingface_hub import hf_hub_download
from insightface.app import FaceAnalysis
from insightface.utils import face_align
import gradio as gr
import cv2
import os
import uuid
from datetime import datetime
# Previous model initialization code remains the same...
STYLE_PRESETS = [
{
"title": "Mona Lisa",
"prompt": "A mesmerizing portrait in the style of Leonardo da Vinci's Mona Lisa, renaissance oil painting, soft sfumato technique, mysterious smile, Florentine background, museum quality, masterpiece",
"preview": "🎨"
},
{
"title": "Iron Hero",
"prompt": "Hyper realistic portrait as a high-tech superhero, wearing advanced metallic suit, arc reactor glow, inside high-tech lab, dramatic lighting, cinematic composition",
"preview": "🦾"
},
{
"title": "Ancient Egyptian",
"prompt": "Portrait as an ancient Egyptian pharaoh, wearing golden headdress and royal regalia, hieroglyphics background, dramatic desert lighting, archaeological discovery style",
"preview": "πŸ‘‘"
},
{
"title": "Sherlock Holmes",
"prompt": "Victorian era detective portrait, wearing deerstalker hat and cape, holding magnifying glass, foggy London background, mysterious atmosphere, detailed illustration",
"preview": "πŸ”"
},
{
"title": "Star Wars Jedi",
"prompt": "Epic portrait as a Jedi Master, wearing traditional robes, holding lightsaber, temple background, force aura effect, cinematic lighting, movie poster quality",
"preview": "βš”οΈ"
},
{
"title": "Van Gogh Style",
"prompt": "Self-portrait in the style of Vincent van Gogh, bold brushstrokes, vibrant colors, post-impressionist style, emotional intensity, starry background",
"preview": "🎨"
},
{
"title": "Greek God",
"prompt": "Mythological portrait as an Olympian deity, wearing flowing robes, golden laurel wreath, Mount Olympus background, godly aura, classical Greek art style",
"preview": "⚑"
},
{
"title": "Medieval Knight",
"prompt": "Noble knight portrait, wearing ornate plate armor, holding sword and shield, castle background, heraldic designs, medieval manuscript style",
"preview": "πŸ›‘οΈ"
},
{
"title": "Matrix Hero",
"prompt": "Cyberpunk portrait in digital reality, wearing black trench coat and sunglasses, green code rain effect, dystopian atmosphere, cinematic style",
"preview": "πŸ•ΆοΈ"
},
{
"title": "Pirate Captain",
"prompt": "Swashbuckling pirate captain portrait, wearing tricorn hat and colonial coat, ship's deck background, dramatic sea storm, golden age of piracy style",
"preview": "πŸ΄β€β˜ οΈ"
}
]
css = '''
#component-0 {
max-width: 1200px;
margin: auto;
padding: 20px;
}
.container {
background-color: #ffffff;
border-radius: 10px;
padding: 20px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
.header {
text-align: center;
margin-bottom: 2rem;
background: linear-gradient(90deg, #2C3E50, #3498DB);
padding: 2rem;
border-radius: 10px;
color: white;
}
.preset-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 1rem;
margin: 1rem 0;
}
.preset-card {
background: #f8f9fa;
padding: 1rem;
border-radius: 8px;
cursor: pointer;
transition: all 0.3s ease;
border: 1px solid #e9ecef;
}
.preset-card:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
background: #f1f3f5;
}
.preset-emoji {
font-size: 2rem;
margin-bottom: 0.5rem;
}
.input-container {
background: #f8f9fa;
padding: 1.5rem;
border-radius: 8px;
margin-bottom: 1rem;
}
footer {display: none !important}
'''
# Generate image function remains the same...
with gr.Blocks(css=css) as demo:
with gr.Column(elem_classes="container"):
with gr.Column(elem_classes="header"):
gr.Markdown("# ✨ Magic Face")
gr.Markdown("### Transform Your Face Into Legendary Characters!")
with gr.Row():
with gr.Column(scale=1):
images_input = gr.Files(
label="πŸ“Έ Upload Your Face Photos",
file_types=["image"],
elem_classes="input-container"
)
gender_input = gr.Radio(
label="Select Gender",
choices=["Female", "Male"],
value="Female",
type="value"
)
with gr.Column(elem_classes="preset-container"):
gr.Markdown("### 🎭 Magic Transformations")
preset_grid = []
for idx, preset in enumerate(STYLE_PRESETS):
preset_button = gr.Button(
f"{preset['preview']} {preset['title']}",
elem_classes="preset-card"
)
preset_button.click(
lambda idx=idx: (idx, STYLE_PRESETS[idx]["prompt"]),
outputs=[gr.Number(visible=False), prompt_input]
)
preset_grid.append(preset_button)
prompt_input = gr.Textbox(
label="🎨 Custom Prompt",
placeholder="Describe your desired transformation in detail...",
lines=3
)
generate_button = gr.Button("πŸš€ Generate Magic", variant="primary")
with gr.Column(scale=1):
output_gallery = gr.Gallery(
label="Magic Gallery",
elem_classes="output-gallery",
columns=2
)
with gr.Accordion("πŸ“– Quick Guide", open=False):
gr.Markdown("""
### How to Use Magic Face
1. Upload one or more face photos
2. Select your gender
3. Choose a magical transformation or write your own prompt
4. Click 'Generate Magic'
### Pro Tips
- Upload multiple angles of your face for better results
- Try combining different historical or fictional characters
- Feel free to modify the preset prompts
- Click on generated images to view them in full size
""")
generate_button.click(
fn=generate_image,
inputs=[images_input, gender_input, prompt_input],
outputs=output_gallery
)
demo.queue()
demo.launch()