import matplotlib.pyplot as plt # Define the class names for the segmentation model class_names = [ "Background", "Hat", "Hair", "Sunglasses", "Upper-clothes", "Skirt", "Pants", "Dress", "Belt", "Left-shoe", "Right-shoe", "Face", "Left-leg", "Right-leg", "Left-arm", "Right-arm", "Bag", "Scarf" ] # Define a color map for visualization color_map = plt.cm.get_cmap('tab20', len(class_names)) # Define a mapping of garment types to related segments that should be included garment_to_segments = { 0: [0], # Background --> segment background only 1: [1, 2, 11], # Hat --> segment hat, hair, and face 2: [2], # Hair --> segment hair only 3: [3, 11], # Sunglasses --> segment sunglasses and face 4: [4, 14, 15], # Upper-clothes --> segment upper clothes, left arm, right arm 5: [5, 6, 12, 13], # Skirt --> segment skirt, pants, left leg, right leg 6: [6, 12, 13], # Pants --> segment pants, left leg, right leg 7: [4, 5, 6, 7, 12, 13, 14, 15], # Dress --> segment whole body except face and hair 8: [8], # Belt --> segment belt only 9: [9], # Left-shoe --> segment left shoe only 10: [10], # Right-shoe --> segment right shoe only 11: [11], # Face --> segment face only 12: [12], # Left-leg --> segment left leg only 13: [13], # Right-leg --> segment right leg only 14: [14], # Left-arm --> segment left arm only 15: [15], # Right-arm --> segment right arm only 16: [16], # Bag --> segment bag only 17: [17, 2, 11] # Scarf --> segment scarf, hair and face } # Define categories for Fashion-CLIP fashion_categories = [ # Upper body "t-shirt", "shirt", "blouse", "tank top", "polo shirt", "sweatshirt", "hoodie", # Outerwear "jacket", "coat", "blazer", "cardigan", "vest", "windbreaker", # Dresses "dress", "shirt dress", "sundress", "evening gown", "maxi dress", "mini dress", # Lower body "jeans", "pants", "trousers", "shorts", "skirt", "leggings", "joggers", "sweatpants", # Formal wear "suit", "tuxedo", "formal shirt", "formal dress", # Undergarments "bra", "underwear", "boxers", "briefs", "lingerie", # Sleepwear "pajamas", "nightgown", "bathrobe", # Swimwear "swimsuit", "bikini", "swim trunks", # Footwear "shoes", "boots", "sneakers", "sandals", "high heels", "loafers", "flats", # Accessories "hat", "cap", "scarf", "gloves", "belt", "tie", "socks", # Bags "handbag", "backpack", "purse", "tote bag" ] # Mapping from Fashion-CLIP categories to SegFormer classes fashion_clip_to_segformer = { # Upper body items -> Upper-clothes (4) "t-shirt": 4, "shirt": 4, "blouse": 4, "tank top": 4, "polo shirt": 4, "sweatshirt": 4, "hoodie": 4, "cardigan": 4, "vest": 4, "formal shirt": 4, # Outerwear -> Upper-clothes (4) "jacket": 4, "coat": 4, "blazer": 4, "windbreaker": 4, # Dresses -> Dress (7) "dress": 7, "shirt dress": 7, "sundress": 7, "evening gown": 7, "maxi dress": 7, "mini dress": 7, "formal dress": 7, # Lower body -> Pants (6) or Skirt (5) "jeans": 6, "pants": 6, "trousers": 6, "shorts": 6, "leggings": 6, "joggers": 6, "sweatpants": 6, "skirt": 5, # Formal wear -> Upper-clothes (4) or Dress (7) "suit": 4, "tuxedo": 4, # Footwear -> Left-shoe/Right-shoe (9/10) "shoes": 9, "boots": 9, "sneakers": 9, "sandals": 9, "high heels": 9, "loafers": 9, "flats": 9, # Accessories "hat": 1, "cap": 1, "scarf": 17, "belt": 8, # Bags "handbag": 16, "backpack": 16, "purse": 16, "tote bag": 16 } # Detailed mapping from categories to segment names category_to_segment_mapping = { # Upper body items map to Upper-clothes and arms "t-shirt": ["Upper-clothes", "Left-arm", "Right-arm"], "shirt": ["Upper-clothes", "Left-arm", "Right-arm"], "blouse": ["Upper-clothes", "Left-arm", "Right-arm"], "tank top": ["Upper-clothes", "Left-arm", "Right-arm"], "polo shirt": ["Upper-clothes", "Left-arm", "Right-arm"], "sweatshirt": ["Upper-clothes", "Left-arm", "Right-arm"], "hoodie": ["Upper-clothes", "Left-arm", "Right-arm"], # Outerwear maps to Upper-clothes and arms "jacket": ["Upper-clothes", "Left-arm", "Right-arm"], "coat": ["Upper-clothes", "Left-arm", "Right-arm"], "blazer": ["Upper-clothes", "Left-arm", "Right-arm"], "cardigan": ["Upper-clothes", "Left-arm", "Right-arm"], "vest": ["Upper-clothes"], "windbreaker": ["Upper-clothes", "Left-arm", "Right-arm"], # Dresses map to Dress "dress": ["Dress", "Upper-clothes", "Skirt", "Pants", "Left-arm", "Right-arm", "Left-leg", "Right-leg"], "shirt dress": ["Dress", "Upper-clothes", "Skirt", "Pants", "Left-arm", "Right-arm", "Left-leg", "Right-leg"], "sundress": ["Dress", "Upper-clothes", "Skirt", "Pants", "Left-arm", "Right-arm", "Left-leg", "Right-leg"], "evening gown": ["Dress", "Upper-clothes", "Skirt", "Pants", "Left-arm", "Right-arm", "Left-leg", "Right-leg"], "maxi dress": ["Dress", "Upper-clothes", "Skirt", "Pants", "Left-arm", "Right-arm", "Left-leg", "Right-leg"], "mini dress": ["Dress", "Upper-clothes", "Skirt", "Pants", "Left-arm", "Right-arm", "Left-leg", "Right-leg"], "formal dress": ["Dress", "Upper-clothes", "Skirt", "Pants", "Left-arm", "Right-arm", "Left-leg", "Right-leg"], # Lower body items map to Pants or Skirt and legs "jeans": ["Pants", "Left-leg", "Right-leg"], "pants": ["Pants", "Left-leg", "Right-leg"], "trousers": ["Pants", "Left-leg", "Right-leg"], "shorts": ["Pants", "Left-leg", "Right-leg"], "skirt": ["Skirt", "Pants", "Left-leg", "Right-leg"], "leggings": ["Pants", "Left-leg", "Right-leg"], "joggers": ["Pants", "Left-leg", "Right-leg"], "sweatpants": ["Pants", "Left-leg", "Right-leg"], # Formal wear maps depending on type "suit": ["Upper-clothes", "Left-arm", "Right-arm", "Pants", "Left-leg", "Right-leg"], "tuxedo": ["Upper-clothes", "Left-arm", "Right-arm", "Pants", "Left-leg", "Right-leg"], "formal shirt": ["Upper-clothes", "Left-arm", "Right-arm"], "formal dress": ["Dress", "Upper-clothes", "Skirt", "Pants", "Left-arm", "Right-arm", "Left-leg", "Right-leg"], # Footwear maps to shoes "shoes": ["Left-shoe", "Right-shoe"], "boots": ["Left-shoe", "Right-shoe"], "sneakers": ["Left-shoe", "Right-shoe"], "sandals": ["Left-shoe", "Right-shoe"], "high heels": ["Left-shoe", "Right-shoe"], "loafers": ["Left-shoe", "Right-shoe"], "flats": ["Left-shoe", "Right-shoe"], # Accessories map to their respective parts "hat": ["Hat"], "cap": ["Hat"], "scarf": ["Scarf", "Face", "Hair"], "gloves": ["Left-arm", "Right-arm"], "belt": ["Belt"], "tie": ["Upper-clothes"], "socks": ["Left-leg", "Right-leg"], # Bags map to Bag "handbag": ["Bag"], "backpack": ["Bag"], "purse": ["Bag"], "tote bag": ["Bag"] }