NAFNet / app /main.py
Nguyen Van Duy
Deploy NAFNet FastAPI backend (removed binary figures and demo images)
eb93722
Raw
History Blame Contribute Delete
2.23 kB
import logging
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app.config import APP_NAME, API_PREFIX, ensure_directories
from app.routes.denoise_routes import router as denoise_router
logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(name)s: %(message)s")
app = FastAPI(title=APP_NAME, version="1.0.0")
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
expose_headers=[
"X-Inference-Time-Ms",
"X-Processing-Device",
"X-Quality-Score",
"X-Input-Size-Bytes",
"X-Output-Size-Bytes",
"X-Inference-Mode",
"X-Model-Used",
"X-Brightness-In",
"X-Contrast-In",
"X-Contrast-Out",
"X-Lap-Var-In",
"X-Lap-Var-Out",
"X-Color-Distortion",
"x-inference-time-ms",
"x-processing-device",
"x-quality-score",
"x-input-size-bytes",
"x-output-size-bytes",
"x-inference-mode",
"x-model-used",
"x-brightness-in",
"x-contrast-in",
"x-contrast-out",
"x-lap-var-in",
"x-lap-var-out",
"x-color-distortion"
]
)
@app.on_event("startup")
def startup_event() -> None:
"""Create required backend folders on startup."""
ensure_directories()
# Pre-load NAFNet model at startup if mock mode is disabled
from app.config import USE_MOCK_INFERENCE
if not USE_MOCK_INFERENCE:
try:
from app.services.model_registry import get_default_model
from app.services.nafnet_service import nafnet_service
logger = logging.getLogger("app.main")
logger.info("Pre-loading NAFNet model on startup...")
model_config = get_default_model()
nafnet_service._load_model(model_config)
logger.info("NAFNet model pre-loaded successfully.")
except Exception as e:
logger = logging.getLogger("app.main")
logger.error(f"Failed to pre-load NAFNet model at startup: {e}")
app.include_router(denoise_router, prefix=API_PREFIX)
app.include_router(denoise_router)