Spaces:
Paused
Paused
| 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 | |