edit: api 변경 - 벡터이미지검색 -> 결과물에 parts 추가, 파츠검색 api 추가
This commit is contained in:
@@ -583,7 +583,7 @@ class VitModelType(str, Enum):
|
||||
l14_336 = "l14_336"
|
||||
|
||||
|
||||
class VactorSearchReq(BaseModel):
|
||||
class VectorSearchReq(BaseModel):
|
||||
"""
|
||||
### [Request] vector 검색
|
||||
"""
|
||||
@@ -592,7 +592,7 @@ class VactorSearchReq(BaseModel):
|
||||
search_num : int = Field(4, description='검색결과 이미지 갯수', example=4)
|
||||
|
||||
|
||||
class VactorSearchVitReportReq(BaseModel):
|
||||
class VectorSearchVitReportReq(BaseModel):
|
||||
"""
|
||||
### [Request] vector 검색(vit) 후 리포트 이미지 생성
|
||||
"""
|
||||
@@ -602,7 +602,7 @@ class VactorSearchVitReportReq(BaseModel):
|
||||
report_path : str = Field(description='리포트 이미지 저장 경로', example='path')
|
||||
|
||||
|
||||
class VactorSearchVitReq(BaseModel):
|
||||
class VectorSearchVitReq(BaseModel):
|
||||
"""
|
||||
### [Request] vector 검색(vit) 후 이미지 생성
|
||||
"""
|
||||
@@ -611,22 +611,21 @@ class VactorSearchVitReq(BaseModel):
|
||||
model_type : VitModelType = Field(VitModelType.l14, description='pretrained 모델 정보', example=VitModelType.l14)
|
||||
search_num : int = Field(4, description='검색결과 이미지 갯수', example=4)
|
||||
|
||||
|
||||
class VactorSearchVitRes(ResponseBase):
|
||||
class VectorSearchVitRes(ResponseBase):
|
||||
img_list : dict = Field({}, description='이미지 결과 리스트', example={})
|
||||
|
||||
@staticmethod
|
||||
def set_error(error):
|
||||
VactorSearchVitRes.img_list = {}
|
||||
VactorSearchVitRes.result = False
|
||||
VactorSearchVitRes.error = str(error)
|
||||
VectorSearchVitRes.img_list = {}
|
||||
VectorSearchVitRes.result = False
|
||||
VectorSearchVitRes.error = str(error)
|
||||
|
||||
return VactorSearchVitRes
|
||||
return VectorSearchVitRes
|
||||
|
||||
@staticmethod
|
||||
def set_message(msg):
|
||||
VactorSearchVitRes.img_list = msg
|
||||
VactorSearchVitRes.result = True
|
||||
VactorSearchVitRes.error = None
|
||||
VectorSearchVitRes.img_list = msg
|
||||
VectorSearchVitRes.result = True
|
||||
VectorSearchVitRes.error = None
|
||||
|
||||
return VactorSearchVitRes
|
||||
return VectorSearchVitRes
|
||||
|
||||
@@ -23,12 +23,14 @@ from custom_apps.faiss_imagenet.main import search_idxs
|
||||
from custom_apps.FEATURE_VECTOR_SIMILARITY_FAISS.faiss_functions import get_clip_info, save_report_image, get_models
|
||||
|
||||
from custom_apps.FEATURE_VECTOR_SIMILARITY_FAISS.faiss_similarity_search import FEMUsageInfo
|
||||
from custom_apps.FEATURE_VECTOR_SIMILARITY_FAISS.const import VectorSearchItem
|
||||
from custom_apps.FEATURE_VECTOR_SIMILARITY_FAISS.utils import search_glass_parts, file_name_to_parts
|
||||
|
||||
router = APIRouter(prefix="/services")
|
||||
|
||||
|
||||
@router.post("/faiss/vector/search/imagenet", summary="imagenet search", response_model=M.ResponseBase)
|
||||
async def vactor_search(request: Request, request_body_info: M.VactorSearchReq):
|
||||
async def vactor_search(request: Request, request_body_info: M.VectorSearchReq):
|
||||
"""
|
||||
## 벡터검색
|
||||
|
||||
@@ -54,7 +56,7 @@ async def vactor_search(request: Request, request_body_info: M.VactorSearchReq):
|
||||
|
||||
|
||||
@router.post("/faiss/vector/search/vit/report", summary="vit search report", response_model=M.ResponseBase)
|
||||
async def vactor_report_vit(request: Request, request_body_info: M.VactorSearchVitReportReq):
|
||||
async def vactor_report_vit(request: Request, request_body_info: M.VectorSearchVitReportReq):
|
||||
"""
|
||||
이미지 경로를 입력받아 repport image 저장
|
||||
"""
|
||||
@@ -75,23 +77,59 @@ async def vactor_report_vit(request: Request, request_body_info: M.VactorSearchV
|
||||
return response.set_error(e)
|
||||
|
||||
|
||||
@router.post("/faiss/vector/search/vit", summary="vit search", response_model=M.VactorSearchVitRes)
|
||||
async def vactor_vit(request: Request, request_body_info: M.VactorSearchVitReq):
|
||||
@router.post("/faiss/vector/search/vit", summary="vit search", response_model=M.VectorSearchVitRes)
|
||||
async def vactor_vit(request: Request, request_body_info: M.VectorSearchVitReq):
|
||||
"""
|
||||
이미지 경로 를 입력받아 vit 방식으로 검색
|
||||
"""
|
||||
response = M.VactorSearchVitRes()
|
||||
response = M.VectorSearchVitRes()
|
||||
try:
|
||||
if not os.path.exists(request_body_info.query_image_path):
|
||||
raise FileNotFoundError(f"File {request_body_info.query_image_path} does not exist.")
|
||||
|
||||
model = get_models(index_type=request_body_info.index_type, model_type=request_body_info.model_type)
|
||||
|
||||
report_info = get_clip_info(model,request_body_info.query_image_path,top_k=request_body_info.search_num)
|
||||
report_info = get_clip_info(model=model,
|
||||
query_image_path=request_body_info.query_image_path,
|
||||
item_info=VectorSearchItem.glass,
|
||||
top_k=request_body_info.search_num)
|
||||
|
||||
parts = search_glass_parts(report_info.result_image_paths)
|
||||
|
||||
return response.set_message({
|
||||
'result_image_paths': report_info.result_image_paths,
|
||||
'result_percents': report_info.result_percents
|
||||
'result_percents': report_info.result_percents,
|
||||
'result_parts_list': parts
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
LOG.error(traceback.format_exc())
|
||||
return response.set_error(e)
|
||||
|
||||
|
||||
@router.post("/faiss/vector/search/vit/parts", summary="vit search parts", response_model=M.VectorSearchVitRes)
|
||||
async def vactor_vit_parts(request: Request, request_body_info: M.VectorSearchVitReq):
|
||||
"""
|
||||
이미지 경로 를 입력받아 vit 방식으로 검색
|
||||
"""
|
||||
response = M.VectorSearchVitRes()
|
||||
try:
|
||||
if not os.path.exists(request_body_info.query_image_path):
|
||||
raise FileNotFoundError(f"File {request_body_info.query_image_path} does not exist.")
|
||||
|
||||
model = get_models(index_type=request_body_info.index_type, model_type=request_body_info.model_type)
|
||||
|
||||
#TODO parts 데이터 확인필요
|
||||
parts = file_name_to_parts(request_body_info.query_image_path)
|
||||
|
||||
report_info = get_clip_info(model=model,
|
||||
query_image_path=request_body_info.query_image_path,
|
||||
item_info=parts,
|
||||
top_k=request_body_info.search_num)
|
||||
|
||||
return response.set_message({
|
||||
'result_image_paths': report_info.result_image_paths,
|
||||
'result_percents': report_info.result_percents,
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user