Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
# app/main.py | |
from fastapi import FastAPI, UploadFile, File | |
from fastapi.responses import HTMLResponse | |
from fastapi.staticfiles import StaticFiles | |
import shutil | |
from pathlib import Path | |
from vit_captioning.generate import CaptionGenerator | |
app = FastAPI() | |
# Serve static files | |
static_dir = Path(__file__).parent / "vit_captioning" / "static" | |
app.mount("/static", StaticFiles(directory=static_dir), name="static") | |
# β Landing page at `/` | |
async def landing(): | |
return Path("vit_captioning/static/landing.html").read_text() | |
# β Captioning page at `/captioning` | |
async def captioning(): | |
return Path("vit_captioning/static/captioning/index.html").read_text() | |
# β Example: Project 2 placeholder | |
async def project2(): | |
return "<h1>Coming Soon: Project 2</h1>" | |
# β Caption generation endpoint for captioning app | |
# Keep the path consistent with your JS fetch()! | |
caption_generator = CaptionGenerator( | |
model_type="CLIPEncoder", | |
checkpoint_path="./vit_captioning/artifacts/CLIPEncoder_40epochs_unfreeze12.pth", | |
quantized=False | |
) | |
async def generate(file: UploadFile = File(...)): | |
temp_file = f"temp_{file.filename}" | |
with open(temp_file, "wb") as buffer: | |
shutil.copyfileobj(file.file, buffer) | |
captions = caption_generator.generate_caption(temp_file) | |
return captions |