edit : 이미지생성 api 생성갯수 삭제, 이미지생성 api 데이터를 return해주는 api 추가, 입력이미지 입력받아 검색하는 api 추가
This commit is contained in:
@@ -17,7 +17,7 @@ from typing import Annotated, List
|
||||
from main_rest.app.common import consts
|
||||
from main_rest.app import models as M
|
||||
from main_rest.app.utils.date_utils import D
|
||||
from main_rest.app.utils.parsing_utils import image_to_base64_string
|
||||
from main_rest.app.utils.parsing_utils import image_to_base64_string,save_base64_as_image_file
|
||||
from custom_logger.main_log import main_logger as LOG
|
||||
|
||||
# from custom_apps.bingimagecreator.utils import DallEArgument,dalle3_generate_image
|
||||
@@ -123,22 +123,16 @@ router = APIRouter(prefix="/services")
|
||||
# LOG.error(traceback.format_exc())
|
||||
# return response.set_error(e)
|
||||
|
||||
@router.post("/imageGenerate/imagen", summary="이미지 생성(AI) - imagen", response_model=M.ImageGenerateRes)
|
||||
@router.post("/imageGenerate/imagen", summary="이미지 생성(AI) - imagen", response_model=M.ResponseBase)
|
||||
async def imagen(request: Request, request_body_info: M.ImageGenerateReq):
|
||||
"""
|
||||
## 이미지 생성(AI) - imagen
|
||||
> imagen AI를 이용하여 이미지 생성
|
||||
|
||||
|
||||
"""
|
||||
# imagen 사용중단 gemini로 변경
|
||||
|
||||
response = M.ImageGenerateRes()
|
||||
response = M.ResponseBase()
|
||||
try:
|
||||
|
||||
if not download_range(request_body_info.downloadCount):
|
||||
raise Exception(f"downloadCount is 1~4 (current value = {request_body_info.downloadCount})")
|
||||
|
||||
# NOTE(JWKIM) : imagen 사용 중단
|
||||
# img_length = imagen_generate_image(prompt=request_body_info.prompt,
|
||||
# download_count=request_body_info.downloadCount
|
||||
@@ -162,7 +156,44 @@ async def imagen(request: Request, request_body_info: M.ImageGenerateReq):
|
||||
os.remove(temp_image_path)
|
||||
del temp_image_path
|
||||
|
||||
return response.set_message(img_len=1)
|
||||
return response.set_message()
|
||||
|
||||
except Exception as e:
|
||||
LOG.error(traceback.format_exc())
|
||||
|
||||
# Clean up temporary files
|
||||
if 'query_image_path' in locals():
|
||||
if os.path.exists(query_image_path):
|
||||
os.remove(query_image_path)
|
||||
del query_image_path
|
||||
|
||||
return response.set_error(error=e)
|
||||
|
||||
@router.post("/imageGenerate/imagen/data", summary="이미지 생성(AI) - imagen(data)", response_model=M.ImageGenerateDataRes)
|
||||
async def imagen_data(request: Request, request_body_info: M.ImageGenerateReq):
|
||||
"""
|
||||
## 이미지 생성(AI) - imagen
|
||||
> imagen AI를 이용하여 이미지 데이터생성
|
||||
"""
|
||||
# imagen 사용중단 gemini로 변경
|
||||
|
||||
response = M.ImageGenerateDataRes()
|
||||
try:
|
||||
# NOTE(JWKIM) : imagen 사용 중단
|
||||
# img_length = imagen_generate_image(prompt=request_body_info.prompt,
|
||||
# download_count=request_body_info.downloadCount
|
||||
# )
|
||||
temp_image_path = gemini_image(request_body_info.prompt)
|
||||
|
||||
b64data = image_to_base64_string(temp_image_path)
|
||||
|
||||
# Clean up temporary files
|
||||
if 'temp_image_path' in locals():
|
||||
if os.path.exists(temp_image_path):
|
||||
os.remove(temp_image_path)
|
||||
del temp_image_path
|
||||
|
||||
return response.set_message(b64data)
|
||||
|
||||
except Exception as e:
|
||||
LOG.error(traceback.format_exc())
|
||||
@@ -231,9 +262,6 @@ async def vactor_vit(request: Request, request_body_info: M.VectorImageSearchVit
|
||||
## 벡터 이미지 검색(clip-vit) - imagen
|
||||
> imagen AI를 이용하여 이미지 생성 후 vector 검색 그후 결과 이미지 생성
|
||||
|
||||
### Requriements
|
||||
> - googlecli 설치(https://cloud.google.com/sdk/docs/install?hl=ko#linux)
|
||||
|
||||
### options
|
||||
> - modelType -> b32,b16,l14,l14_336
|
||||
> - indexType -> l2,cos
|
||||
@@ -311,14 +339,11 @@ async def vactor_vit(request: Request, request_body_info: M.VectorImageSearchVit
|
||||
return response.set_error(error=e)
|
||||
|
||||
@router.post("/vectorImageSearch/vit/imageGenerate/imagen/data", summary="벡터 이미지 검색(clip-vit) - imagen(data)", response_model=M.VectorImageSerachDataRes)
|
||||
async def vactor_vit_report_data(request: Request, request_body_info: M.VectorImageSearchVitDataReq):
|
||||
async def vactor_vit_data(request: Request, request_body_info: M.VectorImageSearchVitDataReq):
|
||||
"""
|
||||
## 벡터 이미지 검색(clip-vit) - imagen
|
||||
> imagen AI를 이용하여 이미지 생성 후 vector 검색 그후 결과 이미지데이터 return
|
||||
|
||||
### Requriements
|
||||
> - googlecli 설치(https://cloud.google.com/sdk/docs/install?hl=ko#linux)
|
||||
|
||||
### options
|
||||
> - modelType -> b32,b16,l14,l14_336
|
||||
> - indexType -> l2,cos
|
||||
@@ -389,6 +414,82 @@ async def vactor_vit_report_data(request: Request, request_body_info: M.VectorIm
|
||||
del query_image_path
|
||||
|
||||
return response.set_error(error=e)
|
||||
|
||||
|
||||
@router.post("/vectorImageSearch/vit/inputImage/data", summary="벡터 이미지 검색(clip-vit) - input image(data)", response_model=M.VectorImageSerachDataRes)
|
||||
async def vactor_vit_input_img_data(request: Request, request_body_info: M.VectorImageSearchVitInputImgReq):
|
||||
"""
|
||||
## 벡터 이미지 검색(clip-vit) - inputimage
|
||||
> 입력된 이미지로 vector 검색 그후 결과 이미지데이터 return
|
||||
|
||||
### Requriements
|
||||
> - googlecli 설치(https://cloud.google.com/sdk/docs/install?hl=ko#linux)
|
||||
|
||||
### options
|
||||
> - modelType -> b32,b16,l14,l14_336
|
||||
> - indexType -> l2,cos
|
||||
|
||||
"""
|
||||
response = M.VectorImageSerachDataRes()
|
||||
query_image_data = ''
|
||||
|
||||
try:
|
||||
if request_body_info.modelType not in [M.VitModelType.b32, M.VitModelType.b16, M.VitModelType.l14, M.VitModelType.l14_336]:
|
||||
raise Exception(f"modelType is invalid (current value = {request_body_info.modelType})")
|
||||
|
||||
if request_body_info.indexType not in [M.VitIndexType.cos, M.VitIndexType.l2]:
|
||||
raise Exception(f"indexType is invalid (current value = {request_body_info.indexType})")
|
||||
|
||||
query_image_path = os.path.join(TEMP_FOLDER, f'input_{D.date_file_name()}_query.png')
|
||||
save_base64_as_image_file(request_body_info.inputImage ,query_image_path)
|
||||
|
||||
vector_request_data = {'query_image_path' : query_image_path,
|
||||
'index_type' : request_body_info.indexType,
|
||||
'model_type' : request_body_info.modelType,
|
||||
'search_num' : request_body_info.searchNum}
|
||||
|
||||
vector_response = requests.post('http://localhost:51002/api/services/faiss/vector/search/vit', data=json.dumps(vector_request_data))
|
||||
|
||||
vector_response_dict = json.loads(vector_response.text)
|
||||
|
||||
if vector_response.status_code != 200:
|
||||
raise Exception(f"response error: {vector_response_dict['error']}")
|
||||
|
||||
if vector_response_dict["error"] != None:
|
||||
raise Exception(f"vector error: {vector_response_dict['error']}")
|
||||
|
||||
result_image_paths = vector_response_dict.get('img_list').get('result_image_paths')
|
||||
result_percents = vector_response_dict.get('img_list').get('result_percents')
|
||||
|
||||
# 이미지 데이터 생성
|
||||
vector_image_results = []
|
||||
for img, percents in zip(result_image_paths, result_percents):
|
||||
b64_data = image_to_base64_string(img)
|
||||
float_percent = float(percents)
|
||||
|
||||
info = M.VectorImageResult(image=b64_data,percents=float_percent)
|
||||
|
||||
vector_image_results.append(info)
|
||||
|
||||
# Clean up temporary files
|
||||
if 'query_image_path' in locals():
|
||||
if os.path.exists(query_image_path):
|
||||
os.remove(query_image_path)
|
||||
del query_image_path
|
||||
|
||||
return response.set_message(vector_result=vector_image_results,query_img=query_image_data)
|
||||
|
||||
except Exception as e:
|
||||
LOG.error(traceback.format_exc())
|
||||
|
||||
# Clean up temporary files
|
||||
if 'query_image_path' in locals():
|
||||
if os.path.exists(query_image_path):
|
||||
os.remove(query_image_path)
|
||||
del query_image_path
|
||||
|
||||
return response.set_error(error=e)
|
||||
|
||||
|
||||
@router.post("/vectorImageSearch/vit/imageGenerate/imagen/report", summary="벡터 이미지 검색(clip-vit) - imagen, report 생성", response_model=M.ResponseBase)
|
||||
async def vactor_vit_report(request: Request, request_body_info: M.VectorImageSearchVitReportReq):
|
||||
|
||||
Reference in New Issue
Block a user