From e8d8b715aeaa6820ae762d4c4a31acb1d5675cbe Mon Sep 17 00:00:00 2001 From: zchengrong <124802516+zchengrong@users.noreply.github.com> Date: Fri, 7 Nov 2025 10:56:34 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=88=E6=96=B0=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=89:=20fix=EF=BC=88=E4=BF=AE=E5=A4=8Dbug=EF=BC=89:=20=20?= =?UTF-8?q?=20accessories=20=E6=9B=BF=E6=8D=A2=E4=B8=BA=20others=20docs?= =?UTF-8?q?=EF=BC=88=E6=96=87=E6=A1=A3=E5=8F=98=E6=9B=B4=EF=BC=89:=20refac?= =?UTF-8?q?tor=EF=BC=88=E9=87=8D=E6=9E=84=EF=BC=89:=20test(=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=B5=8B=E8=AF=95):?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/service/design/items/__init__.py | 2 +- .../design/items/{accessories.py => others.py} | 0 app/service/design_batch/design_batch_celery.py | 12 ++++++------ app/service/design_batch/item.py | 6 +++--- app/service/design_batch/pipeline/loading.py | 4 ++-- app/service/design_batch/pipeline/scale.py | 2 +- app/service/design_batch/pipeline/split.py | 2 +- app/service/design_batch/utils/organize.py | 2 +- app/service/design_fast/design_generate.py | 12 ++++++------ app/service/design_fast/item.py | 6 +++--- app/service/design_fast/pipeline/loading.py | 4 ++-- app/service/design_fast/pipeline/scale.py | 2 +- app/service/design_fast/pipeline/split.py | 2 +- app/service/design_fast/utils/organize.py | 6 +++--- app/service/design_fast/utils/synthesis_item.py | 10 +++++----- 15 files changed, 36 insertions(+), 36 deletions(-) rename app/service/design/items/{accessories.py => others.py} (100%) diff --git a/app/service/design/items/__init__.py b/app/service/design/items/__init__.py index 23f35bf..e3e6bd5 100644 --- a/app/service/design/items/__init__.py +++ b/app/service/design/items/__init__.py @@ -5,7 +5,7 @@ from .top import Top, Blouse, Outwear, Dress from .bottom import Bottom, Trousers, Skirt from .shoes import Shoes from .bag import Bag -from .accessories import Hairstyle, Earring +from .others import Hairstyle, Earring __all__ = [ 'ITEMS', 'build_item', diff --git a/app/service/design/items/accessories.py b/app/service/design/items/others.py similarity index 100% rename from app/service/design/items/accessories.py rename to app/service/design/items/others.py diff --git a/app/service/design_batch/design_batch_celery.py b/app/service/design_batch/design_batch_celery.py index 3f5eed7..f7be62e 100644 --- a/app/service/design_batch/design_batch_celery.py +++ b/app/service/design_batch/design_batch_celery.py @@ -5,9 +5,9 @@ from celery import Celery from minio import Minio from app.core.config import * -from app.service.design_batch.item import BodyItem, TopItem, BottomItem, AccessoriesItem +from app.service.design_batch.item import BodyItem, TopItem, BottomItem, OthersItem from app.service.design_batch.utils.MQ import publish_status -from app.service.design_batch.utils.organize import organize_body, organize_clothing, organize_accessories +from app.service.design_batch.utils.organize import organize_body, organize_clothing, organize_others from app.service.design_batch.utils.save_json import oss_upload_json from app.service.design_batch.utils.synthesis_item import update_base_size_priority, synthesis, synthesis_single @@ -33,8 +33,8 @@ def process_item(item, basic): elif item['type'].lower() in ['skirt', 'trousers', 'bottoms']: bottom_server = BottomItem(data=item, basic=basic, minio_client=minio_client) item_data = bottom_server.process() - elif item['type'].lower() in ['accessories']: - bottom_server = AccessoriesItem(data=item, basic=basic, minio_client=minio_client) + elif item['type'].lower() in ['others']: + bottom_server = OthersItem(data=item, basic=basic, minio_client=minio_client) item_data = bottom_server.process() else: raise NotImplementedError(f"Item type {item['type']} not implemented") @@ -47,8 +47,8 @@ def process_layer(item, layers): body_layer = organize_body(item) layers.append(body_layer) return item['body_image'].size - elif item['name'] == 'accessories': - front_layer, back_layer = organize_accessories(item) + elif item['name'] == 'others': + front_layer, back_layer = organize_others(item) layers.append(front_layer) layers.append(back_layer) else: diff --git a/app/service/design_batch/item.py b/app/service/design_batch/item.py index 5ddfdc7..ad50ff2 100644 --- a/app/service/design_batch/item.py +++ b/app/service/design_batch/item.py @@ -9,10 +9,10 @@ class BaseItem: self.result.update(basic) -class AccessoriesItem(BaseItem): +class OthersItem(BaseItem): def __init__(self, data, basic, minio_client): super().__init__(data, basic) - self.Accessories_pipeline = [ + self.Others_pipeline = [ LoadImage(minio_client), # KeyPoint(), ContourDetection(), @@ -25,7 +25,7 @@ class AccessoriesItem(BaseItem): ] def process(self): - for item in self.Accessories_pipeline: + for item in self.Others_pipeline: self.result = item(self.result) return self.result diff --git a/app/service/design_batch/pipeline/loading.py b/app/service/design_batch/pipeline/loading.py index 5a55d9d..332f29a 100644 --- a/app/service/design_batch/pipeline/loading.py +++ b/app/service/design_batch/pipeline/loading.py @@ -74,8 +74,8 @@ class LoadImage: keypoint = 'head_point' elif name == 'earring': keypoint = 'ear_point' - elif name == 'accessories': - keypoint = "accessories" + elif name == 'others': + keypoint = "others" else: raise KeyError(f"{name} does not belong to item category list: blouse, outwear, dress, trousers, skirt, " f"bag, shoes, hairstyle, earring.") diff --git a/app/service/design_batch/pipeline/scale.py b/app/service/design_batch/pipeline/scale.py index d1c7a36..daf2c65 100644 --- a/app/service/design_batch/pipeline/scale.py +++ b/app/service/design_batch/pipeline/scale.py @@ -46,7 +46,7 @@ class Scaling: result['scale'] = result['scale_bag'] elif result['keypoint'] == 'ear_point': result['scale'] = result['scale_earrings'] - elif result['keypoint'] == 'accessories': + elif result['keypoint'] == 'others': # 由于没有识别配饰keypoint的模型 所以统一将配饰的两个关键点设定为 (0,0) (0,img.width) # 模特的关键点设定为(0,0) (0,320/2) 距离比例简写为 160 / img.width distance_clo = result['img_shape'][1] diff --git a/app/service/design_batch/pipeline/split.py b/app/service/design_batch/pipeline/split.py index 88e8e75..288381a 100644 --- a/app/service/design_batch/pipeline/split.py +++ b/app/service/design_batch/pipeline/split.py @@ -21,7 +21,7 @@ class Split(object): def __call__(self, result): try: - if result['name'] in ('outwear', 'dress', 'blouse', 'skirt', 'trousers', 'tops', 'bottoms', 'accessories'): + if result['name'] in ('outwear', 'dress', 'blouse', 'skirt', 'trousers', 'tops', 'bottoms', 'others'): if result['resize_scale'][0] == 1.0 and result['resize_scale'][1] == 1.0: front_mask = result['front_mask'] diff --git a/app/service/design_batch/utils/organize.py b/app/service/design_batch/utils/organize.py index 33edc4f..0550419 100644 --- a/app/service/design_batch/utils/organize.py +++ b/app/service/design_batch/utils/organize.py @@ -55,7 +55,7 @@ def organize_clothing(layer): return front_layer, back_layer -def organize_accessories(layer): +def organize_others(layer): # 起始坐标 start_point = (0, 0) # 前片数据 diff --git a/app/service/design_fast/design_generate.py b/app/service/design_fast/design_generate.py index d0b3e79..63aeaff 100644 --- a/app/service/design_fast/design_generate.py +++ b/app/service/design_fast/design_generate.py @@ -6,8 +6,8 @@ import requests from minio import Minio from app.core.config import * -from app.service.design_fast.item import BodyItem, TopItem, BottomItem, AccessoriesItem -from app.service.design_fast.utils.organize import organize_body, organize_clothing, organize_accessories +from app.service.design_fast.item import BodyItem, TopItem, BottomItem, OthersItem +from app.service.design_fast.utils.organize import organize_body, organize_clothing, organize_others from app.service.design_fast.utils.progress import final_progress, update_progress from app.service.design_fast.utils.synthesis_item import synthesis, synthesis_single, update_base_size_priority from app.service.utils.decorator import RunTime @@ -30,8 +30,8 @@ def process_item(item, basic): elif item['type'].lower() in ['skirt', 'trousers', 'bottoms']: bottom_server = BottomItem(data=item, basic=basic, minio_client=minio_client) item_data = bottom_server.process() - elif item['type'].lower() in ['accessories']: - bottom_server = AccessoriesItem(data=item, basic=basic, minio_client=minio_client) + elif item['type'].lower() in ['others']: + bottom_server = OthersItem(data=item, basic=basic, minio_client=minio_client) item_data = bottom_server.process() else: raise NotImplementedError(f"Item type {item['type']} not implemented") @@ -44,8 +44,8 @@ def process_layer(item, layers): body_layer = organize_body(item) layers.append(body_layer) return item['body_image'].size - elif item['name'] == 'accessories': - front_layer, back_layer = organize_accessories(item) + elif item['name'] == 'others': + front_layer, back_layer = organize_others(item) layers.append(front_layer) layers.append(back_layer) else: diff --git a/app/service/design_fast/item.py b/app/service/design_fast/item.py index 74ca0c4..dcad5f0 100644 --- a/app/service/design_fast/item.py +++ b/app/service/design_fast/item.py @@ -9,10 +9,10 @@ class BaseItem: self.result.update(basic) -class AccessoriesItem(BaseItem): +class OthersItem(BaseItem): def __init__(self, data, basic, minio_client): super().__init__(data, basic) - self.Accessories_pipeline = [ + self.Others_pipeline = [ LoadImage(minio_client), # KeyPoint(), # ContourDetection(), @@ -26,7 +26,7 @@ class AccessoriesItem(BaseItem): ] def process(self): - for item in self.Accessories_pipeline: + for item in self.Others_pipeline: self.result = item(self.result) return self.result diff --git a/app/service/design_fast/pipeline/loading.py b/app/service/design_fast/pipeline/loading.py index 329e14b..7cc4296 100644 --- a/app/service/design_fast/pipeline/loading.py +++ b/app/service/design_fast/pipeline/loading.py @@ -105,8 +105,8 @@ class LoadImage: keypoint = 'head_point' elif name == 'earring': keypoint = 'ear_point' - elif name == 'accessories': - keypoint = "accessories" + elif name == 'others': + keypoint = "others" else: raise KeyError(f"{name} does not belong to item category list: blouse, outwear, dress, trousers, skirt, " f"bag, shoes, hairstyle, earring.") diff --git a/app/service/design_fast/pipeline/scale.py b/app/service/design_fast/pipeline/scale.py index d1c7a36..daf2c65 100644 --- a/app/service/design_fast/pipeline/scale.py +++ b/app/service/design_fast/pipeline/scale.py @@ -46,7 +46,7 @@ class Scaling: result['scale'] = result['scale_bag'] elif result['keypoint'] == 'ear_point': result['scale'] = result['scale_earrings'] - elif result['keypoint'] == 'accessories': + elif result['keypoint'] == 'others': # 由于没有识别配饰keypoint的模型 所以统一将配饰的两个关键点设定为 (0,0) (0,img.width) # 模特的关键点设定为(0,0) (0,320/2) 距离比例简写为 160 / img.width distance_clo = result['img_shape'][1] diff --git a/app/service/design_fast/pipeline/split.py b/app/service/design_fast/pipeline/split.py index 5c62899..906fc93 100644 --- a/app/service/design_fast/pipeline/split.py +++ b/app/service/design_fast/pipeline/split.py @@ -20,7 +20,7 @@ class Split(object): def __call__(self, result): try: - if result['name'] in ('outwear', 'dress', 'blouse', 'skirt', 'trousers', 'tops', 'bottoms', 'accessories'): + if result['name'] in ('outwear', 'dress', 'blouse', 'skirt', 'trousers', 'tops', 'bottoms', 'others'): ori_front_mask = result['front_mask'].copy() ori_back_mask = result['back_mask'].copy() diff --git a/app/service/design_fast/utils/organize.py b/app/service/design_fast/utils/organize.py index f5c8144..ce4a961 100644 --- a/app/service/design_fast/utils/organize.py +++ b/app/service/design_fast/utils/organize.py @@ -58,14 +58,14 @@ def organize_clothing(layer): return front_layer, back_layer -def organize_accessories(layer): +def organize_others(layer): # 起始坐标 start_point = (0, 0) layer['clothes_keypoint'] = { - 'accessories_left': [0, 0] + 'others_left': [0, 0] } layer['body_point_test'] = { - 'accessories_left': [0, 0] + 'others_left': [0, 0] } start_point = calculate_start_point(layer['keypoint'], layer['scale'], layer['clothes_keypoint'], layer['body_point_test'], layer["offset"], layer["resize_scale"]) diff --git a/app/service/design_fast/utils/synthesis_item.py b/app/service/design_fast/utils/synthesis_item.py index d46795e..a8ce1b4 100644 --- a/app/service/design_fast/utils/synthesis_item.py +++ b/app/service/design_fast/utils/synthesis_item.py @@ -79,11 +79,11 @@ def synthesis(data, size, basic_info): _, binary_body_mask = cv2.threshold(body_mask, 127, 255, cv2.THRESH_BINARY) top_outer_mask = np.array(binary_body_mask) bottom_outer_mask = np.array(binary_body_mask) - accessories_outer_mask = np.array(binary_body_mask) + others_outer_mask = np.array(binary_body_mask) top = True bottom = True - accessories = True + others = True i = len(data) while i: i -= 1 @@ -111,7 +111,7 @@ def synthesis(data, size, basic_info): background = np.zeros_like(top_outer_mask) background[all_y_start:all_y_end, all_x_start:all_x_end] = sketch_mask[mask_y_start:mask_y_end, mask_x_start:mask_x_end] bottom_outer_mask = background + bottom_outer_mask - elif accessories and data[i]['name'] in ['accessories_front']: + elif others and data[i]['name'] in ['others_front']: mask_shape = data[i]['mask'].shape y_offset, x_offset = data[i]['adaptive_position'] # 初始化叠加区域的起始和结束位置 @@ -121,13 +121,13 @@ def synthesis(data, size, basic_info): _, sketch_mask = cv2.threshold(data[i]['mask'], 127, 255, cv2.THRESH_BINARY) background = np.zeros_like(top_outer_mask) background[all_y_start:all_y_end, all_x_start:all_x_end] = sketch_mask[mask_y_start:mask_y_end, mask_x_start:mask_x_end] - accessories_outer_mask = background + accessories_outer_mask + others_outer_mask = background + others_outer_mask pass elif bottom is False and top is False: break all_mask = cv2.bitwise_or(top_outer_mask, bottom_outer_mask) - all_mask = cv2.bitwise_or(all_mask, accessories_outer_mask) + all_mask = cv2.bitwise_or(all_mask, others_outer_mask) for layer in data: if layer['image'] is not None: