* update EasyAnimateV2 * update datasets loader * update datasets loader * update fast api * complete data preprocess pipeline. * update lots of readme * update readme bans * fix bug in validation while training * provide example for video cut * update text box * add arxiv * delete IDDPM * update gallery * update arxiv * update readme * update readme * link fix * update vae readme --------- Co-authored-by: zouxinyi0625 <zouxinyi.zxy@alibaba-inc.com>
96 lines
3.3 KiB
Python
96 lines
3.3 KiB
Python
import io
|
|
import base64
|
|
import torch
|
|
import gradio as gr
|
|
|
|
from fastapi import FastAPI
|
|
from io import BytesIO
|
|
|
|
# Function to encode a file to Base64
|
|
def encode_file_to_base64(file_path):
|
|
with open(file_path, "rb") as file:
|
|
# Encode the data to Base64
|
|
file_base64 = base64.b64encode(file.read())
|
|
return file_base64
|
|
|
|
def update_edition_api(_: gr.Blocks, app: FastAPI, controller):
|
|
@app.post("/easyanimate/update_edition")
|
|
def _update_edition_api(
|
|
datas: dict,
|
|
):
|
|
edition = datas.get('edition', 'v2')
|
|
|
|
try:
|
|
controller.update_edition(
|
|
edition
|
|
)
|
|
comment = "Success"
|
|
except Exception as e:
|
|
torch.cuda.empty_cache()
|
|
comment = f"Error. error information is {str(e)}"
|
|
|
|
return {"message": comment}
|
|
|
|
def update_diffusion_transformer_api(_: gr.Blocks, app: FastAPI, controller):
|
|
@app.post("/easyanimate/update_diffusion_transformer")
|
|
def _update_diffusion_transformer_api(
|
|
datas: dict,
|
|
):
|
|
diffusion_transformer_path = datas.get('diffusion_transformer_path', 'none')
|
|
|
|
try:
|
|
controller.update_diffusion_transformer(
|
|
diffusion_transformer_path
|
|
)
|
|
comment = "Success"
|
|
except Exception as e:
|
|
torch.cuda.empty_cache()
|
|
comment = f"Error. error information is {str(e)}"
|
|
|
|
return {"message": comment}
|
|
|
|
def infer_forward_api(_: gr.Blocks, app: FastAPI, controller):
|
|
@app.post("/easyanimate/infer_forward")
|
|
def _infer_forward_api(
|
|
datas: dict,
|
|
):
|
|
base_model_path = datas.get('base_model_path', 'none')
|
|
motion_module_path = datas.get('motion_module_path', 'none')
|
|
lora_model_path = datas.get('lora_model_path', 'none')
|
|
lora_alpha_slider = datas.get('lora_alpha_slider', 0.55)
|
|
prompt_textbox = datas.get('prompt_textbox', None)
|
|
negative_prompt_textbox = datas.get('negative_prompt_textbox', '')
|
|
sampler_dropdown = datas.get('sampler_dropdown', 'Euler')
|
|
sample_step_slider = datas.get('sample_step_slider', 30)
|
|
width_slider = datas.get('width_slider', 672)
|
|
height_slider = datas.get('height_slider', 384)
|
|
is_image = datas.get('is_image', False)
|
|
length_slider = datas.get('length_slider', 144)
|
|
cfg_scale_slider = datas.get('cfg_scale_slider', 6)
|
|
seed_textbox = datas.get("seed_textbox", 43)
|
|
|
|
try:
|
|
save_sample_path, comment = controller.generate(
|
|
"",
|
|
base_model_path,
|
|
motion_module_path,
|
|
lora_model_path,
|
|
lora_alpha_slider,
|
|
prompt_textbox,
|
|
negative_prompt_textbox,
|
|
sampler_dropdown,
|
|
sample_step_slider,
|
|
width_slider,
|
|
height_slider,
|
|
is_image,
|
|
length_slider,
|
|
cfg_scale_slider,
|
|
seed_textbox,
|
|
is_api = True,
|
|
)
|
|
except Exception as e:
|
|
torch.cuda.empty_cache()
|
|
save_sample_path = ""
|
|
comment = f"Error. error information is {str(e)}"
|
|
|
|
return {"message": comment, "save_sample_path": save_sample_path, "base64_encoding": encode_file_to_base64(save_sample_path)} |