picpocket / models.py
chawin.chen
init
cd5aabe
from enum import Enum
from typing import List, Optional
from pydantic import BaseModel
class ModelType(str, Enum):
"""模型类型枚举"""
HOWCUTEAMI = "howcuteami"
DEEPFACE = "deepface"
HYBRID = "hybrid" # 混合模式:颜值性别用howcuteami,年龄情绪用deepface
class ImageScoreItem(BaseModel):
file_path: str
score: float
is_cropped_face: bool = False
size_bytes: int
size_str: str
last_modified: str
nickname: Optional[str] = None
class SearchRequest(BaseModel):
keyword: Optional[str] = ""
searchType: Optional[str] = "face"
top_k: Optional[int] = 5
score_threshold: float = 0.0
nickname: Optional[str] = None
class ImageSearchRequest(BaseModel):
image: Optional[str] = None # base64编码的图片
searchType: Optional[str] = "face"
top_k: Optional[int] = 5
score_threshold: float = 0.0
nickname: Optional[str] = None
class ImageFileList(BaseModel):
results: List[ImageScoreItem]
count: int
class PagedImageFileList(BaseModel):
results: List[ImageScoreItem]
count: int
page: int
page_size: int
total_pages: int
class CelebrityMatchResponse(BaseModel):
filename: str
display_name: Optional[str] = None
distance: float
similarity: float
confidence: float
face_filename: Optional[str] = None
class CategoryStatItem(BaseModel):
category: str
display_name: str
count: int
class CategoryStatsResponse(BaseModel):
stats: List[CategoryStatItem]
total: int