diff --git a/app/api/api_outfit_matcher.py b/app/api/api_outfit_matcher.py index 416bef6..879ffa9 100644 --- a/app/api/api_outfit_matcher.py +++ b/app/api/api_outfit_matcher.py @@ -2,7 +2,7 @@ import logging from fastapi import APIRouter -from app.service.outfit_matcher_hon.service import OutfitMatcherHon +from app.service.outfit_matcher.service import OutfitMatcherHon logger = logging.getLogger() router = APIRouter() diff --git a/app/main.py b/app/main.py index f9a4d63..d20a72f 100644 --- a/app/main.py +++ b/app/main.py @@ -18,12 +18,9 @@ def get_application() -> FastAPI: title=settings.PROJECT_NAME, docs_url="/docs", redoc_url='/re-docs', openapi_url=f"{settings.API_PREFIX}/openapi.json", description=''' - Base frame with FastAPI micro framework + Postgresql - - Login/Register with JWT - - Permission - - CRUD User - - Unit testing with Pytest - - Dockerize + Base frame with FastAPI + - out_matcher_hon API + ''' ) application.add_middleware( diff --git a/app/service/outfit_matcher_hon/__init__.py b/app/service/outfit_matcher/__init__.py similarity index 100% rename from app/service/outfit_matcher_hon/__init__.py rename to app/service/outfit_matcher/__init__.py diff --git a/app/service/outfit_matcher/color/MKTS27000.npy b/app/service/outfit_matcher/color/MKTS27000.npy new file mode 100644 index 0000000..61b0cbc Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27000.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27001.npy b/app/service/outfit_matcher/color/MKTS27001.npy new file mode 100644 index 0000000..e111190 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27001.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27002.npy b/app/service/outfit_matcher/color/MKTS27002.npy new file mode 100644 index 0000000..72de468 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27002.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27003.npy b/app/service/outfit_matcher/color/MKTS27003.npy new file mode 100644 index 0000000..eafde8e Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27003.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27004.npy b/app/service/outfit_matcher/color/MKTS27004.npy new file mode 100644 index 0000000..eafde8e Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27004.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27008.npy b/app/service/outfit_matcher/color/MKTS27008.npy new file mode 100644 index 0000000..7d5d352 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27008.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27009.npy b/app/service/outfit_matcher/color/MKTS27009.npy new file mode 100644 index 0000000..0ed3004 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27009.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27010.npy b/app/service/outfit_matcher/color/MKTS27010.npy new file mode 100644 index 0000000..1c4bdd9 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27010.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27011.npy b/app/service/outfit_matcher/color/MKTS27011.npy new file mode 100644 index 0000000..d42b87f Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27011.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27012.npy b/app/service/outfit_matcher/color/MKTS27012.npy new file mode 100644 index 0000000..61ee0a0 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27012.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27013.npy b/app/service/outfit_matcher/color/MKTS27013.npy new file mode 100644 index 0000000..4558fad Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27013.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27014.npy b/app/service/outfit_matcher/color/MKTS27014.npy new file mode 100644 index 0000000..574cb5f Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27014.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27015.npy b/app/service/outfit_matcher/color/MKTS27015.npy new file mode 100644 index 0000000..e73cfc2 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27015.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27016.npy b/app/service/outfit_matcher/color/MKTS27016.npy new file mode 100644 index 0000000..e8bec1b Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27016.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27017.npy b/app/service/outfit_matcher/color/MKTS27017.npy new file mode 100644 index 0000000..3dc689b Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27017.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27018.npy b/app/service/outfit_matcher/color/MKTS27018.npy new file mode 100644 index 0000000..5357929 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27018.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27019.npy b/app/service/outfit_matcher/color/MKTS27019.npy new file mode 100644 index 0000000..94cd08f Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27019.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27027.npy b/app/service/outfit_matcher/color/MKTS27027.npy new file mode 100644 index 0000000..94cd08f Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27027.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27028.npy b/app/service/outfit_matcher/color/MKTS27028.npy new file mode 100644 index 0000000..94cd08f Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27028.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27029.npy b/app/service/outfit_matcher/color/MKTS27029.npy new file mode 100644 index 0000000..cfb2a7c Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27029.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27030.npy b/app/service/outfit_matcher/color/MKTS27030.npy new file mode 100644 index 0000000..618901f Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27030.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27031.npy b/app/service/outfit_matcher/color/MKTS27031.npy new file mode 100644 index 0000000..9601ced Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27031.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27034.npy b/app/service/outfit_matcher/color/MKTS27034.npy new file mode 100644 index 0000000..0a055e3 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27034.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27035.npy b/app/service/outfit_matcher/color/MKTS27035.npy new file mode 100644 index 0000000..6e2466a Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27035.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27038.npy b/app/service/outfit_matcher/color/MKTS27038.npy new file mode 100644 index 0000000..d0edbdd Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27038.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27039.npy b/app/service/outfit_matcher/color/MKTS27039.npy new file mode 100644 index 0000000..e92ef12 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27039.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27040.npy b/app/service/outfit_matcher/color/MKTS27040.npy new file mode 100644 index 0000000..9ef60e9 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27040.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27045.npy b/app/service/outfit_matcher/color/MKTS27045.npy new file mode 100644 index 0000000..7bd8e50 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27045.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27046.npy b/app/service/outfit_matcher/color/MKTS27046.npy new file mode 100644 index 0000000..cb86479 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27046.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27047.npy b/app/service/outfit_matcher/color/MKTS27047.npy new file mode 100644 index 0000000..3729bc6 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27047.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27050.npy b/app/service/outfit_matcher/color/MKTS27050.npy new file mode 100644 index 0000000..1260753 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27050.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27058.npy b/app/service/outfit_matcher/color/MKTS27058.npy new file mode 100644 index 0000000..6409c1e Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27058.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27059.npy b/app/service/outfit_matcher/color/MKTS27059.npy new file mode 100644 index 0000000..1c13ed1 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27059.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27061.npy b/app/service/outfit_matcher/color/MKTS27061.npy new file mode 100644 index 0000000..c1d6ce6 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27061.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27062.npy b/app/service/outfit_matcher/color/MKTS27062.npy new file mode 100644 index 0000000..f87acea Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27062.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27066.npy b/app/service/outfit_matcher/color/MKTS27066.npy new file mode 100644 index 0000000..f077a2d Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27066.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27067.npy b/app/service/outfit_matcher/color/MKTS27067.npy new file mode 100644 index 0000000..e7f5f49 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27067.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27068.npy b/app/service/outfit_matcher/color/MKTS27068.npy new file mode 100644 index 0000000..24eb568 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27068.npy differ diff --git a/app/service/outfit_matcher/color/MKTS27073.npy b/app/service/outfit_matcher/color/MKTS27073.npy new file mode 100644 index 0000000..2400d76 Binary files /dev/null and b/app/service/outfit_matcher/color/MKTS27073.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27101.npy b/app/service/outfit_matcher/color/MLSS27101.npy new file mode 100644 index 0000000..24a3d23 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27101.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27102.npy b/app/service/outfit_matcher/color/MLSS27102.npy new file mode 100644 index 0000000..fc9240a Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27102.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27103.npy b/app/service/outfit_matcher/color/MLSS27103.npy new file mode 100644 index 0000000..d41f6df Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27103.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27104.npy b/app/service/outfit_matcher/color/MLSS27104.npy new file mode 100644 index 0000000..0b28d7a Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27104.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27107.npy b/app/service/outfit_matcher/color/MLSS27107.npy new file mode 100644 index 0000000..3200726 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27107.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27109.npy b/app/service/outfit_matcher/color/MLSS27109.npy new file mode 100644 index 0000000..9a57b95 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27109.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27110.npy b/app/service/outfit_matcher/color/MLSS27110.npy new file mode 100644 index 0000000..3200726 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27110.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27111.npy b/app/service/outfit_matcher/color/MLSS27111.npy new file mode 100644 index 0000000..eafde8e Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27111.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27112.npy b/app/service/outfit_matcher/color/MLSS27112.npy new file mode 100644 index 0000000..73d0492 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27112.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27113.npy b/app/service/outfit_matcher/color/MLSS27113.npy new file mode 100644 index 0000000..d895064 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27113.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27119.npy b/app/service/outfit_matcher/color/MLSS27119.npy new file mode 100644 index 0000000..89dd4a7 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27119.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27122.npy b/app/service/outfit_matcher/color/MLSS27122.npy new file mode 100644 index 0000000..93e5010 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27122.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27123.npy b/app/service/outfit_matcher/color/MLSS27123.npy new file mode 100644 index 0000000..636482e Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27123.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27128.npy b/app/service/outfit_matcher/color/MLSS27128.npy new file mode 100644 index 0000000..7cde985 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27128.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27129.npy b/app/service/outfit_matcher/color/MLSS27129.npy new file mode 100644 index 0000000..f88ad48 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27129.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27132.npy b/app/service/outfit_matcher/color/MLSS27132.npy new file mode 100644 index 0000000..4eb2820 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27132.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27133.npy b/app/service/outfit_matcher/color/MLSS27133.npy new file mode 100644 index 0000000..be07818 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27133.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27136.npy b/app/service/outfit_matcher/color/MLSS27136.npy new file mode 100644 index 0000000..00e5113 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27136.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27137.npy b/app/service/outfit_matcher/color/MLSS27137.npy new file mode 100644 index 0000000..d58c122 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27137.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27140.npy b/app/service/outfit_matcher/color/MLSS27140.npy new file mode 100644 index 0000000..4b4e22f Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27140.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27141.npy b/app/service/outfit_matcher/color/MLSS27141.npy new file mode 100644 index 0000000..8825b34 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27141.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27142.npy b/app/service/outfit_matcher/color/MLSS27142.npy new file mode 100644 index 0000000..569bacd Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27142.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27145.npy b/app/service/outfit_matcher/color/MLSS27145.npy new file mode 100644 index 0000000..d9466d5 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27145.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27146.npy b/app/service/outfit_matcher/color/MLSS27146.npy new file mode 100644 index 0000000..e969945 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27146.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27147.npy b/app/service/outfit_matcher/color/MLSS27147.npy new file mode 100644 index 0000000..d560a5a Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27147.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27148.npy b/app/service/outfit_matcher/color/MLSS27148.npy new file mode 100644 index 0000000..79f0daf Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27148.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27149.npy b/app/service/outfit_matcher/color/MLSS27149.npy new file mode 100644 index 0000000..0c76ea6 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27149.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27150.npy b/app/service/outfit_matcher/color/MLSS27150.npy new file mode 100644 index 0000000..19d1d32 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27150.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27152.npy b/app/service/outfit_matcher/color/MLSS27152.npy new file mode 100644 index 0000000..c1f4937 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27152.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27154.npy b/app/service/outfit_matcher/color/MLSS27154.npy new file mode 100644 index 0000000..603005f Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27154.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27156.npy b/app/service/outfit_matcher/color/MLSS27156.npy new file mode 100644 index 0000000..aa91d70 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27156.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27157.npy b/app/service/outfit_matcher/color/MLSS27157.npy new file mode 100644 index 0000000..4952062 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27157.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27159.npy b/app/service/outfit_matcher/color/MLSS27159.npy new file mode 100644 index 0000000..198a678 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27159.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27160.npy b/app/service/outfit_matcher/color/MLSS27160.npy new file mode 100644 index 0000000..d42b87f Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27160.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27161.npy b/app/service/outfit_matcher/color/MLSS27161.npy new file mode 100644 index 0000000..97fe87d Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27161.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27162.npy b/app/service/outfit_matcher/color/MLSS27162.npy new file mode 100644 index 0000000..07779ab Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27162.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27167.npy b/app/service/outfit_matcher/color/MLSS27167.npy new file mode 100644 index 0000000..fc4fcaf Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27167.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27173.npy b/app/service/outfit_matcher/color/MLSS27173.npy new file mode 100644 index 0000000..990633b Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27173.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27174.npy b/app/service/outfit_matcher/color/MLSS27174.npy new file mode 100644 index 0000000..c9f6219 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27174.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27175.npy b/app/service/outfit_matcher/color/MLSS27175.npy new file mode 100644 index 0000000..8e0b081 Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27175.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27176.npy b/app/service/outfit_matcher/color/MLSS27176.npy new file mode 100644 index 0000000..ffbcafa Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27176.npy differ diff --git a/app/service/outfit_matcher/color/MLSS27226.npy b/app/service/outfit_matcher/color/MLSS27226.npy new file mode 100644 index 0000000..528253c Binary files /dev/null and b/app/service/outfit_matcher/color/MLSS27226.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7685.npy b/app/service/outfit_matcher/color/MPO_SP7685.npy new file mode 100644 index 0000000..02526a6 Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7685.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7686.npy b/app/service/outfit_matcher/color/MPO_SP7686.npy new file mode 100644 index 0000000..6b1c3be Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7686.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7687.npy b/app/service/outfit_matcher/color/MPO_SP7687.npy new file mode 100644 index 0000000..55abfb7 Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7687.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7692.npy b/app/service/outfit_matcher/color/MPO_SP7692.npy new file mode 100644 index 0000000..6bfc9a0 Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7692.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7693.npy b/app/service/outfit_matcher/color/MPO_SP7693.npy new file mode 100644 index 0000000..8ada995 Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7693.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7694.npy b/app/service/outfit_matcher/color/MPO_SP7694.npy new file mode 100644 index 0000000..5afc1af Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7694.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7696.npy b/app/service/outfit_matcher/color/MPO_SP7696.npy new file mode 100644 index 0000000..79eb495 Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7696.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7697.npy b/app/service/outfit_matcher/color/MPO_SP7697.npy new file mode 100644 index 0000000..890c8da Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7697.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7704.npy b/app/service/outfit_matcher/color/MPO_SP7704.npy new file mode 100644 index 0000000..75a63bb Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7704.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7705.npy b/app/service/outfit_matcher/color/MPO_SP7705.npy new file mode 100644 index 0000000..845046a Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7705.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7706.npy b/app/service/outfit_matcher/color/MPO_SP7706.npy new file mode 100644 index 0000000..4dddb95 Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7706.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7711.npy b/app/service/outfit_matcher/color/MPO_SP7711.npy new file mode 100644 index 0000000..ef3bfe3 Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7711.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7712.npy b/app/service/outfit_matcher/color/MPO_SP7712.npy new file mode 100644 index 0000000..963f9f3 Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7712.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7717.npy b/app/service/outfit_matcher/color/MPO_SP7717.npy new file mode 100644 index 0000000..f79ac9b Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7717.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7722.npy b/app/service/outfit_matcher/color/MPO_SP7722.npy new file mode 100644 index 0000000..c1c9592 Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7722.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7723.npy b/app/service/outfit_matcher/color/MPO_SP7723.npy new file mode 100644 index 0000000..e76a9be Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7723.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7726.npy b/app/service/outfit_matcher/color/MPO_SP7726.npy new file mode 100644 index 0000000..8ee4c99 Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7726.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7729.npy b/app/service/outfit_matcher/color/MPO_SP7729.npy new file mode 100644 index 0000000..6c97ee4 Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7729.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7731.npy b/app/service/outfit_matcher/color/MPO_SP7731.npy new file mode 100644 index 0000000..bc76d71 Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7731.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7732.npy b/app/service/outfit_matcher/color/MPO_SP7732.npy new file mode 100644 index 0000000..3867476 Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7732.npy differ diff --git a/app/service/outfit_matcher/color/MPO_SP7735.npy b/app/service/outfit_matcher/color/MPO_SP7735.npy new file mode 100644 index 0000000..7b4a591 Binary files /dev/null and b/app/service/outfit_matcher/color/MPO_SP7735.npy differ diff --git a/app/service/outfit_matcher/color/MSE_54385.npy b/app/service/outfit_matcher/color/MSE_54385.npy new file mode 100644 index 0000000..670e62f Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_54385.npy differ diff --git a/app/service/outfit_matcher/color/MSE_56720.npy b/app/service/outfit_matcher/color/MSE_56720.npy new file mode 100644 index 0000000..cd2fa9c Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_56720.npy differ diff --git a/app/service/outfit_matcher/color/MSE_57987.npy b/app/service/outfit_matcher/color/MSE_57987.npy new file mode 100644 index 0000000..ed9c678 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_57987.npy differ diff --git a/app/service/outfit_matcher/color/MSE_57988.npy b/app/service/outfit_matcher/color/MSE_57988.npy new file mode 100644 index 0000000..ed9c678 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_57988.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58044.npy b/app/service/outfit_matcher/color/MSE_58044.npy new file mode 100644 index 0000000..00d0b2c Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58044.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58045.npy b/app/service/outfit_matcher/color/MSE_58045.npy new file mode 100644 index 0000000..6824da6 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58045.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58057.npy b/app/service/outfit_matcher/color/MSE_58057.npy new file mode 100644 index 0000000..8587ef2 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58057.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58058.npy b/app/service/outfit_matcher/color/MSE_58058.npy new file mode 100644 index 0000000..55873d4 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58058.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58106.npy b/app/service/outfit_matcher/color/MSE_58106.npy new file mode 100644 index 0000000..d04aa93 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58106.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58107.npy b/app/service/outfit_matcher/color/MSE_58107.npy new file mode 100644 index 0000000..420f2f4 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58107.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58112.npy b/app/service/outfit_matcher/color/MSE_58112.npy new file mode 100644 index 0000000..3ad24e7 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58112.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58114.npy b/app/service/outfit_matcher/color/MSE_58114.npy new file mode 100644 index 0000000..81a8b40 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58114.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58132.npy b/app/service/outfit_matcher/color/MSE_58132.npy new file mode 100644 index 0000000..a8e0451 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58132.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58133.npy b/app/service/outfit_matcher/color/MSE_58133.npy new file mode 100644 index 0000000..966b8ef Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58133.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58174.npy b/app/service/outfit_matcher/color/MSE_58174.npy new file mode 100644 index 0000000..1bbfbe0 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58174.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58183.npy b/app/service/outfit_matcher/color/MSE_58183.npy new file mode 100644 index 0000000..ac0e8b2 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58183.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58184.npy b/app/service/outfit_matcher/color/MSE_58184.npy new file mode 100644 index 0000000..5cbe32b Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58184.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58185.npy b/app/service/outfit_matcher/color/MSE_58185.npy new file mode 100644 index 0000000..1fe2aab Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58185.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58188.npy b/app/service/outfit_matcher/color/MSE_58188.npy new file mode 100644 index 0000000..82095d1 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58188.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58197.npy b/app/service/outfit_matcher/color/MSE_58197.npy new file mode 100644 index 0000000..1b38275 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58197.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58198.npy b/app/service/outfit_matcher/color/MSE_58198.npy new file mode 100644 index 0000000..ff4a5f6 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58198.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58199.npy b/app/service/outfit_matcher/color/MSE_58199.npy new file mode 100644 index 0000000..647c4d5 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58199.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58203.npy b/app/service/outfit_matcher/color/MSE_58203.npy new file mode 100644 index 0000000..93e5010 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58203.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58222.npy b/app/service/outfit_matcher/color/MSE_58222.npy new file mode 100644 index 0000000..8e0b081 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58222.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58241.npy b/app/service/outfit_matcher/color/MSE_58241.npy new file mode 100644 index 0000000..f65f9f4 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58241.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58275.npy b/app/service/outfit_matcher/color/MSE_58275.npy new file mode 100644 index 0000000..b6f873e Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58275.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58276.npy b/app/service/outfit_matcher/color/MSE_58276.npy new file mode 100644 index 0000000..19b266b Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58276.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58277.npy b/app/service/outfit_matcher/color/MSE_58277.npy new file mode 100644 index 0000000..eb32e55 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58277.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58287.npy b/app/service/outfit_matcher/color/MSE_58287.npy new file mode 100644 index 0000000..6ab2749 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58287.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58289.npy b/app/service/outfit_matcher/color/MSE_58289.npy new file mode 100644 index 0000000..6ab2749 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58289.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58317.npy b/app/service/outfit_matcher/color/MSE_58317.npy new file mode 100644 index 0000000..b3021f3 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58317.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58323.npy b/app/service/outfit_matcher/color/MSE_58323.npy new file mode 100644 index 0000000..a0d66a9 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58323.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58361.npy b/app/service/outfit_matcher/color/MSE_58361.npy new file mode 100644 index 0000000..93e5010 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58361.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58421.npy b/app/service/outfit_matcher/color/MSE_58421.npy new file mode 100644 index 0000000..43d636b Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58421.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58451.npy b/app/service/outfit_matcher/color/MSE_58451.npy new file mode 100644 index 0000000..93e5010 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58451.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58473.npy b/app/service/outfit_matcher/color/MSE_58473.npy new file mode 100644 index 0000000..e7fe12c Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58473.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58495.npy b/app/service/outfit_matcher/color/MSE_58495.npy new file mode 100644 index 0000000..a44fab8 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58495.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58498.npy b/app/service/outfit_matcher/color/MSE_58498.npy new file mode 100644 index 0000000..2c629f6 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58498.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58499.npy b/app/service/outfit_matcher/color/MSE_58499.npy new file mode 100644 index 0000000..d1d0fb3 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58499.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58510.npy b/app/service/outfit_matcher/color/MSE_58510.npy new file mode 100644 index 0000000..6aeb1fa Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58510.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58516.npy b/app/service/outfit_matcher/color/MSE_58516.npy new file mode 100644 index 0000000..ad097bc Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58516.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58518.npy b/app/service/outfit_matcher/color/MSE_58518.npy new file mode 100644 index 0000000..eb03775 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58518.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58530.npy b/app/service/outfit_matcher/color/MSE_58530.npy new file mode 100644 index 0000000..93e5010 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58530.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58540.npy b/app/service/outfit_matcher/color/MSE_58540.npy new file mode 100644 index 0000000..07bef39 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58540.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58547.npy b/app/service/outfit_matcher/color/MSE_58547.npy new file mode 100644 index 0000000..8867748 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58547.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58618.npy b/app/service/outfit_matcher/color/MSE_58618.npy new file mode 100644 index 0000000..5b3d137 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58618.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58653.npy b/app/service/outfit_matcher/color/MSE_58653.npy new file mode 100644 index 0000000..8e0b081 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58653.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58655.npy b/app/service/outfit_matcher/color/MSE_58655.npy new file mode 100644 index 0000000..324d7df Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58655.npy differ diff --git a/app/service/outfit_matcher/color/MSE_58658.npy b/app/service/outfit_matcher/color/MSE_58658.npy new file mode 100644 index 0000000..734f445 Binary files /dev/null and b/app/service/outfit_matcher/color/MSE_58658.npy differ diff --git a/app/service/outfit_matcher/color/MWSS27184.npy b/app/service/outfit_matcher/color/MWSS27184.npy new file mode 100644 index 0000000..ceecfb7 Binary files /dev/null and b/app/service/outfit_matcher/color/MWSS27184.npy differ diff --git a/app/service/outfit_matcher/color/MWSS27191.npy b/app/service/outfit_matcher/color/MWSS27191.npy new file mode 100644 index 0000000..4138f1b Binary files /dev/null and b/app/service/outfit_matcher/color/MWSS27191.npy differ diff --git a/app/service/outfit_matcher/color/MWSS27193.npy b/app/service/outfit_matcher/color/MWSS27193.npy new file mode 100644 index 0000000..4b2eeed Binary files /dev/null and b/app/service/outfit_matcher/color/MWSS27193.npy differ diff --git a/app/service/outfit_matcher/color/MWSS27195.npy b/app/service/outfit_matcher/color/MWSS27195.npy new file mode 100644 index 0000000..4436f18 Binary files /dev/null and b/app/service/outfit_matcher/color/MWSS27195.npy differ diff --git a/app/service/outfit_matcher/color/MWSS27200.npy b/app/service/outfit_matcher/color/MWSS27200.npy new file mode 100644 index 0000000..8c7706f Binary files /dev/null and b/app/service/outfit_matcher/color/MWSS27200.npy differ diff --git a/app/service/outfit_matcher/color/MWSS27209.npy b/app/service/outfit_matcher/color/MWSS27209.npy new file mode 100644 index 0000000..6340974 Binary files /dev/null and b/app/service/outfit_matcher/color/MWSS27209.npy differ diff --git a/app/service/outfit_matcher/color/MWSS27210.npy b/app/service/outfit_matcher/color/MWSS27210.npy new file mode 100644 index 0000000..f2057f2 Binary files /dev/null and b/app/service/outfit_matcher/color/MWSS27210.npy differ diff --git a/app/service/outfit_matcher/color/MWSS27211.npy b/app/service/outfit_matcher/color/MWSS27211.npy new file mode 100644 index 0000000..e13311a Binary files /dev/null and b/app/service/outfit_matcher/color/MWSS27211.npy differ diff --git a/app/service/outfit_matcher/color/MWSS27212.npy b/app/service/outfit_matcher/color/MWSS27212.npy new file mode 100644 index 0000000..eec3e82 Binary files /dev/null and b/app/service/outfit_matcher/color/MWSS27212.npy differ diff --git a/app/service/outfit_matcher/color/MZOS27178.npy b/app/service/outfit_matcher/color/MZOS27178.npy new file mode 100644 index 0000000..93d0886 Binary files /dev/null and b/app/service/outfit_matcher/color/MZOS27178.npy differ diff --git a/app/service/outfit_matcher/color/MZOS27179.npy b/app/service/outfit_matcher/color/MZOS27179.npy new file mode 100644 index 0000000..24a3d23 Binary files /dev/null and b/app/service/outfit_matcher/color/MZOS27179.npy differ diff --git a/app/service/outfit_matcher/config/fashion_categories.json b/app/service/outfit_matcher/config/fashion_categories.json new file mode 100644 index 0000000..9c3c12a --- /dev/null +++ b/app/service/outfit_matcher/config/fashion_categories.json @@ -0,0 +1,242 @@ +[ + "ACCECSSORY/BAG", + "ACCECSSORY/HAT", + "ACCESSORY/ACCESSORY", + "ACCESSORY/BAG", + "ACCESSORY/BELT", + "ACCESSORY/BOOTS", + "ACCESSORY/BANGLE", + "ACCESSORY/COMBO SET", + "ACCESSORY/BRACELET", + "ACCESSORY/BRA TOP", + "ACCESSORY/BIB", + "ACCESSORY/GIFT", + "ACCESSORY/FESTIVAL SET", + "ACCESSORY/CAPE", + "ACCESSORY/BLANKET", + "ACCESSORY/HAIR BAND", + "ACCESSORY/GLOVES", + "ACCESSORY/FUR SCARF", + "ACCESSORY/BROOCH", + "ACCESSORY/HAT", + "ACCESSORY/HAIR CLIPS", + "ACCESSORY/SCARF", + "ACCESSORY/CLIP", + "ACCESSORY/HEAD BAND", + "ACCESSORY/NECKLACE", + "ACCESSORY/SOCKS", + "ACCESSORY/EARING", + "ACCESSORY/KEYRING", + "ACCESSORY/OTHERS", + "ACCESSORY/TOY", + "ACCESSORY/HAIR CLIP", + "ACCESSORY/RING", + "ACCESSORY/SANDALS", + "ACCESSORY/SUN GLASS", + "ACCESSORY/MASK", + "ACCESSORY/Test Kit", + "ACCESSORY/MUG", + "ACCESSORY/TOWEL", + "ACCESSORY/SCARF TOP", + "ACCESSORY/SHOES", + "ACCESSORY/SWIMSUIT", + "ACCESSORY/TIE", + "BOTTOM/BOTTOM", + "BOTTOM/CAPRI", + "BOTTOM/", + "BOTTOM/COAT", + "BOTTOM/CARDIGAN", + "BOTTOM/JEANS SHORTS", + "BOTTOM/BOOTS", + "BOTTOM/JEANS", + "BOTTOM/CARPI", + "BOTTOM/JUMPSUIT", + "BOTTOM/JEANS SKIRT", + "BOTTOM/JEANS CARPI", + "BOTTOM/JACKET", + "BOTTOM/LEATHER JACKET", + "BOTTOM/LEATHER PANTS", + "BOTTOM/JEANS PANTS", + "BOTTOM/PANTS", + "BOTTOM/LEATHER SHORTS", + "BOTTOM/LEATHER SKIRT", + "BOTTOM/OVERALL", + "BOTTOM/SHORTS", + "BOTTOM/LEGGING", + "BOTTOM/UNDERWEAR", + "BOTTOM/SKIRT", + "BOTTOM/TUTA", + "BOTTOM/SANDALS", + "BOTTOM/TEE", + "BOTTOM/SHOES", + "BOTTOM/SPORTSWEAR PANTS", + "BOTTON/PANTS", + "DRESS/JEANS JACKET", + "DRESS/", + "DRESS/ONE PIECE", + "DRESS/DRESS", + "DRESS/LEATHER DRESS", + "DRESS/JEANS SKIRT", + "DRESS/OVERALL", + "DRESS/EVENING DRESS", + "DRESS/SKIRT", + "DRESS/LEATHER SKIRT", + "DRESS/JEANS DRESS", + "DRESS/SHORTS", + "DRESS/JUMPSUIT", + "DRESS/VEST", + "DRESS/SHIRT", + "DRESS/TUTA", + "FUR/DOWN COAT", + "FUR/HAT", + "FUR/FUR CAPE", + "FUR/FUR COAT", + "FUR/FUR DOWN JACKET", + "FUR/FUR GILET", + "FUR/FUR CARDIGAN", + "FUR/FUR JACKET", + "FUR/FUR HAT", + "FUR/FUR SCARF", + "FUR/FUR VEST", + "GIFT/GIFT", + "GIFT/SCARF", + "JEANS/GILET", + "JEANS/JEANS CARPI", + "JEANS/DRESS", + "JEANS/JEANS BLOUSE", + "JEANS/JEANS", + "JEANS/JEANS OVERALL", + "JEANS/JEANS BLAZER", + "JEANS/JEANS DRESS", + "JEANS/SHIRT", + "JEANS/JEANS SHORTS", + "JEANS/JEANS GILET", + "JEANS/JEANS JACKET", + "JEANS/SKIRT", + "JEANS/TWIN SET", + "JEANS/JEANS PANTS", + "JEANS/JEANS SHIRT", + "JEANS/JEANS SKIRT", + "JEANS/JEANS VEST", + "JEANS/JEANS TOP", + "JEANS/OVERALL", + "JEANS/PANTS", + "JEANS/SHORTS", + "KNIT/CARDGAIN", + "KNIT/ONE PIECE", + "KNIT/CARDIGAN", + "KNIT/BRA TOP", + "KNIT/JACKET", + "KNIT/PULLOVER", + "KNIT/DRESS", + "KNIT/CAPE", + "KNIT/KNIT TOP", + "KNIT/CARDGIAN", + "KNIT/PANTS", + "KNIT/GILET", + "KNIT/LONG TOP", + "KNIT/SKIRT", + "KNIT/SHORTS", + "KNIT/SWEATER", + "KNIT/SWEATPR", + "KNIT/VEST", + "KNIT/TANK", + "KNIT/TOP", + "KNIT/TUTA", + "KNIT/TWIN SET", + "LEATHER/BLAZER", + "LEATHER/LEATHER BLAZER", + "LEATHER/LEATHER COAT", + "LEATHER/LEATHER PANTS", + "LEATHER/HAT", + "LEATHER/LEATHER BLOUSE", + "LEATHER/LEATHER DRESS", + "LEATHER/LEATHER SHORTS", + "LEATHER/LEATHER SKIRT", + "LEATHER/LEATHER GILET", + "LEATHER/LEATHER JACKET", + "LEATHER/LEATHER VEST", + "LEATHER/LEATHERSKIRT", + "LEATHER/LEATHERSHIRT", + "LEATHER/LEATHER TOP", + "ONE PIECE/BODYSUIT", + "ONE PIECE/COMBO SET", + "ONE PIECE/BODY", + "ONE PIECE/JUMPSUIT", + "ONE PIECE/DRESS", + "ONE PIECE/OVERALL", + "ONE PIECE/SWIMSUIT", + "ONE PIECE/TWIN SET", + "OUTERWEAR/CARDIGAN", + "OUTERWEAR/BLAZER", + "OUTERWEAR/DOWN COAT", + "OUTERWEAR/", + "OUTERWEAR/DOWN JACKET", + "OUTERWEAR/COAT", + "OUTERWEAR/DOWN GILET", + "OUTERWEAR/CAPE", + "OUTERWEAR/DOWN VEST", + "OUTERWEAR/FUR JACKET", + "OUTERWEAR/FUR VEST", + "OUTERWEAR/CAPE COAT", + "OUTERWEAR/LEATHER VEST", + "OUTERWEAR/PULLOVER", + "OUTERWEAR/GILET", + "OUTERWEAR/FUR COAT", + "OUTERWEAR/QUILTED JACKET", + "OUTERWEAR/SPORTSWEAR JACKET", + "OUTERWEAR/JACKET", + "OUTERWEAR/FUR GILET", + "OUTERWEAR/SHIRT", + "OUTERWEAR/TWIN SET", + "OUTERWEAR/LEATHER GILET", + "OUTERWEAR/JEANS JACKET", + "OUTERWEAR/TRENCH COAT", + "OUTERWEAR/LEATHER COAT", + "OUTERWEAR/ONE PIECE", + "OUTERWEAR/LEATHER JACKET", + "OUTERWEAR/SCARF", + "OUTERWEAR/SOCKS", + "OUTERWEAR/TOP", + "OUTERWEAR/UNIFORM", + "OUTERWEAR/VEST", + "OUTERWEAR/WINDBREAKER", + "OUTERWEAR/WINDERBREAKER", + "OUTPRWEAR/BLAZER", + "SHOES/PUMPS", + "SHOES/BOOTS", + "SHOES/SHOES", + "SHOES/SANDALS", + "TOP/BLOUSE", + "TOP/BLAZER", + "TOP/BAR TOP", + "TOP/BRA TOP", + "TOP/CARDIGAN", + "TOP/BODY", + "TOP/COAT", + "TOP/PANTS", + "TOP/DOWN VEST", + "TOP/JACKET", + "TOP/GILET", + "TOP/TWIN SET", + "TOP/LONG SLEEVES TEE", + "TOP/LONG TOP", + "TOP/KNIT TOP", + "TOP/VEST", + "TOP/ONE PIECE", + "TOP/TANK", + "TOP/PULLOVER", + "TOP/TOP", + "TOP/OVERALL", + "TOP/UNDERWEAR", + "TOP/SKIRT", + "TOP/UNIFORM", + "TOP/SHIRT", + "TOP/SWEATER", + "TOP/TUTA", + "TOP/TEE", + "TOP/TUNIC", + "TUTA/OVERALL", + "TUTA/TWIN SET", + "TUTA/TUTA" +] \ No newline at end of file diff --git a/app/service/outfit_matcher/config/fashion_category_mapping.json b/app/service/outfit_matcher/config/fashion_category_mapping.json new file mode 100644 index 0000000..abdb4be --- /dev/null +++ b/app/service/outfit_matcher/config/fashion_category_mapping.json @@ -0,0 +1,242 @@ +{ + "ACCECSSORY/BAG": "bags", + "ACCECSSORY/HAT": "hats", + "ACCESSORY/ACCESSORY": "accessories", + "ACCESSORY/BAG": "bags", + "ACCESSORY/BELT": "accessories", + "ACCESSORY/BOOTS": "shoes", + "ACCESSORY/BANGLE": "accessories", + "ACCESSORY/COMBO SET": "accessories", + "ACCESSORY/BRACELET": "accessories", + "ACCESSORY/BRA TOP": "tops", + "ACCESSORY/BIB": "accessories", + "ACCESSORY/GIFT": "accessories", + "ACCESSORY/FESTIVAL SET": "accessories", + "ACCESSORY/CAPE": "outerwear", + "ACCESSORY/BLANKET": "accessories", + "ACCESSORY/HAIR BAND": "accessories", + "ACCESSORY/GLOVES": "accessories", + "ACCESSORY/FUR SCARF": "accessories", + "ACCESSORY/BROOCH": "accessories", + "ACCESSORY/HAT": "hats", + "ACCESSORY/HAIR CLIPS": "accessories", + "ACCESSORY/SCARF": "scarves", + "ACCESSORY/CLIP": "accessories", + "ACCESSORY/HEAD BAND": "accessories", + "ACCESSORY/NECKLACE": "jewellery", + "ACCESSORY/SOCKS": "accessories", + "ACCESSORY/EARING": "jewellery", + "ACCESSORY/KEYRING": "accessories", + "ACCESSORY/OTHERS": "accessories", + "ACCESSORY/TOY": "accessories", + "ACCESSORY/HAIR CLIP": "accessories", + "ACCESSORY/RING": "jewellery", + "ACCESSORY/SANDALS": "shoes", + "ACCESSORY/SUN GLASS": "sunglasses", + "ACCESSORY/MASK": "accessories", + "ACCESSORY/Test Kit": "accessories", + "ACCESSORY/MUG": "accessories", + "ACCESSORY/TOWEL": "accessories", + "ACCESSORY/SCARF TOP": "scarves", + "ACCESSORY/SHOES": "shoes", + "ACCESSORY/SWIMSUIT": "all-body", + "ACCESSORY/TIE": "accessories", + "BOTTOM/BOTTOM": "bottoms", + "BOTTOM/CAPRI": "bottoms", + "BOTTOM/": "bottoms", + "BOTTOM/COAT": "outerwear", + "BOTTOM/CARDIGAN": "outerwear", + "BOTTOM/JEANS SHORTS": "bottoms", + "BOTTOM/BOOTS": "shoes", + "BOTTOM/JEANS": "bottoms", + "BOTTOM/CARPI": "bottoms", + "BOTTOM/JUMPSUIT": "all-body", + "BOTTOM/JEANS SKIRT": "bottoms", + "BOTTOM/JEANS CARPI": "bottoms", + "BOTTOM/JACKET": "outerwear", + "BOTTOM/LEATHER JACKET": "outerwear", + "BOTTOM/LEATHER PANTS": "bottoms", + "BOTTOM/JEANS PANTS": "bottoms", + "BOTTOM/PANTS": "bottoms", + "BOTTOM/LEATHER SHORTS": "bottoms", + "BOTTOM/LEATHER SKIRT": "bottoms", + "BOTTOM/OVERALL": "all-body", + "BOTTOM/SHORTS": "bottoms", + "BOTTOM/LEGGING": "bottoms", + "BOTTOM/UNDERWEAR": "bottoms", + "BOTTOM/SKIRT": "bottoms", + "BOTTOM/TUTA": "all-body", + "BOTTOM/SANDALS": "shoes", + "BOTTOM/TEE": "tops", + "BOTTOM/SHOES": "shoes", + "BOTTOM/SPORTSWEAR PANTS": "bottoms", + "BOTTON/PANTS": "bottoms", + "DRESS/JEANS JACKET": "outerwear", + "DRESS/": "all-body", + "DRESS/ONE PIECE": "all-body", + "DRESS/DRESS": "all-body", + "DRESS/LEATHER DRESS": "all-body", + "DRESS/JEANS SKIRT": "bottoms", + "DRESS/OVERALL": "all-body", + "DRESS/EVENING DRESS": "all-body", + "DRESS/SKIRT": "bottoms", + "DRESS/LEATHER SKIRT": "bottoms", + "DRESS/JEANS DRESS": "all-body", + "DRESS/SHORTS": "bottoms", + "DRESS/JUMPSUIT": "all-body", + "DRESS/VEST": "tops", + "DRESS/SHIRT": "tops", + "DRESS/TUTA": "all-body", + "FUR/DOWN COAT": "outerwear", + "FUR/HAT": "hats", + "FUR/FUR CAPE": "outerwear", + "FUR/FUR COAT": "outerwear", + "FUR/FUR DOWN JACKET": "outerwear", + "FUR/FUR GILET": "outerwear", + "FUR/FUR CARDIGAN": "outerwear", + "FUR/FUR JACKET": "outerwear", + "FUR/FUR HAT": "hats", + "FUR/FUR SCARF": "accessories", + "FUR/FUR VEST": "outerwear", + "GIFT/GIFT": "accessories", + "GIFT/SCARF": "accessories", + "JEANS/GILET": "outerwear", + "JEANS/JEANS CARPI": "bottoms", + "JEANS/DRESS": "all-body", + "JEANS/JEANS BLOUSE": "tops", + "JEANS/JEANS": "bottoms", + "JEANS/JEANS OVERALL": "all-body", + "JEANS/JEANS BLAZER": "outerwear", + "JEANS/JEANS DRESS": "all-body", + "JEANS/SHIRT": "tops", + "JEANS/JEANS SHORTS": "bottoms", + "JEANS/JEANS GILET": "outerwear", + "JEANS/JEANS JACKET": "outerwear", + "JEANS/SKIRT": "bottoms", + "JEANS/TWIN SET": "all-body", + "JEANS/JEANS PANTS": "bottoms", + "JEANS/JEANS SHIRT": "tops", + "JEANS/JEANS SKIRT": "bottoms", + "JEANS/JEANS VEST": "outerwear", + "JEANS/JEANS TOP": "tops", + "JEANS/OVERALL": "all-body", + "JEANS/PANTS": "bottoms", + "JEANS/SHORTS": "bottoms", + "KNIT/CARDGAIN": "outerwear", + "KNIT/ONE PIECE": "all-body", + "KNIT/CARDIGAN": "outerwear", + "KNIT/BRA TOP": "tops", + "KNIT/JACKET": "outerwear", + "KNIT/PULLOVER": "tops", + "KNIT/DRESS": "all-body", + "KNIT/CAPE": "outerwear", + "KNIT/KNIT TOP": "tops", + "KNIT/CARDGIAN": "outerwear", + "KNIT/PANTS": "bottoms", + "KNIT/GILET": "outerwear", + "KNIT/LONG TOP": "tops", + "KNIT/SKIRT": "bottoms", + "KNIT/SHORTS": "bottoms", + "KNIT/SWEATER": "tops", + "KNIT/SWEATPR": "tops", + "KNIT/VEST": "outerwear", + "KNIT/TANK": "tops", + "KNIT/TOP": "tops", + "KNIT/TUTA": "all-body", + "KNIT/TWIN SET": "all-body", + "LEATHER/BLAZER": "outerwear", + "LEATHER/LEATHER BLAZER": "outerwear", + "LEATHER/LEATHER COAT": "outerwear", + "LEATHER/LEATHER PANTS": "bottoms", + "LEATHER/HAT": "hats", + "LEATHER/LEATHER BLOUSE": "tops", + "LEATHER/LEATHER DRESS": "all-body", + "LEATHER/LEATHER SHORTS": "bottoms", + "LEATHER/LEATHER SKIRT": "bottoms", + "LEATHER/LEATHER GILET": "outerwear", + "LEATHER/LEATHER JACKET": "outerwear", + "LEATHER/LEATHER VEST": "outerwear", + "LEATHER/LEATHERSKIRT": "bottoms", + "LEATHER/LEATHERSHIRT": "tops", + "LEATHER/LEATHER TOP": "tops", + "ONE PIECE/BODYSUIT": "all-body", + "ONE PIECE/COMBO SET": "all-body", + "ONE PIECE/BODY": "all-body", + "ONE PIECE/JUMPSUIT": "all-body", + "ONE PIECE/DRESS": "all-body", + "ONE PIECE/OVERALL": "all-body", + "ONE PIECE/SWIMSUIT": "all-body", + "ONE PIECE/TWIN SET": "all-body", + "OUTERWEAR/CARDIGAN": "outerwear", + "OUTERWEAR/BLAZER": "outerwear", + "OUTERWEAR/DOWN COAT": "outerwear", + "OUTERWEAR/": "outerwear", + "OUTERWEAR/DOWN JACKET": "outerwear", + "OUTERWEAR/COAT": "outerwear", + "OUTERWEAR/DOWN GILET": "outerwear", + "OUTERWEAR/CAPE": "outerwear", + "OUTERWEAR/DOWN VEST": "outerwear", + "OUTERWEAR/FUR JACKET": "outerwear", + "OUTERWEAR/FUR VEST": "outerwear", + "OUTERWEAR/CAPE COAT": "outerwear", + "OUTERWEAR/LEATHER VEST": "outerwear", + "OUTERWEAR/PULLOVER": "outerwear", + "OUTERWEAR/GILET": "outerwear", + "OUTERWEAR/FUR COAT": "outerwear", + "OUTERWEAR/QUILTED JACKET": "outerwear", + "OUTERWEAR/SPORTSWEAR JACKET": "outerwear", + "OUTERWEAR/JACKET": "outerwear", + "OUTERWEAR/FUR GILET": "outerwear", + "OUTERWEAR/SHIRT": "tops", + "OUTERWEAR/TWIN SET": "all-body", + "OUTERWEAR/LEATHER GILET": "outerwear", + "OUTERWEAR/JEANS JACKET": "outerwear", + "OUTERWEAR/TRENCH COAT": "outerwear", + "OUTERWEAR/LEATHER COAT": "outerwear", + "OUTERWEAR/ONE PIECE": "all-body", + "OUTERWEAR/LEATHER JACKET": "outerwear", + "OUTERWEAR/SCARF": "accessories", + "OUTERWEAR/SOCKS": "accessories", + "OUTERWEAR/TOP": "tops", + "OUTERWEAR/UNIFORM": "outerwear", + "OUTERWEAR/VEST": "outerwear", + "OUTERWEAR/WINDBREAKER": "outerwear", + "OUTERWEAR/WINDERBREAKER": "outerwear", + "OUTPRWEAR/BLAZER": "outerwear", + "SHOES/PUMPS": "shoes", + "SHOES/BOOTS": "shoes", + "SHOES/SHOES": "shoes", + "SHOES/SANDALS": "shoes", + "TOP/BLOUSE": "tops", + "TOP/BLAZER": "outerwear", + "TOP/BAR TOP": "tops", + "TOP/BRA TOP": "tops", + "TOP/CARDIGAN": "outerwear", + "TOP/BODY": "all-body", + "TOP/COAT": "outerwear", + "TOP/PANTS": "bottoms", + "TOP/DOWN VEST": "outerwear", + "TOP/JACKET": "outerwear", + "TOP/GILET": "outerwear", + "TOP/TWIN SET": "tops", + "TOP/LONG SLEEVES TEE": "tops", + "TOP/LONG TOP": "tops", + "TOP/KNIT TOP": "tops", + "TOP/VEST": "outerwear", + "TOP/ONE PIECE": "all-body", + "TOP/TANK": "tops", + "TOP/PULLOVER": "outerwear", + "TOP/TOP": "tops", + "TOP/OVERALL": "all-body", + "TOP/UNDERWEAR": "bottoms", + "TOP/SKIRT": "bottoms", + "TOP/UNIFORM": "tops", + "TOP/SHIRT": "tops", + "TOP/SWEATER": "tops", + "TOP/TUTA": "all-body", + "TOP/TEE": "tops", + "TOP/TUNIC": "tops", + "TUTA/OVERALL": "all-body", + "TUTA/TWIN SET": "all-body", + "TUTA/TUTA": "all-body" +} \ No newline at end of file diff --git a/app/service/outfit_matcher/dataset.py b/app/service/outfit_matcher/dataset.py new file mode 100644 index 0000000..4789920 --- /dev/null +++ b/app/service/outfit_matcher/dataset.py @@ -0,0 +1,140 @@ +import json +import random +import itertools +import difflib +from copy import deepcopy + + +# Helper function to calculate the edit distance similarity between two file names +def sim_score(a, b): + return difflib.SequenceMatcher(None, a, b).ratio() + + +class FashionDataset(object): + fashion_categories = json.load(open(r"config/fashion_categories.json", "r")) + fashion_categories_mapping = json.load(open(r"config/fashion_category_mapping.json", "r")) + + def __init__(self, item_metadata): + self.item_metadat = item_metadata + self.item2cate = self.get_item2cate(item_metadata) + self.cate2item = self.get_cate2item(item_metadata) + self.cate2num = {k: len(v) for k, v in self.cate2item.items()} + + # def generate_outfit(self, query_item, topk, max_outfits): + # query_item["mapped_cate"] = self.fashion_categories_mapping[query_item["semantic_category"]] + # possible_outfits = self.count_possible(query_item["mapped_cate"]) + # + # if possible_outfits < topk: + # raise ValueError(f"Cannot generate more than {topk} outfits!") + # + # outfit_list = self.get_possible_outfit(query_item) + # if possible_outfits > max_outfits: + # outfit_list = random.sample(outfit_list, max_outfits) + # return outfit_list + + def count_possible(self, given_cate): + possible = 0 + if given_cate == 'tops': + if self.cate2num['outerwear'] == 0: + possible = self.cate2num['bottoms'] + else: + possible = self.cate2num['bottoms'] * self.cate2num['outerwear'] + elif given_cate == 'bottoms': + if self.cate2num['outerwear'] == 0: + possible = self.cate2num['tops'] + else: + possible = self.cate2num['tops'] * self.cate2num['outerwear'] + elif given_cate == 'outerwear': + possible = self.cate2num['tops'] * self.cate2num['bottoms'] + self.cate2num['all-body'] + elif given_cate == 'all-body': + possible = self.cate2num['outerwear'] + return possible + + def generate_outfit(self, query_item, topk, max_outfits): + query_item["mapped_cate"] = self.fashion_categories_mapping[query_item["semantic_category"]] + given_cate = query_item["mapped_cate"] + + if given_cate == 'tops' or given_cate == "bottoms": + complementary_cate = "bottoms" if given_cate == "tops" else "tops" + # check bottom num + if not self.cate2num[complementary_cate]: + raise ValueError(f"Not enough {complementary_cate} available to generate outfits.") + + complementary_items = deepcopy(self.cate2item[complementary_cate]) + sim_scores = [sim_score(item["item_name"], query_item["item_name"]) for item in complementary_items] + outfit_list = [] + used_items = set() + + while len(outfit_list) < max_outfits: + if not complementary_items: + break + + # 根据权重从bottoms中选择一个元素 + item_index = random.choices(range(len(complementary_items)), weights=sim_scores)[0] + item = complementary_items.pop(item_index) + sim_scores.pop(item_index) + + if item["item_name"] not in used_items: + used_items.add(item["item_name"]) + outfit = [query_item, item] + outfit_list.append(tuple(outfit)) + + # 20% chance to include an outerwear + if self.cate2num['outerwear'] > 0 and random.random() < 0.2: + outerwear = random.choice(self.cate2item['outerwear']) + outfit.append(outerwear) + outfit_list.append(tuple(outfit)) + if len(outfit_list) < topk: + raise ValueError(f"Cannot generate more than {topk} outfits!") + + return outfit_list + elif given_cate == 'outerwear': + top_bottom_combination = [(x[0], x[1]) for x in + itertools.product(self.cate2item['tops'], self.cate2item['bottoms'])] + sim_scores = [sim_score(x[0]["item_name"], x[1]["item_name"]) for x in top_bottom_combination] + outfit_list = [] + used_items = set() + + while len(outfit_list) < max_outfits: + if not top_bottom_combination: + break + + # 根据权重从top bottom的组合中选择一个,根据top和bottom之间的文件名相似度选择 + top_bottom_index = random.choices(range(len(top_bottom_combination)), weights=sim_scores)[0] + top_bottom = top_bottom_combination.pop(top_bottom_index) + sim_scores.pop(top_bottom_index) + + top_name, bottom_name = top_bottom[0]["item_name"], top_bottom[1]["item_name"] + if top_name + bottom_name not in used_items: + used_items.add(top_name + bottom_name) + outfit = [query_item] + list(top_bottom) + outfit_list.append(tuple(outfit)) + + if len(outfit_list) < topk: + raise ValueError(f"Cannot generate more than {topk} outfits!") + + return outfit_list + elif given_cate == 'all-body': + outfit_list = [(query_item, x) for x in self.cate2item['outerwear']] + return outfit_list + + + def get_item2cate(self, item_metadata): + item2cate = {} + for metadata in item_metadata: + cate = metadata["semantic_category"] + mapped_cate = self.fashion_categories_mapping[cate] + item2cate[metadata["item_name"]] = mapped_cate + return item2cate + + def get_cate2item(self, item_metadata): + cate2item = {} + for metadata in item_metadata: + cate = metadata["semantic_category"] + mapped_cate = self.fashion_categories_mapping[cate] + metadata["mapped_cate"] = mapped_cate + if mapped_cate not in cate2item.keys(): + cate2item[mapped_cate] = [metadata] + else: + cate2item[mapped_cate].append(metadata) + return cate2item diff --git a/app/service/outfit_matcher_hon/foco.py b/app/service/outfit_matcher/foco.py similarity index 100% rename from app/service/outfit_matcher_hon/foco.py rename to app/service/outfit_matcher/foco.py diff --git a/app/service/outfit_matcher/outfit_evaluator.py b/app/service/outfit_matcher/outfit_evaluator.py new file mode 100644 index 0000000..538eba2 --- /dev/null +++ b/app/service/outfit_matcher/outfit_evaluator.py @@ -0,0 +1,184 @@ +import os +import requests +import json +from PIL import Image +import cv2 +import numpy as np +import tritonclient.http as httpclient +import torch + +from foco import extract_main_colors + +TRITON_IP_DEFAULT = "0.0.0.0" + + +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 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"), + ] + 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) + + +if __name__ == '__main__': + with open("test_input.json", "r") as f: + outfits = json.load(f) + scores = evaluate_outfits(outfits) + print(scores) diff --git a/app/service/outfit_matcher_hon/service.py b/app/service/outfit_matcher/service.py similarity index 97% rename from app/service/outfit_matcher_hon/service.py rename to app/service/outfit_matcher/service.py index 85ffffc..9df1711 100644 --- a/app/service/outfit_matcher_hon/service.py +++ b/app/service/outfit_matcher/service.py @@ -5,7 +5,8 @@ import requests import cv2 import numpy as np from PIL import Image -from foco import extract_main_colors + +from app.service.outfit_matcher.foco import extract_main_colors class OutfitMatcherHon: @@ -125,7 +126,7 @@ class OutfitMatcherHon: outputs = [ httpclient.InferRequestedOutput("output__0", binary_data=True), ] - results = self.tritonclient.infer(model_name="outfit_matcher_hon", inputs=inputs, outputs=outputs) + results = self.tritonclient.infer(model_name="outfit_matcher", inputs=inputs, outputs=outputs) # 推理 # 取结果 inference_output1 = torch.from_numpy(results.as_numpy("output__0")) diff --git a/app/service/outfit_matcher/test_param/recommendation_test.json b/app/service/outfit_matcher/test_param/recommendation_test.json new file mode 100644 index 0000000..477ea5c --- /dev/null +++ b/app/service/outfit_matcher/test_param/recommendation_test.json @@ -0,0 +1,849 @@ +{ + "topk": 5, + "max_outfits": 100, + "query": [ + { + "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_58107", + "semantic_category": "TOP/SHIRT", + "image_path": "D:\\PhD_Study\\MIXI\\mitu\\image\\2024 SS\\MSE_58107.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