| from fastapi import APIRouter, HTTPException, UploadFile, File |
| from pydantic import BaseModel |
| from typing import List, Optional, Any |
| from io import BytesIO |
| from PIL import Image |
|
|
| |
| from core.dependencies import get_image_embedding_model |
|
|
| router = APIRouter(tags=["Image Embedding"]) |
|
|
| |
| image_embedding_model = get_image_embedding_model() |
|
|
| class ImageEmbeddingResponse(BaseModel): |
| success: bool |
| data: Optional[Any] = None |
| msg: Optional[str] = None |
|
|
| @router.post("/image_to_embedding", response_model=ImageEmbeddingResponse) |
| async def image_to_embedding(file: UploadFile = File(...)): |
| """ |
| ์ด๋ฏธ์ง ํ์ผ์ ์
๋ก๋๋ฐ์ EfficientNetV2-S ๋ชจ๋ธ๋ก ์๋ฒ ๋ฉํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค. |
| """ |
| try: |
| |
| contents = await file.read() |
| image = Image.open(BytesIO(contents)).convert("RGB") |
| |
| |
| emb_vector = image_embedding_model.embed_image(image) |
| |
| return {"success": True, "data": {"embedding": emb_vector}, "msg": ""} |
| except Exception as e: |
| return {"success": False, "data": None, "msg": str(e)} |
|
|