fclip_back4 / app.py
pediot's picture
Initial commit: Setup FastAPI application for HF Spaces
f6627f1
Raw
History Blame Contribute Delete
1.18 kB
import gc
from fastapi import FastAPI, Depends
from src.encoder import FashionCLIPEncoder
from src.models import TextRequest, ImageRequest, Response
from src.auth import verify_token
from src.utils import delete_images
encoder = FashionCLIPEncoder(normalize=True)
app = FastAPI()
app.state.req_count = 0
COLLECT_GC_EVERY = 20
@app.get("/")
async def root():
return {
"status": "ok",
}
@app.post("/encode_texts")
async def encode_texts(
request: TextRequest,
token: str = Depends(verify_token),
) -> Response:
embeddings = encoder.encode_text(request.texts)
response = Response(embeddings=embeddings)
return response
@app.post("/encode_images")
async def encode_images(
request: ImageRequest,
token: str = Depends(verify_token),
) -> Response:
try:
images = request.download()
embeddings = encoder.encode_images(images)
return Response(embeddings=embeddings)
finally:
success = delete_images(images)
if not success:
print("Failed to delete images")
app.state.req_count += 1
if app.state.req_count % COLLECT_GC_EVERY == 0:
gc.collect()