Spaces:
Running
Running
import spaces | |
import gradio as gr | |
''' | |
''' | |
from gradio_utils import clear_old_files,read_file | |
from face_mesh3d import process_image3d | |
def process_images(image,smooth_mesh,depto_ratio,inner_eyes,inner_mouth, | |
progress=gr.Progress(track_tqdm=True)): | |
clear_old_files() | |
result = process_image3d(image,smooth_mesh,depto_ratio,inner_eyes,inner_mouth) | |
return result | |
css=""" | |
#col-left { | |
margin: 0 auto; | |
max-width: 640px; | |
} | |
#col-right { | |
margin: 0 auto; | |
max-width: 640px; | |
} | |
.grid-container { | |
display: flex; | |
align-items: center; | |
justify-content: center; | |
gap:10px | |
} | |
.image { | |
width: 128px; | |
height: 128px; | |
object-fit: cover; | |
} | |
.text { | |
font-size: 16px; | |
} | |
""" | |
#css=css, | |
from glibvision.cv2_utils import pil_to_bgr_image | |
from mp_utils import extract_landmark | |
from scipy.spatial.transform import Rotation as R | |
def change_viewer3d_mode(mode): | |
if mode=="solid": | |
return gr.Model3D(display_mode="solid") | |
else: | |
print("wireframe") | |
return gr.Model3D(display_mode="wireframe") | |
with gr.Blocks(css=css, elem_id="demo-container") as demo: | |
with gr.Column(): | |
gr.HTML(read_file("demo_header.html")) | |
gr.HTML(read_file("demo_tools.html")) | |
with gr.Row(): | |
with gr.Column(): | |
image = gr.Image(height=800,sources=['upload','clipboard'],image_mode='RGB',elem_id="image_upload", type="pil", label="Image") | |
with gr.Row(elem_id="prompt-container", equal_height=False): | |
with gr.Row(): | |
btn = gr.Button("3D Mesh", elem_id="run_button",variant="primary") | |
with gr.Accordion(label="Advanced Settings", open=True): | |
with gr.Row( equal_height=True): | |
inner_eyes=gr.Checkbox(label="Inner Eyes",value=True) | |
inner_mouth=gr.Checkbox(label="Inner Mouth",value=True) | |
with gr.Row( equal_height=True): | |
smooth_mesh = gr.Checkbox(label="Smooth mesh",value=True,info="smooth or blockly") | |
depto_ratio = gr.Slider( | |
label="Depth Ratio",info="If you feel nose height strange change this", | |
minimum=0.01, | |
maximum=1, | |
step=0.01, | |
value=0.8) | |
animation_column = gr.Column(visible=True) | |
with gr.Column():#camera_position=(0,0,1.5) | |
result_3d = gr.Model3D(height=800,label="Result",display_mode="solid",elem_id="output-3d",value="files/mesh.obj",clear_color=[0.5,0.5,0.5,1]) | |
btn.click(fn=process_images, inputs=[image,smooth_mesh,depto_ratio,inner_eyes,inner_mouth | |
],outputs=[result_3d] ,api_name='infer') | |
example_images = [ | |
["examples/02316230.jpg"], | |
["examples/00003245_00.jpg"], | |
["examples/00827009.jpg"], | |
["examples/00002062.jpg"], | |
["examples/00824008.jpg"], | |
["examples/00825000.jpg"], | |
["examples/00826007.jpg"], | |
["examples/00824006.jpg"], | |
["examples/00828003.jpg"], | |
["examples/00002200.jpg"], | |
["examples/00005259.jpg"], | |
["examples/00018022.jpg"], | |
["examples/img-above.jpg"], | |
["examples/00100265.jpg"], | |
["examples/00039259.jpg"], | |
] | |
example1=gr.Examples( | |
examples = example_images,label="Image", | |
inputs=[image],examples_per_page=8 | |
) | |
gr.HTML(read_file("demo_footer.html")) | |
if __name__ == "__main__": | |
demo.launch() | |