Spaces:
Runtime error
Runtime error
feat(sample): add pre-processed sample wardrobe with 50 garments
Browse filesAdd "Cargar armario de ejemplo" button that instantly loads 50
pre-cataloged garments from Codatta/Fashion-1K dataset. Allows
demoing the full app (wardrobe, combinations, chat) without
waiting for VLM inference.
- scripts/build_sample_wardrobe.py: offline pipeline that downloads
Fashion-1K, runs detector + VLM, saves results to data/samples/
- data/samples/: 50 garment crops + catalog.json (1.7 MB)
- app.py: load_sample_wardrobe() handler + UI button in Capture tab
Co-authored-by: Cursor <cursoragent@cursor.com>
This view is limited to 50 files because it contains too many changes. See raw diff
- app.py +40 -0
- data/samples/catalog.json +552 -0
- data/samples/garments/garment_001.jpg +0 -0
- data/samples/garments/garment_002.jpg +0 -0
- data/samples/garments/garment_003.jpg +0 -0
- data/samples/garments/garment_004.jpg +0 -0
- data/samples/garments/garment_005.jpg +0 -0
- data/samples/garments/garment_006.jpg +0 -0
- data/samples/garments/garment_007.jpg +0 -0
- data/samples/garments/garment_008.jpg +0 -0
- data/samples/garments/garment_009.jpg +0 -0
- data/samples/garments/garment_010.jpg +0 -0
- data/samples/garments/garment_011.jpg +0 -0
- data/samples/garments/garment_012.jpg +0 -0
- data/samples/garments/garment_013.jpg +0 -0
- data/samples/garments/garment_014.jpg +0 -0
- data/samples/garments/garment_015.jpg +0 -0
- data/samples/garments/garment_016.jpg +0 -0
- data/samples/garments/garment_017.jpg +0 -0
- data/samples/garments/garment_018.jpg +0 -0
- data/samples/garments/garment_019.jpg +0 -0
- data/samples/garments/garment_020.jpg +0 -0
- data/samples/garments/garment_021.jpg +0 -0
- data/samples/garments/garment_022.jpg +0 -0
- data/samples/garments/garment_023.jpg +0 -0
- data/samples/garments/garment_024.jpg +0 -0
- data/samples/garments/garment_025.jpg +0 -0
- data/samples/garments/garment_026.jpg +0 -0
- data/samples/garments/garment_027.jpg +0 -0
- data/samples/garments/garment_028.jpg +0 -0
- data/samples/garments/garment_029.jpg +0 -0
- data/samples/garments/garment_030.jpg +0 -0
- data/samples/garments/garment_031.jpg +0 -0
- data/samples/garments/garment_032.jpg +0 -0
- data/samples/garments/garment_033.jpg +0 -0
- data/samples/garments/garment_034.jpg +0 -0
- data/samples/garments/garment_035.jpg +0 -0
- data/samples/garments/garment_036.jpg +0 -0
- data/samples/garments/garment_037.jpg +0 -0
- data/samples/garments/garment_038.jpg +0 -0
- data/samples/garments/garment_039.jpg +0 -0
- data/samples/garments/garment_040.jpg +0 -0
- data/samples/garments/garment_041.jpg +0 -0
- data/samples/garments/garment_042.jpg +0 -0
- data/samples/garments/garment_043.jpg +0 -0
- data/samples/garments/garment_044.jpg +0 -0
- data/samples/garments/garment_045.jpg +0 -0
- data/samples/garments/garment_046.jpg +0 -0
- data/samples/garments/garment_047.jpg +0 -0
- data/samples/garments/garment_048.jpg +0 -0
app.py
CHANGED
|
@@ -9,6 +9,7 @@ Built for the Build Small Hackathon (HuggingFace x Gradio, June 2026).
|
|
| 9 |
import io
|
| 10 |
import logging
|
| 11 |
import os
|
|
|
|
| 12 |
from pathlib import Path
|
| 13 |
|
| 14 |
from dotenv import load_dotenv
|
|
@@ -166,6 +167,32 @@ def update_detection_backend(backend_name: str):
|
|
| 166 |
return f"Backend actualizado: **{backend_name}**"
|
| 167 |
|
| 168 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 169 |
# ---------------------------------------------------------------------------
|
| 170 |
# Wardrobe tab handlers
|
| 171 |
# ---------------------------------------------------------------------------
|
|
@@ -434,6 +461,19 @@ with gr.Blocks(title="Wardrobe AI") as demo:
|
|
| 434 |
interactive=False,
|
| 435 |
)
|
| 436 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 437 |
with gr.Accordion("⚙️ Ajustes de detección", open=False):
|
| 438 |
available_backends = list_available()
|
| 439 |
if not available_backends:
|
|
|
|
| 9 |
import io
|
| 10 |
import logging
|
| 11 |
import os
|
| 12 |
+
import shutil
|
| 13 |
from pathlib import Path
|
| 14 |
|
| 15 |
from dotenv import load_dotenv
|
|
|
|
| 167 |
return f"Backend actualizado: **{backend_name}**"
|
| 168 |
|
| 169 |
|
| 170 |
+
# ---------------------------------------------------------------------------
|
| 171 |
+
# Sample wardrobe handler
|
| 172 |
+
# ---------------------------------------------------------------------------
|
| 173 |
+
|
| 174 |
+
SAMPLES_DIR = Path(__file__).resolve().parent / "data" / "samples"
|
| 175 |
+
DATA_DIR = Path(__file__).resolve().parent / "data"
|
| 176 |
+
|
| 177 |
+
|
| 178 |
+
def load_sample_wardrobe():
|
| 179 |
+
"""Load the pre-processed sample wardrobe into the active catalog."""
|
| 180 |
+
if not SAMPLES_DIR.exists() or not (SAMPLES_DIR / "catalog.json").exists():
|
| 181 |
+
return "Datos de ejemplo no disponibles. Ejecuta scripts/build_sample_wardrobe.py primero."
|
| 182 |
+
|
| 183 |
+
shutil.copy(SAMPLES_DIR / "catalog.json", DATA_DIR / "catalog.json")
|
| 184 |
+
|
| 185 |
+
dest = DATA_DIR / "garments"
|
| 186 |
+
dest.mkdir(parents=True, exist_ok=True)
|
| 187 |
+
src_garments = SAMPLES_DIR / "garments"
|
| 188 |
+
if src_garments.exists():
|
| 189 |
+
for img in src_garments.glob("*.jpg"):
|
| 190 |
+
shutil.copy(img, dest / img.name)
|
| 191 |
+
|
| 192 |
+
catalog = load_catalog()
|
| 193 |
+
return f"Cargadas **{len(catalog)}** prendas de ejemplo. Ve a 'Mi Armario' para explorarlas."
|
| 194 |
+
|
| 195 |
+
|
| 196 |
# ---------------------------------------------------------------------------
|
| 197 |
# Wardrobe tab handlers
|
| 198 |
# ---------------------------------------------------------------------------
|
|
|
|
| 461 |
interactive=False,
|
| 462 |
)
|
| 463 |
|
| 464 |
+
gr.Markdown("---")
|
| 465 |
+
with gr.Row():
|
| 466 |
+
sample_btn = gr.Button(
|
| 467 |
+
"Cargar armario de ejemplo (50 prendas)",
|
| 468 |
+
variant="secondary", size="sm",
|
| 469 |
+
)
|
| 470 |
+
sample_status = gr.Markdown()
|
| 471 |
+
|
| 472 |
+
sample_btn.click(
|
| 473 |
+
load_sample_wardrobe,
|
| 474 |
+
outputs=[sample_status],
|
| 475 |
+
)
|
| 476 |
+
|
| 477 |
with gr.Accordion("⚙️ Ajustes de detección", open=False):
|
| 478 |
available_backends = list_available()
|
| 479 |
if not available_backends:
|
data/samples/catalog.json
ADDED
|
@@ -0,0 +1,552 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
{
|
| 3 |
+
"type": "crop top",
|
| 4 |
+
"color": "black",
|
| 5 |
+
"material": "polyester",
|
| 6 |
+
"pattern": "striped",
|
| 7 |
+
"season": "summer",
|
| 8 |
+
"formality": "casual",
|
| 9 |
+
"description": "A black crop top with white stripes and a built-in corset-style bodice, offering a sporty and casual style.",
|
| 10 |
+
"id": "garment_001",
|
| 11 |
+
"image_ref": "garment_001.jpg"
|
| 12 |
+
},
|
| 13 |
+
{
|
| 14 |
+
"type": "crop top",
|
| 15 |
+
"color": "black",
|
| 16 |
+
"material": "unknown",
|
| 17 |
+
"pattern": "solid",
|
| 18 |
+
"season": "summer",
|
| 19 |
+
"formality": "casual",
|
| 20 |
+
"description": "A black crop top with a structured, fitted silhouette and white detailing along the neckline. It features a graphic print and is paired with bright neon green shorts and chunky black boots.",
|
| 21 |
+
"id": "garment_002",
|
| 22 |
+
"image_ref": "garment_002.jpg"
|
| 23 |
+
},
|
| 24 |
+
{
|
| 25 |
+
"type": "shorts",
|
| 26 |
+
"color": "lime green",
|
| 27 |
+
"material": "unknown",
|
| 28 |
+
"pattern": "solid",
|
| 29 |
+
"season": "summer",
|
| 30 |
+
"formality": "casual",
|
| 31 |
+
"description": "High-waisted, bright lime green shorts with a structured fit and pleats. They feature a black belt with a plastic buckle and are suitable for warm weather and casual outfits.",
|
| 32 |
+
"id": "garment_003",
|
| 33 |
+
"image_ref": "garment_003.jpg"
|
| 34 |
+
},
|
| 35 |
+
{
|
| 36 |
+
"type": "skirt",
|
| 37 |
+
"color": "blue",
|
| 38 |
+
"material": "denim",
|
| 39 |
+
"pattern": "solid",
|
| 40 |
+
"season": "spring",
|
| 41 |
+
"formality": "smart-casual",
|
| 42 |
+
"description": "A long, asymmetric denim skirt with a high-waisted fit and a ruffled hem. The skirt features a distressed and frayed edge, giving it a casual yet stylish appearance.",
|
| 43 |
+
"id": "garment_004",
|
| 44 |
+
"image_ref": "garment_004.jpg"
|
| 45 |
+
},
|
| 46 |
+
{
|
| 47 |
+
"type": "boots",
|
| 48 |
+
"color": "blue",
|
| 49 |
+
"material": "suede",
|
| 50 |
+
"pattern": "solid",
|
| 51 |
+
"season": "autumn",
|
| 52 |
+
"formality": "smart-casual",
|
| 53 |
+
"description": "Tall, pointed-toe suede boots with gold laces and a chunky heel. These boots have a sleek and sophisticated design, suitable for dressing up an outfit.",
|
| 54 |
+
"id": "garment_005",
|
| 55 |
+
"image_ref": "garment_005.jpg"
|
| 56 |
+
},
|
| 57 |
+
{
|
| 58 |
+
"type": "dress",
|
| 59 |
+
"color": "blue",
|
| 60 |
+
"material": "satin",
|
| 61 |
+
"pattern": "solid",
|
| 62 |
+
"season": "spring",
|
| 63 |
+
"formality": "smart-casual",
|
| 64 |
+
"description": "A light blue satin dress with a fitted bodice, puffed sleeves, and a wrap-style closure. The dress features a ruffled hem and is suitable for a semi-formal occasion.",
|
| 65 |
+
"id": "garment_006",
|
| 66 |
+
"image_ref": "garment_006.jpg"
|
| 67 |
+
},
|
| 68 |
+
{
|
| 69 |
+
"type": "dress",
|
| 70 |
+
"color": "blue",
|
| 71 |
+
"material": "satin",
|
| 72 |
+
"pattern": "solid",
|
| 73 |
+
"season": "spring",
|
| 74 |
+
"formality": "smart-casual",
|
| 75 |
+
"description": "A light blue satin dress with a fitted bodice, puffed sleeves, and a ruffled skirt. It features a double-button closure and a sophisticated, elegant style suitable for a dressy occasion.",
|
| 76 |
+
"id": "garment_007",
|
| 77 |
+
"image_ref": "garment_007.jpg"
|
| 78 |
+
},
|
| 79 |
+
{
|
| 80 |
+
"type": "dress",
|
| 81 |
+
"color": "black",
|
| 82 |
+
"material": "lace",
|
| 83 |
+
"pattern": "floral",
|
| 84 |
+
"season": "autumn",
|
| 85 |
+
"formality": "smart-casual",
|
| 86 |
+
"description": "This black lace dress features a floral pattern with gold accents and a flattering fit. The dress has a high neckline and ruffled sleeves, making it suitable for a dressy yet comfortable occasion.",
|
| 87 |
+
"id": "garment_008",
|
| 88 |
+
"image_ref": "garment_008.jpg"
|
| 89 |
+
},
|
| 90 |
+
{
|
| 91 |
+
"type": "shirt",
|
| 92 |
+
"color": "black",
|
| 93 |
+
"material": "satin",
|
| 94 |
+
"pattern": "striped",
|
| 95 |
+
"season": "summer",
|
| 96 |
+
"formality": "smart-casual",
|
| 97 |
+
"description": "A cropped satin shirt with a bold zebra print, featuring a tie-front closure and long sleeves. This stylish top is perfect for a warm weather outfit.",
|
| 98 |
+
"id": "garment_009",
|
| 99 |
+
"image_ref": "garment_009.jpg"
|
| 100 |
+
},
|
| 101 |
+
{
|
| 102 |
+
"type": "jacket",
|
| 103 |
+
"color": "silver",
|
| 104 |
+
"material": "leather",
|
| 105 |
+
"pattern": "solid",
|
| 106 |
+
"season": "autumn",
|
| 107 |
+
"formality": "smart-casual",
|
| 108 |
+
"description": "A cropped silver leather biker jacket with a belted waist and a classic motorcycle style. It features a shiny finish and a slim fit, suitable for layering in cooler weather.",
|
| 109 |
+
"id": "garment_010",
|
| 110 |
+
"image_ref": "garment_010.jpg"
|
| 111 |
+
},
|
| 112 |
+
{
|
| 113 |
+
"type": "pants",
|
| 114 |
+
"color": "blue",
|
| 115 |
+
"material": "denim",
|
| 116 |
+
"pattern": "striped",
|
| 117 |
+
"season": "spring",
|
| 118 |
+
"formality": "smart-casual",
|
| 119 |
+
"description": "High-waisted denim pants with black panels on the sides and legs, creating a modern and asymmetrical design. The fit is tailored and suitable for a stylish, casual yet put-together look.",
|
| 120 |
+
"id": "garment_011",
|
| 121 |
+
"image_ref": "garment_011.jpg"
|
| 122 |
+
},
|
| 123 |
+
{
|
| 124 |
+
"type": "boots",
|
| 125 |
+
"color": "black",
|
| 126 |
+
"material": "unknown",
|
| 127 |
+
"pattern": "solid",
|
| 128 |
+
"season": "all",
|
| 129 |
+
"formality": "smart-casual",
|
| 130 |
+
"description": "These black ankle boots feature a pointed toe and a chunky block heel, offering a sleek and modern style suitable for a variety of outfits.",
|
| 131 |
+
"id": "garment_012",
|
| 132 |
+
"image_ref": "garment_012.jpg"
|
| 133 |
+
},
|
| 134 |
+
{
|
| 135 |
+
"type": "blazer",
|
| 136 |
+
"color": "beige",
|
| 137 |
+
"material": "linen",
|
| 138 |
+
"pattern": "striped",
|
| 139 |
+
"season": "spring",
|
| 140 |
+
"formality": "smart-casual",
|
| 141 |
+
"description": "A light beige blazer with a double-breasted design and subtle vertical stripes, featuring gold-tone buttons and a relaxed fit suitable for smart-casual occasions.",
|
| 142 |
+
"id": "garment_013",
|
| 143 |
+
"image_ref": "garment_013.jpg"
|
| 144 |
+
},
|
| 145 |
+
{
|
| 146 |
+
"type": "top",
|
| 147 |
+
"color": "black",
|
| 148 |
+
"material": "satin",
|
| 149 |
+
"pattern": "solid",
|
| 150 |
+
"season": "summer",
|
| 151 |
+
"formality": "casual",
|
| 152 |
+
"description": "A black satin crop top with delicate lace trim along the neckline and straps, offering a sleek and minimalist style suitable for warm weather.",
|
| 153 |
+
"id": "garment_014",
|
| 154 |
+
"image_ref": "garment_014.jpg"
|
| 155 |
+
},
|
| 156 |
+
{
|
| 157 |
+
"type": "jeans",
|
| 158 |
+
"color": "blue",
|
| 159 |
+
"material": "denim",
|
| 160 |
+
"pattern": "solid",
|
| 161 |
+
"season": "spring",
|
| 162 |
+
"formality": "casual",
|
| 163 |
+
"description": "Wide-leg, light blue denim jeans with embroidered details and a relaxed fit, perfect for a casual summer outfit.",
|
| 164 |
+
"id": "garment_015",
|
| 165 |
+
"image_ref": "garment_015.jpg"
|
| 166 |
+
},
|
| 167 |
+
{
|
| 168 |
+
"type": "boots",
|
| 169 |
+
"color": "black",
|
| 170 |
+
"material": "leather",
|
| 171 |
+
"pattern": "solid",
|
| 172 |
+
"season": "all",
|
| 173 |
+
"formality": "casual",
|
| 174 |
+
"description": "Classic black leather Chelsea boots with a chunky platform sole and laces. These boots have a rugged, casual style suitable for everyday wear.",
|
| 175 |
+
"id": "garment_016",
|
| 176 |
+
"image_ref": "garment_016.jpg"
|
| 177 |
+
},
|
| 178 |
+
{
|
| 179 |
+
"type": "cardigan",
|
| 180 |
+
"color": "green",
|
| 181 |
+
"material": "knit",
|
| 182 |
+
"pattern": "plaid",
|
| 183 |
+
"season": "autumn",
|
| 184 |
+
"formality": "casual",
|
| 185 |
+
"description": "A cozy, oversized plaid cardigan in a muted green color with a v-neck and button closures. It has pockets and a relaxed fit, perfect for layering during the fall.",
|
| 186 |
+
"id": "garment_017",
|
| 187 |
+
"image_ref": "garment_017.jpg"
|
| 188 |
+
},
|
| 189 |
+
{
|
| 190 |
+
"type": "pants",
|
| 191 |
+
"color": "black",
|
| 192 |
+
"material": "leather",
|
| 193 |
+
"pattern": "solid",
|
| 194 |
+
"season": "autumn",
|
| 195 |
+
"formality": "smart-casual",
|
| 196 |
+
"description": "High-waisted black leather pants with a zip front and asymmetrical cut, creating a modern and edgy style suitable for a smart-casual look.",
|
| 197 |
+
"id": "garment_018",
|
| 198 |
+
"image_ref": "garment_018.jpg"
|
| 199 |
+
},
|
| 200 |
+
{
|
| 201 |
+
"type": "coat",
|
| 202 |
+
"color": "black",
|
| 203 |
+
"material": "woven",
|
| 204 |
+
"pattern": "striped",
|
| 205 |
+
"season": "autumn",
|
| 206 |
+
"formality": "smart-casual",
|
| 207 |
+
"description": "Oversized double-breasted coat in black and white stripes with a wide belt and decorative buckle. The coat has a relaxed fit and a structured silhouette, suitable for layering in cooler weather.",
|
| 208 |
+
"id": "garment_019",
|
| 209 |
+
"image_ref": "garment_019.jpg"
|
| 210 |
+
},
|
| 211 |
+
{
|
| 212 |
+
"type": "blazer",
|
| 213 |
+
"color": "black",
|
| 214 |
+
"material": "woven",
|
| 215 |
+
"pattern": "striped",
|
| 216 |
+
"season": "autumn",
|
| 217 |
+
"formality": "smart-casual",
|
| 218 |
+
"description": "A black and white striped blazer with a double-breasted design and a belted waist, creating a tailored yet stylish silhouette.",
|
| 219 |
+
"id": "garment_020",
|
| 220 |
+
"image_ref": "garment_020.jpg"
|
| 221 |
+
},
|
| 222 |
+
{
|
| 223 |
+
"type": "shirt",
|
| 224 |
+
"color": "light blue",
|
| 225 |
+
"material": "knit",
|
| 226 |
+
"pattern": "solid",
|
| 227 |
+
"season": "summer",
|
| 228 |
+
"formality": "casual",
|
| 229 |
+
"description": "A light blue, short-sleeved polo shirt with a v-neck and a slim fit, perfect for warm weather and casual occasions.",
|
| 230 |
+
"id": "garment_021",
|
| 231 |
+
"image_ref": "garment_021.jpg"
|
| 232 |
+
},
|
| 233 |
+
{
|
| 234 |
+
"type": "skirt",
|
| 235 |
+
"color": "orange",
|
| 236 |
+
"material": "leather",
|
| 237 |
+
"pattern": "solid",
|
| 238 |
+
"season": "autumn",
|
| 239 |
+
"formality": "smart-casual",
|
| 240 |
+
"description": "A high-waisted, A-line leather skirt in a vibrant orange color. It has a sleek and polished appearance suitable for a smart-casual outfit.",
|
| 241 |
+
"id": "garment_022",
|
| 242 |
+
"image_ref": "garment_022.jpg"
|
| 243 |
+
},
|
| 244 |
+
{
|
| 245 |
+
"type": "shoes",
|
| 246 |
+
"color": "orange",
|
| 247 |
+
"material": "suede",
|
| 248 |
+
"pattern": "solid",
|
| 249 |
+
"season": "autumn",
|
| 250 |
+
"formality": "smart-casual",
|
| 251 |
+
"description": "Elegant pointed-toe high heels in a vibrant orange suede, featuring a stiletto heel and a red sole. These shoes are a sophisticated choice for a dressy occasion.",
|
| 252 |
+
"id": "garment_023",
|
| 253 |
+
"image_ref": "garment_023.jpg"
|
| 254 |
+
},
|
| 255 |
+
{
|
| 256 |
+
"type": "top",
|
| 257 |
+
"color": "beige",
|
| 258 |
+
"material": "woven",
|
| 259 |
+
"pattern": "floral",
|
| 260 |
+
"season": "spring",
|
| 261 |
+
"formality": "smart-casual",
|
| 262 |
+
"description": "This beige top features a floral pattern and puffed sleeves, creating a romantic and slightly formal look. The square neckline and woven fabric suggest a lightweight and elegant design.",
|
| 263 |
+
"id": "garment_024",
|
| 264 |
+
"image_ref": "garment_024.jpg"
|
| 265 |
+
},
|
| 266 |
+
{
|
| 267 |
+
"type": "top",
|
| 268 |
+
"color": "beige",
|
| 269 |
+
"material": "silk",
|
| 270 |
+
"pattern": "floral",
|
| 271 |
+
"season": "spring",
|
| 272 |
+
"formality": "smart-casual",
|
| 273 |
+
"description": "This flowy, square-neck top features puffed sleeves and a delicate floral pattern in beige and orange tones. It has a relaxed fit and would be suitable for warmer weather occasions.",
|
| 274 |
+
"id": "garment_025",
|
| 275 |
+
"image_ref": "garment_025.jpg"
|
| 276 |
+
},
|
| 277 |
+
{
|
| 278 |
+
"type": "pants",
|
| 279 |
+
"color": "black",
|
| 280 |
+
"material": "unknown",
|
| 281 |
+
"pattern": "solid",
|
| 282 |
+
"season": "autumn",
|
| 283 |
+
"formality": "smart-casual",
|
| 284 |
+
"description": "Wide-leg black trousers with a high waist and a tailored fit, suitable for a sophisticated evening look.",
|
| 285 |
+
"id": "garment_026",
|
| 286 |
+
"image_ref": "garment_026.jpg"
|
| 287 |
+
},
|
| 288 |
+
{
|
| 289 |
+
"type": "dress",
|
| 290 |
+
"color": "black",
|
| 291 |
+
"material": "unknown",
|
| 292 |
+
"pattern": "solid",
|
| 293 |
+
"season": "autumn",
|
| 294 |
+
"formality": "formal",
|
| 295 |
+
"description": "A sleek, long-sleeved off-the-shoulder dress in black with a fitted silhouette and button closure. It features long gloves and is suitable for evening events or formal occasions.",
|
| 296 |
+
"id": "garment_027",
|
| 297 |
+
"image_ref": "garment_027.jpg"
|
| 298 |
+
},
|
| 299 |
+
{
|
| 300 |
+
"type": "dress",
|
| 301 |
+
"color": "black",
|
| 302 |
+
"material": "sequin",
|
| 303 |
+
"pattern": "sequined",
|
| 304 |
+
"season": "winter",
|
| 305 |
+
"formality": "formal",
|
| 306 |
+
"description": "A sleek, black sequin strapless mini dress with a shimmering effect, perfect for a glamorous evening event. The dress is paired with tall lace-up boots and a sparkly clutch.",
|
| 307 |
+
"id": "garment_028",
|
| 308 |
+
"image_ref": "garment_028.jpg"
|
| 309 |
+
},
|
| 310 |
+
{
|
| 311 |
+
"type": "dress",
|
| 312 |
+
"color": "black",
|
| 313 |
+
"material": "lace",
|
| 314 |
+
"pattern": "floral",
|
| 315 |
+
"season": "autumn",
|
| 316 |
+
"formality": "smart-casual",
|
| 317 |
+
"description": "This black lace dress features a high neckline, ruffled sleeves, and a fitted silhouette. It's a delicate and elegant piece suitable for a semi-formal occasion.",
|
| 318 |
+
"id": "garment_029",
|
| 319 |
+
"image_ref": "garment_029.jpg"
|
| 320 |
+
},
|
| 321 |
+
{
|
| 322 |
+
"type": "dress",
|
| 323 |
+
"color": "black",
|
| 324 |
+
"material": "lace",
|
| 325 |
+
"pattern": "floral",
|
| 326 |
+
"season": "autumn",
|
| 327 |
+
"formality": "smart-casual",
|
| 328 |
+
"description": "A black lace dress with a high neckline and ruffled sleeves, featuring a floral pattern and a fitted silhouette. It is paired with heels and jewelry for a sophisticated and elegant look.",
|
| 329 |
+
"id": "garment_030",
|
| 330 |
+
"image_ref": "garment_030.jpg"
|
| 331 |
+
},
|
| 332 |
+
{
|
| 333 |
+
"type": "dress",
|
| 334 |
+
"color": "black",
|
| 335 |
+
"material": "velvet",
|
| 336 |
+
"pattern": "solid",
|
| 337 |
+
"season": "winter",
|
| 338 |
+
"formality": "formal",
|
| 339 |
+
"description": "A fitted black velvet dress with dramatic puffed sleeves and a high neckline adorned with emerald green stones. It features a statement necklace and is suitable for a glamorous evening event.",
|
| 340 |
+
"id": "garment_031",
|
| 341 |
+
"image_ref": "garment_031.jpg"
|
| 342 |
+
},
|
| 343 |
+
{
|
| 344 |
+
"type": "dress",
|
| 345 |
+
"color": "black",
|
| 346 |
+
"material": "velvet",
|
| 347 |
+
"pattern": "solid",
|
| 348 |
+
"season": "winter",
|
| 349 |
+
"formality": "formal",
|
| 350 |
+
"description": "A fitted, short velvet dress with long sleeves adorned with emerald green embellishments. It is a luxurious and elegant piece suitable for formal occasions.",
|
| 351 |
+
"id": "garment_032",
|
| 352 |
+
"image_ref": "garment_032.jpg"
|
| 353 |
+
},
|
| 354 |
+
{
|
| 355 |
+
"type": "blazer",
|
| 356 |
+
"color": "black",
|
| 357 |
+
"material": "polyester",
|
| 358 |
+
"pattern": "solid",
|
| 359 |
+
"season": "all",
|
| 360 |
+
"formality": "smart-casual",
|
| 361 |
+
"description": "A cropped black blazer with a tie-front closure, featuring a tailored fit and a sleek, modern style.",
|
| 362 |
+
"id": "garment_033",
|
| 363 |
+
"image_ref": "garment_033.jpg"
|
| 364 |
+
},
|
| 365 |
+
{
|
| 366 |
+
"type": "bag",
|
| 367 |
+
"color": "black",
|
| 368 |
+
"material": "leather",
|
| 369 |
+
"pattern": "solid",
|
| 370 |
+
"season": "all",
|
| 371 |
+
"formality": "smart-casual",
|
| 372 |
+
"description": "A structured black leather handbag with a gold heart-shaped embellishment on the front. It features a detachable shoulder strap and a classic, sophisticated design.",
|
| 373 |
+
"id": "garment_034",
|
| 374 |
+
"image_ref": "garment_034.jpg"
|
| 375 |
+
},
|
| 376 |
+
{
|
| 377 |
+
"type": "skirt",
|
| 378 |
+
"color": "red",
|
| 379 |
+
"material": "denim",
|
| 380 |
+
"pattern": "solid",
|
| 381 |
+
"season": "spring",
|
| 382 |
+
"formality": "casual",
|
| 383 |
+
"description": "A short, fitted denim skirt in a vibrant red color with a button-down front and a classic style. It appears to be a casual garment suitable for warmer weather.",
|
| 384 |
+
"id": "garment_035",
|
| 385 |
+
"image_ref": "garment_035.jpg"
|
| 386 |
+
},
|
| 387 |
+
{
|
| 388 |
+
"type": "top",
|
| 389 |
+
"color": "black",
|
| 390 |
+
"material": "velvet",
|
| 391 |
+
"pattern": "floral",
|
| 392 |
+
"season": "autumn",
|
| 393 |
+
"formality": "smart-casual",
|
| 394 |
+
"description": "This black velvet top features a high neckline and embellished floral embroidery with red, white, and gold accents. It has a fitted silhouette and a halter neck design, suitable for a stylish and slightly dressy occasion.",
|
| 395 |
+
"id": "garment_036",
|
| 396 |
+
"image_ref": "garment_036.jpg"
|
| 397 |
+
},
|
| 398 |
+
{
|
| 399 |
+
"type": "bag",
|
| 400 |
+
"color": "red",
|
| 401 |
+
"material": "leather",
|
| 402 |
+
"pattern": "solid",
|
| 403 |
+
"season": "all",
|
| 404 |
+
"formality": "smart-casual",
|
| 405 |
+
"description": "A vibrant red, structured handbag with a curved silhouette and a detachable tassel strap. The bag features a gold logo detail and a sleek, modern design suitable for a variety of occasions.",
|
| 406 |
+
"id": "garment_037",
|
| 407 |
+
"image_ref": "garment_037.jpg"
|
| 408 |
+
},
|
| 409 |
+
{
|
| 410 |
+
"type": "dress",
|
| 411 |
+
"color": "black",
|
| 412 |
+
"material": "satin",
|
| 413 |
+
"pattern": "floral",
|
| 414 |
+
"season": "autumn",
|
| 415 |
+
"formality": "smart-casual",
|
| 416 |
+
"description": "A fitted black satin dress with a vibrant floral pattern of red and green, featuring a wrap-style bodice and a flattering silhouette.",
|
| 417 |
+
"id": "garment_038",
|
| 418 |
+
"image_ref": "garment_038.jpg"
|
| 419 |
+
},
|
| 420 |
+
{
|
| 421 |
+
"type": "boots",
|
| 422 |
+
"color": "black",
|
| 423 |
+
"material": "unknown",
|
| 424 |
+
"pattern": "solid",
|
| 425 |
+
"season": "autumn",
|
| 426 |
+
"formality": "smart-casual",
|
| 427 |
+
"description": "Tall, pointed-toe stiletto boots in black with a sleek, fitted design. These boots are suitable for a sophisticated and stylish look, perfect for cooler weather.",
|
| 428 |
+
"id": "garment_039",
|
| 429 |
+
"image_ref": "garment_039.jpg"
|
| 430 |
+
},
|
| 431 |
+
{
|
| 432 |
+
"type": "shirt",
|
| 433 |
+
"color": "red",
|
| 434 |
+
"material": "silk",
|
| 435 |
+
"pattern": "floral",
|
| 436 |
+
"season": "autumn",
|
| 437 |
+
"formality": "smart-casual",
|
| 438 |
+
"description": "A short-sleeved shirt with a V-neck and a floral pattern of red and black, featuring a structured fit and a ruffled skirt. It appears to be a stylish and slightly formal piece suitable for autumn wear.",
|
| 439 |
+
"id": "garment_040",
|
| 440 |
+
"image_ref": "garment_040.jpg"
|
| 441 |
+
},
|
| 442 |
+
{
|
| 443 |
+
"type": "blouse",
|
| 444 |
+
"color": "red",
|
| 445 |
+
"material": "silk",
|
| 446 |
+
"pattern": "floral",
|
| 447 |
+
"season": "spring",
|
| 448 |
+
"formality": "smart-casual",
|
| 449 |
+
"description": "A red and black silk blouse with a floral pattern and a gathered neckline, featuring short sleeves and a button-down closure. It appears to be a stylish and sophisticated piece suitable for warmer weather.",
|
| 450 |
+
"id": "garment_041",
|
| 451 |
+
"image_ref": "garment_041.jpg"
|
| 452 |
+
},
|
| 453 |
+
{
|
| 454 |
+
"type": "pants",
|
| 455 |
+
"color": "white",
|
| 456 |
+
"material": "unknown",
|
| 457 |
+
"pattern": "solid",
|
| 458 |
+
"season": "summer",
|
| 459 |
+
"formality": "smart-casual",
|
| 460 |
+
"description": "Wide-leg, high-waisted white pants with a relaxed fit, perfect for a stylish summer outfit.",
|
| 461 |
+
"id": "garment_042",
|
| 462 |
+
"image_ref": "garment_042.jpg"
|
| 463 |
+
},
|
| 464 |
+
{
|
| 465 |
+
"type": "blazer",
|
| 466 |
+
"color": "white",
|
| 467 |
+
"material": "unknown",
|
| 468 |
+
"pattern": "solid",
|
| 469 |
+
"season": "all",
|
| 470 |
+
"formality": "smart-casual",
|
| 471 |
+
"description": "A cropped white blazer with a tailored fit and a notched lapel, suitable for a smart-casual look.",
|
| 472 |
+
"id": "garment_043",
|
| 473 |
+
"image_ref": "garment_043.jpg"
|
| 474 |
+
},
|
| 475 |
+
{
|
| 476 |
+
"type": "pants",
|
| 477 |
+
"color": "pink",
|
| 478 |
+
"material": "unknown",
|
| 479 |
+
"pattern": "solid",
|
| 480 |
+
"season": "spring",
|
| 481 |
+
"formality": "smart-casual",
|
| 482 |
+
"description": "Wide-leg, pleated pink pants with a fitted waistband, offering a modern and stylish silhouette suitable for warmer weather and dressed-up occasions.",
|
| 483 |
+
"id": "garment_044",
|
| 484 |
+
"image_ref": "garment_044.jpg"
|
| 485 |
+
},
|
| 486 |
+
{
|
| 487 |
+
"type": "shirt",
|
| 488 |
+
"color": "white",
|
| 489 |
+
"material": "cotton",
|
| 490 |
+
"pattern": "striped",
|
| 491 |
+
"season": "spring",
|
| 492 |
+
"formality": "smart-casual",
|
| 493 |
+
"description": "A crisp white button-down shirt with a fitted silhouette and a subtle striped pattern. It features a collar, button-down closure, and a decorative belt at the waist.",
|
| 494 |
+
"id": "garment_045",
|
| 495 |
+
"image_ref": "garment_045.jpg"
|
| 496 |
+
},
|
| 497 |
+
{
|
| 498 |
+
"type": "dress",
|
| 499 |
+
"color": "white",
|
| 500 |
+
"material": "lace",
|
| 501 |
+
"pattern": "floral",
|
| 502 |
+
"season": "spring",
|
| 503 |
+
"formality": "smart-casual",
|
| 504 |
+
"description": "This white lace dress features a fitted bodice and a flared skirt with a delicate floral pattern. It has spaghetti straps and a decorative embellishment, suitable for a semi-formal occasion.",
|
| 505 |
+
"id": "garment_046",
|
| 506 |
+
"image_ref": "garment_046.jpg"
|
| 507 |
+
},
|
| 508 |
+
{
|
| 509 |
+
"type": "dress",
|
| 510 |
+
"color": "white",
|
| 511 |
+
"material": "lace",
|
| 512 |
+
"pattern": "floral",
|
| 513 |
+
"season": "spring",
|
| 514 |
+
"formality": "smart-casual",
|
| 515 |
+
"description": "A delicate white lace dress with a floral pattern and a fitted bodice, perfect for a light and airy spring occasion. The dress features spaghetti straps and a flared skirt.",
|
| 516 |
+
"id": "garment_047",
|
| 517 |
+
"image_ref": "garment_047.jpg"
|
| 518 |
+
},
|
| 519 |
+
{
|
| 520 |
+
"type": "crop top",
|
| 521 |
+
"color": "purple",
|
| 522 |
+
"material": "sequin",
|
| 523 |
+
"pattern": "solid",
|
| 524 |
+
"season": "spring",
|
| 525 |
+
"formality": "smart-casual",
|
| 526 |
+
"description": "A sparkly purple sequin crop top with a halter neckline and thin straps, offering a glamorous and stylish look for warmer weather.",
|
| 527 |
+
"id": "garment_048",
|
| 528 |
+
"image_ref": "garment_048.jpg"
|
| 529 |
+
},
|
| 530 |
+
{
|
| 531 |
+
"type": "bag",
|
| 532 |
+
"color": "purple",
|
| 533 |
+
"material": "suede",
|
| 534 |
+
"pattern": "quilted",
|
| 535 |
+
"season": "all",
|
| 536 |
+
"formality": "smart-casual",
|
| 537 |
+
"description": "A quilted purple suede shoulder bag with a classic Chanel logo closure and a comfortable handle. It has a structured design suitable for both casual and slightly more formal occasions.",
|
| 538 |
+
"id": "garment_049",
|
| 539 |
+
"image_ref": "garment_049.jpg"
|
| 540 |
+
},
|
| 541 |
+
{
|
| 542 |
+
"type": "dress",
|
| 543 |
+
"color": "light blue",
|
| 544 |
+
"material": "unknown",
|
| 545 |
+
"pattern": "floral",
|
| 546 |
+
"season": "spring",
|
| 547 |
+
"formality": "smart-casual",
|
| 548 |
+
"description": "A light blue, off-the-shoulder dress with a floral pattern and a wrap-style design, creating a flattering and elegant silhouette suitable for a semi-formal occasion.",
|
| 549 |
+
"id": "garment_050",
|
| 550 |
+
"image_ref": "garment_050.jpg"
|
| 551 |
+
}
|
| 552 |
+
]
|
data/samples/garments/garment_001.jpg
ADDED
|
data/samples/garments/garment_002.jpg
ADDED
|
data/samples/garments/garment_003.jpg
ADDED
|
data/samples/garments/garment_004.jpg
ADDED
|
data/samples/garments/garment_005.jpg
ADDED
|
data/samples/garments/garment_006.jpg
ADDED
|
data/samples/garments/garment_007.jpg
ADDED
|
data/samples/garments/garment_008.jpg
ADDED
|
data/samples/garments/garment_009.jpg
ADDED
|
data/samples/garments/garment_010.jpg
ADDED
|
data/samples/garments/garment_011.jpg
ADDED
|
data/samples/garments/garment_012.jpg
ADDED
|
data/samples/garments/garment_013.jpg
ADDED
|
data/samples/garments/garment_014.jpg
ADDED
|
data/samples/garments/garment_015.jpg
ADDED
|
data/samples/garments/garment_016.jpg
ADDED
|
data/samples/garments/garment_017.jpg
ADDED
|
data/samples/garments/garment_018.jpg
ADDED
|
data/samples/garments/garment_019.jpg
ADDED
|
data/samples/garments/garment_020.jpg
ADDED
|
data/samples/garments/garment_021.jpg
ADDED
|
data/samples/garments/garment_022.jpg
ADDED
|
data/samples/garments/garment_023.jpg
ADDED
|
data/samples/garments/garment_024.jpg
ADDED
|
data/samples/garments/garment_025.jpg
ADDED
|
data/samples/garments/garment_026.jpg
ADDED
|
data/samples/garments/garment_027.jpg
ADDED
|
data/samples/garments/garment_028.jpg
ADDED
|
data/samples/garments/garment_029.jpg
ADDED
|
data/samples/garments/garment_030.jpg
ADDED
|
data/samples/garments/garment_031.jpg
ADDED
|
data/samples/garments/garment_032.jpg
ADDED
|
data/samples/garments/garment_033.jpg
ADDED
|
data/samples/garments/garment_034.jpg
ADDED
|
data/samples/garments/garment_035.jpg
ADDED
|
data/samples/garments/garment_036.jpg
ADDED
|
data/samples/garments/garment_037.jpg
ADDED
|
data/samples/garments/garment_038.jpg
ADDED
|
data/samples/garments/garment_039.jpg
ADDED
|
data/samples/garments/garment_040.jpg
ADDED
|
data/samples/garments/garment_041.jpg
ADDED
|
data/samples/garments/garment_042.jpg
ADDED
|
data/samples/garments/garment_043.jpg
ADDED
|
data/samples/garments/garment_044.jpg
ADDED
|
data/samples/garments/garment_045.jpg
ADDED
|
data/samples/garments/garment_046.jpg
ADDED
|
data/samples/garments/garment_047.jpg
ADDED
|
data/samples/garments/garment_048.jpg
ADDED
|