diff --git a/app/service/outfit_matcher/outfit_evaluator.py b/app/service/outfit_matcher/outfit_evaluator.py index da07956..1f973b7 100644 --- a/app/service/outfit_matcher/outfit_evaluator.py +++ b/app/service/outfit_matcher/outfit_evaluator.py @@ -1,231 +1,293 @@ -import os import requests -import json + from PIL import Image import cv2 import numpy as np import tritonclient.http as httpclient import torch from matplotlib import pyplot as plt, image as mpimg +from torchvision import transforms from foco import extract_main_colors -TRITON_IP_DEFAULT = "0.0.0.0" + +class OutfitMatcher(object): + def __init__(self): + self.tritonclient = httpclient.InferenceServerClient(url="10.1.1.240:10010") + + @staticmethod + def pad_array(input_value, value=0): + """pad List of Array into same batch size + + Args: + input_value: List of numpy arrary need to be padded + + Returns: + Tensor: [batch_dim, max_dim, original_tensor_size] + """ + max_dim = max([len(x) for x in input_value]) + mask = np.zeros((len(input_value), max_dim), dtype=np.float32) + + # Pad each array + padded_arrays = [] + for i, array in enumerate(input_value): + # Compute padding amount along the pad dimension + pad_dim = max_dim - array.shape[0] + consistent_shape = array.shape[1:] + pad_widths = [(0, pad_dim)] + [(0, 0)] * len(consistent_shape) + padded_array = np.pad(array, pad_widths, mode='constant', constant_values=value) + padded_arrays.append(padded_array) + + mask[i, array.shape[0]:] = float("-inf") + + # Stack the padded arrays and change the dimension + batched_arrays = np.stack(padded_arrays, axis=0) + return batched_arrays, mask + + @staticmethod + def imnormalize(img, mean, std, to_rgb=True): + """Normalize an image with mean and std. + + Args: + img (ndarray): Image to be normalized. + mean (ndarray): The mean to be used for normalize. + std (ndarray): The std to be used for normalize. + to_rgb (bool): Whether to convert to rgb. + + Returns: + ndarray: The normalized image. + """ + img = img.copy().astype(np.float32) + assert img.dtype != np.uint8 + mean = np.float64(mean.reshape(1, -1)) + stdinv = 1 / np.float64(std.reshape(1, -1)) + if to_rgb: + cv2.cvtColor(img, cv2.COLOR_BGR2RGB, img) # inplace + cv2.subtract(img, mean, img) # inplace + cv2.multiply(img, stdinv, img) # inplace + return img + def visualize(self, outfits, scores, topk=5, best=True, output_path=None): + # 将outfits和scores按照scores的值进行排序 + sorted_indices = np.argsort(-scores.flatten() if best else scores.flatten())[:topk] # 使用负号进行降序排序 + outfits = [outfits[i] for i in sorted_indices] + scores = scores[sorted_indices] + + # 设置子图的行列数 + num_rows = len(outfits) + num_cols = max([len(x) for x in outfits]) + 1 # 一个是图片,一个是分数 + + # 创建一个新的图像,并指定子图的行列数 + fig, axes = plt.subplots(num_rows, num_cols, figsize=(8, 15)) + + title = f"Best {topk} Outfits" if best else f"Worst {topk} Outfits" + fig.suptitle(title, fontsize=16) + + # 遍历每套outfit并将其显示在对应的子图中 + for i, (outfit, score) in enumerate(zip(outfits, scores)): + # 显示分数 + axes[i, 0].text(0.1, 0.5, f"Score: {score[0]:.4f}", fontsize=12) + axes[i, 0].axis("off") + # 显示图片 + for j, item in enumerate(outfit): + img = mpimg.imread(item['image_path']) # 读取图片 + axes[i, j + 1].imshow(img) # 在对应的子图中显示图片 + axes[i, j + 1].axis('off') # 关闭坐标轴 + axes[i, j + 1].set_title(item["semantic_category"], fontsize=10) + for j in range(len(outfit), num_cols): + axes[i, j].axis("off") + + # 在每一行的底部添加一条横线 + axes[i, 0].axhline(y=0, color='black', linewidth=1) + # 隐藏最后一行的横线 + axes[-1, 0].axhline(y=0, color='white', linewidth=1) + + # 调整布局 + plt.subplots_adjust(wspace=0.1, hspace=0.1) + plt.tight_layout() + + if output_path: + plt.savefig(output_path) + else: + plt.show() -def imnormalize(img, mean, std, to_rgb=True): - """Normalize an image with mean and std. +class OutfitMatcherHon(OutfitMatcher): + def __init__(self): + super().__init__() - Args: - img (ndarray): Image to be normalized. - mean (ndarray): The mean to be used for normalize. - std (ndarray): The std to be used for normalize. - to_rgb (bool): Whether to convert to rgb. + @staticmethod + def load_image(img_path): + if 'http' in img_path: + file = requests.get(img_path) + image = cv2.imdecode(np.fromstring(file.content, np.uint8), 1) + image = Image.fromarray(image.astype('uint8'), 'RGB') + else: + image = Image.open(img_path).convert('RGB') + return np.array(image) - Returns: - ndarray: The normalized image. - """ - img = img.copy().astype(np.float32) - assert img.dtype != np.uint8 - mean = np.float64(mean.reshape(1, -1)) - stdinv = 1 / np.float64(std.reshape(1, -1)) - if to_rgb: - cv2.cvtColor(img, cv2.COLOR_BGR2RGB, img) # inplace - cv2.subtract(img, mean, img) # inplace - cv2.multiply(img, stdinv, img) # inplace - return img + @staticmethod + def resize_image(img): + """ + Args: + img: ndarray (height, width, channel) + """ + resized_img = cv2.resize(img, (224, 224), dst=None, interpolation=1) + return resized_img + + def preprocess(self, outfits): + outfit_images = [] + outfit_colors = [] + for outfit in outfits: + images = [] + colors = [] + for item in outfit: + image = self.load_image(item["image_path"]) + image = self.resize_image(image) + normalized_image = self.imnormalize(image, + mean=np.array([208.32996145, 201.28227452, 198.47047691], + dtype=np.float32), + std=np.array([75.48939648, 80.47423057, 82.21144189], + dtype=np.float32)) + images.append(normalized_image.transpose(2, 0, 1)) + color = extract_main_colors(image) + colors.append(color) + images = np.stack(images, axis=0) + outfit_images.append(images) # List[(items, 3, 224, 224)] + colors = np.stack(colors, axis=0) + outfit_colors.append(colors) + outfit_images, mask = self.pad_array(outfit_images) + outfit_colors, _ = self.pad_array(outfit_colors) + return outfit_images, outfit_colors, mask + + def get_result(self, outfits): + # start = time.time() + image, color, mask = self.preprocess(outfits) + # print(start - time.time()) + # transformed_img = image.astype(np.float32) + # 输入集 + inputs = [ + httpclient.InferInput("input__0", image.shape, datatype="FP32"), + httpclient.InferInput("input__1", color.shape, datatype="FP32"), + httpclient.InferInput("input__2", mask.shape, datatype="FP32"), + ] + inputs[0].set_data_from_numpy(image.astype(np.float32), binary_data=True) + inputs[1].set_data_from_numpy(color.astype(np.float32), binary_data=True) + inputs[2].set_data_from_numpy(mask.astype(np.float32), binary_data=True) + # 输出集 + outputs = [ + httpclient.InferRequestedOutput("output__0", binary_data=True), + ] + results = self.tritonclient.infer(model_name="outfit_matcher_hon", inputs=inputs, outputs=outputs) + # 推理 + # 取结果 + inference_output1 = torch.from_numpy(results.as_numpy("output__0")) + return inference_output1 # Shape (N, 1) -def load_image(img_path): - if 'http' in img_path: - file = requests.get(img_path) - image = cv2.imdecode(np.fromstring(file.content, np.uint8), 1) - image = Image.fromarray(image.astype('uint8'), 'RGB') - else: - image = Image.open(img_path).convert('RGB') - return np.array(image) - - -def resize_image(img): - """ - Args: - img: ndarray (height, width, channel) - """ - resized_img = cv2.resize(img, (224, 224), dst=None, interpolation=1) - return resized_img - - -def pad_array(input_value): - """pad List of Array into same batch size - - Args: - input_value: List of numpy arrary need to be padded - - Returns: - Tensor: [batch_dim, max_dim, original_tensor_size] - """ - max_dim = max([len(x) for x in input_value]) - mask = np.zeros((len(input_value), max_dim), dtype=np.float32) - - # Pad each array - padded_arrays = [] - for i, array in enumerate(input_value): - # Compute padding amount along the pad dimension - pad_dim = max_dim - array.shape[0] - consistent_shape = array.shape[1:] - pad_widths = [(0, pad_dim)] + [(0, 0)] * len(consistent_shape) - padded_array = np.pad(array, pad_widths, mode='constant', constant_values=0) - padded_arrays.append(padded_array) - - mask[i, array.shape[0]:] = float("-inf") - - # Stack the padded arrays and change the dimension - batched_arrays = np.stack(padded_arrays, axis=0) - return batched_arrays, mask - - -def extract_color(image, img_path): - # TODO: replace to vector database - relative_path, filename = os.path.split(img_path) - basename = filename.split(".")[0] - color_file = os.path.join(r"D:\PhD_Study\trinity_client\application\outfit_matcher\color", - basename + ".npy") - if os.path.exists(color_file): - color = np.load(color_file) - else: - color = extract_main_colors(image) - np.save(color_file, color) - return color - - -def preprocess(outfits): - outfit_images = [] - outfit_colors = [] - for outfit in outfits: - images = [] - colors = [] - for item in outfit: - image = load_image(item["image_path"]) - image = resize_image(image) - normalized_image = imnormalize(image, - mean=np.array([208.32996145, 201.28227452, 198.47047691], dtype=np.float32), - std=np.array([75.48939648, 80.47423057, 82.21144189], dtype=np.float32)) - images.append(normalized_image.transpose(2, 0, 1)) - color = extract_color(image, item["image_path"]) - colors.append(color) - images = np.stack(images, axis=0) - outfit_images.append(images) # List[(items, 3, 224, 224)] - colors = np.stack(colors, axis=0) - outfit_colors.append(colors) - outfit_images, mask = pad_array(outfit_images) - outfit_colors, _ = pad_array(outfit_colors) - return outfit_images, outfit_colors, mask - - -def evaluate_outfits(outfits): - """Input outfits structure and output scores. - Args: - outfits: outfits to be evaluated. - Example: - [ - [ - { - "item_name": "MSE_57987", - "semantic_category": "BOTTOM/PANTS", - "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_57987.jpg", - "mapped_cate": "bottoms" - }, - { - "item_name": "MPO_SP7712", - "semantic_category": "TOP/TANK", - "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7712.jpg", - "mapped_cate": "tops" - }, - { - "item_name": "MWSS27195", - "semantic_category": "OUTERWEAR/GILET", - "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MWSS27195.jpg", - "mapped_cate": "outerwear" - } - ], - ... - ] - Returns: - scores: List of float - """ - - # start = time.time() - image, color, mask = preprocess(outfits) - # print(start - time.time()) - client = httpclient.InferenceServerClient(url="localhost:8000") - # transformed_img = image.astype(np.float32) - # 输入集 - inputs = [ - httpclient.InferInput("input__0", image.shape, datatype="FP32"), - httpclient.InferInput("input__1", color.shape, datatype="FP32"), - httpclient.InferInput("input__2", mask.shape, datatype="FP32"), +class OutfitMaterTypeAware(OutfitMatcher): + base_fashion_categories = [ + 'accessories', 'all-body', 'bags', 'bottoms', 'hats', 'jewellery', + 'outerwear', 'scarves', 'shoes', 'sunglasses', 'tops' ] - inputs[0].set_data_from_numpy(image.astype(np.float32), binary_data=True) - inputs[1].set_data_from_numpy(color.astype(np.float32), binary_data=True) - inputs[2].set_data_from_numpy(mask.astype(np.float32), binary_data=True) - # 输出集 - outputs = [ - httpclient.InferRequestedOutput("output__0", binary_data=True), - ] - results = client.infer(model_name="outfit_matcher_hon", inputs=inputs, outputs=outputs) - # 推理 - # 取结果 - scores = torch.from_numpy(results.as_numpy("output__0")) - return scores # Shape (N, 1) + def __init__(self): + super().__init__() -def visualize(outfits, scores, topk=5, best=True, output_path=None): - # 将outfits和scores按照scores的值进行排序 - sorted_indices = np.argsort(-scores.flatten() if best else scores.flatten())[:topk] # 使用负号进行降序排序 - outfits = [outfits[i] for i in sorted_indices] - scores = scores[sorted_indices] + @staticmethod + def load_image(img_path): + if 'http' in img_path: + file = requests.get(img_path) + image = cv2.imdecode(np.fromstring(file.content, np.uint8), 1) + image = Image.fromarray(image.astype('uint8'), 'RGB') + else: + image = Image.open(img_path).convert('RGB') + return image - # 设置子图的行列数 - num_rows = len(outfits) - num_cols = max([len(x) for x in outfits]) + 1 # 一个是图片,一个是分数 + @staticmethod + def resize_image(img): + """ + Args: + img: ndarray (height, width, channel) + """ + image_transforms = transforms.Compose([ + transforms.Resize(112), + transforms.CenterCrop(112), + transforms.ToTensor(), + transforms.Normalize(mean=[0.485, 0.456, 0.406], + std=[0.229, 0.224, 0.225]), + ]) + resized_img = image_transforms(img).numpy() + return resized_img - # 创建一个新的图像,并指定子图的行列数 - fig, axes = plt.subplots(num_rows, num_cols, figsize=(8, 15)) + def preprocess(self, outfits): + outfit_images = [] + outfit_categories = [] + for outfit in outfits: + images = [] + categories = [] + for item in outfit: + image = self.load_image(item["image_path"]) + image = self.resize_image(image) + images.append(image) - title = f"Best {topk} Outfits" if best else f"Worst {topk} Outfits" - fig.suptitle(title, fontsize=16) + category = self.base_fashion_categories.index(item["mapped_cate"]) + categories.append(category) + images = np.stack(images, axis=0) + outfit_images.append(images) # List[(items, 3, 224, 224)] + categories = np.array(categories) + outfit_categories.append(categories) # List[(items)] + outfit_images, mask = self.pad_array(outfit_images, value=0) + outfit_categories, _ = self.pad_array(outfit_categories, value=len(self.base_fashion_categories)) + return outfit_images, outfit_categories, mask - # 遍历每套outfit并将其显示在对应的子图中 - for i, (outfit, score) in enumerate(zip(outfits, scores)): - # 显示分数 - axes[i, 0].text(0.1, 0.5, f"Score: {score[0]:.4f}", fontsize=12) - axes[i, 0].axis("off") - # 显示图片 - for j, item in enumerate(outfit): - img = mpimg.imread(item['image_path']) # 读取图片 - axes[i, j + 1].imshow(img) # 在对应的子图中显示图片 - axes[i, j + 1].axis('off') # 关闭坐标轴 - axes[i, j + 1].set_title(item["semantic_category"], fontsize=10) - for j in range(len(outfit), num_cols): - axes[i, j].axis("off") - - # 在每一行的底部添加一条横线 - axes[i, 0].axhline(y=0, color='black', linewidth=1) - # 隐藏最后一行的横线 - axes[-1, 0].axhline(y=0, color='white', linewidth=1) - - # 调整布局 - plt.subplots_adjust(wspace=0.1, hspace=0.1) - plt.tight_layout() - - if output_path: - plt.savefig(output_path) - else: - plt.show() - - -if __name__ == '__main__': - with open("test_input.json", "r") as f: - outfits = json.load(f) - scores = evaluate_outfits(outfits) - print(scores) + def get_result(self, outfits): + """Input outfits structure and output scores. + Args: + outfits: outfits to be evaluated. + Example: + [ + [ + { + "item_name": "MSE_57987", + "semantic_category": "BOTTOM/PANTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_57987.jpg", + "mapped_cate": "bottoms" + }, + { + "item_name": "MPO_SP7712", + "semantic_category": "TOP/TANK", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7712.jpg", + "mapped_cate": "tops" + }, + { + "item_name": "MWSS27195", + "semantic_category": "OUTERWEAR/GILET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MWSS27195.jpg", + "mapped_cate": "outerwear" + } + ], + ... + ] + Returns: + scores: List of float + """ + image, category, mask = self.preprocess(outfits) + client = httpclient.InferenceServerClient(url="localhost:8000") + # 输入集 + inputs = [ + httpclient.InferInput("input__0", image.shape, datatype="FP32"), + httpclient.InferInput("input__1", category.shape, datatype="INT16"), + httpclient.InferInput("input__2", mask.shape, datatype="FP32"), + ] + inputs[0].set_data_from_numpy(image.astype(np.float32), binary_data=True) + inputs[1].set_data_from_numpy(category.astype(np.int16), binary_data=True) + inputs[2].set_data_from_numpy(mask.astype(np.float32), binary_data=True) + # 输出集 + outputs = [ + httpclient.InferRequestedOutput("output__0", binary_data=True), + ] + results = client.infer(model_name="outfit_matcher_type_aware", inputs=inputs, outputs=outputs) + # 推理 + # 取结果 + scores = torch.from_numpy(results.as_numpy("output__0")) + return scores # Shape (N, 1) \ No newline at end of file diff --git a/app/service/outfit_matcher/service.py b/app/service/outfit_matcher/service.py index 13a583f..d94fbc7 100644 --- a/app/service/outfit_matcher/service.py +++ b/app/service/outfit_matcher/service.py @@ -1,160 +1,25 @@ import json -import os - -import torch -import torch.nn.functional as F -import tritonclient.http as httpclient -import requests -import cv2 -import numpy as np -from PIL import Image -from tqdm import tqdm from app.service.outfit_matcher.dataset import FashionDataset -from app.service.outfit_matcher.foco import extract_main_colors -from app.service.outfit_matcher.outfit_evaluator import evaluate_outfits, visualize - - -class OutfitMatcherHon: - def __init__(self, outfits): - self.outfits = outfits - self.tritonclient = httpclient.InferenceServerClient(url="10.1.1.240:10010") - - @staticmethod - def imnormalize(img, mean, std, to_rgb=True): - """Normalize an image with mean and std. - - Args: - img (ndarray): Image to be normalized. - mean (ndarray): The mean to be used for normalize. - std (ndarray): The std to be used for normalize. - to_rgb (bool): Whether to convert to rgb. - - Returns: - ndarray: The normalized image. - """ - img = img.copy().astype(np.float32) - assert img.dtype != np.uint8 - mean = np.float64(mean.reshape(1, -1)) - stdinv = 1 / np.float64(std.reshape(1, -1)) - if to_rgb: - cv2.cvtColor(img, cv2.COLOR_BGR2RGB, img) # inplace - cv2.subtract(img, mean, img) # inplace - cv2.multiply(img, stdinv, img) # inplace - return img - - @staticmethod - def load_image(img_path): - if 'http' in img_path: - file = requests.get(img_path) - image = cv2.imdecode(np.fromstring(file.content, np.uint8), 1) - image = Image.fromarray(image.astype('uint8'), 'RGB') - else: - image = Image.open(img_path).convert('RGB') - return np.array(image) - - @staticmethod - def resize_image(img): - """ - Args: - img: ndarray (height, width, channel) - """ - resized_img = cv2.resize(img, (224, 224), dst=None, interpolation=1) - return resized_img - - @staticmethod - def pad_array(input_value): - """pad List of Array into same batch size - - Args: - input_value: List of numpy arrary need to be padded - - Returns: - Tensor: [batch_dim, max_dim, original_tensor_size] - """ - max_dim = max([len(x) for x in input_value]) - mask = np.zeros((len(input_value), max_dim), dtype=np.float32) - - # Pad each array - padded_arrays = [] - for i, array in enumerate(input_value): - # Compute padding amount along the pad dimension - pad_dim = max_dim - array.shape[0] - consistent_shape = array.shape[1:] - pad_widths = [(0, pad_dim)] + [(0, 0)] * len(consistent_shape) - padded_array = np.pad(array, pad_widths, mode='constant', constant_values=0) - padded_arrays.append(padded_array) - - mask[i, array.shape[0]:] = float("-inf") - - # Stack the padded arrays and change the dimension - batched_arrays = np.stack(padded_arrays, axis=0) - return batched_arrays, mask - - def preprocess(self): - outfit_images = [] - outfit_colors = [] - for outfit in self.outfits: - images = [] - colors = [] - for item in outfit: - image = self.load_image(item["image_path"]) - image = self.resize_image(image) - normalized_image = self.imnormalize(image, - mean=np.array([208.32996145, 201.28227452, 198.47047691], dtype=np.float32), - std=np.array([75.48939648, 80.47423057, 82.21144189], dtype=np.float32)) - images.append(normalized_image.transpose(2, 0, 1)) - color = extract_main_colors(image) - colors.append(color) - images = np.stack(images, axis=0) - outfit_images.append(images) # List[(items, 3, 224, 224)] - colors = np.stack(colors, axis=0) - outfit_colors.append(colors) - outfit_images, mask = self.pad_array(outfit_images) - outfit_colors, _ = self.pad_array(outfit_colors) - return outfit_images, outfit_colors, mask - - def get_result(self): - # start = time.time() - image, color, mask = self.preprocess() - # print(start - time.time()) - # transformed_img = image.astype(np.float32) - # 输入集 - inputs = [ - httpclient.InferInput("input__0", image.shape, datatype="FP32"), - httpclient.InferInput("input__1", color.shape, datatype="FP32"), - httpclient.InferInput("input__2", mask.shape, datatype="FP32"), - ] - inputs[0].set_data_from_numpy(image.astype(np.float32), binary_data=True) - inputs[1].set_data_from_numpy(color.astype(np.float32), binary_data=True) - inputs[2].set_data_from_numpy(mask.astype(np.float32), binary_data=True) - # 输出集 - outputs = [ - httpclient.InferRequestedOutput("output__0", binary_data=True), - ] - results = self.tritonclient.infer(model_name="outfit_matcher_hon", inputs=inputs, outputs=outputs) - # 推理 - # 取结果 - inference_output1 = torch.from_numpy(results.as_numpy("output__0")) - return inference_output1 # Shape (N, 1) +from app.service.outfit_matcher.outfit_evaluator import OutfitMaterTypeAware if __name__ == '__main__': with open("./test_param/recommendation_test.json", "r") as f: param = json.load(f) fashion_dataset = FashionDataset(param["database"]) - for item in tqdm(param["query"]): + for item in param["query"]: outfits = fashion_dataset.generate_outfit(item, param["topk"], param["max_outfits"]) - service = OutfitMatcherHon(outfits=outfits) - scores = service.get_result() - visualize(outfits, scores, param["topk"], best=True, - output_path=os.path.join( - r"E:\workspace\outfit_matcher\2024 SS Outfit", - f"{item['item_name']}_best_{param['topk']}.png" - )) - visualize(outfits, scores, param["topk"], best=False, - output_path=os.path.join( - r"E:\workspace\outfit_matcher\2024 SS Outfit", - f"{item['item_name']}_worst_{param['topk']}.png" - )) - a = 1 + service = OutfitMaterTypeAware() + scores = service.get_result(outfits) + print(scores) + # service.visualize(outfits, scores, param["topk"], best=True, + # output_path=os.path.join( + # r"E:\workspace\outfit_matcher\2024 SS Outfit", + # f"{item['item_name']}_best_{param['topk']}.png" + # )) + # service.visualize(outfits, scores, param["topk"], best=False, + # output_path=os.path.join( + # r"E:\workspace\outfit_matcher\2024 SS Outfit", + # f"{item['item_name']}_worst_{param['topk']}.png" + # )) diff --git a/app/service/outfit_matcher/test_param/recommendation_test_pkc.json b/app/service/outfit_matcher/test_param/recommendation_test_pkc.json new file mode 100644 index 0000000..9290de8 --- /dev/null +++ b/app/service/outfit_matcher/test_param/recommendation_test_pkc.json @@ -0,0 +1,849 @@ +{ + "topk": 5, + "max_outfits": 100, + "query": [ + { + "item_name": "MSE_58107", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58107.jpg" + }, + { + "item_name": "MKTS27047", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27047.jpg" + }, + { + "item_name": "MKTS27028", + "semantic_category": "OUTERWEAR/JACKET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27028.jpg" + }, + { + "item_name": "MSE_58057", + "semantic_category": "OUTERWEAR/BLAZER", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58057.jpg" + }, + { + "item_name": "MSE_58495", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58495.jpg" + } + ], + "database": + [ + { + "item_name": "MKTS27017", + "semantic_category": "OUTERWEAR/WINDBREAKER", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27017.jpg" + }, + { + "item_name": "MKTS27047", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27047.jpg" + }, + { + "item_name": "MKTS27000", + "semantic_category": "BOTTOM/PANTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27000.jpg" + }, + { + "item_name": "MKTS27001", + "semantic_category": "BOTTOM/SHORTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27001.jpg" + }, + { + "item_name": "MZOS27178", + "semantic_category": "KNIT/CARDIGAN", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MZOS27178.jpg" + }, + { + "item_name": "MZOS27179", + "semantic_category": "KNIT/KNIT TOP", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MZOS27179.jpg" + }, + { + "item_name": "MWSS27184", + "semantic_category": "TOP/TEE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MWSS27184.jpg" + }, + { + "item_name": "MWSS27191", + "semantic_category": "OUTERWEAR/TWIN SET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MWSS27191.jpg" + }, + { + "item_name": "MWSS27193", + "semantic_category": "OUTERWEAR/JACKET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MWSS27193.jpg" + }, + { + "item_name": "MWSS27195", + "semantic_category": "OUTERWEAR/GILET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MWSS27195.jpg" + }, + { + "item_name": "MWSS27200", + "semantic_category": "KNIT/VEST", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MWSS27200.jpg" + }, + { + "item_name": "MWSS27209", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MWSS27209.jpg" + }, + { + "item_name": "MWSS27210", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MWSS27210.jpg" + }, + { + "item_name": "MWSS27211", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MWSS27211.jpg" + }, + { + "item_name": "MWSS27212", + "semantic_category": "TOP/BLOUSE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MWSS27212.jpg" + }, + { + "item_name": "MKTS27008", + "semantic_category": "OUTERWEAR/BLAZER", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27008.jpg" + }, + { + "item_name": "MKTS27009", + "semantic_category": "BOTTOM/PANTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27009.jpg" + }, + { + "item_name": "MKTS27010", + "semantic_category": "OUTERWEAR/BLAZER", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27010.jpg" + }, + { + "item_name": "MKTS27012", + "semantic_category": "OUTERWEAR/JACKET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27012.jpg" + }, + { + "item_name": "MKTS27013", + "semantic_category": "BOTTOM/SHORTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27013.jpg" + }, + { + "item_name": "MKTS27014", + "semantic_category": "ONE PIECE/TWIN SET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27014.jpg" + }, + { + "item_name": "MKTS27015", + "semantic_category": "OUTERWEAR/GILET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27015.jpg" + }, + { + "item_name": "MKTS27016", + "semantic_category": "BOTTOM/SHORTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27016.jpg" + }, + { + "item_name": "MKTS27027", + "semantic_category": "BOTTOM/PANTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27027.jpg" + }, + { + "item_name": "MKTS27028", + "semantic_category": "OUTERWEAR/JACKET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27028.jpg" + }, + { + "item_name": "MKTS27029", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27029.jpg" + }, + { + "item_name": "MKTS27030", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27030.jpg" + }, + { + "item_name": "MKTS27031", + "semantic_category": "BOTTOM/SKIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27031.jpg" + }, + { + "item_name": "MKTS27034", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27034.jpg" + }, + { + "item_name": "MKTS27035", + "semantic_category": "ONE PIECE/TWIN SET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27035.jpg" + }, + { + "item_name": "MKTS27038", + "semantic_category": "TOP/TOP", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27038.jpg" + }, + { + "item_name": "MKTS27039", + "semantic_category": "TOP/TOP", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27039.jpg" + }, + { + "item_name": "MKTS27040", + "semantic_category": "TOP/TOP", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27040.jpg" + }, + { + "item_name": "MKTS27045", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27045.jpg" + }, + { + "item_name": "MKTS27046", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27046.jpg" + }, + { + "item_name": "MKTS27050", + "semantic_category": "TOP/TOP", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27050.jpg" + }, + { + "item_name": "MKTS27059", + "semantic_category": "TOP/TEE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27059.jpg" + }, + { + "item_name": "MKTS27061", + "semantic_category": "TOP/TOP", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27061.jpg" + }, + { + "item_name": "MKTS27062", + "semantic_category": "TOP/BLOUSE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27062.jpg" + }, + { + "item_name": "MKTS27066", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27066.jpg" + }, + { + "item_name": "MKTS27067", + "semantic_category": "TOP/TEE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27067.jpg" + }, + { + "item_name": "MKTS27068", + "semantic_category": "ONE PIECE/TWIN SET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27068.jpg" + }, + { + "item_name": "MKTS27002", + "semantic_category": "TOP/BLOUSE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27002.jpg" + }, + { + "item_name": "MKTS27003", + "semantic_category": "OUTERWEAR/GILET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27003.jpg" + }, + { + "item_name": "MKTS27004", + "semantic_category": "BOTTOM/PANTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27004.jpg" + }, + { + "item_name": "MKTS27011", + "semantic_category": "TOP/VEST", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27011.jpg" + }, + { + "item_name": "MKTS27018", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27018.jpg" + }, + { + "item_name": "MKTS27019", + "semantic_category": "OUTERWEAR/BLAZER", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27019.jpg" + }, + { + "item_name": "MKTS27058", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27058.jpg" + }, + { + "item_name": "MLSS27101", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27101.jpg" + }, + { + "item_name": "MLSS27102", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27102.jpg" + }, + { + "item_name": "MLSS27103", + "semantic_category": "OUTERWEAR/GILET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27103.jpg" + }, + { + "item_name": "MLSS27104", + "semantic_category": "BOTTOM/SHORTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27104.jpg" + }, + { + "item_name": "MLSS27107", + "semantic_category": "JEANS/JEANS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27107.jpg" + }, + { + "item_name": "MLSS27109", + "semantic_category": "JEANS/JEANS JACKET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27109.jpg" + }, + { + "item_name": "MLSS27110", + "semantic_category": "JEANS/JEANS JACKET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27110.jpg" + }, + { + "item_name": "MLSS27111", + "semantic_category": "JEANS/JEANS PANTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27111.jpg" + }, + { + "item_name": "MLSS27112", + "semantic_category": "JEANS/JEANS PANTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27112.jpg" + }, + { + "item_name": "MLSS27113", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27113.jpg" + }, + { + "item_name": "MLSS27119", + "semantic_category": "JEANS/JEANS SKIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27119.jpg" + }, + { + "item_name": "MLSS27122", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27122.jpg" + }, + { + "item_name": "MLSS27123", + "semantic_category": "TOP/TOP", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27123.jpg" + }, + { + "item_name": "MLSS27128", + "semantic_category": "JEANS/JEANS JACKET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27128.jpg" + }, + { + "item_name": "MLSS27129", + "semantic_category": "JEANS/JEANS SHORTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27129.jpg" + }, + { + "item_name": "MLSS27132", + "semantic_category": "TOP/TOP", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27132.jpg" + }, + { + "item_name": "MLSS27133", + "semantic_category": "BOTTOM/SKIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27133.jpg" + }, + { + "item_name": "MLSS27136", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27136.jpg" + }, + { + "item_name": "MLSS27137", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27137.jpg" + }, + { + "item_name": "MLSS27140", + "semantic_category": "OUTERWEAR/JACKET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27140.jpg" + }, + { + "item_name": "MLSS27141", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27141.jpg" + }, + { + "item_name": "MLSS27142", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27142.jpg" + }, + { + "item_name": "MLSS27145", + "semantic_category": "OUTERWEAR/WINDBREAKER", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27145.jpg" + }, + { + "item_name": "MLSS27146", + "semantic_category": "TOP/TOP", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27146.jpg" + }, + { + "item_name": "MLSS27147", + "semantic_category": "BOTTOM/SKIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27147.jpg" + }, + { + "item_name": "MLSS27148", + "semantic_category": "TOP/TOP", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27148.jpg" + }, + { + "item_name": "MLSS27149", + "semantic_category": "BOTTOM/PANTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27149.jpg" + }, + { + "item_name": "MLSS27150", + "semantic_category": "OUTERWEAR/JACKET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27150.jpg" + }, + { + "item_name": "MLSS27152", + "semantic_category": "TOP/TEE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27152.jpg" + }, + { + "item_name": "MLSS27154", + "semantic_category": "TOP/TEE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27154.jpg" + }, + { + "item_name": "MLSS27156", + "semantic_category": "TOP/VEST", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27156.jpg" + }, + { + "item_name": "MLSS27157", + "semantic_category": "OUTERWEAR/WINDBREAKER", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27157.jpg" + }, + { + "item_name": "MLSS27159", + "semantic_category": "BOTTOM/PANTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27159.jpg" + }, + { + "item_name": "MLSS27160", + "semantic_category": "BOTTOM/PANTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27160.jpg" + }, + { + "item_name": "MLSS27161", + "semantic_category": "KNIT/CARDIGAN", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27161.jpg" + }, + { + "item_name": "MLSS27162", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27162.jpg" + }, + { + "item_name": "MLSS27167", + "semantic_category": "OUTERWEAR/JACKET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27167.jpg" + }, + { + "item_name": "MLSS27173", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27173.jpg" + }, + { + "item_name": "MLSS27174", + "semantic_category": "TOP/TOP", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27174.jpg" + }, + { + "item_name": "MLSS27175", + "semantic_category": "BOTTOM/PANTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27175.jpg" + }, + { + "item_name": "MLSS27176", + "semantic_category": "BOTTOM/SKIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27176.jpg" + }, + { + "item_name": "MKTS27073", + "semantic_category": "BOTTOM/SKIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MKTS27073.jpg" + }, + { + "item_name": "MLSS27226", + "semantic_category": "BOTTOM/SKIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MLSS27226.jpg" + }, + { + "item_name": "MPO_SP7685", + "semantic_category": "TOP/BLOUSE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7685.jpg" + }, + { + "item_name": "MPO_SP7686", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7686.jpg" + }, + { + "item_name": "MPO_SP7687", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7687.jpg" + }, + { + "item_name": "MPO_SP7692", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7692.jpg" + }, + { + "item_name": "MPO_SP7693", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7693.jpg" + }, + { + "item_name": "MPO_SP7694", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7694.jpg" + }, + { + "item_name": "MPO_SP7696", + "semantic_category": "BOTTOM/PANTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7696.jpg" + }, + { + "item_name": "MPO_SP7697", + "semantic_category": "JEANS/JEANS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7697.jpg" + }, + { + "item_name": "MPO_SP7704", + "semantic_category": "OUTERWEAR/BLAZER", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7704.jpg" + }, + { + "item_name": "MPO_SP7705", + "semantic_category": "OUTERWEAR/JACKET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7705.jpg" + }, + { + "item_name": "MPO_SP7706", + "semantic_category": "JEANS/JEANS JACKET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7706.jpg" + }, + { + "item_name": "MPO_SP7711", + "semantic_category": "TOP/VEST", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7711.jpg" + }, + { + "item_name": "MPO_SP7712", + "semantic_category": "TOP/TANK", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7712.jpg" + }, + { + "item_name": "MPO_SP7717", + "semantic_category": "TOP/TEE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7717.jpg" + }, + { + "item_name": "MPO_SP7722", + "semantic_category": "TOP/TOP", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7722.jpg" + }, + { + "item_name": "MPO_SP7723", + "semantic_category": "TOP/BLOUSE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7723.jpg" + }, + { + "item_name": "MPO_SP7726", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7726.jpg" + }, + { + "item_name": "MPO_SP7729", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7729.jpg" + }, + { + "item_name": "MPO_SP7731", + "semantic_category": "TOP/BLOUSE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7731.jpg" + }, + { + "item_name": "MPO_SP7732", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7732.jpg" + }, + { + "item_name": "MPO_SP7735", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MPO_SP7735.jpg" + }, + { + "item_name": "MSE_58197", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58197.jpg" + }, + { + "item_name": "MSE_58198", + "semantic_category": "TOP/BLOUSE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58198.jpg" + }, + { + "item_name": "MSE_58199", + "semantic_category": "BOTTOM/PANTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58199.jpg" + }, + { + "item_name": "MSE_58112", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58112.jpg" + }, + { + "item_name": "MSE_58114", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58114.jpg" + }, + { + "item_name": "MSE_58241", + "semantic_category": "TOP/BLOUSE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58241.jpg" + }, + { + "item_name": "MSE_57987", + "semantic_category": "BOTTOM/PANTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_57987.jpg" + }, + { + "item_name": "MSE_57988", + "semantic_category": "OUTERWEAR/BLAZER", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_57988.jpg" + }, + { + "item_name": "MSE_58203", + "semantic_category": "OUTERWEAR/BLAZER", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58203.jpg" + }, + { + "item_name": "MSE_58106", + "semantic_category": "BOTTOM/PANTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58106.jpg" + }, + { + "item_name": "MSE_58107", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58107.jpg" + }, + { + "item_name": "MSE_58132", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58132.jpg" + }, + { + "item_name": "MSE_58133", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58133.jpg" + }, + { + "item_name": "MSE_58057", + "semantic_category": "OUTERWEAR/BLAZER", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58057.jpg" + }, + { + "item_name": "MSE_58058", + "semantic_category": "BOTTOM/PANTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58058.jpg" + }, + { + "item_name": "MSE_58222", + "semantic_category": "BOTTOM/SKIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58222.jpg" + }, + { + "item_name": "MSE_58317", + "semantic_category": "TOP/BLOUSE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58317.jpg" + }, + { + "item_name": "MSE_58045", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58045.jpg" + }, + { + "item_name": "MSE_58275", + "semantic_category": "JEANS/JEANS DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58275.jpg" + }, + { + "item_name": "MSE_58276", + "semantic_category": "JEANS/JEANS JACKET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58276.jpg" + }, + { + "item_name": "MSE_58277", + "semantic_category": "JEANS/JEANS SKIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58277.jpg" + }, + { + "item_name": "MSE_58183", + "semantic_category": "TOP/BLOUSE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58183.jpg" + }, + { + "item_name": "MSE_58184", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58184.jpg" + }, + { + "item_name": "MSE_58185", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58185.jpg" + }, + { + "item_name": "MSE_58188", + "semantic_category": "BOTTOM/SKIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58188.jpg" + }, + { + "item_name": "MSE_54385", + "semantic_category": "BOTTOM/PANTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_54385.jpg" + }, + { + "item_name": "MSE_56720", + "semantic_category": "OUTERWEAR/BLAZER", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_56720.jpg" + }, + { + "item_name": "MSE_58174", + "semantic_category": "TOP/TEE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58174.jpg" + }, + { + "item_name": "MSE_58044", + "semantic_category": "OUTERWEAR/JACKET", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58044.jpg" + }, + { + "item_name": "MSE_58361", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58361.jpg" + }, + { + "item_name": "MSE_58495", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58495.jpg" + }, + { + "item_name": "MSE_58536", + "semantic_category": "ACCESSORY/BAG", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58536.jpg" + }, + { + "item_name": "MSE_58653", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58653.jpg" + }, + { + "item_name": "MSE_58287", + "semantic_category": "BOTTOM/SHORTS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58287.jpg" + }, + { + "item_name": "MSE_58289", + "semantic_category": "OUTERWEAR/BLAZER", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58289.jpg" + }, + { + "item_name": "MSE_58323", + "semantic_category": "TOP/BLOUSE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58323.jpg" + }, + { + "item_name": "MSE_58421", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58421.jpg" + }, + { + "item_name": "MSE_58451", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58451.jpg" + }, + { + "item_name": "MSE_58473", + "semantic_category": "KNIT/KNIT TOP", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58473.jpg" + }, + { + "item_name": "MSE_58498", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58498.jpg" + }, + { + "item_name": "MSE_58499", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58499.jpg" + }, + { + "item_name": "MSE_58510", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58510.jpg" + }, + { + "item_name": "MSE_58516", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58516.jpg" + }, + { + "item_name": "MSE_58518", + "semantic_category": "BOTTOM/SKIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58518.jpg" + }, + { + "item_name": "MSE_58530", + "semantic_category": "ONE PIECE/DRESS", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58530.jpg" + }, + { + "item_name": "MSE_58540", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58540.jpg" + }, + { + "item_name": "MSE_58547", + "semantic_category": "TOP/TEE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58547.jpg" + }, + { + "item_name": "MSE_58618", + "semantic_category": "TOP/BLOUSE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58618.jpg" + }, + { + "item_name": "MSE_58655", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58655.jpg" + }, + { + "item_name": "MSE_58658", + "semantic_category": "TOP/TEE", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58658.jpg" + } + ] +} \ No newline at end of file