(
use_GFPGAN=True,
GFPGAN_model="",
use_RealESRGAN=False,
realesrgan_model_name="",
use_LDSR=False,
LDSR_model_name="",
)
| 46 | |
| 47 | |
| 48 | def post_process( |
| 49 | use_GFPGAN=True, |
| 50 | GFPGAN_model="", |
| 51 | use_RealESRGAN=False, |
| 52 | realesrgan_model_name="", |
| 53 | use_LDSR=False, |
| 54 | LDSR_model_name="", |
| 55 | ): |
| 56 | for i in range(len(st.session_state["uploaded_image"])): |
| 57 | # st.session_state["uploaded_image"][i].pil_image |
| 58 | |
| 59 | if ( |
| 60 | use_GFPGAN |
| 61 | and server_state["GFPGAN"] is not None |
| 62 | and not use_RealESRGAN |
| 63 | and not use_LDSR |
| 64 | ): |
| 65 | if "progress_bar_text" in st.session_state: |
| 66 | st.session_state["progress_bar_text"].text( |
| 67 | "Running GFPGAN on image %d of %d..." |
| 68 | % (i + 1, len(st.session_state["uploaded_image"])) |
| 69 | ) |
| 70 | |
| 71 | if "progress_bar" in st.session_state: |
| 72 | st.session_state["progress_bar"].progress( |
| 73 | int( |
| 74 | 100 |
| 75 | * float( |
| 76 | i + 1 |
| 77 | if i + 1 < len(st.session_state["uploaded_image"]) |
| 78 | else len(st.session_state["uploaded_image"]) |
| 79 | ) |
| 80 | / float(len(st.session_state["uploaded_image"])) |
| 81 | ) |
| 82 | ) |
| 83 | |
| 84 | if server_state["GFPGAN"].name != GFPGAN_model: |
| 85 | load_models( |
| 86 | use_LDSR=use_LDSR, |
| 87 | LDSR_model=LDSR_model_name, |
| 88 | use_GFPGAN=use_GFPGAN, |
| 89 | use_RealESRGAN=use_RealESRGAN, |
| 90 | RealESRGAN_model=realesrgan_model_name, |
| 91 | ) |
| 92 | |
| 93 | torch_gc() |
| 94 | |
| 95 | with torch.autocast("cuda"): |
| 96 | cropped_faces, restored_faces, restored_img = server_state[ |
| 97 | "GFPGAN" |
| 98 | ].enhance( |
| 99 | st.session_state["uploaded_image"][i].pil_image, |
| 100 | has_aligned=False, |
| 101 | only_center_face=False, |
| 102 | paste_back=True, |
| 103 | ) |
| 104 | |
| 105 | gfpgan_sample = restored_img[:, :, ::-1] |
no test coverage detected