Spaces:
Runtime error
Runtime error
| from fastapi import FastAPI, File, UploadFile | |
| from fastapi.responses import Response | |
| from io import BytesIO | |
| from PIL import Image | |
| import torch | |
| import uvicorn | |
| import os | |
| import sys | |
| sys.path.append('CodeFormer') | |
| import os | |
| import cv2 | |
| import torch | |
| import torch.nn.functional as F | |
| import gradio as gr | |
| from torchvision.transforms.functional import normalize | |
| from basicsr.utils import imwrite, img2tensor, tensor2img | |
| from basicsr.utils.download_util import load_file_from_url | |
| from facelib.utils.face_restoration_helper import FaceRestoreHelper | |
| from basicsr.archs.rrdbnet_arch import RRDBNet | |
| from basicsr.utils.realesrgan_utils import RealESRGANer | |
| from facelib.utils.misc import is_gray | |
| from basicsr.utils.registry import ARCH_REGISTRY | |
| os.system("pip freeze") | |
| pretrain_model_url = { | |
| 'codeformer': 'https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/codeformer.pth', | |
| 'detection': 'https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/detection_Resnet50_Final.pth', | |
| 'parsing': 'https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/parsing_parsenet.pth', | |
| 'realesrgan': 'https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/RealESRGAN_x2plus.pth' | |
| } | |
| # download weights | |
| if not os.path.exists('CodeFormer/weights/CodeFormer/codeformer.pth'): | |
| load_file_from_url(url=pretrain_model_url['codeformer'], model_dir='CodeFormer/weights/CodeFormer', progress=True, file_name=None) | |
| if not os.path.exists('CodeFormer/weights/facelib/detection_Resnet50_Final.pth'): | |
| load_file_from_url(url=pretrain_model_url['detection'], model_dir='CodeFormer/weights/facelib', progress=True, file_name=None) | |
| if not os.path.exists('CodeFormer/weights/facelib/parsing_parsenet.pth'): | |
| load_file_from_url(url=pretrain_model_url['parsing'], model_dir='CodeFormer/weights/facelib', progress=True, file_name=None) | |
| if not os.path.exists('CodeFormer/weights/realesrgan/RealESRGAN_x2plus.pth'): | |
| load_file_from_url(url=pretrain_model_url['realesrgan'], model_dir='CodeFormer/weights/realesrgan', progress=True, file_name=None) | |
| # Import the CodeFormer model processing function | |
| from codeformer_model import enhance_image # Make sure this function is defined | |
| app = FastAPI() | |
| async def enhance_image_api(file: UploadFile = File(...)): | |
| try: | |
| # Load image | |
| image = Image.open(file.file).convert("RGB") | |
| # Process the image using the CodeFormer model | |
| enhanced_image = enhance_image(image) | |
| # Convert the processed image to bytes | |
| img_byte_arr = BytesIO() | |
| enhanced_image.save(img_byte_arr, format="PNG") | |
| img_byte_arr = img_byte_arr.getvalue() | |
| return Response(content=img_byte_arr, media_type="image/png") | |
| except Exception as e: | |
| return {"error": str(e)} | |
| # Required to run on Hugging Face Spaces | |
| if __name__ == "__main__": | |
| uvicorn.run(app, host="0.0.0.0", port=int(os.getenv("PORT", 7860))) | |