├── .gitignore ├── README.md ├── config └── mate_v1.json ├── data └── raw │ ├── celebrity_distribution.json │ └── styletips_synset.txt ├── evaluation └── test.py ├── generate_data.py ├── requirement.txt ├── train.py ├── translate.py └── widget ├── __init__.py ├── data.py ├── model.py ├── module.py ├── utils.py └── vis.py /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## MATE: Multimodal Dialogue Systems via Capturing Context-aware Dependencies of Semantic Elements 2 | 3 | 4 | 5 | 6 | This is the PyTorch implementation of the paper: 7 | **Multimodal Dialogue Systems via Capturing Context-aware Dependencies of Semantic Elements**. Weidong He, Zhi Li, Dongcai Lu, Enhong Chen, Tong Xu, Baoxing Huai, Nicholas Jing Yuan. ***ACM MM 2020***. 8 | [[PDF]](https://dl.acm.org/doi/abs/10.1145/3394171.3413679?casa_token=NAfGkcF9aD4AAAAA:RycuI3YzktrxbcAiq10TPiJ3VseRsO_b7VhvTZM_5XZQX3k9Kqrqv8x1_BM3fKBJvC9XWK_tXvY) 9 | 10 | If you use any source codes or datasets included in this toolkit in your work, please cite the following paper. The bibtex is listed below: 11 | 12 |
 13 | @inproceedings{he2020multimodal,
 14 |   title={Multimodal Dialogue Systems via Capturing Context-aware Dependencies of Semantic Elements},
 15 |   author={He, Weidong and Li, Zhi and Lu, Dongcai and Chen, Enhong and Xu, Tong and Huai, Baoxing and Yuan, Jing},
 16 |   booktitle={Proceedings of the 28th ACM International Conference on Multimedia},
 17 |   pages={2755--2764},
 18 |   year={2020}
 19 | }
 20 | 
21 | 22 | ## Abstract 23 | 24 | Recently, multimodal dialogue systems have engaged increasing attention in several domains such as retail, travel, etc. In spite of the promising performance of pioneer works, existing studies usually focus on utterance-level semantic representations with hierarchical structures, which ignore the context-aware dependencies of multimodal semantic elements, i.e., words and images. Moreover, when integrating the visual content, they only consider images of the current turn, leaving out ones of previous turns as well as their ordinal information. To address these issues, we propose a Multimodal diAlogue systems with semanTic Elements, MATE for short. Specifically, we unfold the multimodal inputs and devise a Multimodal Element-level Encoder to obtain the semantic representation at element-level. Besides, we take into consideration all images that might be relevant to the current turn and inject the sequential characteristics of images through position encoding. Finally, we make comprehensive experiments on a public multimodal dialogue dataset in the retail domain, and improve the BLUE-4 score by 9.49, and NIST score by 1.8469 compared with state-of-the-art methods. 25 | 26 | ## Model Architecture 27 | 28 |

29 | 30 |

31 | The architecture of the proposed MATE model, which includes two main components: 32 | 33 | **Multimodal Element-level Encoder**: In this component, all images from the dialog history and the user query are organized as dialog image memory. Then, we allocate related images to each turn and obtain image-enhanced text embeddings through an attention mechanism. Meanwhile, all images are integrated with a user query to get a query-enhanced image embeddings. Finally, all embeddings are concatenated as multimodal semantic element embeddings. 34 | 35 | **Knowledge-aware Two-Stage Decoder**: It is a variant of a transformer decoder for generating better responses. The first-stage decoder focuses on the multimodal conversation context from the encoder, while the second-stage decoder takes domain knowledge and results from the first decoder to further refine the responses. 36 | 37 | ## Dependency 38 | 39 | Check the packages needed or simply run the command, with python 3.7. 40 | 41 | ```console 42 | ❱❱❱ pip install -r requirement.txt 43 | ``` 44 | 45 | ## Preparing Data 46 | 47 |

48 | 49 |

50 | 51 | 1. Download the [MMD dataset](https://amritasaha1812.github.io/MMD/download/) and unzip it. Note that we only use the **dataset.zip** and **image_annoy_index.zip**. The data directory is like this. 52 | 53 | ```console 54 | data 55 | ├── annoy.ann 56 | ├── ImageUrlToIndex.pkl 57 | ├── FileNameMapToIndex.pkl 58 | ├── styletips_synset.txt 59 | ├── celebrity_distribution.json 60 | ├── v1 61 | │ ├── train 62 | │ │ ├── *.json 63 | │ │ └── ... 64 | │ ├── valid 65 | │ └── test 66 | └── v2 67 | ├── train 68 | ├── valid 69 | └── test 70 | ``` 71 | 72 | 2. Process with the following command or just download processed data from [Google Driver](https://drive.google.com/drive/folders/1h-caRW06n7oxD1ARKMXm1CLyY14rRhHq?usp=sharing) 73 | 74 | ```console 75 | ❱❱❱ python3 generate_data.py --input_dir data/raw --out_dir data/processed 76 | ``` 77 | 78 | The final data directory is like this. 79 | 80 | ```console 81 | data 82 | ├── raw 83 | │ ├── annoy.ann 84 | │ ├── ImageUrlToIndex.pkl 85 | │ ├── FileNameMapToIndex.pkl 86 | │ ├── styletips_synset.txt 87 | │ ├── celebrity_distribution.json 88 | │ ├── v1 89 | │ │ ├── train 90 | │ │ │ ├── *.json 91 | │ │ │ └── ... 92 | │ │ ├── valid 93 | │ │ └── test 94 | │ └── v2 95 | │ ├── train 96 | │ ├── valid 97 | │ └── test 98 | └── processed 99 | ├── knowledge.json 100 | ├── v1 101 | │ ├── train.pkl 102 | │ ├── valid.pkl 103 | │ └── test.pkl 104 | └── v2 105 | ├── train.pkl 106 | ├── valid.pkl 107 | └── test.pkl 108 | ``` 109 | 110 | ## Train and test 111 | 112 | Training 113 | 114 | ```console 115 | ❱❱❱ python3 train.py -g 0 --config_file_path config/mate_v1.json --model_path work_path/ --task text --version 1 --context_size 2 --batch_size 32 116 | ``` 117 | 118 | Note that at the first time it will generate train data file to config\["work_path"\], so maybe slow. 119 | 120 | Testing 121 | 122 | ```console 123 | ❱❱❱ python3 translate.py -g 0 --config_file_path config/mate_v1.json --model_path work_path/ --checkpoint_file --out_file save_path/ 124 | ``` 125 | 126 | ## Explanation for config file 127 | 128 | We provide an example config file [mate_v1.json](config/mate_v1.json), which consists of three fields: "training", "data" and "model". The meaning of parameters is as follows: 129 | 130 | training: the parameters in this domain are related to the train process. 131 | 132 | 1. "seed": random seed 133 | 2. "lr": learning rate 134 | 3. "lr_decay": weight decay (L2 penalty) 135 | 4. "max_gradient_norm": max norm of the gradients for clip 136 | 5. "num_epochs": total epochs 137 | 6. "log_batch": logging interval (num of batches) 138 | 7. "evaluate_epoch": evaluation interval (num of epochs) 139 | 8. "patience": patience for early stop 140 | 9. "label_smoothing": if use label smoothing 141 | 142 | data: the parameters in this domain are about data processing. 143 | 144 | 1. "annoy_file": file path for "annoy.ann" 145 | 2. "annoy_pkl": file path for "ImageUrlToIndex.pkl" 146 | 3. "source_path": data source directory 147 | 4. "work_path": work directory 148 | 5. "knowledge_path": knowledge file path 149 | 6. "context_text_cutoff": min word frequency 150 | 7. "text_length": max text length 151 | 8. "image_length": max image num 152 | 9. "num_pos_images": max positive images num 153 | 10. "num_neg_images": max negative images num 154 | 155 | model: the parameters in this domain are related to the model structure and do not need to be adjusted in most cases. 156 | -------------------------------------------------------------------------------- /config/mate_v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "training": { 3 | "seed": 100, 4 | "lr": 1e-5, 5 | "lr_decay": 0, 6 | "max_gradient_norm": 0.1, 7 | "num_epochs": 50, 8 | "log_batch": 100, 9 | "evaluate_epoch": 1, 10 | "patience": 3, 11 | "label_smoothing": 0 12 | }, 13 | "data": { 14 | "annoy_file": "data/raw/annoy.ann", 15 | "annoy_pkl": "data/raw/ImageUrlToIndex.pkl", 16 | "source_path": "data/processed", 17 | "work_path": "data/work_path", 18 | "knowledge_path": "data/processed/knowledge.json", 19 | "context_text_cutoff": 4, 20 | "text_length": 30, 21 | "image_length": 12, 22 | "num_pos_images": 1, 23 | "num_neg_images": 4 24 | }, 25 | "model": { 26 | "word_embedding_size": 512, 27 | "image_size": 4096, 28 | "text_n_layers": 6, 29 | "text_n_head": 8, 30 | "text_d_k": 64, 31 | "text_d_v": 64, 32 | "text_d_model": 512, 33 | "text_d_inner": 2048, 34 | "co_n_layers": 6, 35 | "co_n_head": 8, 36 | "co_d_k": 64, 37 | "co_d_v": 64, 38 | "co_d_model": 512, 39 | "co_d_inner": 2048, 40 | "de_n_layers": 6, 41 | "de_n_head": 8, 42 | "de_d_k": 64, 43 | "de_d_v": 64, 44 | "de_d_model": 512, 45 | "de_d_inner": 2048, 46 | "dropout_rate": 0.1, 47 | "use_knowledge": true 48 | } 49 | } -------------------------------------------------------------------------------- /data/raw/styletips_synset.txt: -------------------------------------------------------------------------------- 1 | footwear , jacket , 718 2 | trouser , v-neck , 44 3 | coat , romper , 71 4 | tote , watch , 31 5 | beanies , sweater , 5 6 | leggings , sandals , 727 7 | casual trousers , winter jacket , 26 8 | leggings , slippers , 304 9 | sunglasses , sweatshirt , 314 10 | bikini , sunglasses , 83 11 | clogs , jeans , 167 12 | running shoes , top , 43 13 | kimono , leggings , 6 14 | bag , card case , 338 15 | dupatta , necklace , 398 16 | henley , sweater , 18 17 | formal trousers , slip ons , 2 18 | palazzo , scarf , 138 19 | shape wear , vest , 20 20 | leggings , wedges , 606 21 | accessories , push-up bra , 6 22 | ring , saree , 24 23 | belly shoes , bottoms , 17 24 | satchel , suit , 29 25 | belt , trousers , 763 26 | bottoms , shrug , 134 27 | apparel , winter jacket , 40 28 | flipflops , t-shirt , 533 29 | hand bag , top , 840 30 | derby , sweatshirt , 34 31 | kurta , trouser , 823 32 | messenger bag , polo , 27 33 | bag , night slip , 17 34 | boots , clutch , 24 35 | bag , fedora , 12 36 | casual jacket , sling bag , 4 37 | accessories , ballerinas , 618 38 | t-shirt , vest , 394 39 | card case , jewelry , 12 40 | blouse , casual trousers , 281 41 | bottoms , suspender , 16 42 | cardigan , glasses , 59 43 | slippers , tunic , 4 44 | accessories , cufflinks , 99 45 | ring , sweatshirt , 35 46 | trousers , v-neck , 2 47 | formal shirt , necktie , 341 48 | layer_1_lower_body , slip ons , 78 49 | leather jacket , maxi dress , 7 50 | card case , suit , 79 51 | cardigan , trousers , 299 52 | bottoms , hand bag , 165 53 | platform heels , trouser , 86 54 | boots , shirt , 517 55 | shorts , suspender , 15 56 | laptop bag , panties , 29 57 | pyjama , sandals , 58 58 | flipflops , leggings , 27 59 | bow tie , card case , 108 60 | satchel , shirt , 15 61 | camisole , palazzo , 8 62 | top , trench coat , 12 63 | loafers , skirt , 150 64 | cape , suit , 12 65 | casual trousers , messenger bag , 18 66 | earrings , sandals , 533 67 | beanies , belt , 12 68 | ballerinas , travel bag , 2 69 | gloves , wedding dress , 354 70 | bag , suit , 62 71 | bottoms , fedora , 92 72 | t-shirt , wallet , 3 73 | high tops , trouser , 28 74 | necklace , sweater , 14 75 | denim jacket , lifestyle shoes , 27 76 | joggers , polo , 111 77 | bottoms , tuxedo , 31 78 | jewelry , lapel pin , 29 79 | cap , dress material , 4 80 | jeans , watch , 436 81 | bag , blouse , 22 82 | bag , sweatshirt , 307 83 | accessories , trackwear , 7 84 | clutch , watch , 17 85 | slip ons , waistcoat , 1 86 | flipflops , purse , 9 87 | kurta , palazzo , 785 88 | pajama , satchel , 32 89 | sandals , v-neck , 665 90 | leather jacket , sweatshirt , 1 91 | slip ons , trench coat , 1 92 | bottoms , brogues , 6 93 | jewelry , top , 96 94 | apparel , outerwear , 66 95 | bracelet , dupatta , 182 96 | bottoms , flipflops , 743 97 | brogues , maxi dress , 2 98 | boots , sweater , 45 99 | t-shirt , training shoes , 55 100 | belt , layer_1_lower_body , 1 101 | maxi dress , platform heels , 266 102 | accessories , backpack , 69 103 | sports shoes , t-shirt , 794 104 | ballerinas , bikini , 189 105 | brogues , cardigan , 30 106 | jumpsuit , pumps , 768 107 | lifestyle shoes , trousers , 489 108 | casual shoes , v-neck , 188 109 | jacket , spectators , 7 110 | cardigan , joggers , 9 111 | hoodie , loafers , 1 112 | footwear , trackpants , 118 113 | sports bra , vest , 50 114 | casual shoes , trousers , 695 115 | handkerchief , maxi dress , 2 116 | cardigan , derby , 7 117 | bottoms , fitness band , 34 118 | glasses , jewelry , 176 119 | joggers , loafers , 107 120 | floaters , trackpants , 6 121 | lapel pin , suit , 37 122 | glasses , top , 142 123 | cardigan , party dress , 16 124 | jeans , pumps , 603 125 | dress socks , footwear , 212 126 | loafers , stockings , 25 127 | hipsters , padded bra , 7 128 | apparel , lapel pin , 11 129 | peeptoes , skirt , 536 130 | pumps , romper , 6 131 | belt , chinos , 457 132 | scarf , tunic , 89 133 | blouse , leggings , 58 134 | sunglasses , wallet , 126 135 | apparel , bag , 689 136 | blouse , jeans , 875 137 | sandals , trackwear , 141 138 | flipflops , glasses , 13 139 | footwear , sports bra , 5 140 | necktie , tights , 1 141 | accessories , ring , 129 142 | layer_1_upper_body , slippers , 416 143 | travel bag , trousers , 3 144 | cardigan , suspender , 45 145 | ballerinas , laptop bag , 5 146 | denim shorts , lifestyle shoes , 20 147 | pyjama , suit , 62 148 | camisole , necktie , 27 149 | jacket , scarf , 52 150 | coat , suit , 14 151 | cape , jewelry , 6 152 | chinos , henley , 303 153 | casual trousers , flipflops , 36 154 | accessories , palazzo , 3 155 | scarf , suitcase , 66 156 | boxer briefs , suit , 1 157 | leggings , peeptoes , 93 158 | camisole , high tops , 23 159 | bracelet , vest , 122 160 | ballerinas , party dress , 63 161 | espadrilles , suit , 41 162 | accessories , sports bra , 35 163 | canvas shoes , denim jacket , 2 164 | belt , slippers , 1 165 | glasses , shirt , 57 166 | pumps , sling bag , 93 167 | casual shirt , sports sandals , 4 168 | espadrilles , kurti , 16 169 | apparel , apparel , 438 170 | coat , mittens , 3 171 | running shoes , trackpants , 101 172 | goggles , suit , 31 173 | bag , laptop sleeve , 11 174 | denim jacket , suit , 8 175 | sweatshirt , waistcoat , 6 176 | belly shoes , jacket , 23 177 | belt , t-shirt , 145 178 | jumper , wedges , 30 179 | apparel , stilettos , 534 180 | messenger bag , trousers , 257 181 | sling bag , trouser , 55 182 | formal shirt , slip ons , 19 183 | belly shoes , palazzo , 272 184 | loafers , trackwear , 27 185 | footwear , shrug , 451 186 | denim jacket , scarf , 16 187 | socks , trousers , 33 188 | loafers , suspender , 4 189 | trackpants , vest , 16 190 | clutch , kurta , 702 191 | ballerinas , shorts , 677 192 | formal shoes , glasses , 44 193 | hand bag , maxi dress , 98 194 | backpack , card case , 37 195 | cape , jeans , 74 196 | bag , jumpsuit , 171 197 | accessories , saree , 9 198 | oxfords shoe , suit , 1 199 | kurta , thermal , 173 200 | flipflops , sleepwear , 139 201 | cardigan , thermal , 6 202 | suspender , wallet , 35 203 | shrug , trousers , 157 204 | t-shirt , trousers , 564 205 | footwear , hipsters , 3 206 | casual shoes , jewelry , 1 207 | sandals , sports bra , 24 208 | ballerinas , turtleneck , 22 209 | loafers , night slip , 30 210 | accessories , down jacket , 8 211 | goggles , tote , 6 212 | loafers , shirt dress , 15 213 | scarf , sweatshirt , 215 214 | goggles , trackwear , 1 215 | glasses , layer_1_upper_body , 6 216 | scarf , sleepwear , 62 217 | derby , messenger bag , 84 218 | blouse , necklace , 67 219 | footwear , thongs , 128 220 | accessories , jacket , 560 221 | coat , dungaree , 44 222 | casual shirt , jeans , 876 223 | loafers , scarf , 9 224 | bag , briefs , 6 225 | laptop bag , ring , 4 226 | derby , shorts , 4 227 | formal shirt , pumps , 43 228 | bottoms , stilettos , 397 229 | dupatta , stilettos , 2 230 | jacket , necklace , 35 231 | jeans , scarf , 11 232 | accessories , cap , 357 233 | jeans , oxfords shoe , 20 234 | apparel , sports shoes , 825 235 | canvas shoes , casual jacket , 2 236 | messenger bag , panties , 64 237 | belly shoes , maxi dress , 442 238 | apparel , polo , 67 239 | bodysuit , corset , 101 240 | chinos , vest , 76 241 | running shorts , sports shoes , 4 242 | accessories , cape , 119 243 | footwear , joggers , 557 244 | flipflops , thongs , 498 245 | messenger bag , wing tips , 1 246 | brogues , suit , 134 247 | chinos , derby , 50 248 | layer_1_upper_body , socks , 1 249 | brogues , formal shirt , 64 250 | shorts , training shoes , 21 251 | v-neck , winter jacket , 19 252 | dungaree , necklace , 7 253 | cap , night slip , 5 254 | earrings , kurti , 349 255 | shirt dress , sports shoes , 22 256 | accessories , running shoes , 519 257 | casual shoes , top , 587 258 | canvas shoes , sunglasses , 49 259 | jeans , leather jacket , 313 260 | coat , jeans , 203 261 | henley , purse , 44 262 | costume , wedges , 55 263 | ballerinas , trackpants , 48 264 | coat , stilettos , 15 265 | cardigan , formal trousers , 38 266 | stilettos , trackpants , 2 267 | boots , cardigan , 51 268 | casual trousers , floaters , 1 269 | sling bag , stilettos , 36 270 | casual trousers , shrug , 1 271 | ring , slippers , 4 272 | jeans , jumper , 179 273 | jeans , monk straps , 1 274 | ballerinas , rugby , 50 275 | bottoms , bracelet , 19 276 | crewneck , tunic , 14 277 | bottoms , boxers , 68 278 | cap , high tops , 22 279 | goggles , trouser , 107 280 | accessories , loafers , 11 281 | pyjama , sports shoes , 4 282 | peeptoes , sunglasses , 20 283 | espadrilles , trouser , 115 284 | formal shirt , oxfords shoe , 19 285 | belt , sports sandals , 19 286 | cardigan , jeans , 68 287 | bag , lifestyle shoes , 173 288 | flipflops , kurti , 14 289 | clutch , dupatta , 155 290 | belly shoes , trouser , 661 291 | crewneck , leggings , 2 292 | joggers , wallet , 15 293 | apparel , cufflinks , 116 294 | jeggings , platform heels , 24 295 | coat , maxi dress , 43 296 | dress , winter jacket , 16 297 | jewelry , maxi dress , 7 298 | boots , casual shirt , 95 299 | pumps , sweater , 150 300 | glasses , training shoes , 5 301 | earrings , jumpsuit , 247 302 | saree , watch , 29 303 | gloves , purse , 9 304 | floaters , trouser , 2 305 | belly shoes , trousers , 370 306 | scarf , skirt , 135 307 | derby , waistcoat , 19 308 | dress , purse , 679 309 | footwear , jeggings , 134 310 | espadrilles , tote , 4 311 | ballerinas , cargo shorts , 358 312 | henley , messenger bag , 34 313 | sports sandals , vest , 24 314 | chinos , trunk , 102 315 | necktie , pumps , 101 316 | cap , swimsuit , 31 317 | henley , joggers , 26 318 | cargo shorts , loafers , 43 319 | belly shoes , footwear , 23 320 | blazer , footwear , 391 321 | cardigan , goggles , 36 322 | cufflinks , necktie , 640 323 | jacket , sports sandals , 23 324 | kurta , shrug , 86 325 | bag , bow tie , 72 326 | cudidar , dupatta , 130 327 | stockings , sweater , 9 328 | apparel , sling bag , 242 329 | denim shorts , loafers , 8 330 | gloves , leather jacket , 1 331 | casual shoes , dungaree , 59 332 | blazer , top , 285 333 | shrug , tights , 13 334 | clutch , palazzo , 6 335 | watch , winter jacket , 34 336 | bottoms , robe , 12 337 | blouse , espadrilles , 20 338 | clogs , polo , 24 339 | backpack , espadrilles , 5 340 | boots , fedora , 14 341 | backpack , trouser , 44 342 | bag , scarf , 4 343 | cufflinks , tuxedo , 4 344 | slip ons , thermal , 6 345 | cap , sweater , 20 346 | slip ons , suitcase , 61 347 | boots , sweatshirt , 283 348 | bottoms , padded bra , 4 349 | necktie , suit , 685 350 | accessories , bomber jacket , 5 351 | leggings , socks , 167 352 | jumpsuit , necklace , 97 353 | denim shorts , slip ons , 4 354 | slippers , trousers , 258 355 | cap , slip ons , 50 356 | night slip , thongs , 16 357 | bag , dupatta , 28 358 | dress , flipflops , 271 359 | chinos , clogs , 8 360 | bag , kurta , 5 361 | ring , trouser , 11 362 | blouse , sandals , 853 363 | belt , formal shoes , 167 364 | cap , watch , 86 365 | hand bag , ring , 20 366 | ballerinas , socks , 289 367 | shrug , trouser , 254 368 | lifestyle shoes , tote , 7 369 | footwear , maxi dress , 776 370 | dress socks , jeans , 15 371 | cape , footwear , 142 372 | dress , platform heels , 127 373 | belt , swimsuit , 62 374 | boots , short dress , 28 375 | earrings , pumps , 76 376 | necklace , trousers , 22 377 | bomber jacket , cap , 5 378 | cap , flipflops , 173 379 | dupatta , satchel , 1 380 | camisole , swimsuit , 10 381 | accessories , wedding dress , 104 382 | palazzo , sweatshirt , 23 383 | backpack , layer_1_upper_body , 8 384 | polo , sweater , 143 385 | hipsters , trousers , 31 386 | leggings , shrug , 21 387 | gloves , sunglasses , 20 388 | socks , thongs , 1 389 | dress , slippers , 132 390 | bottoms , skirt , 13 391 | pajama , purse , 14 392 | suit , trench coat , 8 393 | bag , sweater , 88 394 | apparel , shirt dress , 203 395 | bag , training shoes , 69 396 | bag , joggers , 70 397 | accessories , pyjama , 124 398 | goggles , sweatshirt , 234 399 | ballerinas , jacket , 532 400 | footwear , training shoes , 114 401 | ballerinas , jumper , 32 402 | bag , jewelry , 80 403 | bag , blazer , 7 404 | bracelet , gloves , 12 405 | formal shirt , trousers , 48 406 | necklace , saree , 649 407 | bow tie , jacket , 56 408 | derby , shirt , 705 409 | bodysuit , cap , 28 410 | apparel , tuxedo , 83 411 | bomber jacket , sandals , 13 412 | bracelet , shorts , 6 413 | footwear , layer_1_lower_body , 8 414 | boots , messenger bag , 168 415 | boots , footwear , 548 416 | boots , gloves , 41 417 | casual trousers , sweater , 18 418 | accessories , pajama , 315 419 | casual shoes , polo , 729 420 | boots , mittens , 15 421 | flipflops , palazzo , 5 422 | apparel , night slip , 72 423 | casual trousers , sunglasses , 14 424 | casual trousers , wedges , 2 425 | dungaree , shrug , 2 426 | boxer briefs , polo , 1 427 | purse , suit , 189 428 | ballerinas , sweatshirt , 153 429 | accessories , messenger bag , 43 430 | jumpsuit , panties , 17 431 | dress socks , suit , 16 432 | belt , belt , 11 433 | jacket , satchel , 14 434 | cap , satchel , 17 435 | cardigan , kurta , 61 436 | polo , stilettos , 22 437 | loafers , tuxedo , 22 438 | accessories , sling bag , 78 439 | casual trousers , sports shoes , 91 440 | cardigan , swimsuit , 8 441 | dress , necklace , 468 442 | high tops , shirt , 134 443 | suit , vest , 26 444 | tote , wedges , 18 445 | cap , wedges , 142 446 | palazzo , satchel , 6 447 | goggles , loafers , 168 448 | corset , shrug , 16 449 | thongs , wedges , 259 450 | churidar set , glasses , 6 451 | athletic socks , slip ons , 4 452 | accessories , swim trunks , 11 453 | bikini , kimono , 36 454 | brogues , goggles , 6 455 | goggles , skirt , 68 456 | bottoms , leggings , 47 457 | leggings , loafers , 12 458 | flipflops , shirt , 243 459 | bottoms , churidar set , 330 460 | ballerinas , stockings , 58 461 | blouse , bracelet , 139 462 | trouser , winter jacket , 327 463 | casual trousers , pumps , 7 464 | belt , tote , 93 465 | scarf , sunglasses , 15 466 | suspender , vest , 161 467 | ankle boots , jeans , 137 468 | apparel , windcheater , 39 469 | espadrilles , jumpsuit , 8 470 | footwear , swimsuit , 10 471 | bikini , goggles , 38 472 | formal shoes , goggles , 9 473 | bag , shorts , 323 474 | bag , sling bag , 540 475 | sandals , saree , 223 476 | sports shoes , trackpants , 409 477 | bottoms , joggers , 9 478 | boots , trench coat , 66 479 | purse , skirt , 188 480 | costume , leather jacket , 3 481 | ballerinas , robe , 9 482 | sleepwear , slip ons , 37 483 | footwear , suit , 644 484 | crewneck , trouser , 3 485 | blouse , outerwear , 1 486 | mini skirt , tunic , 3 487 | espadrilles , formal trousers , 156 488 | bag , henley , 19 489 | jewelry , thongs , 10 490 | backpack , necktie , 21 491 | accessories , bottoms , 186 492 | sports shoes , watch , 158 493 | espadrilles , skirt , 5 494 | accessories , mini skirt , 43 495 | blazer , casual trousers , 5 496 | bikini , sandals , 1 497 | footwear , high tops , 111 498 | boots , kurta , 11 499 | espadrilles , maxi dress , 48 500 | briefs , polo , 21 501 | accessories , bracelet , 191 502 | peeptoes , shirt , 485 503 | top , travel bag , 363 504 | cardigan , tights , 56 505 | casual shirt , palazzo , 1 506 | ballerinas , footwear , 869 507 | ankle boots , socks , 4 508 | sports shoes , trackwear , 602 509 | boots , shorts , 6 510 | shrug , stilettos , 28 511 | apparel , swimwear , 26 512 | cardigan , casual trousers , 18 513 | thermal , trouser , 79 514 | ballerinas , trench coat , 1 515 | scarf , top , 678 516 | wallet , wing tips , 1 517 | coat , short dress , 1 518 | bikini , vest , 14 519 | bottoms , trench coat , 5 520 | accessories , clogs , 28 521 | chinos , loafers , 764 522 | ballerinas , corset , 2 523 | earrings , skirt , 211 524 | boots , denim shorts , 11 525 | scarf , shrug , 72 526 | apparel , running shoes , 654 527 | polo , trousers , 15 528 | accessories , casual shirt , 7 529 | accessories , stockings , 9 530 | formal shoes , wallet , 11 531 | jacket , platform heels , 5 532 | dungaree , pumps , 86 533 | jacket , mittens , 17 534 | belt , casual shoes , 4 535 | apparel , t-shirt , 504 536 | ballerinas , cap , 449 537 | belt , loafers , 128 538 | joggers , slippers , 9 539 | bottoms , waistcoat , 3 540 | belt , joggers , 7 541 | formal trousers , tuxedo , 3 542 | casual shoes , wallet , 68 543 | lifestyle shoes , watch , 220 544 | glasses , jeans , 138 545 | hipsters , sports bra , 3 546 | shirt , slippers , 298 547 | churidar set , footwear , 719 548 | leather jacket , short dress , 1 549 | bodysuit , tote , 8 550 | jeans , running shoes , 343 551 | backpack , running shoes , 29 552 | coat , swimsuit , 1 553 | apparel , pajama , 632 554 | watch , watch , 18 555 | coat , high tops , 8 556 | trench coat , wallet , 1 557 | sunglasses , travel bag , 108 558 | bag , hipsters , 25 559 | card case , sunglasses , 11 560 | bottoms , satchel , 22 561 | necktie , sandals , 309 562 | slip ons , trackwear , 112 563 | belt , watch , 115 564 | bracelet , sling bag , 59 565 | bracelet , sunglasses , 5 566 | necktie , shirt , 752 567 | belly shoes , formal trousers , 1 568 | romper , stockings , 2 569 | cap , dress , 374 570 | leggings , necklace , 52 571 | footwear , tunic , 648 572 | hand bag , necklace , 33 573 | boxers , vest , 3 574 | chinos , jumper , 3 575 | dungaree , loafers , 17 576 | top , wedges , 803 577 | costume , espadrilles , 8 578 | belt , cape , 7 579 | purse , shrug , 9 580 | casual jacket , polo , 23 581 | bag , ring , 124 582 | necklace , tunic , 69 583 | hipsters , sunglasses , 28 584 | accessories , dress socks , 92 585 | bottoms , socks , 36 586 | canvas shoes , watch , 10 587 | espadrilles , shorts , 11 588 | cape , t-shirt , 29 589 | bow tie , cap , 70 590 | boots , necktie , 2 591 | tunic , watch , 173 592 | palazzo , platform heels , 147 593 | hand bag , palazzo , 1 594 | thongs , trouser , 83 595 | handkerchief , jeans , 6 596 | bracelet , churidar set , 305 597 | casual shirt , hand bag , 18 598 | apparel , top , 873 599 | belt , sweater , 5 600 | cap , sports bra , 8 601 | rugby , socks , 1 602 | formal shoes , formal trousers , 247 603 | boots , sleepwear , 1 604 | gloves , wedges , 10 605 | clutch , sandals , 143 606 | cardigan , formal shoes , 11 607 | cardigan , peeptoes , 5 608 | peeptoes , saree , 4 609 | dress , stilettos , 342 610 | shorts , slip ons , 292 611 | cufflinks , cufflinks , 26 612 | sweater , v-neck , 151 613 | bag , loafers , 592 614 | bottoms , swimsuit , 19 615 | camisole , romper , 7 616 | ballerinas , hipsters , 38 617 | accessories , sweatshirt , 199 618 | ring , trackwear , 250 619 | blouse , satchel , 8 620 | jumpsuit , vest , 26 621 | apparel , backpack , 21 622 | camisole , slippers , 1 623 | necktie , shirt dress , 20 624 | suit , tote , 99 625 | fedora , flipflops , 34 626 | blouse , high tops , 1 627 | jeans , suspender , 318 628 | accessories , shorts , 108 629 | pyjama , t-shirt , 238 630 | glasses , sleepwear , 27 631 | kurti , waistcoat , 1 632 | casual shirt , sling bag , 1 633 | backpack , loafers , 25 634 | fedora , lifestyle shoes , 9 635 | boots , hand bag , 251 636 | casual jacket , joggers , 27 637 | card case , vest , 1 638 | jeans , thermal , 50 639 | footwear , night slip , 106 640 | pyjama , sweatshirt , 23 641 | earrings , shorts , 73 642 | ankle boots , bottoms , 13 643 | accessories , waistcoat , 52 644 | bikini , thongs , 15 645 | jeans , sunglasses , 455 646 | bra , pumps , 149 647 | jumpsuit , sling bag , 12 648 | blouse , formal trousers , 37 649 | dupatta , sling bag , 6 650 | jeggings , jumper , 24 651 | apparel , panties , 698 652 | brogues , necktie , 50 653 | espadrilles , palazzo , 6 654 | henley , oxfords shoe , 6 655 | bracelet , chinos , 20 656 | hipsters , suit , 14 657 | canvas shoes , polo , 45 658 | casual shirt , pumps , 45 659 | necktie , oxfords shoe , 44 660 | dress , sports shoes , 419 661 | sweatshirt , windcheater , 10 662 | accessories , peacoat , 1 663 | bra , sports shoes , 87 664 | bottoms , loafers , 565 665 | canvas shoes , trousers , 66 666 | accessories , sleepwear , 16 667 | ballerinas , pajama , 28 668 | cufflinks , jacket , 214 669 | apparel , hand bag , 822 670 | shirt dress , stilettos , 9 671 | boxers , casual shoes , 6 672 | card case , gloves , 5 673 | jumpsuit , socks , 39 674 | coat , pumps , 33 675 | pumps , satchel , 68 676 | casual shoes , jeans , 821 677 | jumper , short dress , 12 678 | backpack , footwear , 274 679 | cap , pumps , 13 680 | bottoms , scarf , 12 681 | jeans , vest , 470 682 | glasses , glasses , 301 683 | bottoms , espadrilles , 11 684 | chinos , winter jacket , 8 685 | bottoms , clogs , 30 686 | henley , loafers , 694 687 | jacket , jewelry , 11 688 | scarf , sweater , 59 689 | brogues , sweater , 30 690 | backpack , cardigan , 18 691 | chinos , espadrilles , 8 692 | bikini , bottoms , 2 693 | boots , vest , 7 694 | layer_1_upper_body , necktie , 172 695 | boots , sling bag , 53 696 | bra , ring , 37 697 | dress socks , wing tips , 4 698 | shirt dress , watch , 26 699 | apparel , denim jacket , 46 700 | high tops , trench coat , 1 701 | costume , pumps , 14 702 | bag , trunk , 93 703 | cap , thongs , 55 704 | cap , trouser , 114 705 | casual jacket , sunglasses , 16 706 | henley , stilettos , 5 707 | belt , corset , 43 708 | bottoms , lifestyle shoes , 7 709 | handkerchief , necktie , 238 710 | cardigan , laptop bag , 12 711 | fedora , shorts , 68 712 | blouse , coat , 54 713 | casual shoes , maxi dress , 26 714 | jeans , sweater , 796 715 | beanies , sweatshirt , 7 716 | cardigan , watch , 45 717 | sandals , shape wear , 43 718 | henley , watch , 16 719 | cap , loafers , 16 720 | belt , purse , 341 721 | backpack , costume , 11 722 | flipflops , sunglasses , 54 723 | socks , trouser , 78 724 | sunglasses , waistcoat , 14 725 | dress , mittens , 5 726 | pumps , suit , 61 727 | ballerinas , jumpsuit , 744 728 | boots , stockings , 14 729 | necklace , scarf , 43 730 | apparel , briefs , 49 731 | bag , hand bag , 836 732 | high tops , jeans , 230 733 | dupatta , earrings , 356 734 | sweatshirt , winter jacket , 52 735 | bracelet , cardigan , 10 736 | bag , cargo shorts , 6 737 | monk straps , skirt , 1 738 | bag , boxers , 27 739 | sandals , waistcoat , 18 740 | footwear , windcheater , 15 741 | ballerinas , handkerchief , 2 742 | outerwear , pumps , 4 743 | swimwear , t-shirt , 6 744 | bracelet , jeans , 55 745 | clutch , lehenga , 18 746 | bag , casual jacket , 31 747 | purse , shirt , 213 748 | cargo shorts , necktie , 15 749 | apparel , goggles , 89 750 | bag , layer_1_upper_body , 17 751 | clutch , jacket , 17 752 | stockings , wedding dress , 9 753 | jeggings , winter jacket , 813 754 | cardigan , sweatshirt , 647 755 | watch , wedding dress , 4 756 | boots , tote , 16 757 | palazzo , watch , 107 758 | earrings , vest , 14 759 | camisole , jumpsuit , 3 760 | camisole , cap , 45 761 | apparel , espadrilles , 58 762 | camisole , glasses , 13 763 | backpack , sweatshirt , 67 764 | belt , boxer briefs , 20 765 | purse , wedges , 126 766 | sweatshirt , trousers , 112 767 | dress , watch , 361 768 | kimono , suit , 9 769 | casual shoes , tunic , 69 770 | socks , trunk , 2 771 | bodysuit , push-up bra , 4 772 | sandals , vest , 8 773 | footwear , gloves , 8 774 | panties , socks , 14 775 | hand bag , watch , 20 776 | derby , t-shirt , 92 777 | cap , romper , 71 778 | henley , leggings , 27 779 | peeptoes , top , 734 780 | polo , swim trunks , 3 781 | glasses , layer_1_lower_body , 5 782 | footwear , running shorts , 6 783 | pyjama , thermal , 4 784 | jumpsuit , slippers , 1 785 | sandals , swimwear , 75 786 | sports shoes , suit , 49 787 | sweater , top , 531 788 | party dress , ring , 2 789 | shape wear , thermal , 58 790 | jewelry , tote , 17 791 | belt , jacket , 15 792 | bomber jacket , formal shirt , 26 793 | layer_1_lower_body , thermal , 12 794 | earrings , flipflops , 4 795 | ring , satchel , 97 796 | belt , gloves , 20 797 | jeans , sweatshirt , 867 798 | cap , leather jacket , 9 799 | formal trousers , necktie , 184 800 | flipflops , jeans , 474 801 | ring , suit , 13 802 | coat , travel bag , 12 803 | slip ons , swimwear , 12 804 | bracelet , wallet , 92 805 | canvas shoes , sweater , 54 806 | footwear , goggles , 377 807 | espadrilles , sweatshirt , 13 808 | peeptoes , shrug , 5 809 | casual trousers , top , 59 810 | joggers , sports bra , 6 811 | bracelet , tuxedo , 34 812 | saree , sling bag , 120 813 | sports shoes , v-neck , 583 814 | apparel , rugby , 4 815 | bra , satchel , 2 816 | dungaree , goggles , 12 817 | flipflops , layer_1_upper_body , 183 818 | bomber jacket , henley , 12 819 | dress , spectators , 2 820 | glasses , pajama , 18 821 | scarf , trouser , 62 822 | hand bag , henley , 31 823 | hoodie , necktie , 20 824 | casual jacket , pyjama , 11 825 | footwear , sports shoes , 675 826 | bow tie , waistcoat , 12 827 | belt , romper , 74 828 | casual shirt , necklace , 3 829 | necklace , tuxedo , 34 830 | jeans , training shoes , 5 831 | running shoes , sling bag , 7 832 | blazer , necklace , 23 833 | coat , scarf , 306 834 | accessories , trench coat , 5 835 | chinos , travel bag , 67 836 | goggles , wallet , 43 837 | card case , suitcase , 1 838 | cap , pyjama , 7 839 | shrug , sweatshirt , 110 840 | footwear , layer_1_upper_body , 12 841 | high tops , leggings , 34 842 | bottoms , goggles , 204 843 | high tops , maxi dress , 26 844 | formal trousers , top , 110 845 | jeans , wing tips , 31 846 | ring , swimwear , 9 847 | chinos , suitcase , 6 848 | goggles , winter jacket , 12 849 | hand bag , high tops , 16 850 | bracelet , kurta , 39 851 | jacket , sandals , 22 852 | goggles , satchel , 17 853 | accessories , top , 656 854 | handkerchief , scarf , 154 855 | stilettos , tote , 29 856 | accessories , kurta , 40 857 | sweater , t-shirt , 630 858 | dress socks , gloves , 22 859 | boots , outerwear , 20 860 | messenger bag , running shoes , 44 861 | goggles , messenger bag , 4 862 | shorts , sling bag , 110 863 | slip ons , trunk , 15 864 | camisole , joggers , 10 865 | ring , tunic , 6 866 | scarf , trousers , 28 867 | jewelry , sweatshirt , 9 868 | canvas shoes , jeans , 213 869 | chinos , pumps , 159 870 | apparel , formal shoes , 811 871 | bag , bodysuit , 144 872 | earrings , t-shirt , 433 873 | athletic socks , footwear , 104 874 | cap , robe , 14 875 | socks , sweater , 2 876 | sports shoes , track suit , 3 877 | accessories , derby , 1 878 | apparel , bomber jacket , 240 879 | flipflops , trousers , 128 880 | camisole , tights , 11 881 | footwear , leather jacket , 155 882 | apparel , belly shoes , 453 883 | canvas shoes , formal trousers , 36 884 | kurti , shrug , 13 885 | costume , purse , 9 886 | gloves , panties , 26 887 | footwear , oxfords shoe , 80 888 | suit , thongs , 35 889 | corset , sandals , 18 890 | sleepwear , vest , 147 891 | belt , shrug , 21 892 | leather jacket , trouser , 10 893 | accessories , kimono , 73 894 | cape , sandals , 49 895 | backpack , top , 242 896 | balconette bra , glasses , 2 897 | purse , trouser , 329 898 | backpack , gloves , 24 899 | bag , slip ons , 169 900 | bra , scarf , 7 901 | apparel , loafers , 806 902 | clutch , jewelry , 23 903 | crewneck , v-neck , 2 904 | beanies , watch , 2 905 | goggles , sports sandals , 80 906 | gloves , winter jacket , 1 907 | casual jacket , top , 141 908 | bottoms , trunk , 81 909 | boots , leather jacket , 30 910 | apparel , boxers , 167 911 | formal trousers , sweater , 38 912 | hand bag , kimono , 12 913 | jeggings , stilettos , 42 914 | goggles , wedges , 66 915 | v-neck , wedges , 5 916 | sandals , watch , 196 917 | earrings , lehenga , 76 918 | coat , footwear , 153 919 | necktie , v-neck , 15 920 | bag , chinos , 97 921 | glasses , sweatshirt , 161 922 | blazer , sunglasses , 6 923 | cape , pumps , 10 924 | bikini , footwear , 68 925 | boots , wedding dress , 15 926 | handkerchief , suit , 251 927 | pumps , sweatshirt , 111 928 | bra , cap , 46 929 | footwear , formal shirt , 506 930 | blouse , footwear , 799 931 | ankle boots , blouse , 1 932 | purse , watch , 198 933 | clogs , watch , 2 934 | suspender , tuxedo , 187 935 | layer_1_lower_body , wallet , 7 936 | party dress , sandals , 68 937 | bottoms , cardigan , 33 938 | churidar set , peeptoes , 100 939 | footwear , kimono , 25 940 | bottoms , jumper , 37 941 | slippers , tote , 15 942 | satchel , tunic , 18 943 | coat , necktie , 33 944 | sling bag , tunic , 86 945 | cardigan , hand bag , 40 946 | bow tie , jeans , 1 947 | cap , coat , 68 948 | bow tie , vest , 14 949 | gloves , sandals , 6 950 | pyjama , vest , 21 951 | bodysuit , scarf , 25 952 | churidar set , platform heels , 58 953 | slippers , trackwear , 12 954 | accessories , leather jacket , 63 955 | hoodie , jewelry , 6 956 | formal shoes , necktie , 12 957 | shirt , sling bag , 22 958 | accessories , brogues , 1 959 | bottoms , floaters , 95 960 | card case , sling bag , 80 961 | cape , sports shoes , 2 962 | cap , kimono , 3 963 | leggings , scarf , 47 964 | bracelet , necktie , 622 965 | bow tie , slip ons , 6 966 | training shoes , trousers , 59 967 | cardigan , vest , 26 968 | waistcoat , watch , 8 969 | sports shoes , vest , 216 970 | jewelry , kurti , 113 971 | bra , glasses , 144 972 | apparel , romper , 703 973 | jacket , necktie , 469 974 | accessories , casual shoes , 365 975 | accessories , hipsters , 39 976 | bottoms , corset , 16 977 | belt , scarf , 136 978 | bracelet , handkerchief , 159 979 | jeans , windcheater , 162 980 | espadrilles , footwear , 11 981 | bag , clutch , 395 982 | casual shoes , earrings , 51 983 | bag , cap , 180 984 | bag , kimono , 3 985 | messenger bag , trench coat , 8 986 | hand bag , slippers , 2 987 | training shoes , watch , 9 988 | shorts , sports sandals , 225 989 | footwear , laptop bag , 64 990 | belt , bracelet , 6 991 | bottoms , jeans , 47 992 | corset , gloves , 1 993 | sweater , sweatshirt , 623 994 | sleepwear , tote , 1 995 | panties , scarf , 19 996 | formal shoes , jeggings , 12 997 | formal shoes , socks , 716 998 | sunglasses , wedding dress , 1 999 | bag , swimwear , 1 1000 | belt , wing tips , 7 1001 | cape , costume , 49 1002 | backpack , blouse , 9 1003 | bottoms , thermal , 6 1004 | stilettos , tunic , 269 1005 | bow tie , suspender , 481 1006 | jacket , suspender , 32 1007 | slippers , socks , 10 1008 | necktie , sunglasses , 3 1009 | mittens , shorts , 2 1010 | joggers , sweatshirt , 90 1011 | bottoms , glasses , 244 1012 | sports shoes , stockings , 22 1013 | chinos , oxfords shoe , 19 1014 | fedora , footwear , 82 1015 | crewneck , footwear , 19 1016 | glasses , swimwear , 1 1017 | cap , cargo shorts , 6 1018 | fedora , suit , 12 1019 | messenger bag , shrug , 6 1020 | cardigan , dungaree , 14 1021 | apparel , track suit , 2 1022 | churidar set , sandals , 494 1023 | denim shorts , sweatshirt , 11 1024 | card case , footwear , 38 1025 | footwear , tuxedo , 84 1026 | messenger bag , shirt , 73 1027 | maxi dress , thongs , 48 1028 | necktie , winter jacket , 8 1029 | apparel , boxer briefs , 281 1030 | suit , sunglasses , 158 1031 | jeggings , t-shirt , 780 1032 | fitness band , sweatshirt , 10 1033 | accessories , shirt , 697 1034 | clutch , pumps , 163 1035 | accessories , bodysuit , 218 1036 | earrings , footwear , 4 1037 | shorts , tote , 32 1038 | hand bag , scarf , 278 1039 | apparel , blazer , 356 1040 | cap , top , 577 1041 | hand bag , trousers , 29 1042 | flipflops , scarf , 14 1043 | suitcase , tights , 4 1044 | jumper , t-shirt , 3 1045 | bottoms , suitcase , 237 1046 | bag , derby , 64 1047 | coat , satchel , 8 1048 | messenger bag , watch , 4 1049 | stilettos , v-neck , 12 1050 | hand bag , trackwear , 19 1051 | sweatshirt , trackpants , 135 1052 | cargo shorts , espadrilles , 9 1053 | clutch , necklace , 11 1054 | bag , romper , 197 1055 | handkerchief , trouser , 49 1056 | cape , wedding dress , 1 1057 | jeans , tunic , 739 1058 | handkerchief , kimono , 17 1059 | kurta , trackpants , 10 1060 | boots , peacoat , 2 1061 | trousers , vest , 39 1062 | briefs , handkerchief , 1 1063 | card case , costume , 1 1064 | socks , watch , 1 1065 | camisole , shrug , 54 1066 | jumpsuit , scarf , 26 1067 | bottoms , briefs , 49 1068 | suit , wedges , 473 1069 | bodysuit , necktie , 57 1070 | canvas shoes , casual shirt , 526 1071 | belt , cap , 102 1072 | footwear , kurti , 733 1073 | glasses , stockings , 3 1074 | handkerchief , purse , 25 1075 | denim jacket , footwear , 83 1076 | floaters , skirt , 1 1077 | flipflops , travel bag , 6 1078 | espadrilles , glasses , 29 1079 | churidar set , purse , 14 1080 | shorts , watch , 197 1081 | cardigan , romper , 48 1082 | bottoms , hoodie , 19 1083 | casual shirt , flipflops , 35 1084 | sandals , swimsuit , 56 1085 | derby , fedora , 4 1086 | cap , t-shirt , 386 1087 | top , trouser , 874 1088 | belt , travel bag , 252 1089 | flipflops , jacket , 36 1090 | joggers , t-shirt , 681 1091 | backpack , cap , 8 1092 | casual shoes , joggers , 282 1093 | boots , cap , 317 1094 | bag , coat , 76 1095 | cufflinks , suit , 229 1096 | jewelry , slip ons , 2 1097 | high tops , t-shirt , 36 1098 | accessories , crewneck , 59 1099 | cufflinks , sling bag , 2 1100 | bow tie , trousers , 81 1101 | bow tie , necklace , 459 1102 | necktie , romper , 221 1103 | outerwear , scarf , 16 1104 | camisole , henley , 4 1105 | bottoms , dress socks , 7 1106 | bag , casual shirt , 7 1107 | apparel , casual shoes , 770 1108 | glasses , necktie , 16 1109 | belt , casual trousers , 25 1110 | saree , tote , 14 1111 | belt , leggings , 168 1112 | accessories , pumps , 322 1113 | clogs , vest , 1 1114 | layer_1_lower_body , sleepwear , 231 1115 | backpack , sports shoes , 43 1116 | apparel , bow tie , 195 1117 | apparel , sunglasses , 671 1118 | slip ons , suit , 132 1119 | camisole , necklace , 18 1120 | leggings , purse , 31 1121 | shorts , travel bag , 60 1122 | bag , skirt , 391 1123 | belly shoes , clutch , 22 1124 | necklace , vest , 128 1125 | ballerinas , bomber jacket , 8 1126 | casual shoes , fedora , 61 1127 | bottoms , suit , 75 1128 | bottoms , handkerchief , 32 1129 | goggles , necktie , 1 1130 | lifestyle shoes , sweatshirt , 5 1131 | footwear , palazzo , 713 1132 | leather jacket , loafers , 9 1133 | mini skirt , ring , 8 1134 | bracelet , trousers , 28 1135 | sleepwear , suit , 10 1136 | cargo shorts , running shoes , 9 1137 | brogues , dress , 24 1138 | push-up bra , swimsuit , 19 1139 | accessories , travel bag , 24 1140 | camisole , tunic , 72 1141 | purse , stilettos , 94 1142 | jeans , shrug , 717 1143 | accessories , dress material , 15 1144 | bracelet , messenger bag , 43 1145 | jeggings , running shoes , 18 1146 | cap , clogs , 6 1147 | party dress , scarf , 25 1148 | ballerinas , night slip , 23 1149 | bow tie , ring , 1 1150 | glasses , jacket , 24 1151 | ballerinas , mini skirt , 40 1152 | formal trousers , t-shirt , 207 1153 | bow tie , derby , 9 1154 | formal shirt , lifestyle shoes , 1 1155 | flipflops , pajama , 30 1156 | boxers , costume , 1 1157 | palazzo , vest , 1 1158 | footwear , handkerchief , 26 1159 | henley , sunglasses , 42 1160 | top , winter jacket , 664 1161 | glasses , messenger bag , 20 1162 | jeggings , vest , 15 1163 | blazer , blouse , 16 1164 | dress , espadrilles , 83 1165 | apparel , trackpants , 43 1166 | corset , wedges , 14 1167 | boots , casual trousers , 19 1168 | brogues , shrug , 6 1169 | cape , necktie , 13 1170 | ring , sandals , 3 1171 | casual shoes , denim jacket , 60 1172 | kimono , pajama , 1 1173 | flipflops , satchel , 13 1174 | bracelet , flipflops , 9 1175 | glasses , skirt , 17 1176 | boots , henley , 40 1177 | bottoms , laptop sleeve , 15 1178 | jeans , stilettos , 550 1179 | costume , necklace , 62 1180 | shirt , tote , 1 1181 | boxer briefs , handkerchief , 1 1182 | boots , hoodie , 139 1183 | romper , sandals , 265 1184 | clutch , maxi dress , 121 1185 | leather jacket , stockings , 1 1186 | blazer , trousers , 28 1187 | apparel , dupatta , 402 1188 | footwear , peeptoes , 332 1189 | apparel , suspender , 199 1190 | jewelry , sports shoes , 45 1191 | joggers , messenger bag , 78 1192 | apparel , sandals , 784 1193 | clogs , hand bag , 2 1194 | vest , watch , 1 1195 | bracelet , maxi dress , 555 1196 | clutch , wedding dress , 18 1197 | sunglasses , trench coat , 9 1198 | ankle boots , shirt dress , 12 1199 | belly shoes , shirt , 518 1200 | accessories , maxi dress , 12 1201 | fitness band , lifestyle shoes , 9 1202 | cap , handkerchief , 15 1203 | jewelry , messenger bag , 1 1204 | stilettos , suit , 280 1205 | flipflops , socks , 8 1206 | apparel , necktie , 575 1207 | earrings , short dress , 9 1208 | earrings , necktie , 1 1209 | clogs , dungaree , 16 1210 | blouse , jewelry , 455 1211 | casual shoes , chinos , 826 1212 | belt , shirt dress , 144 1213 | dungaree , sunglasses , 28 1214 | pumps , winter jacket , 80 1215 | bottoms , ring , 155 1216 | dupatta , peeptoes , 86 1217 | cardigan , jeggings , 7 1218 | high tops , shrug , 2 1219 | joggers , watch , 40 1220 | shirt , winter jacket , 9 1221 | casual trousers , lifestyle shoes , 43 1222 | fitness band , leggings , 10 1223 | casual shirt , scarf , 3 1224 | jumpsuit , pyjama , 42 1225 | dungaree , laptop bag , 19 1226 | churidar set , stilettos , 263 1227 | lifestyle shoes , v-neck , 5 1228 | hand bag , jewelry , 19 1229 | slip ons , watch , 32 1230 | goggles , slip ons , 4 1231 | monk straps , shorts , 1 1232 | earrings , watch , 1 1233 | cap , tote , 13 1234 | skirt , wedges , 684 1235 | bag , casual trousers , 8 1236 | gloves , vest , 2 1237 | boots , wallet , 11 1238 | sandals , turtleneck , 22 1239 | casual jacket , glasses , 6 1240 | apparel , hipsters , 382 1241 | hand bag , lifestyle shoes , 4 1242 | casual shirt , vest , 6 1243 | chinos , sports shoes , 411 1244 | boxers , loungewear , 2 1245 | footwear , messenger bag , 561 1246 | formal shoes , jacket , 538 1247 | dress , hand bag , 479 1248 | necktie , socks , 4 1249 | ankle boots , jumpsuit , 85 1250 | boots , jewelry , 38 1251 | necklace , sling bag , 5 1252 | boots , suit , 53 1253 | bottoms , tote , 79 1254 | cargo shorts , vest , 24 1255 | apparel , watch , 711 1256 | cap , denim shorts , 2 1257 | cap , sleepwear , 3 1258 | blazer , chinos , 1 1259 | apparel , casual jacket , 207 1260 | hand bag , shirt dress , 5 1261 | polo , waistcoat , 9 1262 | jacket , stilettos , 62 1263 | accessories , trousers , 570 1264 | card case , ring , 34 1265 | apparel , layer_1_lower_body , 472 1266 | goggles , jewelry , 42 1267 | canvas shoes , cap , 21 1268 | cardigan , wedges , 13 1269 | jumpsuit , tote , 69 1270 | loafers , watch , 15 1271 | bottoms , mittens , 4 1272 | shorts , suitcase , 12 1273 | earrings , shrug , 57 1274 | mittens , socks , 5 1275 | cardigan , sandals , 11 1276 | jeans , purse , 613 1277 | tights , vest , 6 1278 | casual shoes , casual trousers , 130 1279 | sandals , skirt , 818 1280 | belt , bow tie , 8 1281 | earrings , palazzo , 380 1282 | pajama , socks , 12 1283 | cardigan , stockings , 9 1284 | sandals , sling bag , 1 1285 | socks , t-shirt , 27 1286 | casual shoes , palazzo , 12 1287 | fitness band , footwear , 114 1288 | bracelet , iphone case , 18 1289 | bag , suitcase , 634 1290 | short dress , wedges , 5 1291 | sandals , shirt dress , 114 1292 | boots , tunic , 187 1293 | jumpsuit , shrug , 61 1294 | apparel , purse , 740 1295 | casual shirt , satchel , 2 1296 | apparel , mittens , 20 1297 | lifestyle shoes , top , 638 1298 | ballerinas , panties , 113 1299 | bag , laptop bag , 310 1300 | backpack , polo , 72 1301 | scarf , tote , 1 1302 | sandals , trench coat , 1 1303 | bottoms , clutch , 146 1304 | casual shirt , wing tips , 8 1305 | jumpsuit , peeptoes , 315 1306 | dupatta , kurta , 169 1307 | shrug , t-shirt , 274 1308 | mittens , wedding dress , 18 1309 | dungaree , necktie , 12 1310 | trousers , waistcoat , 1 1311 | bottoms , jacket , 32 1312 | sweater , trackwear , 1 1313 | kurta , patiala , 169 1314 | bag , thermal , 7 1315 | sandals , scarf , 4 1316 | blazer , hoodie , 29 1317 | flipflops , hipsters , 1 1318 | leggings , waistcoat , 8 1319 | kurta , tuxedo , 22 1320 | belly shoes , sling bag , 8 1321 | boots , jacket , 551 1322 | necklace , t-shirt , 78 1323 | bag , denim jacket , 6 1324 | blazer , wedges , 32 1325 | ankle boots , top , 40 1326 | footwear , swim trunks , 3 1327 | formal shoes , laptop bag , 19 1328 | polo , slip ons , 38 1329 | backpack , shorts , 39 1330 | palazzo , purse , 39 1331 | sling bag , trousers , 8 1332 | boots , casual jacket , 225 1333 | derby , suspender , 13 1334 | messenger bag , slip ons , 67 1335 | flipflops , swimsuit , 1 1336 | bomber jacket , shorts , 1 1337 | goggles , sling bag , 35 1338 | camisole , sandals , 399 1339 | bomber jacket , lifestyle shoes , 54 1340 | bracelet , lifestyle shoes , 4 1341 | driving shoes , tuxedo , 1 1342 | glasses , winter jacket , 22 1343 | footwear , satchel , 187 1344 | brogues , v-neck , 6 1345 | belt , necktie , 15 1346 | layer_1_lower_body , v-neck , 5 1347 | cap , sports sandals , 79 1348 | chinos , polo , 802 1349 | jumpsuit , wedges , 471 1350 | apparel , cap , 699 1351 | glasses , hand bag , 290 1352 | shrug , wedges , 121 1353 | sweater , thermal , 1 1354 | ballerinas , kimono , 13 1355 | palazzo , pumps , 211 1356 | glasses , suitcase , 114 1357 | apparel , chinos , 394 1358 | bottoms , boxer briefs , 3 1359 | kurti , thongs , 4 1360 | kurti , wedges , 484 1361 | ballerinas , tote , 156 1362 | brogues , hoodie , 1 1363 | ballerinas , dress , 795 1364 | mini skirt , winter jacket , 13 1365 | bracelet , slippers , 1 1366 | bag , wing tips , 14 1367 | shorts , wedges , 324 1368 | cape , trouser , 15 1369 | brogues , leggings , 1 1370 | costume , sunglasses , 160 1371 | cap , layer_1_lower_body , 9 1372 | laptop bag , sandals , 5 1373 | belt , pyjama , 6 1374 | bottoms , swimwear , 4 1375 | footwear , panties , 25 1376 | derby , top , 28 1377 | casual shirt , lifestyle shoes , 95 1378 | blazer , loafers , 45 1379 | dress , oxfords shoe , 107 1380 | bag , shrug , 138 1381 | boxers , sleepwear , 130 1382 | denim shorts , slippers , 4 1383 | dress , scarf , 542 1384 | ballerinas , ring , 69 1385 | apparel , wedges , 696 1386 | purse , top , 808 1387 | footwear , thermal , 19 1388 | denim jacket , wedges , 1 1389 | hoodie , running shoes , 14 1390 | bottoms , leather jacket , 18 1391 | sandals , sweater , 11 1392 | sunglasses , trackwear , 7 1393 | espadrilles , sunglasses , 5 1394 | bag , boots , 201 1395 | jacket , thermal , 12 1396 | churidar set , shrug , 23 1397 | floaters , footwear , 28 1398 | jeggings , messenger bag , 6 1399 | brogues , formal trousers , 30 1400 | handkerchief , sandals , 34 1401 | mini skirt , sweatshirt , 12 1402 | trouser , windcheater , 3 1403 | accessories , short dress , 347 1404 | clutch , flipflops , 4 1405 | dupatta , pumps , 329 1406 | night slip , sandals , 138 1407 | chinos , goggles , 126 1408 | accessories , footwear , 724 1409 | derby , gloves , 6 1410 | coat , watch , 10 1411 | tights , waistcoat , 1 1412 | glasses , vest , 1 1413 | bottoms , palazzo , 12 1414 | belly shoes , lehenga , 9 1415 | footwear , trousers , 856 1416 | kimono , night slip , 8 1417 | formal shoes , polo , 116 1418 | necktie , swimwear , 12 1419 | platform heels , t-shirt , 6 1420 | trousers , wallet , 14 1421 | stilettos , vest , 6 1422 | bracelet , camisole , 18 1423 | apparel , trackwear , 133 1424 | sunglasses , top , 326 1425 | jewelry , kurta , 15 1426 | belt , wallet , 106 1427 | bag , camisole , 61 1428 | kurti , loafers , 274 1429 | casual shoes , trackpants , 18 1430 | palazzo , top , 594 1431 | accessories , sweater , 74 1432 | henley , sports shoes , 331 1433 | belt , outerwear , 1 1434 | canvas shoes , joggers , 10 1435 | chinos , driving shoes , 2 1436 | casual shirt , suspender , 22 1437 | cap , sling bag , 29 1438 | bag , bikini , 156 1439 | gloves , stockings , 8 1440 | casual shoes , jumpsuit , 162 1441 | bracelet , stilettos , 120 1442 | earrings , sling bag , 5 1443 | accessories , coat , 110 1444 | shape wear , stilettos , 4 1445 | belt , cargo shorts , 107 1446 | coat , peeptoes , 18 1447 | sports bra , tights , 26 1448 | suit , sweater , 9 1449 | bracelet , sweatshirt , 36 1450 | handkerchief , sweater , 1 1451 | backpack , necklace , 23 1452 | hand bag , mini skirt , 22 1453 | necklace , wedges , 40 1454 | loafers , vest , 39 1455 | bomber jacket , sports shoes , 84 1456 | dungaree , sweater , 14 1457 | apparel , shape wear , 559 1458 | ballerinas , bracelet , 639 1459 | casual shirt , laptop bag , 16 1460 | casual shoes , formal shirt , 1 1461 | ring , swimsuit , 16 1462 | party dress , vest , 9 1463 | bracelet , cap , 7 1464 | flipflops , polo , 177 1465 | backpack , swimsuit , 4 1466 | apparel , dress , 852 1467 | lehenga , pumps , 2 1468 | necklace , top , 369 1469 | purse , swimsuit , 19 1470 | necklace , shrug , 24 1471 | bow tie , cufflinks , 418 1472 | palazzo , slippers , 130 1473 | cufflinks , ring , 19 1474 | camisole , trouser , 25 1475 | footwear , spectators , 1 1476 | joggers , slip ons , 143 1477 | joggers , lifestyle shoes , 249 1478 | maxi dress , stilettos , 392 1479 | bracelet , satchel , 123 1480 | belt , wedding dress , 181 1481 | glasses , slip ons , 80 1482 | cardigan , casual shirt , 12 1483 | sports shoes , wallet , 13 1484 | bottoms , layer_1_upper_body , 10 1485 | bag , flipflops , 291 1486 | bow tie , tuxedo , 106 1487 | camisole , purse , 6 1488 | casual shoes , shrug , 123 1489 | apparel , slip ons , 595 1490 | bottoms , sweatshirt , 593 1491 | dress , running shoes , 21 1492 | ballerinas , hoodie , 142 1493 | bag , boxer briefs , 282 1494 | boots , maxi dress , 18 1495 | cargo shorts , lifestyle shoes , 15 1496 | footwear , robe , 4 1497 | accessories , jeans , 250 1498 | loafers , satchel , 1 1499 | apparel , peacoat , 1 1500 | jeans , slippers , 721 1501 | accessories , peeptoes , 67 1502 | casual jacket , footwear , 108 1503 | ballerinas , henley , 3 1504 | cape , high tops , 5 1505 | bracelet , party dress , 1 1506 | accessories , formal shirt , 128 1507 | ballerinas , thongs , 403 1508 | shrug , stockings , 6 1509 | handkerchief , shirt , 185 1510 | joggers , training shoes , 16 1511 | belt , bikini , 20 1512 | accessories , tights , 1 1513 | henley , pyjama , 1 1514 | necktie , purse , 63 1515 | hipsters , scarf , 1 1516 | cargo shorts , sunglasses , 12 1517 | jumper , sports shoes , 36 1518 | casual trousers , glasses , 18 1519 | messenger bag , tunic , 2 1520 | corset , scarf , 14 1521 | bag , pajama , 226 1522 | bracelet , top , 659 1523 | jacket , running shoes , 41 1524 | casual jacket , lifestyle shoes , 42 1525 | kurta , pyjama , 454 1526 | blouse , shrug , 2 1527 | sandals , thermal , 18 1528 | backpack , sweater , 3 1529 | formal shoes , watch , 177 1530 | bag , t-shirt , 150 1531 | joggers , sandals , 25 1532 | brogues , leather jacket , 4 1533 | glasses , necklace , 6 1534 | henley , lifestyle shoes , 10 1535 | cap , footwear , 651 1536 | loafers , sweatshirt , 737 1537 | earrings , trouser , 3 1538 | cap , scarf , 38 1539 | costume , suit , 39 1540 | necklace , waistcoat , 26 1541 | casual jacket , jeans , 750 1542 | glasses , sunglasses , 189 1543 | churidar set , necklace , 287 1544 | apparel , padded bra , 76 1545 | jacket , wing tips , 29 1546 | cardigan , sports shoes , 11 1547 | brogues , t-shirt , 26 1548 | hipsters , jeans , 57 1549 | kurta , sandals , 660 1550 | casual trousers , suspender , 4 1551 | apparel , earrings , 9 1552 | lifestyle shoes , skirt , 83 1553 | card case , thermal , 1 1554 | ankle boots , skirt , 5 1555 | accessories , layer_1_upper_body , 3 1556 | pyjama , running shoes , 28 1557 | gloves , tights , 100 1558 | ring , vest , 12 1559 | cap , running shoes , 3 1560 | goggles , swimwear , 2 1561 | denim jacket , top , 11 1562 | bomber jacket , trouser , 5 1563 | cargo shorts , clogs , 8 1564 | goggles , vest , 4 1565 | ballerinas , casual shirt , 31 1566 | bikini , ring , 54 1567 | bikini , push-up bra , 46 1568 | jacket , travel bag , 145 1569 | kurta , tights , 19 1570 | glasses , pyjama , 16 1571 | belt , costume , 8 1572 | casual jacket , earrings , 10 1573 | floaters , top , 68 1574 | apparel , casual trousers , 11 1575 | jeans , loafers , 833 1576 | bag , messenger bag , 641 1577 | night slip , sports shoes , 13 1578 | churidar set , tote , 40 1579 | t-shirt , tights , 218 1580 | goggles , trench coat , 2 1581 | apparel , leggings , 667 1582 | suit , suspender , 55 1583 | shirt , suitcase , 36 1584 | brogues , cap , 32 1585 | layer_1_upper_body , ring , 22 1586 | leggings , sweatshirt , 657 1587 | handkerchief , top , 10 1588 | backpack , flipflops , 1 1589 | coat , goggles , 5 1590 | messenger bag , trouser , 7 1591 | boxers , sweatshirt , 127 1592 | costume , earrings , 23 1593 | apparel , socks , 409 1594 | panties , sandals , 116 1595 | loafers , winter jacket , 4 1596 | top , tote , 330 1597 | bracelet , dungaree , 42 1598 | cape , scarf , 85 1599 | bracelet , card case , 108 1600 | gloves , running shoes , 4 1601 | tunic , winter jacket , 7 1602 | accessories , chinos , 34 1603 | bottoms , polo , 797 1604 | jewelry , shrug , 7 1605 | ballerinas , trousers , 790 1606 | dupatta , platform heels , 102 1607 | bottoms , sunglasses , 421 1608 | accessories , dungaree , 62 1609 | maxi dress , tote , 61 1610 | leggings , running shoes , 18 1611 | bracelet , loafers , 26 1612 | bottoms , top , 870 1613 | corset , t-shirt , 7 1614 | gloves , mittens , 15 1615 | shorts , sports shoes , 805 1616 | cargo shorts , goggles , 6 1617 | glasses , loafers , 188 1618 | polo , trunk , 1 1619 | denim jacket , jeans , 193 1620 | formal shoes , top , 41 1621 | accessories , thermal , 2 1622 | jeans , sports shoes , 832 1623 | gloves , maxi dress , 4 1624 | bra , jewelry , 3 1625 | jewelry , watch , 130 1626 | shrug , suit , 29 1627 | clutch , swimsuit , 8 1628 | padded bra , t-shirt , 68 1629 | jewelry , wedding dress , 38 1630 | crewneck , maxi dress , 13 1631 | flipflops , night slip , 127 1632 | sports shoes , winter jacket , 9 1633 | palazzo , stilettos , 297 1634 | necktie , wing tips , 18 1635 | hoodie , purse , 13 1636 | belt , hand bag , 80 1637 | bracelet , tote , 96 1638 | high tops , jumpsuit , 96 1639 | cap , wallet , 13 1640 | ankle boots , jacket , 6 1641 | bodysuit , cardigan , 17 1642 | blouse , sunglasses , 22 1643 | accessories , bra , 385 1644 | leggings , suitcase , 1 1645 | chinos , suit , 7 1646 | bag , wallet , 524 1647 | costume , mittens , 17 1648 | apparel , leather jacket , 47 1649 | necklace , wedding dress , 11 1650 | apparel , sweatshirt , 850 1651 | dupatta , ring , 17 1652 | jeggings , sandals , 348 1653 | jewelry , wedges , 9 1654 | accessories , apparel , 614 1655 | ballerinas , gloves , 24 1656 | loafers , tunic , 66 1657 | canvas shoes , wallet , 14 1658 | shorts , sunglasses , 90 1659 | formal trousers , loafers , 21 1660 | jacket , watch , 102 1661 | stockings , tights , 134 1662 | churidar , dupatta , 130 1663 | peacoat , scarf , 12 1664 | card case , travel bag , 15 1665 | jeans , thongs , 126 1666 | boots , jeans , 788 1667 | footwear , jumpsuit , 731 1668 | kurta , necklace , 2 1669 | kimono , v-neck , 7 1670 | sandals , suit , 24 1671 | bag , floaters , 4 1672 | apparel , robe , 537 1673 | accessories , layer_1_lower_body , 22 1674 | leggings , vest , 45 1675 | kurti , necktie , 33 1676 | bag , bomber jacket , 25 1677 | sandals , shrug , 326 1678 | bag , ballerinas , 600 1679 | messenger bag , sandals , 161 1680 | hoodie , pumps , 40 1681 | skirt , tote , 20 1682 | layer_1_lower_body , necktie , 1 1683 | casual shoes , trackwear , 73 1684 | costume , scarf , 2 1685 | formal shirt , jeans , 13 1686 | stockings , winter jacket , 21 1687 | boots , watch , 153 1688 | sunglasses , sweater , 60 1689 | accessories , belt , 303 1690 | oxfords shoe , sunglasses , 1 1691 | footwear , leggings , 745 1692 | apparel , mini skirt , 109 1693 | cape , glasses , 2 1694 | maxi dress , sandals , 837 1695 | belly shoes , earrings , 29 1696 | canvas shoes , glasses , 4 1697 | ballerinas , vest , 23 1698 | casual shirt , purse , 22 1699 | chinos , thermal , 1 1700 | leggings , top , 857 1701 | ankle boots , hand bag , 15 1702 | jeans , polo , 872 1703 | cap , sports shoes , 292 1704 | clogs , trouser , 11 1705 | belt , casual shirt , 25 1706 | wedges , winter jacket , 136 1707 | purse , tights , 1 1708 | bomber jacket , sunglasses , 2 1709 | card case , jacket , 78 1710 | goggles , polo , 283 1711 | glasses , wallet , 81 1712 | hand bag , polo , 5 1713 | accessories , hand bag , 100 1714 | glasses , v-neck , 2 1715 | slip ons , sweater , 16 1716 | cap , suitcase , 30 1717 | cufflinks , wallet , 2 1718 | footwear , watch , 634 1719 | outerwear , wedges , 20 1720 | sweatshirt , vest , 145 1721 | accessories , laptop bag , 339 1722 | shirt , wing tips , 50 1723 | footwear , running shoes , 412 1724 | formal trousers , messenger bag , 82 1725 | clutch , glasses , 157 1726 | crewneck , romper , 6 1727 | purse , sports shoes , 139 1728 | glasses , maxi dress , 32 1729 | goggles , running shoes , 79 1730 | earrings , romper , 8 1731 | sandals , tote , 333 1732 | running shoes , shirt , 9 1733 | casual shirt , suit , 646 1734 | slip ons , tuxedo , 40 1735 | ankle boots , footwear , 194 1736 | bottoms , costume , 9 1737 | polo , wedges , 17 1738 | ballerinas , shirt , 817 1739 | flipflops , maxi dress , 59 1740 | cargo shorts , v-neck , 2 1741 | dress , monk straps , 15 1742 | bottoms , shirt , 24 1743 | gloves , parka , 1 1744 | bracelet , waistcoat , 26 1745 | backpack , sports sandals , 9 1746 | bag , tote , 507 1747 | earrings , tunic , 372 1748 | handkerchief , vest , 59 1749 | accessories , shrug , 100 1750 | bag , goggles , 34 1751 | loafers , top , 771 1752 | cap , short dress , 35 1753 | maxi dress , turtleneck , 9 1754 | bag , socks , 56 1755 | t-shirt , tuxedo , 72 1756 | peeptoes , sling bag , 3 1757 | blouse , formal shoes , 36 1758 | footwear , scarf , 17 1759 | necktie , suitcase , 27 1760 | platform heels , short dress , 6 1761 | cape , v-neck , 15 1762 | glasses , tote , 120 1763 | belt , panties , 60 1764 | socks , wing tips , 14 1765 | layer_1_upper_body , pumps , 15 1766 | corset , sports shoes , 4 1767 | brogues , sunglasses , 14 1768 | shirt , socks , 12 1769 | ballerinas , suitcase , 61 1770 | casual jacket , running shoes , 9 1771 | cardigan , slip ons , 36 1772 | canvas shoes , messenger bag , 94 1773 | party dress , pumps , 3 1774 | accessories , bow tie , 514 1775 | casual jacket , watch , 16 1776 | corset , glasses , 1 1777 | espadrilles , sling bag , 5 1778 | leather jacket , polo , 13 1779 | blazer , costume , 8 1780 | apparel , card case , 109 1781 | backpack , henley , 4 1782 | high tops , swimsuit , 2 1783 | apparel , dungaree , 161 1784 | sandals , shirt , 552 1785 | casual shoes , windcheater , 6 1786 | lifestyle shoes , sling bag , 4 1787 | t-shirt , wedges , 108 1788 | belt , suit , 145 1789 | clogs , top , 147 1790 | bottoms , necktie , 150 1791 | accessories , slip ons , 53 1792 | bottoms , earrings , 260 1793 | belt , wedges , 74 1794 | cargo shorts , wallet , 1 1795 | apparel , crewneck , 460 1796 | casual shirt , derby , 66 1797 | dungaree , socks , 5 1798 | sunglasses , winter jacket , 34 1799 | apparel , athletic socks , 26 1800 | blouse , scarf , 18 1801 | jacket , slip ons , 156 1802 | cap , layer_1_upper_body , 174 1803 | belt , dupatta , 7 1804 | tights , wedges , 7 1805 | pumps , shrug , 149 1806 | backpack , bracelet , 4 1807 | ballerinas , saree , 60 1808 | hoodie , sandals , 239 1809 | sandals , sunglasses , 7 1810 | apparel , dress socks , 88 1811 | bag , down jacket , 2 1812 | t-shirt , watch , 416 1813 | bracelet , wedges , 104 1814 | cap , shirt , 161 1815 | chinos , footwear , 800 1816 | formal trousers , glasses , 30 1817 | sports bra , top , 261 1818 | floaters , trackwear , 6 1819 | cap , jeans , 514 1820 | accessories , scarf , 231 1821 | cap , casual trousers , 2 1822 | cargo shorts , slip ons , 8 1823 | cardigan , purse , 45 1824 | ballerinas , watch , 255 1825 | polo , ring , 233 1826 | sports shoes , windcheater , 2 1827 | dupatta , hand bag , 24 1828 | denim shorts , flipflops , 44 1829 | necktie , thermal , 2 1830 | bag , belly shoes , 1 1831 | joggers , vest , 75 1832 | shrug , swimsuit , 12 1833 | party dress , stockings , 6 1834 | belt , tights , 14 1835 | backpack , ballerinas , 54 1836 | push-up bra , top , 24 1837 | jewelry , saree , 7 1838 | kurta , pumps , 728 1839 | sports sandals , sunglasses , 120 1840 | hand bag , loafers , 20 1841 | brogues , sweatshirt , 1 1842 | jumpsuit , necktie , 184 1843 | kurta , ring , 242 1844 | formal shirt , formal shoes , 249 1845 | bracelet , costume , 141 1846 | satchel , winter jacket , 6 1847 | glasses , hoodie , 18 1848 | corset , jeans , 3 1849 | shrug , watch , 65 1850 | fitness band , messenger bag , 4 1851 | lifestyle shoes , messenger bag , 215 1852 | dungaree , mittens , 2 1853 | top , turtleneck , 22 1854 | fedora , travel bag , 14 1855 | scarf , thermal , 1 1856 | canvas shoes , suit , 7 1857 | boots , winter jacket , 428 1858 | hoodie , jeans , 652 1859 | dress , lifestyle shoes , 85 1860 | dress , peeptoes , 511 1861 | kurta , watch , 39 1862 | trouser , waistcoat , 15 1863 | earrings , scarf , 4 1864 | blazer , sandals , 427 1865 | fitness band , top , 6 1866 | accessories , suitcase , 205 1867 | necklace , satchel , 58 1868 | henley , slip ons , 39 1869 | ballerinas , leggings , 545 1870 | cardigan , kurti , 7 1871 | clutch , loafers , 17 1872 | trackwear , training shoes , 69 1873 | accessories , bikini , 499 1874 | messenger bag , winter jacket , 18 1875 | dress , floaters , 2 1876 | slippers , watch , 18 1877 | brogues , hand bag , 11 1878 | messenger bag , necktie , 1 1879 | casual jacket , messenger bag , 27 1880 | casual trousers , derby , 2 1881 | purse , sandals , 562 1882 | sling bag , swimsuit , 1 1883 | cap , gloves , 13 1884 | backpack , v-neck , 1 1885 | glasses , sports shoes , 121 1886 | leggings , satchel , 10 1887 | goggles , tunic , 59 1888 | denim shorts , footwear , 36 1889 | cape , lifestyle shoes , 1 1890 | shrug , top , 781 1891 | formal shoes , jeans , 738 1892 | casual shoes , watch , 421 1893 | dress , sling bag , 354 1894 | polo , suit , 6 1895 | costume , gloves , 37 1896 | bag , jeans , 246 1897 | hoodie , thermal , 14 1898 | palazzo , polo , 11 1899 | shorts , socks , 47 1900 | fedora , shirt , 71 1901 | casual jacket , mini skirt , 7 1902 | bow tie , bracelet , 459 1903 | derby , hand bag , 5 1904 | necklace , pumps , 26 1905 | athletic socks , sports shoes , 3 1906 | suit , swimwear , 5 1907 | flipflops , trackpants , 13 1908 | palazzo , peeptoes , 321 1909 | tights , top , 400 1910 | bow tie , fedora , 4 1911 | jeans , suit , 170 1912 | lehenga , stilettos , 2 1913 | bracelet , jacket , 41 1914 | apparel , peeptoes , 463 1915 | chinos , running shoes , 48 1916 | cardigan , mini skirt , 6 1917 | ring , top , 413 1918 | night slip , pyjama , 371 1919 | cap , sunglasses , 28 1920 | bag , turtleneck , 5 1921 | accessories , fedora , 5 1922 | handkerchief , slip ons , 6 1923 | accessories , lehenga , 207 1924 | fitness band , t-shirt , 26 1925 | jeans , jewelry , 1 1926 | casual shoes , skirt , 229 1927 | blazer , scarf , 9 1928 | accessories , earrings , 9 1929 | coat , polo , 1 1930 | jeans , wedges , 712 1931 | ballerinas , sunglasses , 280 1932 | blouse , glasses , 157 1933 | bomber jacket , casual shirt , 281 1934 | night slip , slippers , 138 1935 | apparel , turtleneck , 21 1936 | apparel , hoodie , 708 1937 | cardigan , tote , 10 1938 | mittens , trouser , 9 1939 | bag , canvas shoes , 44 1940 | canvas shoes , goggles , 14 1941 | jeggings , trench coat , 12 1942 | polo , tote , 3 1943 | sweatshirt , wedges , 33 1944 | driving shoes , trousers , 3 1945 | chinos , suspender , 24 1946 | dress , pumps , 775 1947 | ring , skirt , 19 1948 | clogs , swimsuit , 29 1949 | bracelet , shirt , 137 1950 | dungaree , flipflops , 92 1951 | suit , winter jacket , 6 1952 | gloves , trouser , 2 1953 | bracelet , jumpsuit , 515 1954 | jewelry , sling bag , 4 1955 | ballerinas , skirt , 827 1956 | casual shoes , sweater , 195 1957 | espadrilles , jeggings , 6 1958 | casual jacket , t-shirt , 628 1959 | necktie , shrug , 64 1960 | maxi dress , waistcoat , 8 1961 | footwear , hand bag , 477 1962 | bag , costume , 46 1963 | casual shoes , henley , 220 1964 | running shoes , v-neck , 23 1965 | footwear , trackwear , 172 1966 | pumps , top , 864 1967 | footwear , wedges , 610 1968 | corset , mini skirt , 15 1969 | camisole , thongs , 3 1970 | bracelet , cufflinks , 87 1971 | beanies , cardigan , 3 1972 | card case , laptop bag , 1 1973 | sweater , swimsuit , 67 1974 | casual jacket , kurta , 11 1975 | formal shoes , trouser , 41 1976 | maxi dress , wedges , 597 1977 | flipflops , laptop bag , 1 1978 | cargo shorts , sports shoes , 31 1979 | bag , necktie , 254 1980 | cardigan , night slip , 7 1981 | dungaree , kimono , 1 1982 | espadrilles , messenger bag , 34 1983 | ballerinas , sweater , 22 1984 | brogues , jacket , 134 1985 | flipflops , sling bag , 29 1986 | goggles , trackpants , 1 1987 | oxfords shoe , polo , 60 1988 | coat , trouser , 63 1989 | wedding dress , wedges , 3 1990 | blouse , peeptoes , 517 1991 | handkerchief , tunic , 99 1992 | bottoms , monk straps , 1 1993 | briefs , jeans , 31 1994 | goggles , sports shoes , 33 1995 | sports shoes , sweatshirt , 862 1996 | peacoat , t-shirt , 2 1997 | training shoes , vest , 14 1998 | backpack , hoodie , 2 1999 | casual shirt , trousers , 109 2000 | accessories , glasses , 264 2001 | kurta , slip ons , 179 2002 | maxi dress , satchel , 48 2003 | ring , wedding dress , 1 2004 | belt , earrings , 15 2005 | pajama , sweater , 7 2006 | chinos , hoodie , 5 2007 | espadrilles , goggles , 4 2008 | flipflops , kurta , 6 2009 | denim shorts , t-shirt , 87 2010 | formal trousers , suit , 135 2011 | bottoms , platform heels , 9 2012 | lifestyle shoes , palazzo , 1 2013 | casual shoes , shorts , 461 2014 | cap , henley , 34 2015 | accessories , accessories , 36 2016 | party dress , stilettos , 18 2017 | belt , denim shorts , 41 2018 | bracelet , sandals , 32 2019 | belt , camisole , 19 2020 | chinos , slippers , 362 2021 | belt , shape wear , 15 2022 | dungaree , wedges , 53 2023 | scarf , thongs , 29 2024 | backpack , socks , 5 2025 | accessories , suit , 578 2026 | thongs , trousers , 1 2027 | blazer , bottoms , 40 2028 | shirt dress , wedges , 26 2029 | glasses , satchel , 44 2030 | cardigan , henley , 18 2031 | gloves , suit , 5 2032 | hoodie , jumper , 21 2033 | gloves , scarf , 2 2034 | belt , suspender , 23 2035 | bag , belt , 273 2036 | cufflinks , footwear , 29 2037 | monk straps , t-shirt , 1 2038 | bottoms , casual shirt , 204 2039 | rugby , sandals , 50 2040 | running shoes , skirt , 9 2041 | briefs , messenger bag , 85 2042 | belt , pumps , 101 2043 | accessories , party dress , 181 2044 | floaters , trousers , 14 2045 | apparel , tote , 631 2046 | slip ons , travel bag , 5 2047 | casual shirt , footwear , 276 2048 | footwear , pajama , 173 2049 | clutch , top , 556 2050 | casual shirt , formal trousers , 128 2051 | bracelet , trouser , 471 2052 | cardigan , handkerchief , 7 2053 | belt , platform heels , 5 2054 | jewelry , short dress , 13 2055 | footwear , tote , 124 2056 | footwear , party dress , 341 2057 | palazzo , wedges , 465 2058 | oxfords shoe , top , 18 2059 | glasses , henley , 45 2060 | suit , watch , 300 2061 | casual shirt , messenger bag , 7 2062 | leggings , mittens , 6 2063 | apparel , saree , 801 2064 | accessories , kurti , 22 2065 | clutch , shrug , 26 2066 | cap , maxi dress , 27 2067 | necktie , trunk , 39 2068 | bottoms , formal shirt , 7 2069 | chinos , necktie , 23 2070 | bottoms , layer_1_lower_body , 90 2071 | jewelry , suit , 65 2072 | loafers , trackpants , 6 2073 | clogs , skirt , 8 2074 | fitness band , sports sandals , 4 2075 | churidar set , wedges , 203 2076 | glasses , scarf , 18 2077 | slippers , sweater , 1 2078 | footwear , stockings , 33 2079 | ankle boots , apparel , 58 2080 | footwear , mini skirt , 15 2081 | casual jacket , casual trousers , 37 2082 | ballerinas , wedding dress , 37 2083 | bag , cufflinks , 13 2084 | footwear , glasses , 33 2085 | socks , top , 376 2086 | sunglasses , tote , 145 2087 | necktie , running shoes , 26 2088 | kurta , trackwear , 10 2089 | jeans , sling bag , 61 2090 | henley , leather jacket , 4 2091 | accessories , espadrilles , 24 2092 | costume , waistcoat , 7 2093 | apparel , shorts , 580 2094 | laptop bag , trousers , 4 2095 | pumps , wedding dress , 14 2096 | layer_1_upper_body , travel bag , 5 2097 | jewelry , sunglasses , 69 2098 | apparel , oxfords shoe , 19 2099 | belt , tunic , 139 2100 | joggers , sunglasses , 28 2101 | boots , palazzo , 1 2102 | chinos , kurta , 186 2103 | high tops , skirt , 37 2104 | costume , ring , 17 2105 | ballerinas , t-shirt , 656 2106 | accessories , boxer briefs , 5 2107 | hand bag , monk straps , 1 2108 | ballerinas , shirt dress , 59 2109 | boots , jumper , 4 2110 | goggles , palazzo , 28 2111 | corset , stilettos , 1 2112 | accessories , hoodie , 295 2113 | blouse , sling bag , 1 2114 | jumpsuit , stockings , 6 2115 | earrings , leggings , 248 2116 | sports bra , trouser , 5 2117 | jumper , sweatshirt , 508 2118 | belly shoes , t-shirt , 34 2119 | running shoes , vest , 249 2120 | bag , formal shoes , 293 2121 | pyjama , trousers , 6 2122 | ballerinas , romper , 212 2123 | jewelry , tunic , 43 2124 | glasses , tights , 3 2125 | jeggings , sports shoes , 64 2126 | gloves , hoodie , 4 2127 | bottoms , pyjama , 94 2128 | sling bag , suit , 3 2129 | canvas shoes , shorts , 34 2130 | necktie , scarf , 45 2131 | casual shirt , goggles , 371 2132 | belly shoes , joggers , 1 2133 | necktie , swim trunks , 30 2134 | crewneck , jeans , 9 2135 | leggings , pumps , 174 2136 | churidar set , scarf , 590 2137 | apparel , messenger bag , 241 2138 | hand bag , stilettos , 9 2139 | chinos , sports sandals , 78 2140 | casual shirt , cufflinks , 5 2141 | leggings , thermal , 81 2142 | sandals , winter jacket , 46 2143 | jumpsuit , sandals , 765 2144 | casual trousers , footwear , 89 2145 | goggles , shorts , 145 2146 | cardigan , high tops , 22 2147 | goggles , jeans , 79 2148 | coat , costume , 213 2149 | accessories , shape wear , 14 2150 | swimsuit , thongs , 16 2151 | belt , skirt , 510 2152 | casual jacket , shorts , 13 2153 | flipflops , jeggings , 5 2154 | sweatshirt , thongs , 4 2155 | henley , trouser , 9 2156 | blouse , cap , 431 2157 | bottoms , jewelry , 53 2158 | shrug , sling bag , 36 2159 | boxers , footwear , 41 2160 | bag , v-neck , 5 2161 | boots , romper , 1 2162 | blouse , crewneck , 39 2163 | belt , laptop bag , 10 2164 | lifestyle shoes , shorts , 7 2165 | dupatta , handkerchief , 3 2166 | derby , necktie , 6 2167 | chinos , tote , 19 2168 | belt , peeptoes , 10 2169 | skirt , stilettos , 401 2170 | floaters , jeans , 29 2171 | necktie , top , 722 2172 | dress socks , leggings , 6 2173 | t-shirt , trench coat , 32 2174 | accessories , joggers , 3 2175 | gloves , sports shoes , 1 2176 | bomber jacket , chinos , 6 2177 | bottoms , sleepwear , 13 2178 | palazzo , sandals , 820 2179 | cap , party dress , 68 2180 | espadrilles , polo , 67 2181 | bottoms , casual shoes , 543 2182 | vest , wedges , 3 2183 | costume , lapel pin , 10 2184 | bow tie , t-shirt , 5 2185 | coat , wedges , 39 2186 | blouse , slippers , 8 2187 | casual trousers , formal shirt , 1 2188 | backpack , high tops , 1 2189 | belt , boots , 22 2190 | monk straps , trousers , 15 2191 | footwear , polo , 747 2192 | dress , travel bag , 12 2193 | cap , cape , 39 2194 | accessories , socks , 174 2195 | costume , vest , 3 2196 | scarf , wedges , 5 2197 | bag , slippers , 235 2198 | formal shirt , formal trousers , 10 2199 | lapel pin , tuxedo , 2 2200 | necklace , panties , 1 2201 | ballerinas , jeans , 841 2202 | chinos , slip ons , 175 2203 | boxers , pyjama , 54 2204 | bottoms , camisole , 114 2205 | sweatshirt , thermal , 16 2206 | suspender , sweater , 45 2207 | cap , tights , 15 2208 | boots , shrug , 323 2209 | casual shirt , casual shoes , 278 2210 | corset , costume , 38 2211 | belt , flipflops , 2 2212 | hipsters , shape wear , 13 2213 | blouse , platform heels , 62 2214 | apparel , high tops , 92 2215 | backpack , t-shirt , 464 2216 | travel bag , watch , 35 2217 | briefs , necktie , 15 2218 | leggings , stilettos , 105 2219 | casual shirt , peeptoes , 1 2220 | cardigan , sling bag , 1 2221 | sweatshirt , training shoes , 10 2222 | cardigan , scarf , 75 2223 | apparel , clogs , 138 2224 | apparel , derby , 437 2225 | belt , vest , 20 2226 | cardigan , leggings , 168 2227 | high tops , suit , 1 2228 | belly shoes , dress , 45 2229 | formal trousers , polo , 144 2230 | necktie , peeptoes , 7 2231 | cap , parka , 1 2232 | accessories , henley , 16 2233 | jacket , lifestyle shoes , 402 2234 | flipflops , shorts , 742 2235 | ankle boots , cap , 6 2236 | earrings , jewelry , 240 2237 | bow tie , jewelry , 7 2238 | ballerinas , sports bra , 24 2239 | running shoes , trouser , 9 2240 | jeans , messenger bag , 191 2241 | messenger bag , oxfords shoe , 9 2242 | hand bag , tunic , 63 2243 | bottoms , wedges , 807 2244 | cardigan , jumpsuit , 30 2245 | running shoes , trousers , 148 2246 | ballerinas , coat , 40 2247 | bag , hoodie , 89 2248 | kurta , suit , 22 2249 | ballerinas , trackwear , 32 2250 | bottoms , t-shirt , 855 2251 | cape , leggings , 16 2252 | bottoms , shape wear , 3 2253 | palazzo , ring , 6 2254 | tote , trousers , 3 2255 | espadrilles , shirt , 65 2256 | bikini , flipflops , 46 2257 | palazzo , thongs , 6 2258 | churidar set , pumps , 268 2259 | t-shirt , thongs , 3 2260 | belly shoes , cap , 8 2261 | shorts , slippers , 41 2262 | dungaree , sports shoes , 188 2263 | footwear , suitcase , 152 2264 | bag , leggings , 353 2265 | jeggings , lifestyle shoes , 16 2266 | flipflops , jumpsuit , 63 2267 | stockings , sweatshirt , 1 2268 | cufflinks , vest , 128 2269 | cap , formal shoes , 66 2270 | jeans , sandals , 769 2271 | oxfords shoe , watch , 9 2272 | jumpsuit , sweater , 24 2273 | formal shirt , sandals , 18 2274 | coat , necklace , 1 2275 | layer_1_upper_body , satchel , 9 2276 | sunglasses , trouser , 5 2277 | oxfords shoe , skirt , 12 2278 | beanies , leggings , 2 2279 | bag , thongs , 60 2280 | sports sandals , t-shirt , 341 2281 | goggles , trousers , 163 2282 | glasses , stilettos , 15 2283 | lifestyle shoes , sunglasses , 14 2284 | hand bag , jeggings , 1 2285 | ring , sweater , 2 2286 | camisole , trousers , 76 2287 | boxer briefs , slip ons , 75 2288 | bracelet , glasses , 21 2289 | clogs , gloves , 1 2290 | costume , tuxedo , 4 2291 | high tops , top , 254 2292 | casual shirt , denim shorts , 53 2293 | kurta , sunglasses , 35 2294 | jeggings , sling bag , 23 2295 | pajama , push-up bra , 6 2296 | backpack , wedges , 6 2297 | necklace , sweatshirt , 11 2298 | apparel , shirt , 710 2299 | bottoms , tights , 2 2300 | apparel , jeans , 405 2301 | swimwear , tote , 1 2302 | casual shoes , romper , 11 2303 | necklace , peeptoes , 12 2304 | bag , robe , 237 2305 | sweatshirt , tuxedo , 13 2306 | fitness band , joggers , 10 2307 | corset , satchel , 6 2308 | earrings , wedding dress , 44 2309 | bow tie , sunglasses , 11 2310 | boots , skirt , 327 2311 | churidar set , slippers , 350 2312 | peeptoes , t-shirt , 34 2313 | pumps , skirt , 360 2314 | cap , polo , 102 2315 | formal shoes , kurti , 22 2316 | oxfords shoe , trouser , 23 2317 | jumpsuit , lifestyle shoes , 15 2318 | loafers , sling bag , 67 2319 | hoodie , lifestyle shoes , 15 2320 | formal shoes , t-shirt , 111 2321 | pumps , tights , 6 2322 | high tops , sweater , 22 2323 | hoodie , vest , 12 2324 | suit , suitcase , 81 2325 | monk straps , trouser , 1 2326 | jacket , pumps , 154 2327 | bottoms , trouser , 236 2328 | belt , formal shirt , 7 2329 | slippers , trackpants , 5 2330 | high tops , sweatshirt , 4 2331 | kimono , swimsuit , 8 2332 | loafers , rugby , 22 2333 | cape , shorts , 17 2334 | fedora , jeans , 16 2335 | cap , casual shirt , 219 2336 | pumps , tote , 5 2337 | sling bag , sunglasses , 2 2338 | apparel , fedora , 96 2339 | scarf , travel bag , 4 2340 | footwear , wedding dress , 819 2341 | hand bag , swimsuit , 54 2342 | goggles , kurta , 27 2343 | costume , jumper , 1 2344 | flipflops , pyjama , 26 2345 | suitcase , wallet , 8 2346 | ring , suitcase , 2 2347 | casual shirt , slippers , 1 2348 | trench coat , trouser , 24 2349 | derby , tuxedo , 4 2350 | outerwear , wallet , 26 2351 | casual shirt , chinos , 553 2352 | pumps , shirt dress , 14 2353 | flipflops , tunic , 2 2354 | cardigan , casual shoes , 195 2355 | accessories , handkerchief , 388 2356 | blazer , tights , 1 2357 | camisole , v-neck , 12 2358 | t-shirt , trackwear , 576 2359 | clutch , hipsters , 1 2360 | ballerinas , cape , 23 2361 | earrings , loafers , 24 2362 | thermal , v-neck , 1 2363 | sunglasses , swimwear , 1 2364 | kurta , leggings , 778 2365 | sandals , top , 877 2366 | boots , jumpsuit , 257 2367 | gloves , slippers , 3 2368 | bottoms , outerwear , 3 2369 | footwear , monk straps , 14 2370 | purse , romper , 3 2371 | cardigan , costume , 11 2372 | loafers , necktie , 51 2373 | necklace , suit , 4 2374 | bikini , socks , 4 2375 | hand bag , shorts , 39 2376 | bow tie , footwear , 18 2377 | jewelry , sandals , 13 2378 | cufflinks , wing tips , 4 2379 | blazer , suit , 9 2380 | bottoms , denim jacket , 6 2381 | socks , suspender , 9 2382 | ballerinas , goggles , 207 2383 | ballerinas , kurti , 755 2384 | hand bag , sweater , 40 2385 | bottoms , chinos , 33 2386 | kurti , peeptoes , 407 2387 | stilettos , trousers , 352 2388 | dupatta , slippers , 3 2389 | tunic , wedges , 352 2390 | cap , windcheater , 6 2391 | necktie , party dress , 46 2392 | ballerinas , v-neck , 15 2393 | thongs , wedding dress , 1 2394 | cardigan , shirt dress , 1 2395 | oxfords shoe , shorts , 11 2396 | blouse , stilettos , 483 2397 | mini skirt , top , 240 2398 | running shoes , shorts , 89 2399 | earrings , glasses , 4 2400 | t-shirt , trunk , 89 2401 | sports bra , swimsuit , 22 2402 | dress socks , sandals , 6 2403 | belt , sweatshirt , 15 2404 | skirt , travel bag , 8 2405 | apparel , henley , 312 2406 | costume , shrug , 18 2407 | belly shoes , bracelet , 69 2408 | sling bag , sports shoes , 59 2409 | bottoms , bra , 41 2410 | vest , wallet , 1 2411 | ballerinas , swimwear , 70 2412 | socks , wedding dress , 8 2413 | hoodie , satchel , 612 2414 | bikini , camisole , 10 2415 | shrug , wedding dress , 9 2416 | suspender , watch , 22 2417 | costume , socks , 17 2418 | shirt , suspender , 281 2419 | laptop bag , sports shoes , 1 2420 | sunglasses , suspender , 1 2421 | earrings , satchel , 35 2422 | padded bra , swimsuit , 20 2423 | trouser , tunic , 686 2424 | thermal , trousers , 6 2425 | romper , wedges , 10 2426 | card case , glasses , 38 2427 | necktie , polo , 16 2428 | romper , socks , 77 2429 | blouse , floaters , 8 2430 | accessories , thongs , 92 2431 | kurti , trousers , 334 2432 | cap , hipsters , 12 2433 | glasses , laptop bag , 1 2434 | belt , sports shoes , 85 2435 | laptop sleeve , suit , 22 2436 | bag , maxi dress , 247 2437 | slip ons , swim trunks , 13 2438 | shirt , travel bag , 161 2439 | bag , earrings , 31 2440 | cap , hoodie , 64 2441 | bodysuit , thongs , 45 2442 | glasses , t-shirt , 87 2443 | scarf , suit , 71 2444 | watch , wedges , 46 2445 | jumpsuit , kimono , 1 2446 | top , trousers , 701 2447 | bottoms , footwear , 786 2448 | card case , trousers , 97 2449 | purse , saree , 15 2450 | dress , goggles , 4 2451 | necktie , palazzo , 2 2452 | leggings , sunglasses , 44 2453 | peeptoes , shorts , 32 2454 | ballerinas , waistcoat , 5 2455 | camisole , stilettos , 12 2456 | bottoms , swim trunks , 15 2457 | gloves , slip ons , 59 2458 | hand bag , sunglasses , 120 2459 | hoodie , tights , 28 2460 | skirt , winter jacket , 164 2461 | glasses , sweater , 59 2462 | necktie , trousers , 182 2463 | espadrilles , jacket , 7 2464 | robe , sandals , 19 2465 | platform heels , tunic , 10 2466 | bottoms , short dress , 18 2467 | skirt , sunglasses , 19 2468 | kurta , loafers , 352 2469 | casual shoes , clutch , 17 2470 | fedora , necktie , 1 2471 | cap , espadrilles , 4 2472 | leggings , winter jacket , 42 2473 | apparel , denim shorts , 52 2474 | bottoms , jumpsuit , 116 2475 | clutch , trousers , 5 2476 | boots , earrings , 24 2477 | handkerchief , layer_1_lower_body , 1 2478 | briefs , ring , 18 2479 | blouse , chinos , 124 2480 | clutch , romper , 8 2481 | formal shoes , suit , 568 2482 | footwear , trunk , 11 2483 | bag , shirt dress , 17 2484 | casual shirt , formal shoes , 403 2485 | apparel , sleepwear , 387 2486 | gloves , thermal , 2 2487 | bag , trackwear , 6 2488 | dupatta , salwaar , 130 2489 | trouser , watch , 54 2490 | flipflops , joggers , 10 2491 | blazer , jeans , 155 2492 | canvas shoes , jacket , 50 2493 | ring , watch , 54 2494 | blouse , watch , 142 2495 | apparel , sweater , 452 2496 | cargo shorts , casual shoes , 16 2497 | boots , mini skirt , 12 2498 | casual shoes , satchel , 5 2499 | bag , tunic , 241 2500 | denim shorts , henley , 4 2501 | maxi dress , shrug , 88 2502 | sports shoes , travel bag , 22 2503 | casual trousers , espadrilles , 1 2504 | suit , trackwear , 456 2505 | slip ons , v-neck , 69 2506 | bag , wedding dress , 94 2507 | camisole , sports shoes , 31 2508 | camisole , suit , 15 2509 | palazzo , waistcoat , 1 2510 | belt , dungaree , 27 2511 | bottoms , romper , 69 2512 | crewneck , sandals , 22 2513 | kurti , trouser , 572 2514 | high tops , tunic , 11 2515 | clutch , stilettos , 158 2516 | cap , peeptoes , 12 2517 | accessories , clutch , 680 2518 | necklace , shirt , 10 2519 | briefs , sleepwear , 431 2520 | accessories , sunglasses , 754 2521 | bag , cape , 14 2522 | hand bag , thermal , 1 2523 | bra , footwear , 9 2524 | driving shoes , jeans , 21 2525 | camisole , mini skirt , 5 2526 | ring , t-shirt , 17 2527 | belt , bra , 92 2528 | shirt , sunglasses , 312 2529 | ballerinas , maxi dress , 787 2530 | scarf , winter jacket , 28 2531 | loafers , necklace , 9 2532 | accessories , necktie , 676 2533 | mini skirt , sweater , 6 2534 | polo , socks , 4 2535 | sunglasses , wedges , 18 2536 | necklace , sunglasses , 1 2537 | belly shoes , party dress , 10 2538 | gloves , satchel , 1 2539 | cap , casual jacket , 18 2540 | sandals , socks , 35 2541 | padded bra , top , 74 2542 | goggles , jumpsuit , 146 2543 | accessories , card case , 310 2544 | backpack , bra , 1 2545 | derby , laptop bag , 14 2546 | peacoat , top , 9 2547 | cargo shorts , sweatshirt , 16 2548 | lifestyle shoes , socks , 8 2549 | jewelry , shorts , 5 2550 | accessories , belly shoes , 67 2551 | hand bag , suit , 173 2552 | loafers , shirt , 809 2553 | coat , sling bag , 6 2554 | ballerinas , outerwear , 11 2555 | floaters , shirt , 21 2556 | chinos , messenger bag , 122 2557 | flipflops , henley , 10 2558 | palazzo , pyjama , 2 2559 | sports bra , stockings , 6 2560 | jewelry , t-shirt , 2 2561 | apparel , formal shirt , 27 2562 | ballerinas , formal shirt , 13 2563 | blouse , ring , 60 2564 | stilettos , t-shirt , 9 2565 | kurta , necktie , 11 2566 | clutch , goggles , 34 2567 | bracelet , coat , 6 2568 | socks , sweatshirt , 7 2569 | clutch , dungaree , 6 2570 | ballerinas , casual jacket , 17 2571 | jeans , sports sandals , 164 2572 | clutch , layer_1_upper_body , 12 2573 | glasses , running shoes , 71 2574 | bikini , hipsters , 124 2575 | apparel , shrug , 503 2576 | canvas shoes , henley , 28 2577 | high tops , necktie , 1 2578 | socks , tights , 153 2579 | slippers , top , 173 2580 | clutch , earrings , 43 2581 | sports bra , v-neck , 24 2582 | casual jacket , sandals , 51 2583 | kurti , stilettos , 200 2584 | joggers , top , 286 2585 | hoodie , leather jacket , 5 2586 | casual shoes , sling bag , 4 2587 | cap , monk straps , 1 2588 | cardigan , chinos , 36 2589 | belt , hipsters , 4 2590 | apparel , satchel , 512 2591 | cap , thermal , 5 2592 | camisole , leggings , 69 2593 | boots , satchel , 18 2594 | jewelry , necklace , 337 2595 | pumps , watch , 125 2596 | ankle boots , sweater , 2 2597 | apparel , bracelet , 145 2598 | palazzo , sunglasses , 60 2599 | jewelry , palazzo , 106 2600 | necktie , sports shoes , 16 2601 | bikini , necktie , 668 2602 | socks , thermal , 6 2603 | slip ons , suspender , 22 2604 | clutch , jeggings , 5 2605 | espadrilles , necktie , 1 2606 | cape , stilettos , 22 2607 | cape , kurta , 35 2608 | accessories , t-shirt , 49 2609 | churidar set , handkerchief , 3 2610 | corset , v-neck , 2 2611 | apparel , suitcase , 579 2612 | glasses , gloves , 3 2613 | gloves , layer_1_upper_body , 35 2614 | accessories , floaters , 7 2615 | hipsters , hoodie , 27 2616 | henley , suit , 5 2617 | costume , necktie , 143 2618 | casual shoes , tights , 16 2619 | footwear , trench coat , 24 2620 | monk straps , top , 1 2621 | lifestyle shoes , shirt , 627 2622 | boots , tuxedo , 2 2623 | boxer briefs , necktie , 1 2624 | footwear , shirt dress , 42 2625 | trousers , tunic , 569 2626 | short dress , shrug , 6 2627 | boxer briefs , sweatshirt , 23 2628 | polo , winter jacket , 35 2629 | ballerinas , tunic , 546 2630 | belt , ring , 38 2631 | fedora , suitcase , 12 2632 | ballerinas , palazzo , 749 2633 | cape , maxi dress , 4 2634 | footwear , sleepwear , 116 2635 | short dress , turtleneck , 4 2636 | blouse , cardigan , 156 2637 | casual shirt , floaters , 10 2638 | glasses , hipsters , 3 2639 | brogues , purse , 10 2640 | necktie , pyjama , 6 2641 | casual shoes , t-shirt , 791 2642 | lehenga , sandals , 28 2643 | spectators , t-shirt , 2 2644 | bag , satchel , 688 2645 | backpack , suit , 1 2646 | sling bag , sweatshirt , 2 2647 | driving shoes , socks , 22 2648 | dress , wedges , 725 2649 | sling bag , t-shirt , 20 2650 | formal shirt , wing tips , 16 2651 | bag , jacket , 448 2652 | casual trousers , formal shoes , 6 2653 | satchel , trouser , 37 2654 | belt , bomber jacket , 34 2655 | sunglasses , wing tips , 11 2656 | sunglasses , t-shirt , 216 2657 | goggles , layer_1_upper_body , 65 2658 | peeptoes , trouser , 673 2659 | ring , suspender , 19 2660 | churidar set , jewelry , 108 2661 | cardigan , gloves , 3 2662 | jacket , monk straps , 1 2663 | jeans , socks , 38 2664 | corset , necktie , 76 2665 | briefs , laptop bag , 29 2666 | belt , messenger bag , 162 2667 | denim shorts , polo , 7 2668 | card case , cufflinks , 103 2669 | top , training shoes , 88 2670 | clogs , shirt , 8 2671 | suit , trunk , 3 2672 | bracelet , casual shoes , 30 2673 | necktie , thongs , 3 2674 | apparel , push-up bra , 11 2675 | belt , layer_1_upper_body , 197 2676 | backpack , lifestyle shoes , 66 2677 | apparel , cargo shorts , 91 2678 | backpack , watch , 23 2679 | loafers , sleepwear , 33 2680 | accessories , wallet , 102 2681 | ballerinas , casual trousers , 6 2682 | cardigan , trouser , 78 2683 | cardigan , pumps , 20 2684 | t-shirt , travel bag , 33 2685 | jewelry , loafers , 11 2686 | jacket , sling bag , 2 2687 | platform heels , wedding dress , 9 2688 | necktie , suspender , 633 2689 | boots , kurti , 11 2690 | accessories , stilettos , 19 2691 | maxi dress , necktie , 351 2692 | cardigan , t-shirt , 621 2693 | accessories , dupatta , 49 2694 | kurta , stilettos , 709 2695 | formal shoes , waist coat , 30 2696 | cardigan , maxi dress , 130 2697 | jacket , ring , 11 2698 | bracelet , saree , 727 2699 | dungaree , stilettos , 12 2700 | accessories , leggings , 444 2701 | camisole , pajama , 8 2702 | maxi dress , purse , 352 2703 | chinos , flipflops , 207 2704 | ballerinas , thermal , 12 2705 | blouse , corset , 94 2706 | cap , winter jacket , 6 2707 | formal trousers , lifestyle shoes , 8 2708 | bag , kurti , 7 2709 | footwear , ring , 30 2710 | belt , boxers , 6 2711 | bag , churidar set , 15 2712 | sweater , wedges , 8 2713 | card case , t-shirt , 1 2714 | accessories , tunic , 447 2715 | apparel , down jacket , 8 2716 | formal trousers , sunglasses , 10 2717 | high tops , joggers , 3 2718 | cap , trench coat , 6 2719 | palazzo , suitcase , 6 2720 | jacket , tote , 41 2721 | camisole , pumps , 55 2722 | jeggings , tunic , 302 2723 | ballerinas , shape wear , 43 2724 | ballerinas , denim jacket , 5 2725 | casual jacket , purse , 23 2726 | denim jacket , t-shirt , 174 2727 | derby , suit , 287 2728 | blouse , clutch , 130 2729 | polo , wing tips , 4 2730 | dress socks , socks , 107 2731 | saree , wedges , 28 2732 | mini skirt , satchel , 1 2733 | belt , slip ons , 37 2734 | bottoms , dupatta , 488 2735 | belt , oxfords shoe , 2 2736 | kurti , scarf , 54 2737 | palazzo , shrug , 14 2738 | earrings , shirt dress , 14 2739 | loafers , messenger bag , 217 2740 | espadrilles , trousers , 18 2741 | accessories , trackpants , 8 2742 | bottoms , maxi dress , 33 2743 | bag , purse , 829 2744 | derby , formal trousers , 122 2745 | jeggings , sweatshirt , 262 2746 | athletic socks , boots , 5 2747 | clutch , v-neck , 5 2748 | belly shoes , belt , 2 2749 | sports bra , trackwear , 37 2750 | slippers , sweatshirt , 6 2751 | chinos , sweater , 33 2752 | blazer , t-shirt , 24 2753 | pumps , sunglasses , 210 2754 | cap , goggles , 6 2755 | bra , bracelet , 12 2756 | satchel , sweatshirt , 1 2757 | slip ons , t-shirt , 222 2758 | apparel , parka , 35 2759 | casual shoes , winter jacket , 87 2760 | belt , jeans , 541 2761 | vest , waistcoat , 15 2762 | belt , sports bra , 18 2763 | hand bag , necktie , 36 2764 | cardigan , v-neck , 182 2765 | polo , sports shoes , 475 2766 | kurta , trousers , 599 2767 | accessories , corset , 1 2768 | belt , trackpants , 6 2769 | bag , dress , 648 2770 | handkerchief , t-shirt , 64 2771 | backpack , jewelry , 17 2772 | footwear , platform heels , 66 2773 | bikini , cap , 63 2774 | sandals , sleepwear , 18 2775 | peeptoes , suit , 246 2776 | scarf , sports shoes , 4 2777 | chinos , kurti , 1 2778 | layer_1_lower_body , travel bag , 1 2779 | pumps , shirt , 860 2780 | dress , gloves , 77 2781 | purse , t-shirt , 379 2782 | blouse , socks , 1 2783 | glasses , sandals , 98 2784 | gloves , pumps , 13 2785 | hand bag , skirt , 17 2786 | polo , purse , 3 2787 | jeggings , purse , 48 2788 | t-shirt , turtleneck , 5 2789 | palazzo , t-shirt , 315 2790 | accessories , flipflops , 284 2791 | espadrilles , joggers , 17 2792 | clogs , footwear , 682 2793 | blouse , bottoms , 276 2794 | accessories , bag , 426 2795 | cap , travel bag , 30 2796 | bodysuit , thermal , 29 2797 | layer_1_upper_body , sandals , 123 2798 | thermal , travel bag , 1 2799 | ankle boots , shorts , 13 2800 | mini skirt , sports shoes , 4 2801 | coat , oxfords shoe , 11 2802 | jumper , sunglasses , 4 2803 | cap , v-neck , 7 2804 | necklace , romper , 28 2805 | brogues , jeans , 176 2806 | accessories , lifestyle shoes , 8 2807 | ballerinas , costume , 72 2808 | blazer , v-neck , 22 2809 | sports sandals , sweatshirt , 38 2810 | maxi dress , vest , 31 2811 | footwear , sweater , 37 2812 | backpack , jumpsuit , 33 2813 | dungaree , waistcoat , 11 2814 | costume , hand bag , 7 2815 | formal shoes , shirt , 844 2816 | ankle boots , blazer , 1 2817 | sandals , trackpants , 10 2818 | bottoms , panties , 51 2819 | goggles , ring , 6 2820 | messenger bag , tights , 10 2821 | loafers , shorts , 525 2822 | jacket , suitcase , 21 2823 | bag , tuxedo , 7 2824 | footwear , t-shirt , 828 2825 | peacoat , sports shoes , 1 2826 | peeptoes , shirt dress , 2 2827 | bracelet , travel bag , 5 2828 | bag , corset , 2 2829 | jumpsuit , satchel , 5 2830 | flipflops , shirt dress , 14 2831 | goggles , socks , 5 2832 | goggles , hipsters , 5 2833 | blouse , tote , 1 2834 | leggings , watch , 47 2835 | swimsuit , wedges , 3 2836 | suit , waistcoat , 6 2837 | bottoms , formal shoes , 3 2838 | pyjama , waistcoat , 393 2839 | pajama , sandals , 77 2840 | casual shoes , sunglasses , 398 2841 | casual trousers , goggles , 6 2842 | kimono , wedges , 6 2843 | sweater , watch , 44 2844 | belt , sunglasses , 33 2845 | accessories , churidar set , 586 2846 | churidar set , clutch , 75 2847 | sports bra , t-shirt , 46 2848 | denim jacket , palazzo , 6 2849 | goggles , jumper , 4 2850 | mittens , sports shoes , 20 2851 | costume , high tops , 2 2852 | formal shoes , sweater , 11 2853 | canvas shoes , cargo shorts , 6 2854 | chinos , sandals , 15 2855 | earrings , jacket , 73 2856 | belt , suitcase , 64 2857 | socks , sports shoes , 466 2858 | peeptoes , watch , 57 2859 | scarf , stilettos , 24 2860 | sports sandals , watch , 94 2861 | shorts , thermal , 7 2862 | backpack , casual shoes , 51 2863 | casual trousers , loafers , 172 2864 | backpack , dress , 95 2865 | hand bag , wedding dress , 7 2866 | sling bag , sweater , 1 2867 | bottoms , stockings , 54 2868 | clutch , lifestyle shoes , 1 2869 | skirt , slippers , 37 2870 | tunic , vest , 39 2871 | casual jacket , loafers , 46 2872 | necktie , wallet , 6 2873 | kurti , thermal , 173 2874 | jewelry , shirt , 19 2875 | t-shirt , winter jacket , 114 2876 | bag , glasses , 208 2877 | hoodie , sweater , 614 2878 | travel bag , trouser , 98 2879 | bag , bracelet , 159 2880 | coat , leggings , 17 2881 | casual shoes , scarf , 5 2882 | purse , sweatshirt , 15 2883 | bomber jacket , sweatshirt , 24 2884 | socks , stockings , 78 2885 | suit , wing tips , 31 2886 | loafers , palazzo , 225 2887 | t-shirt , wing tips , 12 2888 | pyjama , romper , 4 2889 | chinos , top , 669 2890 | ballerinas , winter jacket , 22 2891 | backpack , denim shorts , 1 2892 | joggers , socks , 7 2893 | derby , sunglasses , 35 2894 | footwear , lehenga , 95 2895 | chinos , wallet , 6 2896 | backpack , slip ons , 179 2897 | derby , jacket , 359 2898 | denim shorts , vest , 10 2899 | leather jacket , lifestyle shoes , 71 2900 | hoodie , trackwear , 13 2901 | accessories , robe , 205 2902 | slippers , thermal , 5 2903 | pyjama , v-neck , 6 2904 | earrings , stilettos , 28 2905 | sunglasses , thongs , 2 2906 | driving shoes , footwear , 3 2907 | party dress , sweater , 17 2908 | pyjama , trunk , 17 2909 | derby , polo , 73 2910 | running shoes , t-shirt , 153 2911 | messenger bag , t-shirt , 160 2912 | footwear , winter jacket , 187 2913 | accessories , tote , 620 2914 | purse , vest , 8 2915 | scarf , watch , 4 2916 | flipflops , watch , 112 2917 | lapel pin , necktie , 34 2918 | necklace , palazzo , 42 2919 | satchel , sports shoes , 6 2920 | pumps , saree , 79 2921 | ankle boots , dress , 106 2922 | kurta , waistcoat , 1 2923 | necklace , shirt dress , 10 2924 | jeans , ring , 2 2925 | costume , loafers , 8 2926 | blouse , palazzo , 137 2927 | cardigan , formal shirt , 80 2928 | tights , tunic , 29 2929 | camisole , costume , 2 2930 | hipsters , trouser , 152 2931 | footwear , pyjama , 74 2932 | pumps , thongs , 10 2933 | bag , windcheater , 17 2934 | jewelry , suitcase , 6 2935 | footwear , sunglasses , 67 2936 | briefs , sweatshirt , 7 2937 | maxi dress , watch , 6 2938 | earrings , sunglasses , 8 2939 | dress , sunglasses , 19 2940 | fitness band , trousers , 20 2941 | high tops , leather jacket , 29 2942 | denim shorts , watch , 4 2943 | hand bag , jacket , 16 2944 | bottoms , oxfords shoe , 1 2945 | apparel , maxi dress , 34 2946 | footwear , skirt , 824 2947 | necktie , watch , 36 2948 | bottoms , bottoms , 22 2949 | maxi dress , ring , 38 2950 | maxi dress , sunglasses , 21 2951 | jeggings , shrug , 176 2952 | dress , glasses , 429 2953 | cardigan , socks , 2 2954 | socks , wedges , 111 2955 | bomber jacket , t-shirt , 333 2956 | briefs , vest , 25 2957 | cardigan , top , 596 2958 | bottoms , henley , 46 2959 | blazer , leggings , 64 2960 | loafers , trousers , 458 2961 | laptop bag , shirt , 46 2962 | monk straps , suit , 7 2963 | coat , hoodie , 54 2964 | fedora , sweater , 18 2965 | short dress , stilettos , 2 2966 | short dress , vest , 11 2967 | jacket , messenger bag , 55 2968 | kurta , scarf , 527 2969 | blazer , goggles , 6 2970 | lifestyle shoes , trouser , 328 2971 | pumps , t-shirt , 95 2972 | boots , formal shirt , 6 2973 | casual shoes , shirt dress , 12 2974 | camisole , wedges , 2 2975 | necklace , necktie , 625 2976 | bottoms , cap , 465 2977 | casual shirt , casual trousers , 35 2978 | glasses , shrug , 11 2979 | boots , trunk , 8 2980 | apparel , footwear , 843 2981 | corset , wedding dress , 81 2982 | accessories , laptop sleeve , 15 2983 | bag , trouser , 278 2984 | casual shoes , dress , 203 2985 | slippers , suit , 5 2986 | formal trousers , waistcoat , 12 2987 | dupatta , footwear , 27 2988 | socks , travel bag , 109 2989 | chinos , high tops , 56 2990 | necklace , robe , 4 2991 | jeggings , slippers , 232 2992 | cap , sweatshirt , 434 2993 | accessories , goggles , 171 2994 | polo , vest , 16 2995 | kurti , necklace , 186 2996 | casual jacket , scarf , 18 2997 | bracelet , layer_1_upper_body , 14 2998 | purse , trousers , 82 2999 | accessories , vest , 217 3000 | clutch , wedges , 122 3001 | cardigan , footwear , 38 3002 | cap , lifestyle shoes , 273 3003 | corset , trouser , 80 3004 | ankle boots , cape , 5 3005 | chinos , waistcoat , 15 3006 | bottoms , gloves , 9 3007 | fedora , loafers , 35 3008 | goggles , swimsuit , 99 3009 | cap , kurta , 441 3010 | satchel , top , 522 3011 | travel bag , wallet , 445 3012 | cardigan , messenger bag , 74 3013 | sandals , trouser , 871 3014 | briefs , slip ons , 38 3015 | espadrilles , top , 396 3016 | apparel , blouse , 772 3017 | slippers , stockings , 7 3018 | formal shirt , suit , 29 3019 | handkerchief , necklace , 159 3020 | casual shirt , fedora , 89 3021 | sweatshirt , trackwear , 125 3022 | blouse , trouser , 863 3023 | trouser , wedges , 758 3024 | chinos , wedges , 107 3025 | backpack , windcheater , 33 3026 | bottoms , pumps , 373 3027 | belly shoes , skirt , 52 3028 | flipflops , footwear , 6 3029 | formal shirt , loafers , 1 3030 | slippers , v-neck , 8 3031 | pyjama , slip ons , 26 3032 | satchel , wedges , 35 3033 | beanies , top , 21 3034 | pumps , shorts , 270 3035 | cape , palazzo , 22 3036 | cape , top , 122 3037 | bottoms , coat , 11 3038 | blouse , earrings , 282 3039 | bag , sleepwear , 242 3040 | hipsters , leggings , 8 3041 | goggles , lifestyle shoes , 110 3042 | earrings , wedges , 67 3043 | v-neck , waistcoat , 2 3044 | joggers , necktie , 2 3045 | polo , travel bag , 6 3046 | casual shirt , sweater , 34 3047 | bag , footwear , 753 3048 | footwear , trouser , 849 3049 | costume , swimwear , 5 3050 | camisole , jeggings , 12 3051 | cardigan , flipflops , 9 3052 | cufflinks , waistcoat , 26 3053 | clutch , t-shirt , 29 3054 | espadrilles , t-shirt , 219 3055 | high tops , jeggings , 1 3056 | boots , waistcoat , 5 3057 | crewneck , slip ons , 35 3058 | apparel , bodysuit , 757 3059 | derby , formal shirt , 283 3060 | v-neck , wallet , 5 3061 | scarf , slip ons , 18 3062 | apparel , jumpsuit , 611 3063 | loafers , wallet , 41 3064 | necktie , vest , 152 3065 | costume , jewelry , 10 3066 | blouse , sweater , 189 3067 | formal shoes , sunglasses , 39 3068 | belt , party dress , 64 3069 | corset , messenger bag , 8 3070 | ring , wallet , 11 3071 | camisole , maxi dress , 25 3072 | bottoms , travel bag , 522 3073 | apparel , sports bra , 217 3074 | necktie , satchel , 12 3075 | palazzo , sports shoes , 9 3076 | goggles , joggers , 10 3077 | coat , top , 194 3078 | bottoms , sports sandals , 230 3079 | hand bag , shirt , 164 3080 | crewneck , shirt dress , 2 3081 | leggings , sports bra , 34 3082 | corset , shape wear , 120 3083 | apparel , flipflops , 556 3084 | ballerinas , messenger bag , 25 3085 | athletic socks , bottoms , 9 3086 | sleepwear , sports shoes , 215 3087 | high tops , winter jacket , 54 3088 | denim shorts , sunglasses , 8 3089 | satchel , shorts , 18 3090 | bag , stilettos , 401 3091 | bomber jacket , formal shoes , 2 3092 | ballerinas , tights , 14 3093 | bikini , cardigan , 36 3094 | belt , blazer , 2 3095 | slippers , t-shirt , 591 3096 | peeptoes , short dress , 4 3097 | goggles , top , 59 3098 | belt , waistcoat , 1 3099 | dungaree , pyjama , 56 3100 | bodysuit , mittens , 10 3101 | goggles , pumps , 12 3102 | sleepwear , slippers , 424 3103 | camisole , night slip , 40 3104 | clutch , sweatshirt , 50 3105 | ankle boots , sunglasses , 2 3106 | ballerinas , blazer , 392 3107 | cap , skirt , 198 3108 | belt , card case , 33 3109 | footwear , sling bag , 99 3110 | casual trousers , earrings , 2 3111 | blouse , loafers , 430 3112 | accessories , formal shoes , 220 3113 | bow tie , wing tips , 3 3114 | shirt dress , sunglasses , 22 3115 | gloves , shorts , 2 3116 | leather jacket , sandals , 91 3117 | canvas shoes , leather jacket , 24 3118 | necktie , pajama , 28 3119 | jeggings , pumps , 109 3120 | jumper , jumpsuit , 49 3121 | necktie , skirt , 234 3122 | cap , slippers , 20 3123 | layer_1_lower_body , ring , 4 3124 | kurti , slippers , 3 3125 | lehenga , wedges , 27 3126 | jacket , purse , 210 3127 | scarf , sling bag , 5 3128 | loafers , polo , 687 3129 | loafers , socks , 59 3130 | necktie , travel bag , 1 3131 | jacket , loafers , 368 3132 | cufflinks , scarf , 10 3133 | panties , purse , 2 3134 | necktie , short dress , 40 3135 | ring , socks , 47 3136 | casual trousers , running shoes , 1 3137 | running shoes , wallet , 2 3138 | sports shoes , swim trunks , 1 3139 | belt , cufflinks , 24 3140 | layer_1_upper_body , wedges , 3 3141 | polo , trackwear , 62 3142 | accessories , swimsuit , 383 3143 | messenger bag , shorts , 140 3144 | apparel , skirt , 720 3145 | jeggings , sweater , 1 3146 | cap , casual shoes , 295 3147 | suspender , waistcoat , 42 3148 | casual trousers , polo , 415 3149 | jewelry , purse , 213 3150 | necktie , shorts , 84 3151 | accessories , romper , 390 3152 | blazer , hand bag , 4 3153 | jeans , turtleneck , 11 3154 | glasses , sling bag , 8 3155 | messenger bag , sports sandals , 67 3156 | bag , trousers , 319 3157 | high tops , purse , 18 3158 | lapel pin , scarf , 35 3159 | dress socks , tights , 1 3160 | scarf , v-neck , 1 3161 | apparel , stockings , 11 3162 | jumpsuit , platform heels , 629 3163 | accessories , beanies , 18 3164 | formal shoes , shorts , 2 3165 | apparel , trench coat , 17 3166 | sports shoes , waistcoat , 1 3167 | camisole , scarf , 5 3168 | mittens , sandals , 48 3169 | purse , sweater , 45 3170 | apparel , gloves , 46 3171 | sandals , suitcase , 61 3172 | kurta , sweater , 18 3173 | ring , slip ons , 1 3174 | churidar set , watch , 15 3175 | casual shirt , necktie , 46 3176 | tunic , turtleneck , 5 3177 | belt , clutch , 57 3178 | boots , jeggings , 30 3179 | necktie , swimsuit , 509 3180 | casual shoes , leggings , 70 3181 | cardigan , ring , 2 3182 | footwear , socks , 783 3183 | loafers , sunglasses , 324 3184 | ballerinas , trouser , 854 3185 | cap , cardigan , 55 3186 | belt , satchel , 127 3187 | sports shoes , sunglasses , 9 3188 | casual jacket , trouser , 24 3189 | dress , ring , 80 3190 | training shoes , trouser , 15 3191 | stockings , t-shirt , 2 3192 | jumper , pumps , 10 3193 | belt , top , 500 3194 | bracelet , formal shirt , 13 3195 | bottoms , pajama , 124 3196 | glasses , slippers , 29 3197 | boots , t-shirt , 692 3198 | apparel , party dress , 435 3199 | accessories , costume , 422 3200 | derby , glasses , 49 3201 | bracelet , suit , 33 3202 | shirt , wallet , 190 3203 | messenger bag , sweater , 74 3204 | ballerinas , pyjama , 8 3205 | suitcase , trouser , 6 3206 | pyjama , trouser , 20 3207 | glasses , suspender , 25 3208 | backpack , sandals , 9 3209 | costume , wallet , 1 3210 | dungaree , scarf , 28 3211 | suitcase , top , 3 3212 | ballerinas , lehenga , 2 3213 | ring , tote , 59 3214 | handkerchief , suspender , 159 3215 | hand bag , pumps , 277 3216 | casual jacket , sweatshirt , 95 3217 | bomber jacket , top , 3 3218 | accessories , v-neck , 8 3219 | bottoms , tunic , 372 3220 | formal trousers , winter jacket , 1 3221 | maxi dress , slippers , 23 3222 | apparel , layer_1_upper_body , 726 3223 | sweatshirt , watch , 244 3224 | belt , derby , 143 3225 | hoodie , travel bag , 4 3226 | derby , trousers , 710 3227 | hand bag , pajama , 6 3228 | short dress , socks , 2 3229 | blouse , cape , 10 3230 | accessories , camisole , 314 3231 | dungaree , sling bag , 42 3232 | casual jacket , high tops , 8 3233 | blouse , casual shoes , 251 3234 | glasses , kurti , 20 3235 | bracelet , pumps , 158 3236 | layer_1_lower_body , trunk , 88 3237 | bracelet , peeptoes , 131 3238 | ballerinas , leather jacket , 68 3239 | blouse , handkerchief , 28 3240 | churidar set , earrings , 601 3241 | jumpsuit , sunglasses , 234 3242 | scarf , vest , 29 3243 | sandals , wedding dress , 134 3244 | cape , party dress , 11 3245 | clogs , trousers , 9 3246 | apparel , casual shirt , 3 3247 | casual shirt , sandals , 74 3248 | henley , thermal , 5 3249 | layer_1_upper_body , stilettos , 10 3250 | athletic socks , socks , 63 3251 | belt , trench coat , 5 3252 | leather jacket , t-shirt , 327 3253 | jumper , top , 25 3254 | backpack , glasses , 7 3255 | scarf , shirt , 61 3256 | churidar set , ring , 16 3257 | bag , running shoes , 2 3258 | apparel , handkerchief , 101 3259 | footwear , kurta , 141 3260 | satchel , watch , 42 3261 | flipflops , trackwear , 151 3262 | cape , hand bag , 1 3263 | bottoms , crewneck , 8 3264 | boots , thongs , 16 3265 | blouse , flipflops , 10 3266 | bra , sandals , 79 3267 | apparel , cardigan , 57 3268 | cap , leggings , 63 3269 | flipflops , short dress , 1 3270 | henley , trousers , 6 3271 | lifestyle shoes , maxi dress , 17 3272 | cufflinks , trousers , 1 3273 | blazer , high tops , 31 3274 | dress , necktie , 642 3275 | footwear , jewelry , 7 3276 | casual shirt , wedges , 46 3277 | necktie , sweatshirt , 12 3278 | card case , shirt , 47 3279 | fedora , trousers , 34 3280 | footwear , necklace , 96 3281 | card case , suspender , 104 3282 | backpack , ring , 9 3283 | monk straps , shirt , 15 3284 | gloves , socks , 3 3285 | bodysuit , sandals , 5 3286 | cap , swimwear , 44 3287 | costume , glasses , 86 3288 | mini skirt , pumps , 4 3289 | apparel , trouser , 484 3290 | blouse , pumps , 859 3291 | stockings , trouser , 5 3292 | leggings , platform heels , 6 3293 | coat , loafers , 14 3294 | jumper , v-neck , 3 3295 | dress socks , ring , 6 3296 | dress , handkerchief , 69 3297 | polo , sunglasses , 21 3298 | apparel , canvas shoes , 87 3299 | maxi dress , peeptoes , 310 3300 | shirt , stilettos , 502 3301 | jewelry , necktie , 66 3302 | apparel , pumps , 608 3303 | chinos , sweatshirt , 741 3304 | maxi dress , sling bag , 69 3305 | ring , shirt , 21 3306 | sandals , stockings , 58 3307 | scarf , wallet , 12 3308 | card case , necklace , 108 3309 | bodysuit , vest , 8 3310 | belt , shirt , 717 3311 | glasses , ring , 27 3312 | canvas shoes , casual trousers , 14 3313 | bag , saree , 209 3314 | bracelet , watch , 176 3315 | shrug , sports shoes , 88 3316 | bottoms , thongs , 21 3317 | dungaree , peeptoes , 5 3318 | necktie , slip ons , 19 3319 | costume , slippers , 9 3320 | briefs , travel bag , 51 3321 | bracelet , hipsters , 1 3322 | necklace , sandals , 239 3323 | blazer , watch , 25 3324 | maxi dress , sports shoes , 106 3325 | jeggings , watch , 10 3326 | messenger bag , wallet , 389 3327 | flipflops , panties , 18 3328 | cape , hoodie , 13 3329 | polo , tights , 33 3330 | lapel pin , shirt , 12 3331 | bottoms , winter jacket , 414 3332 | clutch , suit , 176 3333 | ballerinas , top , 865 3334 | blouse , kimono , 23 3335 | polo , training shoes , 2 3336 | necktie , necktie , 1 3337 | backpack , goggles , 98 3338 | leggings , turtleneck , 5 3339 | camisole , shape wear , 17 3340 | kurti , sandals , 793 3341 | dress , jewelry , 20 3342 | jeans , slip ons , 492 3343 | suspender , t-shirt , 30 3344 | running shorts , t-shirt , 12 3345 | dupatta , jewelry , 18 3346 | cap , dungaree , 75 3347 | sweatshirt , travel bag , 4 3348 | bottoms , windcheater , 7 3349 | necktie , trouser , 289 3350 | messenger bag , suit , 2 3351 | loafers , t-shirt , 816 3352 | earrings , saree , 588 3353 | blouse , sports shoes , 861 3354 | fedora , polo , 94 3355 | jeans , rugby , 1 3356 | ballerinas , necklace , 48 3357 | lehenga , ring , 13 3358 | bottoms , cape , 42 3359 | apparel , tunic , 736 3360 | scarf , swimwear , 38 3361 | kurta , sports shoes , 4 3362 | satchel , sweater , 23 3363 | sling bag , wing tips , 8 3364 | flipflops , top , 439 3365 | jeans , tote , 407 3366 | necklace , party dress , 16 3367 | formal shoes , waistcoat , 9 3368 | henley , jeans , 804 3369 | casual trousers , kurti , 6 3370 | cargo shorts , casual shirt , 1 3371 | necklace , trouser , 93 3372 | card case , necktie , 130 3373 | trackwear , watch , 2 3374 | casual trousers , kurta , 6 3375 | belt , lifestyle shoes , 19 3376 | ankle boots , maxi dress , 26 3377 | bomber jacket , glasses , 11 3378 | crewneck , short dress , 3 3379 | sunglasses , vest , 5 3380 | polo , sports sandals , 125 3381 | cardigan , slippers , 4 3382 | handkerchief , skirt , 3 3383 | costume , layer_1_lower_body , 8 3384 | trouser , turtleneck , 15 3385 | blouse , jumper , 5 3386 | sandals , tunic , 834 3387 | casual jacket , tote , 5 3388 | gloves , messenger bag , 1 3389 | kurti , watch , 93 3390 | hoodie , joggers , 5 3391 | sweater , travel bag , 1 3392 | trackpants , tunic , 18 3393 | belt , jumpsuit , 487 3394 | belt , leather jacket , 3 3395 | accessories , shirt dress , 121 3396 | hand bag , jumpsuit , 159 3397 | accessories , athletic socks , 2 3398 | apparel , bottoms , 653 3399 | cape , jeggings , 10 3400 | necklace , swimsuit , 18 3401 | footwear , jeans , 842 3402 | costume , travel bag , 13 3403 | backpack , casual jacket , 10 3404 | necktie , trench coat , 25 3405 | coat , monk straps , 1 3406 | gloves , loafers , 13 3407 | boots , dress socks , 6 3408 | belt , goggles , 4 3409 | layer_1_lower_body , trousers , 17 3410 | crewneck , t-shirt , 756 3411 | gloves , skirt , 5 3412 | accessories , wing tips , 15 3413 | earrings , party dress , 28 3414 | boots , dungaree , 14 3415 | loafers , tights , 17 3416 | bomber jacket , bottoms , 21 3417 | blazer , palazzo , 7 3418 | pyjama , slippers , 60 3419 | top , waistcoat , 5 3420 | bag , sports bra , 15 3421 | brogues , chinos , 160 3422 | jewelry , leggings , 85 3423 | gloves , wallet , 1 3424 | denim jacket , loafers , 11 3425 | cap , corset , 24 3426 | bottoms , laptop bag , 26 3427 | earrings , peeptoes , 44 3428 | derby , scarf , 1 3429 | accessories , sandals , 496 3430 | belt , dress , 746 3431 | coat , gloves , 30 3432 | henley , high tops , 18 3433 | leggings , polo , 36 3434 | belt , formal trousers , 279 3435 | t-shirt , tote , 115 3436 | apparel , tights , 332 3437 | sandals , t-shirt , 693 3438 | oxfords shoe , shirt , 102 3439 | formal shoes , messenger bag , 114 3440 | footwear , sandals , 352 3441 | leggings , t-shirt , 777 3442 | jeggings , necklace , 1 3443 | bra , necktie , 96 3444 | camisole , top , 535 3445 | accessories , trouser , 243 3446 | bodysuit , jewelry , 3 3447 | leggings , oxfords shoe , 18 3448 | clutch , saree , 163 3449 | footwear , footwear , 848 3450 | running shoes , sports bra , 4 3451 | backpack , shirt , 59 3452 | accessories , cardigan , 206 3453 | leather jacket , sports shoes , 6 3454 | belly shoes , kurta , 473 3455 | earrings , espadrilles , 10 3456 | henley , sandals , 427 3457 | swimsuit , tote , 3 3458 | camisole , short dress , 10 3459 | cape , sweatshirt , 1 3460 | cap , crewneck , 1 3461 | earrings , sweater , 36 3462 | casual shoes , sleepwear , 18 3463 | footwear , stilettos , 410 3464 | casual shirt , watch , 33 3465 | footwear , purse , 173 3466 | blouse , camisole , 147 3467 | canvas shoes , shirt , 58 3468 | canvas shoes , v-neck , 18 3469 | ballerinas , blouse , 814 3470 | cap , jumpsuit , 278 3471 | maxi dress , pumps , 349 3472 | jeans , necklace , 66 3473 | joggers , v-neck , 23 3474 | cardigan , jewelry , 8 3475 | earrings , swimsuit , 19 3476 | stilettos , top , 730 3477 | accessories , suspender , 18 3478 | costume , sandals , 1 3479 | kurti , sling bag , 31 3480 | brogues , tuxedo , 4 3481 | casual trousers , leather jacket , 7 3482 | bodysuit , boots , 26 3483 | belly shoes , dungaree , 22 3484 | boots , top , 642 3485 | cap , socks , 17 3486 | bottoms , night slip , 3 3487 | scarf , slippers , 4 3488 | denim shorts , espadrilles , 1 3489 | derby , watch , 177 3490 | belt , jeggings , 10 3491 | belt , kurti , 49 3492 | cardigan , sunglasses , 60 3493 | accessories , training shoes , 65 3494 | stilettos , sweatshirt , 34 3495 | glasses , polo , 9 3496 | cape , espadrilles , 1 3497 | bag , sunglasses , 782 3498 | cardigan , necklace , 36 3499 | sandals , trousers , 547 3500 | camisole , ring , 635 3501 | ankle boots , purse , 18 3502 | accessories , jumpsuit , 9 3503 | apparel , vest , 491 3504 | bag , sports sandals , 58 3505 | boots , sunglasses , 8 3506 | jacket , slippers , 7 3507 | ballerinas , formal trousers , 9 3508 | polo , slippers , 519 3509 | trousers , watch , 378 3510 | belt , cardigan , 5 3511 | socks , socks , 26 3512 | briefs , tuxedo , 8 3513 | bracelet , shrug , 78 3514 | boots , ring , 3 3515 | cap , jumper , 1 3516 | peeptoes , tote , 22 3517 | clutch , skirt , 159 3518 | bodysuit , high tops , 12 3519 | sports shoes , top , 868 3520 | blouse , purse , 4 3521 | briefs , glasses , 1 3522 | backpack , bottoms , 77 3523 | bracelet , leggings , 255 3524 | cardigan , polo , 9 3525 | apparel , bikini , 5 3526 | ankle boots , tunic , 6 3527 | jewelry , scarf , 2 3528 | gloves , pajama , 6 3529 | lifestyle shoes , vest , 94 3530 | sandals , travel bag , 17 3531 | dupatta , sandals , 109 3532 | camisole , jeans , 443 3533 | jewelry , wallet , 17 3534 | apparel , corset , 1 3535 | accessories , skirt , 650 3536 | lehenga , necklace , 26 3537 | shorts , stilettos , 369 3538 | accessories , blazer , 100 3539 | saree , stilettos , 706 3540 | chinos , leather jacket , 12 3541 | necktie , t-shirt , 58 3542 | sweater , tote , 1 3543 | polo , pumps , 33 3544 | bag , rugby , 4 3545 | blouse , jeggings , 13 3546 | footwear , v-neck , 337 3547 | ankle boots , bodysuit , 12 3548 | apparel , thongs , 462 3549 | bag , handkerchief , 5 3550 | ankle boots , winter jacket , 40 3551 | gloves , ring , 1 3552 | brogues , messenger bag , 39 3553 | necktie , tuxedo , 253 3554 | dress , high tops , 226 3555 | gloves , sleepwear , 55 3556 | coat , wedding dress , 6 3557 | slip ons , sweatshirt , 175 3558 | high tops , jacket , 50 3559 | bracelet , jewelry , 294 3560 | lifestyle shoes , suit , 16 3561 | ring , thongs , 10 3562 | tote , tunic , 25 3563 | belt , footwear , 406 3564 | bomber jacket , loafers , 10 3565 | accessories , slippers , 92 3566 | necklace , stilettos , 1 3567 | pumps , trousers , 113 3568 | pumps , travel bag , 1 3569 | goggles , purse , 173 3570 | sandals , short dress , 24 3571 | bottoms , dungaree , 15 3572 | sports bra , tunic , 9 3573 | sling bag , wedges , 68 3574 | party dress , peeptoes , 8 3575 | boots , shirt dress , 6 3576 | glasses , joggers , 10 3577 | blouse , mini skirt , 55 3578 | backpack , belt , 5 3579 | ring , wedges , 48 3580 | purse , sunglasses , 72 3581 | sweater , trousers , 220 3582 | ring , travel bag , 91 3583 | backpack , maxi dress , 11 3584 | ballerinas , jewelry , 134 3585 | casual shoes , hand bag , 60 3586 | glasses , swimsuit , 21 3587 | coat , thermal , 7 3588 | cap , track suit , 3 3589 | cap , costume , 341 3590 | backpack , panties , 17 3591 | necktie , night slip , 2 3592 | bottoms , running shoes , 136 3593 | casual jacket , casual shirt , 604 3594 | bracelet , sports shoes , 4 3595 | earrings , jeggings , 4 3596 | casual shoes , shirt , 779 3597 | bra , necklace , 43 3598 | bow tie , glasses , 4 3599 | jumper , trouser , 66 3600 | bracelet , t-shirt , 249 3601 | bodysuit , footwear , 8 3602 | apparel , kimono , 367 3603 | hand bag , leggings , 34 3604 | leggings , stockings , 87 3605 | jewelry , jumpsuit , 35 3606 | corset , footwear , 15 3607 | blazer , camisole , 3 3608 | flipflops , messenger bag , 116 3609 | ballerinas , churidar set , 337 3610 | suit , v-neck , 25 3611 | footwear , romper , 252 3612 | earrings , sweatshirt , 98 3613 | clutch , costume , 82 3614 | lehenga , purse , 4 3615 | casual trousers , vest , 6 3616 | cape , pajama , 6 3617 | sweater , trouser , 446 3618 | canvas shoes , cardigan , 54 3619 | footwear , pumps , 482 3620 | leggings , thongs , 9 3621 | belt , pajama , 34 3622 | casual shoes , coat , 13 3623 | bomber jacket , footwear , 78 3624 | pumps , purse , 345 3625 | backpack , coat , 11 3626 | accessories , denim jacket , 73 3627 | flipflops , shrug , 7 3628 | t-shirt , trouser , 691 3629 | lifestyle shoes , trackpants , 9 3630 | clutch , leggings , 88 3631 | bag , casual shoes , 523 3632 | bikini , sports bra , 36 3633 | apparel , suit , 643 3634 | hoodie , scarf , 96 3635 | derby , footwear , 69 3636 | clutch , shirt , 22 3637 | accessories , polo , 73 3638 | t-shirt , waistcoat , 63 3639 | casual jacket , leggings , 1 3640 | hipsters , t-shirt , 63 3641 | blouse , turtleneck , 12 3642 | boots , coat , 23 3643 | casual shoes , messenger bag , 344 3644 | dress , earrings , 617 3645 | cap , earrings , 19 3646 | belly shoes , formal shirt , 1 3647 | cargo shorts , footwear , 61 3648 | slip ons , trousers , 234 3649 | belt , brogues , 14 3650 | espadrilles , jeans , 177 3651 | backpack , jacket , 42 3652 | ring , trackpants , 259 3653 | bracelet , clutch , 242 3654 | dupatta , scarf , 118 3655 | necklace , watch , 15 3656 | cape , dress material , 16 3657 | peeptoes , sweatshirt , 19 3658 | sling bag , wallet , 77 3659 | boots , dress , 539 3660 | cardigan , earrings , 39 3661 | shrug , suitcase , 4 3662 | belt , hoodie , 23 3663 | clutch , jeans , 325 3664 | bracelet , tunic , 340 3665 | satchel , slippers , 12 3666 | glasses , jumpsuit , 39 3667 | slippers , sunglasses , 9 3668 | ballerinas , dungaree , 50 3669 | jeans , satchel , 164 3670 | costume , thongs , 2 3671 | bottoms , slippers , 46 3672 | dress , sandals , 838 3673 | cap , chinos , 171 3674 | cap , trackpants , 4 3675 | casual shirt , trouser , 139 3676 | belt , swimwear , 1 3677 | hand bag , trouser , 135 3678 | backpack , boots , 10 3679 | brogues , skirt , 7 3680 | jewelry , socks , 1 3681 | scarf , short dress , 30 3682 | sweater , vest , 26 3683 | apparel , joggers , 114 3684 | clogs , jumpsuit , 2 3685 | high tops , shirt dress , 12 3686 | casual shirt , tuxedo , 1 3687 | sleepwear , socks , 8 3688 | costume , fedora , 20 3689 | kimono , robe , 152 3690 | cargo shorts , sports sandals , 24 3691 | jeggings , peeptoes , 5 3692 | casual shoes , suit , 28 3693 | clutch , scarf , 38 3694 | kurta , slippers , 47 3695 | sports bra , trackpants , 49 3696 | backpack , bag , 364 3697 | loafers , outerwear , 1 3698 | t-shirt , trackpants , 122 3699 | ankle boots , cardigan , 2 3700 | derby , sweater , 7 3701 | coat , glasses , 4 3702 | jewelry , satchel , 40 3703 | hand bag , t-shirt , 311 3704 | apparel , training shoes , 69 3705 | camisole , footwear , 346 3706 | costume , sweater , 8 3707 | corset , saree , 202 3708 | slip ons , vest , 112 3709 | fitness band , shorts , 34 3710 | bikini , watch , 28 3711 | boxers , cap , 2 3712 | blouse , wedges , 605 3713 | ballerinas , layer_1_upper_body , 15 3714 | sling bag , wedding dress , 6 3715 | slip ons , socks , 70 3716 | blazer , trouser , 106 3717 | casual shirt , gloves , 6 3718 | messenger bag , ring , 18 3719 | footwear , outerwear , 2 3720 | leggings , necktie , 4 3721 | boxer briefs , jeans , 6 3722 | slip ons , sunglasses , 88 3723 | palazzo , tunic , 245 3724 | polo , sandals , 544 3725 | casual shoes , waistcoat , 38 3726 | chinos , swim trunks , 102 3727 | skirt , sports shoes , 481 3728 | laptop bag , slip ons , 9 3729 | casual shoes , denim shorts , 11 3730 | bag , travel bag , 294 3731 | pajama , scarf , 51 3732 | backpack , jeans , 497 3733 | accessories , purse , 815 3734 | polo , running shoes , 229 3735 | necktie , slippers , 19 3736 | cardigan , trackwear , 1 3737 | denim jacket , sports shoes , 3 3738 | card case , scarf , 19 3739 | accessories , windcheater , 33 3740 | socks , sunglasses , 12 3741 | gloves , top , 42 3742 | belt , thermal , 6 3743 | casual shirt , slip ons , 9 3744 | sleepwear , thermal , 9 3745 | backpack , pumps , 9 3746 | bottoms , vest , 563 3747 | leggings , messenger bag , 10 3748 | mittens , thermal , 4 3749 | palazzo , sling bag , 1 3750 | hoodie , trousers , 62 3751 | bag , pumps , 442 3752 | cardigan , fedora , 18 3753 | jumpsuit , stilettos , 690 3754 | laptop bag , sweater , 12 3755 | pumps , stockings , 9 3756 | apparel , jumper , 168 3757 | boots , goggles , 89 3758 | apparel , coat , 495 3759 | costume , stockings , 145 3760 | cape , wedges , 11 3761 | cap , purse , 91 3762 | goggles , sweater , 36 3763 | dress , wing tips , 8 3764 | bag , formal trousers , 52 3765 | coat , hand bag , 55 3766 | chinos , watch , 204 3767 | cap , derby , 23 3768 | bomber jacket , derby , 1 3769 | blazer , pumps , 41 3770 | satchel , t-shirt , 58 3771 | bag , espadrilles , 24 3772 | formal trousers , watch , 2 3773 | bikini , shrug , 4 3774 | bottoms , watch , 287 3775 | camisole , handkerchief , 12 3776 | coat , t-shirt , 97 3777 | boots , v-neck , 96 3778 | footwear , shorts , 714 3779 | accessories , turtleneck , 6 3780 | boots , denim jacket , 13 3781 | canvas shoes , t-shirt , 237 3782 | suit , wallet , 117 3783 | bottoms , rugby , 13 3784 | push-up bra , t-shirt , 10 3785 | outerwear , sandals , 46 3786 | bottoms , derby , 13 3787 | goggles , maxi dress , 1 3788 | purse , scarf , 133 3789 | formal shirt , sweater , 80 3790 | peeptoes , purse , 35 3791 | bracelet , casual shirt , 79 3792 | outerwear , sports shoes , 11 3793 | costume , kimono , 38 3794 | kurta , satchel , 41 3795 | camisole , kimono , 4 3796 | romper , sweater , 45 3797 | jeggings , leather jacket , 18 3798 | cap , sandals , 119 3799 | cardigan , necktie , 27 3800 | blazer , stilettos , 1 3801 | sweatshirt , tights , 14 3802 | sweatshirt , turtleneck , 1 3803 | jeggings , satchel , 7 3804 | dungaree , vest , 107 3805 | corset , top , 46 3806 | bikini , satchel , 48 3807 | apparel , slippers , 719 3808 | pyjama , top , 96 3809 | ring , shorts , 47 3810 | clutch , short dress , 26 3811 | polo , trouser , 172 3812 | layer_1_upper_body , saree , 7 3813 | glasses , suit , 62 3814 | gloves , leggings , 57 3815 | hipsters , top , 130 3816 | sweatshirt , tote , 10 3817 | footwear , top , 866 3818 | casual shoes , purse , 125 3819 | formal shoes , tuxedo , 61 3820 | tuxedo , wing tips , 11 3821 | sports shoes , tote , 24 3822 | bra , trackpants , 43 3823 | flipflops , suit , 31 3824 | belt , bodysuit , 9 3825 | bodysuit , turtleneck , 3 3826 | camisole , vest , 60 3827 | party dress , watch , 2 3828 | jumpsuit , sports shoes , 318 3829 | apparel , wing tips , 8 3830 | cap , joggers , 72 3831 | platform heels , shirt , 30 3832 | kurti , purse , 12 3833 | bow tie , costume , 96 3834 | kimono , sandals , 29 3835 | tote , trouser , 51 3836 | belt , polo , 133 3837 | bag , watch , 209 3838 | kurta , messenger bag , 2 3839 | messenger bag , skirt , 8 3840 | trackwear , vest , 163 3841 | accessories , boots , 404 3842 | belt , short dress , 48 3843 | casual shirt , oxfords shoe , 69 3844 | jeans , kurti , 682 3845 | apparel , bra , 766 3846 | accessories , watch , 132 3847 | beanies , mittens , 2 3848 | bottoms , kimono , 86 3849 | cap , wing tips , 1 3850 | tuxedo , vest , 96 3851 | bomber jacket , boots , 132 3852 | formal shoes , suspender , 18 3853 | joggers , sweater , 9 3854 | casual trousers , henley , 666 3855 | gloves , watch , 2 3856 | beanies , bottoms , 6 3857 | top , watch , 294 3858 | jacket , oxfords shoe , 8 3859 | bag , gloves , 14 3860 | trousers , winter jacket , 256 3861 | dress , footwear , 831 3862 | coat , jeggings , 113 3863 | accessories , oxfords shoe , 4 3864 | jeans , lifestyle shoes , 773 3865 | footwear , rugby , 22 3866 | footwear , formal shoes , 662 3867 | pajama , thermal , 26 3868 | briefs , cap , 4 3869 | bottoms , training shoes , 25 3870 | brogues , trousers , 514 3871 | shirt dress , sling bag , 10 3872 | gloves , t-shirt , 40 3873 | flipflops , vest , 138 3874 | belt , kimono , 160 3875 | belt , stilettos , 50 3876 | brogues , watch , 45 3877 | ballerinas , glasses , 161 3878 | boots , costume , 2 3879 | clutch , espadrilles , 9 3880 | cap , jacket , 99 3881 | messenger bag , sunglasses , 2 3882 | hipsters , sweatshirt , 25 3883 | cap , mittens , 48 3884 | bottoms , turtleneck , 1 3885 | camisole , hoodie , 37 3886 | bottoms , sandals , 573 3887 | bodysuit , crewneck , 13 3888 | slippers , thongs , 27 3889 | belt , kurta , 227 3890 | accessories , outerwear , 2 3891 | romper , vest , 32 3892 | bottoms , cufflinks , 18 3893 | kurta , purse , 3 3894 | leggings , lifestyle shoes , 6 3895 | costume , watch , 7 3896 | casual shoes , necklace , 9 3897 | espadrilles , shrug , 5 3898 | apparel , waistcoat , 319 3899 | sandals , shorts , 534 3900 | blouse , boots , 26 3901 | belt , mini skirt , 28 3902 | glasses , sports sandals , 29 3903 | bag , lehenga , 6 3904 | footwear , swimwear , 8 3905 | hand bag , sports shoes , 102 3906 | sandals , thongs , 670 3907 | cardigan , robe , 6 3908 | slippers , vest , 30 3909 | belly shoes , suit , 315 3910 | jumper , trousers , 66 3911 | purse , shorts , 280 3912 | sandals , tights , 186 3913 | boots , thermal , 47 3914 | sling bag , winter jacket , 18 3915 | bikini , purse , 9 3916 | cargo shorts , polo , 95 3917 | formal shoes , leggings , 4 3918 | jeans , top , 878 3919 | belt , shorts , 481 3920 | costume , sports shoes , 9 3921 | bow tie , briefs , 8 3922 | bottoms , card case , 102 3923 | clogs , dress , 54 3924 | jeans , peeptoes , 571 3925 | running shoes , watch , 290 3926 | handkerchief , socks , 36 3927 | running shoes , trackwear , 253 3928 | casual jacket , sports shoes , 175 3929 | apparel , costume , 615 3930 | ballerinas , crewneck , 22 3931 | bra , gloves , 9 3932 | chinos , t-shirt , 846 3933 | clutch , ring , 40 3934 | casual trousers , sweatshirt , 474 3935 | glasses , tunic , 1 3936 | blouse , trousers , 76 3937 | jacket , lapel pin , 134 3938 | apparel , ballerinas , 830 3939 | necklace , short dress , 10 3940 | bottoms , wallet , 20 3941 | flipflops , goggles , 81 3942 | bottoms , purse , 6 3943 | tuxedo , watch , 13 3944 | blazer , formal shoes , 30 3945 | cap , pajama , 22 3946 | pyjama , wedding dress , 1 3947 | casual shoes , socks , 15 3948 | top , trackwear , 487 3949 | apparel , jacket , 774 3950 | chinos , stilettos , 118 3951 | bottoms , high tops , 2 3952 | henley , running shoes , 4 3953 | footwear , jumper , 33 3954 | jeans , winter jacket , 257 3955 | glasses , kurta , 2 3956 | handkerchief , jacket , 77 3957 | thermal , winter jacket , 2 3958 | leggings , sling bag , 134 3959 | boots , trackwear , 4 3960 | card case , outerwear , 10 3961 | briefs , running shorts , 6 3962 | brogues , footwear , 93 3963 | goggles , watch , 15 3964 | cardigan , loafers , 36 3965 | sling bag , watch , 28 3966 | parka , vest , 1 3967 | bottoms , sweater , 8 3968 | boots , trackpants , 4 3969 | shirt , sports shoes , 584 3970 | sweater , tunic , 258 3971 | push-up bra , wedding dress , 6 3972 | coat , kurta , 18 3973 | footwear , waistcoat , 669 3974 | espadrilles , kurta , 38 3975 | card case , jeans , 25 3976 | casual shirt , earrings , 14 3977 | sports sandals , top , 14 3978 | sweatshirt , trunk , 5 3979 | oxfords shoe , socks , 3 3980 | jewelry , trouser , 2 3981 | ankle boots , t-shirt , 1 3982 | jeggings , top , 835 3983 | cargo shorts , slippers , 4 3984 | cape , satchel , 1 3985 | boots , trousers , 290 3986 | clutch , shorts , 71 3987 | bag , necklace , 155 3988 | denim jacket , trouser , 24 3989 | bottoms , hipsters , 59 3990 | jeggings , wedges , 28 3991 | down jacket , thermal , 5 3992 | bomber jacket , casual shoes , 64 3993 | purse , ring , 417 3994 | jewelry , layer_1_upper_body , 71 3995 | cardigan , suit , 3 3996 | apparel , thermal , 114 3997 | jeans , trunk , 103 3998 | corset , leggings , 4 3999 | belt , socks , 3 4000 | bracelet , purse , 528 4001 | short dress , sweater , 120 4002 | footwear , slippers , 222 4003 | casual shirt , leggings , 5 4004 | earrings , hand bag , 7 4005 | dress socks , trousers , 40 4006 | hipsters , necktie , 29 4007 | bag , cardigan , 34 4008 | gloves , party dress , 14 4009 | backpack , trousers , 36 4010 | apparel , boots , 748 4011 | bag , winter jacket , 6 4012 | jewelry , swimsuit , 16 4013 | goggles , shrug , 76 4014 | layer_1_upper_body , watch , 16 4015 | belt , maxi dress , 493 4016 | satchel , skirt , 37 4017 | necktie , waistcoat , 20 4018 | jeans , platform heels , 28 4019 | sling bag , slip ons , 85 4020 | card case , messenger bag , 49 4021 | clutch , sports shoes , 5 4022 | cardigan , travel bag , 48 4023 | bag , bottoms , 454 4024 | blouse , travel bag , 1 4025 | ballerinas , camisole , 375 4026 | accessories , canvas shoes , 6 4027 | boxer briefs , pyjama , 13 4028 | bag , mini skirt , 1 4029 | accessories , mittens , 11 4030 | bracelet , skirt , 341 4031 | bag , trench coat , 1 4032 | chinos , coat , 1 4033 | bag , oxfords shoe , 10 4034 | backpack , leggings , 3 4035 | blazer , sweatshirt , 9 4036 | bikini , stilettos , 5 4037 | clogs , socks , 22 4038 | jeans , kurta , 248 4039 | robe , scarf , 84 4040 | fitness band , trouser , 6 4041 | accessories , wedges , 296 4042 | backpack , joggers , 4 4043 | boots , travel bag , 32 4044 | hand bag , sweatshirt , 29 4045 | polo , trackpants , 68 4046 | necktie , ring , 20 4047 | jeans , t-shirt , 879 4048 | jumper , romper , 49 4049 | glasses , purse , 410 4050 | footwear , short dress , 19 4051 | blazer , sling bag , 4 4052 | ballerinas , sling bag , 200 4053 | coat , purse , 49 4054 | ballerinas , suit , 759 4055 | bottoms , messenger bag , 295 4056 | earrings , suit , 115 4057 | thermal , top , 83 4058 | kimono , maxi dress , 9 4059 | dress , satchel , 212 4060 | sunglasses , watch , 73 4061 | apparel , belt , 672 4062 | footwear , mittens , 19 4063 | bow tie , suit , 191 4064 | accessories , dress , 391 4065 | bag , top , 851 4066 | blazer , maxi dress , 3 4067 | trousers , wedges , 549 4068 | beanies , scarf , 13 4069 | suit , t-shirt , 194 4070 | casual jacket , chinos , 38 4071 | sandals , satchel , 283 4072 | formal shirt , tuxedo , 9 4073 | thermal , wallet , 8 4074 | dress material , ring , 1 4075 | blouse , lifestyle shoes , 27 4076 | camisole , turtleneck , 2 4077 | casual trousers , t-shirt , 695 4078 | bottoms , kurta , 43 4079 | hoodie , leggings , 220 4080 | socks , sports bra , 14 4081 | hipsters , purse , 2 4082 | apparel , trunk , 232 4083 | trackwear , tunic , 14 4084 | bag , party dress , 62 4085 | lifestyle shoes , polo , 700 4086 | briefs , watch , 20 4087 | footwear , suspender , 34 4088 | laptop bag , wallet , 1 4089 | sunglasses , trousers , 24 4090 | backpack , winter jacket , 3 4091 | accessories , briefs , 51 4092 | shorts , winter jacket , 36 4093 | cape , ring , 2 4094 | fitness band , running shoes , 79 4095 | chinos , fedora , 22 4096 | bag , dungaree , 70 4097 | sweater , tights , 27 4098 | bikini , sweater , 1 4099 | casual shoes , footwear , 333 4100 | bomber jacket , scarf , 45 4101 | coat , tunic , 25 4102 | denim shorts , necktie , 3 4103 | bracelet , hand bag , 353 4104 | bottoms , peeptoes , 146 4105 | hand bag , kurti , 18 4106 | sweatshirt , wallet , 35 4107 | hand bag , saree , 8 4108 | loafers , suit , 116 4109 | pyjama , sweater , 1 4110 | oxfords shoe , trousers , 2 4111 | apparel , monk straps , 2 4112 | pyjama , robe , 30 4113 | goggles , hand bag , 31 4114 | necktie , sling bag , 16 4115 | backpack , wallet , 103 4116 | jeggings , sunglasses , 20 4117 | ankle boots , shirt , 83 4118 | goggles , jacket , 133 4119 | apparel , trousers , 761 4120 | camisole , sweatshirt , 24 4121 | jacket , wallet , 23 4122 | belt , v-neck , 15 4123 | dress , loafers , 188 4124 | dungaree , sandals , 281 4125 | apparel , laptop bag , 67 4126 | belly shoes , jeans , 609 4127 | costume , layer_1_upper_body , 3 4128 | bracelet , kurti , 231 4129 | dress , tote , 165 4130 | chinos , ring , 22 4131 | messenger bag , sports shoes , 108 4132 | belly shoes , blouse , 521 4133 | satchel , trousers , 5 4134 | bodysuit , wedges , 5 4135 | leather jacket , leggings , 6 4136 | apparel , glasses , 467 4137 | slippers , swimsuit , 12 4138 | ballerinas , cardigan , 67 4139 | sleepwear , trunk , 10 4140 | apparel , palazzo , 15 4141 | bikini , scarf , 14 4142 | loafers , maxi dress , 346 4143 | layer_1_upper_body , purse , 6 4144 | blouse , necktie , 286 4145 | camisole , kurta , 1 4146 | cap , trackwear , 57 4147 | formal shirt , ring , 1 4148 | bomber jacket , messenger bag , 2 4149 | robe , slippers , 11 4150 | jeans , v-neck , 845 4151 | bag , high tops , 4 4152 | cap , suit , 324 4153 | apparel , short dress , 574 4154 | crewneck , top , 723 4155 | casual shirt , glasses , 551 4156 | espadrilles , watch , 45 4157 | bottoms , dress , 9 4158 | flipflops , skirt , 212 4159 | camisole , crewneck , 308 4160 | messenger bag , mini skirt , 8 4161 | bag , bag , 425 4162 | leather jacket , top , 89 4163 | clutch , necktie , 3 4164 | footwear , henley , 36 4165 | peacoat , sling bag , 6 4166 | pyjama , wallet , 2 4167 | stilettos , watch , 134 4168 | footwear , track suit , 6 4169 | glasses , socks , 14 4170 | cargo shorts , t-shirt , 381 4171 | monk straps , tuxedo , 16 4172 | leggings , v-neck , 24 4173 | accessories , satchel , 573 4174 | glasses , travel bag , 8 4175 | blazer , cap , 2 4176 | accessories , swimwear , 15 4177 | casual shirt , wallet , 29 4178 | goggles , sandals , 156 4179 | ballerinas , bottoms , 616 4180 | crewneck , sweatshirt , 450 4181 | joggers , purse , 10 4182 | gloves , sweatshirt , 17 4183 | apparel , camisole , 23 4184 | layer_1_lower_body , socks , 4 4185 | high tops , trousers , 13 4186 | necklace , purse , 137 4187 | accessories , casual trousers , 9 4188 | footwear , wallet , 89 4189 | lifestyle shoes , t-shirt , 767 4190 | boots , bottoms , 25 4191 | bracelet , goggles , 13 4192 | kimono , scarf , 7 4193 | brogues , casual shirt , 504 4194 | brogues , shirt , 505 4195 | casual shoes , sweatshirt , 585 4196 | cap , hand bag , 33 4197 | night slip , sports bra , 10 4198 | flipflops , v-neck , 751 4199 | t-shirt , thermal , 20 4200 | fedora , sports shoes , 30 4201 | jeans , travel bag , 51 4202 | footwear , travel bag , 166 4203 | stockings , top , 27 4204 | gloves , shirt , 3 4205 | fedora , sandals , 44 4206 | oxfords shoe , t-shirt , 5 4207 | kurti , tote , 62 4208 | palazzo , tote , 14 4209 | bag , layer_1_lower_body , 276 4210 | mittens , t-shirt , 4 4211 | espadrilles , hand bag , 1 4212 | platform heels , suit , 1 4213 | shirt , watch , 476 4214 | leather jacket , pumps , 4 4215 | pajama , slippers , 55 4216 | casual jacket , goggles , 10 4217 | blazer , boots , 337 4218 | jeans , trench coat , 24 4219 | hoodie , winter jacket , 111 4220 | dupatta , wedges , 5 4221 | formal shirt , watch , 236 4222 | backpack , chinos , 5 4223 | sports shoes , sweater , 10 4224 | sports shoes , trousers , 681 4225 | casual jacket , casual shoes , 148 4226 | jeggings , necktie , 12 4227 | polo , pyjama , 17 4228 | belly shoes , top , 732 4229 | ballerinas , shrug , 153 4230 | ballerinas , belt , 150 4231 | cap , glasses , 13 4232 | clutch , trouser , 16 4233 | ballerinas , swimsuit , 46 4234 | belly shoes , wedding dress , 21 4235 | clutch , peeptoes , 77 4236 | bag , sports shoes , 636 4237 | casual shirt , loafers , 122 4238 | bracelet , sweater , 10 4239 | canvas shoes , kurta , 7 4240 | bottoms , slip ons , 320 4241 | apparel , scarf , 154 4242 | jacket , peeptoes , 34 4243 | athletic socks , trousers , 6 4244 | hoodie , sports shoes , 488 4245 | stockings , wedges , 4 4246 | hand bag , peeptoes , 31 4247 | footwear , loafers , 326 4248 | camisole , cardigan , 257 4249 | sleepwear , watch , 1 4250 | bomber jacket , high tops , 8 4251 | wallet , watch , 106 4252 | bag , bra , 293 4253 | chinos , sunglasses , 7 4254 | bow tie , formal shoes , 4 4255 | apparel , v-neck , 253 4256 | messenger bag , sweatshirt , 366 4257 | hoodie , trouser , 221 4258 | messenger bag , windcheater , 2 4259 | ring , scarf , 23 4260 | shirt , sports sandals , 70 4261 | glasses , lifestyle shoes , 145 4262 | denim jacket , purse , 9 4263 | bomber jacket , jeans , 598 4264 | footwear , vest , 384 4265 | saree , satchel , 5 4266 | bottoms , trousers , 34 4267 | v-neck , vest , 11 4268 | crewneck , glasses , 5 4269 | casual shoes , kurti , 3 4270 | bottoms , sports bra , 51 4271 | jumpsuit , laptop bag , 19 4272 | suit , sweatshirt , 102 4273 | cardigan , clutch , 11 4274 | chinos , v-neck , 275 4275 | clogs , t-shirt , 147 4276 | slippers , trouser , 37 4277 | cape , goggles , 1 4278 | apparel , kurti , 715 4279 | skirt , socks , 61 4280 | corset , thongs , 14 4281 | cape , thongs , 6 4282 | satchel , stilettos , 12 4283 | clutch , jumper , 5 4284 | handkerchief , tuxedo , 19 4285 | casual trousers , watch , 12 4286 | loafers , shrug , 24 4287 | camisole , kurti , 1 4288 | sports sandals , trousers , 64 4289 | boots , chinos , 122 4290 | satchel , swimsuit , 22 4291 | kimono , t-shirt , 3 4292 | backpack , casual shirt , 64 4293 | lifestyle shoes , trackwear , 14 4294 | coat , v-neck , 16 4295 | belt , winter jacket , 2 4296 | joggers , running shoes , 28 4297 | gloves , jeggings , 5 4298 | handkerchief , shorts , 6 4299 | layer_1_upper_body , scarf , 1 4300 | platform heels , top , 69 4301 | footwear , sweatshirt , 513 4302 | cap , trousers , 273 4303 | necktie , wedges , 31 4304 | jumpsuit , loafers , 42 4305 | bracelet , shirt dress , 32 4306 | party dress , shrug , 2 4307 | cargo shorts , sandals , 63 4308 | cap , suspender , 17 4309 | costume , suspender , 24 4310 | jewelry , skirt , 16 4311 | pumps , socks , 17 4312 | dress , socks , 53 4313 | accessories , jewelry , 113 4314 | belt , glasses , 29 4315 | boots , camisole , 355 4316 | flipflops , sweatshirt , 224 4317 | casual shoes , trouser , 137 4318 | casual shoes , glasses , 277 4319 | coat , jumpsuit , 27 4320 | jewelry , trousers , 1 4321 | bottoms , sports shoes , 810 4322 | apparel , brogues , 280 4323 | trouser , vest , 139 4324 | belt , jewelry , 63 4325 | shrug , v-neck , 42 4326 | ballerinas , satchel , 51 4327 | bracelet , lehenga , 7 4328 | costume , derby , 4 4329 | belly shoes , kurti , 288 4330 | chinos , peeptoes , 9 4331 | earrings , top , 626 4332 | cargo shorts , flipflops , 85 4333 | cufflinks , handkerchief , 143 4334 | skirt , watch , 117 4335 | purse , shirt dress , 42 4336 | blazer , jeggings , 2 4337 | necktie , tote , 31 4338 | ballerinas , hand bag , 420 4339 | jeans , wallet , 490 4340 | casual jacket , wallet , 6 4341 | dungaree , hand bag , 10 4342 | boots , glasses , 237 4343 | top , trackpants , 567 4344 | jeans , laptop bag , 6 4345 | polo , wallet , 50 4346 | jumper , leggings , 5 4347 | apparel , dress material , 17 4348 | ballerinas , mittens , 17 4349 | casual shoes , kurta , 10 4350 | clutch , jumpsuit , 735 4351 | ballerinas , polo , 324 4352 | spectators , vest , 1 4353 | satchel , sunglasses , 316 4354 | jacket , sports shoes , 624 4355 | ballerinas , dupatta , 21 4356 | hand bag , sandals , 632 4357 | sports shoes , tunic , 219 4358 | polo , watch , 95 4359 | ballerinas , bra , 75 4360 | hoodie , trackpants , 2 4361 | cape , tunic , 15 4362 | chinos , glasses , 151 4363 | flipflops , trouser , 124 4364 | boots , windcheater , 17 4365 | glasses , thongs , 2 4366 | apparel , cape , 223 4367 | casual shoes , jeggings , 17 4368 | casual jacket , jeggings , 10 4369 | apparel , swim trunks , 133 4370 | accessories , high tops , 14 4371 | bottoms , v-neck , 31 4372 | watch , wing tips , 9 4373 | dungaree , floaters , 11 4374 | hand bag , kurta , 501 4375 | shrug , sunglasses , 109 4376 | ballerinas , purse , 177 4377 | jumpsuit , ring , 4 4378 | bow tie , handkerchief , 241 4379 | churidar set , hand bag , 33 4380 | casual shoes , leather jacket , 88 4381 | kurta , wedges , 798 4382 | briefs , wallet , 3 4383 | flipflops , swimwear , 9 4384 | footwear , shirt , 858 4385 | swimwear , travel bag , 1 4386 | costume , goggles , 20 4387 | sports bra , sweatshirt , 5 4388 | suit , travel bag , 213 4389 | kurta , peeptoes , 581 4390 | ring , sling bag , 23 4391 | boots , trouser , 218 4392 | jeggings , kurta , 284 4393 | ballerinas , kurta , 789 4394 | balconette bra , top , 8 4395 | clutch , sunglasses , 62 4396 | apparel , jeggings , 89 4397 | apparel , wedding dress , 511 4398 | loafers , purse , 61 4399 | cap , stilettos , 41 4400 | goggles , henley , 8 4401 | apparel , churidar set , 674 4402 | cardigan , palazzo , 2 4403 | bottoms , shorts , 21 4404 | shorts , wallet , 15 4405 | belt , necklace , 25 4406 | sandals , sweatshirt , 192 4407 | fedora , t-shirt , 338 4408 | bottoms , dress material , 76 4409 | kurti , sweater , 1 4410 | derby , dress , 4 4411 | boots , scarf , 81 4412 | belt , blouse , 72 4413 | formal trousers , oxfords shoe , 15 4414 | travel bag , vest , 1 4415 | costume , crewneck , 6 4416 | running shoes , suit , 45 4417 | accessories , gloves , 49 4418 | coat , kurti , 4 4419 | mini skirt , stilettos , 28 4420 | boxers , sandals , 14 4421 | bag , stockings , 14 4422 | backpack , belly shoes , 15 4423 | ankle boots , camisole , 5 4424 | formal trousers , monk straps , 8 4425 | slippers , travel bag , 15 4426 | bracelet , swimsuit , 34 4427 | running shoes , socks , 46 4428 | coat , sandals , 94 4429 | apparel , floaters , 104 4430 | trackpants , training shoes , 64 4431 | goggles , sunglasses , 440 4432 | jeggings , kurti , 148 4433 | jeans , waistcoat , 219 4434 | dress , messenger bag , 15 4435 | flipflops , hand bag , 68 4436 | scarf , swimsuit , 11 4437 | jewelry , suspender , 22 4438 | apparel , kurta , 715 4439 | kurti , leggings , 406 4440 | loafers , waistcoat , 26 4441 | hipsters , sandals , 44 4442 | high tops , shorts , 29 4443 | cardigan , corset , 8 4444 | bow tie , shirt , 233 4445 | boots , socks , 84 4446 | belt , palazzo , 137 4447 | formal trousers , sandals , 22 4448 | bodysuit , bottoms , 126 4449 | henley , vest , 4 4450 | casual jacket , pumps , 26 4451 | running shoes , satchel , 14 4452 | goggles , waistcoat , 8 4453 | jumper , sandals , 51 4454 | driving shoes , shorts , 2 4455 | hand bag , joggers , 5 4456 | jewelry , travel bag , 64 4457 | beanies , cap , 191 4458 | kurta , tote , 319 4459 | skirt , sling bag , 27 4460 | maxi dress , sweater , 26 4461 | leggings , sports shoes , 246 4462 | glasses , trousers , 29 4463 | bow tie , lapel pin , 4 4464 | accessories , ankle boots , 8 4465 | bag , polo , 39 4466 | brogues , jeggings , 1 4467 | loafers , trouser , 658 4468 | bag , vest , 22 4469 | oxfords shoe , tights , 6 4470 | satchel , stockings , 1 4471 | cardigan , satchel , 16 4472 | mittens , scarf , 6 4473 | travel bag , trunk , 26 4474 | kurta , platform heels , 383 4475 | apparel , lifestyle shoes , 480 4476 | footwear , slip ons , 520 4477 | gloves , trousers , 1 4478 | cufflinks , formal shoes , 4 4479 | slip ons , wallet , 25 4480 | ballerinas , joggers , 21 4481 | card case , slip ons , 60 4482 | joggers , sports shoes , 341 4483 | backpack , derby , 3 4484 | pumps , swimsuit , 7 4485 | short dress , sunglasses , 3 4486 | derby , jeans , 336 4487 | cap , necklace , 19 4488 | cufflinks , jewelry , 53 4489 | fitness band , tights , 2 4490 | sweatshirt , trouser , 582 4491 | sports sandals , trouser , 14 4492 | night slip , ring , 8 4493 | gloves , necktie , 23 4494 | romper , sports shoes , 24 4495 | blazer , purse , 33 4496 | mini skirt , wedges , 3 4497 | casual jacket , clutch , 1 4498 | brogues , laptop bag , 4 4499 | bracelet , scarf , 56 4500 | leggings , tote , 17 4501 | cap , palazzo , 41 4502 | denim shorts , sports shoes , 14 4503 | costume , slip ons , 3 4504 | bracelet , dress , 704 4505 | top , vest , 267 4506 | casual trousers , tunic , 26 4507 | handkerchief , leggings , 29 4508 | cape , kurti , 15 4509 | stilettos , wedding dress , 177 4510 | brogues , top , 29 4511 | dungaree , earrings , 26 4512 | casual jacket , hand bag , 7 4513 | loafers , pyjama , 10 4514 | joggers , suspender , 4 4515 | accessories , jumper , 24 4516 | bottoms , necklace , 75 4517 | clutch , kurti , 102 4518 | blazer , tunic , 13 4519 | jeggings , loafers , 2 4520 | outerwear , slip ons , 3 4521 | denim shorts , goggles , 4 4522 | cap , shirt dress , 23 4523 | stilettos , trouser , 655 4524 | ring , shrug , 7 4525 | boots , tights , 33 4526 | apparel , jewelry , 8 4527 | glasses , goggles , 7 4528 | ballerinas , jeggings , 166 4529 | bracelet , wedding dress , 107 4530 | hipsters , swimsuit , 45 4531 | cap , ring , 113 4532 | hand bag , wedges , 238 4533 | bag , palazzo , 13 4534 | casual jacket , trousers , 1 4535 | blazer , sports shoes , 59 4536 | loafers , v-neck , 762 4537 | earrings , kurta , 35 4538 | casual shoes , jacket , 516 4539 | crewneck , thermal , 5 4540 | clutch , footwear , 426 4541 | camisole , sweater , 50 4542 | purse , socks , 4 4543 | denim shorts , sports sandals , 25 4544 | bomber jacket , jeggings , 11 4545 | canvas shoes , chinos , 76 4546 | bracelet , suspender , 72 4547 | chinos , tunic , 123 4548 | jacket , socks , 4 4549 | boots , polo , 181 4550 | earrings , shirt , 220 4551 | necklace , slip ons , 1 4552 | accessories , jeggings , 14 4553 | high tops , polo , 38 4554 | bracelet , polo , 81 4555 | boxer briefs , loungewear , 8 4556 | formal shirt , suspender , 1 4557 | high tops , socks , 9 4558 | casual jacket , v-neck , 6 4559 | blouse , brogues , 1 4560 | goggles , peeptoes , 14 4561 | accessories , sports shoes , 609 4562 | bag , peeptoes , 45 4563 | cargo shorts , henley , 24 4564 | camisole , flipflops , 39 4565 | footwear , saree , 37 4566 | kurti , platform heels , 42 4567 | jumpsuit , watch , 103 4568 | boots , bracelet , 4 4569 | cap , vest , 17 4570 | fitness band , skirt , 2 4571 | apparel , ring , 113 4572 | casual shirt , high tops , 36 4573 | jacket , wedges , 167 4574 | shirt dress , thermal , 1 4575 | dungaree , footwear , 478 4576 | mini skirt , t-shirt , 5 4577 | coat , messenger bag , 1 4578 | thermal , vest , 52 4579 | high tops , sunglasses , 2 4580 | bracelet , espadrilles , 5 4581 | backpack , briefs , 17 4582 | bag , swimsuit , 21 4583 | formal shirt , trouser , 48 4584 | jewelry , romper , 14 4585 | belt , stockings , 26 4586 | footwear , wing tips , 95 4587 | corset , vest , 21 4588 | bra , running shoes , 4 4589 | pumps , vest , 20 4590 | casual shoes , trench coat , 12 4591 | casual shirt , waistcoat , 663 4592 | belly shoes , shirt dress , 2 4593 | necktie , sweater , 27 4594 | earrings , purse , 66 4595 | belly shoes , chinos , 42 4596 | earrings , trousers , 13 4597 | ballerinas , clutch , 323 4598 | purse , tunic , 2 4599 | cardigan , short dress , 126 4600 | cap , kurti , 236 4601 | coat , tote , 1 4602 | glasses , watch , 35 4603 | boxers , flipflops , 49 4604 | bra , travel bag , 12 4605 | mini skirt , sandals , 102 4606 | peeptoes , trousers , 426 4607 | gloves , travel bag , 14 4608 | floaters , polo , 21 4609 | coat , tights , 1 4610 | casual jacket , palazzo , 6 4611 | pumps , tunic , 486 4612 | trousers , wing tips , 37 4613 | glasses , leggings , 8 4614 | boxers , t-shirt , 162 4615 | scarf , socks , 5 4616 | clogs , shorts , 134 4617 | layer_1_upper_body , sports shoes , 43 4618 | cap , tunic , 121 4619 | apparel , clutch , 645 4620 | goggles , t-shirt , 30 4621 | cap , necktie , 58 4622 | scarf , shorts , 6 4623 | bag , tights , 171 4624 | jumpsuit , mittens , 7 4625 | belt , sandals , 6 4626 | jeans , necktie , 100 4627 | casual shirt , stilettos , 2 4628 | casual shoes , tote , 24 4629 | cardigan , tunic , 138 4630 | blouse , tights , 4 4631 | belt , sling bag , 29 4632 | sunglasses , tunic , 56 4633 | apparel , formal trousers , 228 4634 | cape , sunglasses , 50 4635 | jacket , sunglasses , 32 4636 | glasses , shorts , 178 4637 | beanies , boots , 2 4638 | camisole , t-shirt , 51 4639 | ballerinas , necktie , 186 4640 | gloves , jewelry , 2 4641 | casual shirt , leather jacket , 106 4642 | backpack , sunglasses , 18 4643 | accessories , lapel pin , 26 4644 | boxers , slip ons , 38 4645 | casual shoes , necktie , 34 4646 | casual shoes , formal trousers , 29 4647 | accessories , necklace , 50 4648 | belly shoes , jumpsuit , 350 4649 | scarf , shirt dress , 11 4650 | gloves , sling bag , 6 4651 | cap , jewelry , 9 4652 | cap , shrug , 36 4653 | shirt , wedges , 659 4654 | joggers , winter jacket , 12 4655 | loafers , sweater , 36 4656 | scarf , wedding dress , 18 4657 | leggings , tunic , 839 4658 | cufflinks , derby , 4 4659 | mittens , top , 3 4660 | bracelet , palazzo , 408 4661 | blouse , vest , 18 4662 | apparel , wallet , 63 4663 | canvas shoes , footwear , 213 4664 | glasses , trouser , 3 4665 | hand bag , wing tips , 6 4666 | cardigan , hoodie , 145 4667 | cufflinks , shirt , 349 4668 | flipflops , ring , 6 4669 | footwear , formal trousers , 335 4670 | canvas shoes , sweatshirt , 95 4671 | churidar set , sling bag , 9 4672 | casual shoes , goggles , 167 4673 | kurta , sling bag , 2 4674 | jewelry , sweater , 1 4675 | bikini , corset , 15 4676 | blazer , clutch , 12 4677 | kimono , top , 86 4678 | peacoat , sweatshirt , 4 4679 | socks , suit , 104 4680 | leggings , sweater , 148 4681 | casual shirt , sunglasses , 554 4682 | apparel , necklace , 93 4683 | gloves , jacket , 8 4684 | brogues , trouser , 5 4685 | joggers , sports sandals , 73 4686 | bag , pyjama , 173 4687 | earrings , maxi dress , 4 4688 | belt , sleepwear , 208 4689 | boots , joggers , 12 4690 | bag , sandals , 589 4691 | footwear , necktie , 423 4692 | bottoms , driving shoes , 8 4693 | boots , cape , 74 4694 | apparel , swimsuit , 8 4695 | costume , footwear , 283 4696 | ankle boots , trouser , 15 4697 | footwear , hoodie , 440 4698 | gloves , kurta , 792 4699 | necklace , skirt , 163 4700 | belt , trouser , 487 4701 | goggles , shirt , 49 4702 | cufflinks , necklace , 88 4703 | coat , sunglasses , 20 4704 | casual shoes , vest , 34 4705 | footwear , tights , 34 4706 | casual trousers , suit , 25 4707 | padded bra , vest , 1 4708 | shrug , tote , 6 4709 | maxi dress , necklace , 66 4710 | boxer briefs , sleepwear , 45 4711 | purse , stockings , 1 4712 | maxi dress , scarf , 20 4713 | kurti , ring , 14 4714 | denim jacket , maxi dress , 82 4715 | clutch , shirt dress , 6 4716 | pajama , vest , 11 4717 | bomber jacket , brogues , 1 4718 | casual shirt , joggers , 26 4719 | floaters , t-shirt , 37 4720 | sling bag , top , 529 4721 | romper , watch , 12 4722 | hand bag , jeans , 812 4723 | trench coat , wedges , 6 4724 | belt , thongs , 11 4725 | sports bra , sweater , 114 4726 | hoodie , jeggings , 85 4727 | chinos , lifestyle shoes , 530 4728 | kurti , palazzo , 384 4729 | bottoms , casual jacket , 9 4730 | boots , suspender , 3 4731 | canvas shoes , vest , 4 4732 | bag , shirt , 178 4733 | cap , tuxedo , 12 4734 | brogues , polo , 30 4735 | cap , messenger bag , 4 4736 | bag , panties , 15 4737 | clutch , tunic , 157 4738 | jumpsuit , purse , 27 4739 | pumps , trouser , 619 4740 | thongs , top , 135 4741 | bag , jeggings , 60 4742 | casual shirt , sports shoes , 112 4743 | ballerinas , earrings , 244 4744 | ballerinas , short dress , 3 4745 | t-shirt , windcheater , 24 4746 | earrings , tote , 6 4747 | ballerinas , chinos , 432 4748 | corset , short dress , 16 4749 | blazer , casual shoes , 5 4750 | sunglasses , swimsuit , 23 4751 | hand bag , shrug , 38 4752 | bodysuit , gloves , 1 4753 | kimono , necktie , 85 4754 | formal shoes , trousers , 847 4755 | floaters , shorts , 83 4756 | belly shoes , sweatshirt , 1 4757 | hoodie , sunglasses , 3 4758 | briefs , t-shirt , 13 4759 | coat , trousers , 17 4760 | leggings , ring , 123 4761 | sports shoes , tights , 76 4762 | apparel , beanies , 18 4763 | running shoes , sweatshirt , 51 4764 | bottoms , kurti , 342 4765 | dungaree , watch , 16 4766 | casual trousers , sandals , 22 4767 | backpack , skirt , 17 4768 | goggles , leggings , 51 4769 | kurti , pumps , 282 4770 | kimono , trouser , 6 4771 | accessories , blouse , 683 4772 | cargo shorts , watch , 7 4773 | jewelry , ring , 301 4774 | crewneck , hoodie , 155 4775 | boots , leggings , 187 4776 | accessories , tuxedo , 42 4777 | apparel , travel bag , 707 4778 | bag , short dress , 90 4779 | sports shoes , trouser , 566 4780 | coat , robe , 51 4781 | casual shirt , espadrilles , 6 4782 | chinos , formal shoes , 34 4783 | bow tie , kurta , 4 4784 | scarf , t-shirt , 1 4785 | corset , maxi dress , 2 4786 | denim jacket , trousers , 5 4787 | belly shoes , shorts , 17 4788 | clutch , dress , 637 4789 | denim jacket , sandals , 2 4790 | bracelet , footwear , 110 4791 | casual shoes , hoodie , 19 4792 | suspender , trousers , 79 4793 | apparel , pyjama , 760 4794 | coat , sweatshirt , 25 4795 | running shoes , sunglasses , 125 4796 | trunk , watch , 5 4797 | flipflops , tote , 31 4798 | rugby , sports shoes , 36 4799 | cap , clutch , 24 4800 | boots , purse , 166 4801 | belt , churidar set , 42 4802 | hand bag , handkerchief , 24 4803 | belt , bottoms , 558 4804 | costume , satchel , 34 4805 | peeptoes , tunic , 42 4806 | cap , shorts , 412 4807 | dupatta , watch , 28 4808 | boots , rugby , 1 4809 | bottoms , canvas shoes , 185 4810 | casual jacket , flipflops , 4 4811 | footwear , lifestyle shoes , 98 4812 | bag , brogues , 42 4813 | shirt , slip ons , 309 4814 | bag , wedges , 277 4815 | messenger bag , top , 322 4816 | coat , trackwear , 10 4817 | bottoms , sling bag , 3 4818 | earrings , jeans , 2 4819 | ankle boots , leggings , 16 4820 | ballerinas , scarf , 57 4821 | thermal , tunic , 7 4822 | chinos , formal shirt , 12 4823 | hand bag , layer_1_upper_body , 12 4824 | belt , coat , 92 4825 | ballerinas , bodysuit , 5 4826 | casual trousers , v-neck , 607 4827 | cufflinks , suspender , 77 -------------------------------------------------------------------------------- /evaluation/test.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | @Author: winton 4 | @File: test.py 5 | @Time: 2019/7/29 10:49 AM 6 | @Description: 7 | """ 8 | from nlgeval import compute_metrics, compute_individual_metrics 9 | from nltk.translate import bleu_score 10 | 11 | reference = [ 12 | ['The', 'new', 'translator', 'will', 'stand', 'on', 'the', 'exhibition', 'on', 'behalf', 'of', 'the', 'four', 13 | 'times', 'group', 'at', 'the', 'exhibition', 'We', 'will', 'introduce', 'the', 'new', 'star`s', 'business', 'the', 14 | 'advantages', 'and', 'the', 'successful', 'cases', 'so', 'that', 'you', 'can', 'understand', 'the', 'new', 15 | 'translator', 'more', 'comprehensively', 'We', 'have', 'a', 'stable', 'full-time', 'international', 'team', 'that', 16 | 'ensures', 'punctual', 'efficient', 'translation', 'and', 'dubbing', 'and', 'provides', 'a', 'full', 'range', 'of', 17 | 'control', 'through', 'the', 'perfect', 'quality', 'control', 'and', 'project', 'management', 'system', 18 | 'providing', 'a', 'one-stop', 'service', 'for', 'translation', 'dubbing', 'subtitle', 'production', 'post', 19 | 'production', 'broadcasting', 'and', 'ratings', 'surveys'], 20 | ['The', 'new', 'translator', 'star', 'will', 'represent', 'sida', 'times', 'group', 'in', 'the', 'exhibition', 21 | 'when', 'we', 'will', 'introduce', 'the', 'new', 'translator', 'star`s', 'business', 'advantages', 'successful', 22 | 'cases', 'and', 'other', 'dimensions', 'so', 'that', 'you', 'can', 'have', 'a', 'more', 'comprehensive', 23 | 'understanding', 'of', 'the', 'new', 'translator', 'star', 'We', 'have', 'a', 'stable', 'full-time', 24 | 'international', 'team', 'which', 'can', 'ensure', 'timely', 'and', 'efficient', 'translation', 'and', 'dubbing', 25 | 'Through', 'perfect', 'quality', 'control', 'and', 'project', 'management', 'system', 'we', 'provide', 26 | 'translation', 'dubbing', 'subtitle', 'production', 'post-production', 'broadcasting', 'and', 'rating', 'survey']] 27 | candidate = ['New', 'Transtar', 'will', 'present', 'itself', 'at', 'the', 'Exhibition', 'on', 'behalf', 'of', 28 | 'StarTimes', 'and', 'we', 'will', 'give', 'a', 'comprehensive', 'introduction', 'of', 'ourselves', 29 | 'including', 'the', 'current', 'services', 'we', 'offer', 'the', 'advantages', 'we', 'hold', 'and', 'the', 30 | 'projects', 'we', 'have', 'completed', 'to', 'help', 'you', 'understand', 'us', 'more', 'New', 'Transtar', 31 | 'boasts', 'of', 'an', 'international', 'team', 'of', 'professionals', 'and', 'is', 'capable', 'of', 32 | 'providing', 'fast', 'and', 'quality-guaranteed', 'services', 'including', 'translating', 'dubbing', 33 | 'subtitle', 'making', 'post-production', 'broadcasting', 'and', 'collecting', 'of', 'viewership', 34 | 'ratings', 'thanks', 'to', 'our', 'strict', 'streamlined', 'and', 'developed', 'quality', 'control', 'and', 35 | 'project', 'management', 'system'] 36 | metrics_dict = compute_individual_metrics([' '.join(ref) for ref in reference], ' '.join(candidate)) 37 | sentence_bleu = bleu_score.sentence_bleu(reference, candidate) 38 | print(metrics_dict) 39 | print(sentence_bleu) 40 | hypothesis_path = '/home/hwd/project/mmkbds/widget/baseline/cmmd/result/cmmd_v4/pred_10.txt' 41 | references_path = '/home/hwd/dataset/cmmd/data/dataset/v2/dialogue_data/context_2_20/test_target_text.txt' 42 | metrics_dict = compute_metrics(hypothesis=hypothesis_path, references=[references_path]) 43 | with open(hypothesis_path, 'r') as f: 44 | hypothesis = [x.strip().split() for x in f.readlines()] 45 | references = [] 46 | for reference in references_path: 47 | with open(reference, 'r') as f: 48 | references.append([x.strip().split() for x in f.readlines()]) 49 | references = list(zip(*references)) 50 | corpus_bleu = bleu_score.corpus_bleu(references, hypothesis) 51 | print(metrics_dict) 52 | print(corpus_bleu) -------------------------------------------------------------------------------- /generate_data.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | @Author: winton 4 | @File: generate_data.py 5 | @Time: 2019/7/9 11:12 AM 6 | @Description: 7 | """ 8 | import argparse 9 | import json 10 | import os 11 | 12 | from nltk import word_tokenize 13 | from tqdm import tqdm 14 | 15 | from widget.utils import save_to_pkl 16 | 17 | 18 | def norm_sentence(sentence): 19 | # remove quotation marks and spaces at begin and end 20 | ret = sentence.lstrip('‘').rstrip('’').strip() 21 | # lower characters 22 | ret = ret.lower() 23 | # tokenize 24 | ret = ' '.join(word_tokenize(ret)) 25 | return ret 26 | 27 | 28 | def main(args): 29 | # process knowledge data 30 | knowledge_pairs = [] 31 | with open(os.path.join(args.input_dir, 'styletips_synset.txt')) as file: 32 | for line in file: 33 | products = [None] * 2 34 | products[0], products[1], score = map(lambda x: x.strip(), line.split(',')) 35 | products = list(map(lambda x: x.lower(), products)) 36 | knowledge_pairs.append(products) 37 | with open(os.path.join(args.input_dir, 'celebrity_distribution.json')) as file: 38 | celebrity_json = json.load(file) 39 | for celebrity, products in celebrity_json.items(): 40 | celebrity = celebrity.lower() 41 | for product in products.keys(): 42 | product = product.lower() 43 | knowledge_pairs.append([celebrity, product]) 44 | with open(os.path.join(args.out_dir, 'knowledge.json'), 'w', encoding='utf8') as file: 45 | json.dump(knowledge_pairs, file, indent=2, ensure_ascii=False) 46 | # process dialog data 47 | versions = ['v1', 'v2'] 48 | splits = ['train', 'valid', 'test'] 49 | for version in versions: 50 | for split in splits: 51 | path = os.path.join(args.input_dir, version, split) 52 | dialogs = [] 53 | for file in tqdm(os.listdir(path), desc='Dump {} {}'.format(version, split)): 54 | with open(os.path.join(path, file), 'r') as f: 55 | data = json.load(f) 56 | dialog = [] 57 | for utterance in data: 58 | # get utter attributes 59 | speaker = utterance.get('speaker') 60 | if 'question-subtype' in utterance: 61 | utter_type = f"{utterance.get('type')}:{utterance.get('question-type')}:" \ 62 | f"{utterance.get('question-subtype')}" 63 | elif 'question-type' in utterance: 64 | utter_type = f"{utterance.get('type')}:{utterance.get('question-type')}" 65 | else: 66 | utter_type = f"{utterance.get('type')}" 67 | utter = utterance.get('utterance') 68 | text = utter.get('nlg') 69 | images = utter.get('images') 70 | false_images = utter.get('false images') 71 | # some attributes may be empty 72 | if text is None: 73 | text = "" 74 | if images is None: 75 | images = [] 76 | if false_images is None: 77 | false_images = [] 78 | dialog.append((speaker, norm_sentence(text), images, false_images, utter_type)) 79 | dialogs.append(dialog) 80 | out_path = os.path.join(args.out_dir, version) 81 | if not os.path.exists(out_path): 82 | os.makedirs(out_path) 83 | out_file = os.path.join(out_path, f'{split}.pkl') 84 | save_to_pkl(dialogs, out_file) 85 | 86 | 87 | if __name__ == '__main__': 88 | _parser = argparse.ArgumentParser() 89 | # path 90 | _parser.add_argument('--input_dir', help='original data directory', required=True) 91 | _parser.add_argument('--out_dir', type=str, help='path for saving processed data', required=True) 92 | _args = _parser.parse_args() 93 | exit(main(_args)) 94 | -------------------------------------------------------------------------------- /requirement.txt: -------------------------------------------------------------------------------- 1 | annoy==1.17.0 2 | certifi==2020.12.5 3 | click==7.1.2 4 | joblib==1.0.1 5 | mkl-fft==1.3.0 6 | mkl-random==1.1.1 7 | mkl-service==2.3.0 8 | nltk==3.5 9 | nose==1.3.7 10 | numpy==1.19.2 11 | regex==2021.4.4 12 | six==1.15.0 13 | torch==1.8.1 14 | tqdm==4.59.0 15 | typing-extensions==3.7.4.3 16 | wheel==0.36.2 17 | 18 | -------------------------------------------------------------------------------- /train.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | @Author: winton 4 | @File: training.py 5 | @Time: 2021/4/9 9:22 AM 6 | @Description: 7 | """ 8 | import argparse 9 | import json 10 | import logging 11 | import os 12 | 13 | import torch 14 | from torch import nn, optim 15 | from torch.nn.functional import cross_entropy 16 | from torch.optim import lr_scheduler 17 | from torch.utils.data import DataLoader 18 | import numpy as np 19 | 20 | from widget.data import DataSource, PAD_ID 21 | from widget.model import Model 22 | 23 | 24 | def cal_performance(pred, gold, padding_id, smoothing=False): 25 | """ Apply label smoothing if needed """ 26 | 27 | loss = cal_loss(pred, gold, smoothing, padding_id) 28 | 29 | pred = pred.max(1)[1] 30 | gold = gold.contiguous().view(-1) 31 | non_pad_mask = gold.ne(padding_id) 32 | n_correct = pred.eq(gold) 33 | n_correct = n_correct.masked_select(non_pad_mask).sum().item() 34 | 35 | return loss, n_correct 36 | 37 | 38 | def cal_loss(pred, gold, smoothing, padding_id): 39 | """ Calculate cross entropy loss, apply label smoothing if needed. """ 40 | 41 | gold = gold.contiguous().view(-1) 42 | 43 | if smoothing: 44 | eps = 0.1 45 | n_class = pred.size(1) 46 | 47 | one_hot = torch.zeros_like(pred).scatter(1, gold.view(-1, 1), 1) 48 | one_hot = one_hot * (1 - eps) + (1 - one_hot) * eps / (n_class - 1) 49 | log_prb = torch.log_softmax(pred, dim=1) 50 | 51 | non_pad_mask = gold.ne(padding_id) 52 | loss = -(one_hot * log_prb).sum(dim=1) 53 | loss = loss.masked_select(non_pad_mask).sum() # average later 54 | else: 55 | loss = cross_entropy(pred, gold, ignore_index=padding_id, reduction='sum') 56 | 57 | return loss 58 | 59 | 60 | def main(args): 61 | torch.set_default_tensor_type(torch.FloatTensor) 62 | if not os.path.exists(args.model_path): 63 | os.makedirs(args.model_path) 64 | # Load config 65 | config = json.load(open(args.config_file_path, 'r')) 66 | if config['training']['label_smoothing'] == 1: 67 | label_smoothing = True 68 | else: 69 | label_smoothing = False 70 | # Set logger (console and file) 71 | logger_format = logging.Formatter('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s') 72 | logger = logging.getLogger('transformer') 73 | sh = logging.StreamHandler() 74 | sh.setFormatter(logger_format) 75 | sh.setLevel(logging.DEBUG) 76 | logger.addHandler(sh) 77 | fh = logging.FileHandler(os.path.join(args.model_path, f'training_{args.task}.log'), 'a', encoding='utf-8') 78 | fh.setLevel(logging.INFO) 79 | fh.setFormatter(logger_format) 80 | logger.addHandler(fh) 81 | logger.setLevel(logging.INFO) 82 | logger.info(json.dumps(config, indent=2)) 83 | # Set device and seed 84 | device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') 85 | torch.manual_seed(config['training']['seed']) # Seed for reproducing 86 | # load data 87 | train_dataset = DataSource(args.config_file_path, args.task, 'train', 88 | args.version, args.context_size) 89 | valid_dataset = DataSource(args.config_file_path, args.task, 'valid', 90 | args.version, args.context_size) 91 | train_loader = DataLoader(train_dataset, 92 | batch_size=args.batch_size, 93 | shuffle=True, 94 | num_workers=3) 95 | valid_loader = DataLoader(valid_dataset, 96 | batch_size=args.batch_size, 97 | shuffle=False, 98 | num_workers=3) 99 | knowledge_data = train_dataset.encode_knowledge_pair(config['data']['knowledge_path']).to(device) 100 | vocab_size = len(train_dataset.vocab) 101 | logger.info(f"Total batches={len(train_dataset) // args.batch_size}") 102 | # Define widget 103 | model = Model(task=args.task, 104 | vocab_size=vocab_size, 105 | max_text_len=config['data']['text_length'], 106 | image_size=config['model']['image_size'], 107 | embedding_size=config['model']['word_embedding_size'], 108 | text_n_layers=config['model']['text_n_layers'], 109 | text_n_head=config['model']['text_n_head'], 110 | text_d_k=config['model']['text_d_k'], 111 | text_d_v=config['model']['text_d_v'], 112 | text_d_model=config['model']['text_d_model'], 113 | text_d_inner=config['model']['text_d_inner'], 114 | co_n_layers=config['model']['co_n_layers'], 115 | co_n_head=config['model']['co_n_head'], 116 | co_d_k=config['model']['co_d_k'], 117 | co_d_v=config['model']['co_d_v'], 118 | co_d_model=config['model']['co_d_model'], 119 | co_d_inner=config['model']['co_d_inner'], 120 | de_n_layers=config['model']['de_n_layers'], 121 | de_n_head=config['model']['de_n_head'], 122 | de_d_k=config['model']['de_d_k'], 123 | de_d_v=config['model']['de_d_v'], 124 | de_d_model=config['model']['de_d_model'], 125 | de_d_inner=config['model']['de_d_inner'], 126 | dropout_rate=config['model']['dropout_rate'], 127 | padding_id=PAD_ID, 128 | tgt_emb_prj_weight_sharing=True, 129 | use_knowledge=config['model']['use_knowledge'], 130 | knowledge_data=knowledge_data 131 | ) 132 | model.to(device) 133 | # model = nn.DataParallel(model) 134 | # logger.info(model) 135 | # Define optimizer 136 | optimizer = optim.Adam(model.parameters(), 137 | lr=config['training']['lr'], 138 | weight_decay=config['training']['lr_decay']) 139 | # Define learning rate scheduler 140 | # scheduler = lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', 141 | # factor=0.5, patience=1, 142 | # threshold=0.1, threshold_mode='rel', 143 | # cooldown=0, min_lr=1e-8, 144 | # verbose=True) 145 | # optimizer = ScheduledOptim( 146 | # optim.Adam( 147 | # filter(lambda x: x.requires_grad, widget.parameters()), 148 | # betas=(0.9, 0.98), eps=1e-09), 149 | # config['widget']['text_d_model'], config['training']['warmup_steps']) 150 | # Train 151 | total_batch = 0 152 | min_val_loss = None 153 | bad_loss_cnt = 0 154 | for epoch in range(config['training']['num_epochs']): 155 | total_losses = [0, 0] 156 | n_word_total_list = [0, 0] 157 | n_word_correct_list = [0, 0] 158 | # scheduler.step(sum(valid_losses)) 159 | for train_batch in train_loader: 160 | total_batch += 1 161 | if args.task == 'text': 162 | text_input, text_pos, text_turn, text_speaker, \ 163 | image_input, image_pos, image_turn, image_speaker, \ 164 | query_input, query_pos = map(lambda x: x.to(device), train_batch) 165 | gold = query_input[:, 1:] 166 | optimizer.zero_grad() 167 | dec_output_probs = model((text_input, text_pos, text_turn, text_speaker, 168 | image_input, image_pos, image_turn, image_speaker), 169 | (query_input[:, :-1], query_pos[:, :-1])) 170 | backward_loss = [] 171 | for idx, dec_output_prob in enumerate(dec_output_probs): 172 | loss, n_correct = cal_performance(dec_output_prob, gold, PAD_ID, 173 | smoothing=label_smoothing) 174 | backward_loss.append(loss) 175 | batch_loss = loss.item() 176 | total_losses[idx] += batch_loss 177 | non_pad_mask = gold.ne(PAD_ID) 178 | n_word = non_pad_mask.sum().item() 179 | n_word_total_list[idx] += n_word 180 | n_word_correct_list[idx] += n_correct 181 | if total_batch % config['training']['log_batch'] == 0 or total_batch < config['training'][ 182 | 'log_batch']: 183 | logger.info(f'Epoch [{epoch + 1}], Batch [{total_batch}], ' 184 | f'Loss {idx + 1}: {batch_loss / n_word:.6}, ' 185 | f'Accuracy {idx + 1}: {100 * n_correct / n_word:.3f} %') 186 | backward_loss = sum(backward_loss) 187 | backward_loss.backward() 188 | optimizer.step() 189 | # optimizer.step_and_update_lr() 190 | # Gradient clipping to avoid exploding gradients 191 | nn.utils.clip_grad_norm_(model.parameters(), config['training']['max_gradient_norm']) 192 | else: 193 | pass 194 | if args.task == 'text': 195 | for idx, (total_loss, n_word_total, n_word_correct) in enumerate( 196 | zip(total_losses, n_word_total_list, n_word_correct_list)): 197 | train_loss = total_loss / n_word_total 198 | train_accu = n_word_correct / n_word_total 199 | logger.info(f'Epoch [{epoch + 1}], ' 200 | f'Train Loss {idx + 1}: {train_loss:.6}, ' 201 | f'Train Accuracy {idx + 1}: {100 * train_accu:.3f} %') 202 | # Evaluate 203 | valid_losses = [0, 0] 204 | n_word_total_list = [0, 0] 205 | n_word_correct_list = [0, 0] 206 | if epoch % config['training']['evaluate_epoch'] == 0: 207 | model.eval() 208 | if args.task == 'text': 209 | for valid_batch in valid_loader: 210 | text_input, text_pos, text_turn, text_speaker, \ 211 | image_input, image_pos, image_turn, image_speaker, \ 212 | query_input, query_pos = map(lambda x: x.to(device), valid_batch) 213 | gold = query_input[:, 1:] 214 | dec_output_probs = model((text_input, text_pos, text_turn, text_speaker, 215 | image_input, image_pos, image_turn, image_speaker), 216 | (query_input[:, :-1], query_pos[:, :-1])) 217 | for idx, dec_output_prob in enumerate(dec_output_probs): 218 | loss_val, n_correct = cal_performance(dec_output_prob, gold, PAD_ID, 219 | smoothing=label_smoothing) 220 | valid_losses[idx] += loss_val.item() 221 | non_pad_mask = gold.ne(PAD_ID) 222 | n_word = non_pad_mask.sum().item() 223 | n_word_total_list[idx] += n_word 224 | n_word_correct_list[idx] += n_correct 225 | for idx, (valid_loss, n_word_total, n_word_correct) in enumerate( 226 | zip(valid_losses, n_word_total_list, n_word_correct_list)): 227 | logger.info(f'Epoch [{epoch + 1}] ' 228 | f'Valid Loss {idx + 1}: {valid_loss / n_word_total:.6}, ' 229 | f'Valid Accuracy {idx + 1}: {100 * n_word_correct / n_word_total:.3f} %, ' 230 | f'Patience: {bad_loss_cnt}') 231 | valid_loss = sum(valid_losses) 232 | model.train() 233 | # Save widget each epoch 234 | save_dict = { 235 | 'task': args.task, 236 | 'epoch': epoch, 237 | 'iteration': total_batch, 238 | 'valid_loss': valid_loss, 239 | 'widget': model.state_dict(), 240 | 'optimizer': optimizer.state_dict() 241 | } 242 | torch.save(save_dict, 243 | os.path.join(args.model_path, f'{args.task}_model_{epoch + 1}.pth')) 244 | if min_val_loss is None or valid_loss < min_val_loss: 245 | min_val_loss = valid_loss 246 | bad_loss_cnt = 0 247 | # Save the best widget 248 | torch.save(save_dict, 249 | os.path.join(args.model_path, f'best_{args.task}_model.pth')) 250 | else: 251 | bad_loss_cnt += 1 252 | if bad_loss_cnt >= config['training']['patience']: 253 | return 0 254 | else: 255 | pass 256 | return 0 257 | 258 | 259 | if __name__ == '__main__': 260 | _parser = argparse.ArgumentParser() 261 | # cuda device 262 | _parser.add_argument('-g', '--gpu', default='0', help='choose which GPU to use') 263 | # path 264 | _parser.add_argument('--config_file_path', help='path to json config', required=True) 265 | _parser.add_argument('--model_path', type=str, default='./models/', help='path for saving trained models') 266 | # widget 267 | _parser.add_argument('--task', type=str, default='text', help='task type(only support text now).') 268 | _parser.add_argument('--version', type=int, choices=[1, 2], help='dataset version.', required=True) 269 | _parser.add_argument('--context_size', type=int, help='context size.', required=True) 270 | _parser.add_argument('--batch_size', type=int, help='batch size.', required=True) 271 | _args = _parser.parse_args() 272 | os.environ['CUDA_VISIBLE_DEVICES'] = _args.gpu 273 | exit(main(_args)) 274 | -------------------------------------------------------------------------------- /translate.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | @Author: winton 4 | @File: test.py 5 | @Time: 2019/8/8 6:54 PM 6 | @Description: 7 | """ 8 | import argparse 9 | import json 10 | import logging 11 | import os 12 | import pickle 13 | 14 | import torch 15 | from torch.utils.data import DataLoader 16 | from tqdm import tqdm 17 | 18 | from widget.data import DataSource 19 | from widget.model import Model 20 | 21 | 22 | def index2word(seq, vocab, end_id): 23 | words = [] 24 | for word_id in seq: 25 | if word_id == end_id: 26 | break 27 | word = vocab[word_id] 28 | words.append(word) 29 | return ' '.join(words) 30 | 31 | 32 | def main(args): 33 | torch.set_default_tensor_type(torch.FloatTensor) 34 | # Load config 35 | config = json.load(open(args.config_file_path, 'r')) 36 | # load save dict 37 | save_dict = torch.load(os.path.join(args.model_path, args.checkpoint_file), map_location=f'cuda:0') 38 | task = save_dict['task'] 39 | # Set logger (console and file) 40 | logger_format = logging.Formatter('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s') 41 | logger = logging.getLogger('saha') 42 | sh = logging.StreamHandler() 43 | sh.setFormatter(logger_format) 44 | sh.setLevel(logging.INFO) 45 | logger.addHandler(sh) 46 | fh = logging.FileHandler(os.path.join(args.model_path, f'test_{task}.log'), 'a', encoding='utf-8') 47 | fh.setLevel(logging.INFO) 48 | fh.setFormatter(logger_format) 49 | logger.addHandler(fh) 50 | logger.setLevel(logging.INFO) 51 | logger.info(json.dumps(config, indent=2)) 52 | # Set device and seed 53 | device = torch.device(f'cuda:0' if torch.cuda.is_available() else 'cpu') 54 | # load data 55 | logger.info('reading vocab pkl...') 56 | vocab = pickle.load(open(config['data']['vocab_file'], 'rb')) 57 | test_dataset = DataSource(args.config_file_path, task, 'test', 58 | args.version, args.context_size) 59 | test_loader = DataLoader(test_dataset, 60 | batch_size=config['training']['valid_batch_size'], 61 | shuffle=False, 62 | num_workers=4) 63 | vocab_size = len(vocab) 64 | i2w = {v: k for (k, v) in vocab.items()} 65 | knowledge_data = test_dataset.encode_knowledge_pair(config['data']['knowledge_path']).to(device) 66 | # Define widget 67 | model = Model(task=task, 68 | vocab_size=vocab_size, 69 | max_text_len=config['data']['text_length'], 70 | image_size=config['widget']['image_size'], 71 | embedding_size=config['widget']['word_embedding_size'], 72 | text_n_layers=config['widget']['text_n_layers'], 73 | text_n_head=config['widget']['text_n_head'], 74 | text_d_k=config['widget']['text_d_k'], 75 | text_d_v=config['widget']['text_d_v'], 76 | text_d_model=config['widget']['text_d_model'], 77 | text_d_inner=config['widget']['text_d_inner'], 78 | co_n_layers=config['widget']['co_n_layers'], 79 | co_n_head=config['widget']['co_n_head'], 80 | co_d_k=config['widget']['co_d_k'], 81 | co_d_v=config['widget']['co_d_v'], 82 | co_d_model=config['widget']['co_d_model'], 83 | co_d_inner=config['widget']['co_d_inner'], 84 | de_n_layers=config['widget']['de_n_layers'], 85 | de_n_head=config['widget']['de_n_head'], 86 | de_d_k=config['widget']['de_d_k'], 87 | de_d_v=config['widget']['de_d_v'], 88 | de_d_model=config['widget']['de_d_model'], 89 | de_d_inner=config['widget']['de_d_inner'], 90 | dropout_rate=config['widget']['dropout_rate'], 91 | padding_id=config['data']['pad_id'], 92 | tgt_emb_prj_weight_sharing=True, 93 | use_knowledge=config['model']['use_knowledge'], 94 | knowledge_data=knowledge_data 95 | ) 96 | model.load_state_dict(save_dict['widget']) 97 | # widget = nn.DataParallel(widget) 98 | model.to(device) 99 | model.eval() 100 | logger.info(model) 101 | true_sequences = [] 102 | pred_sequences = [] 103 | prog = tqdm(total=len(test_dataset) // config['training']['valid_batch_size']) 104 | with torch.no_grad(): 105 | if task == 'text': 106 | for batch_data in test_loader: 107 | text_input, text_pos, text_turn, text_speaker, \ 108 | image_input, image_seq, image_turn, image_speaker, \ 109 | query_input, query_pos = map(lambda x: x.to(device), batch_data) 110 | for sequence in query_input.cpu().numpy(): 111 | true_sequences.append(index2word(sequence, i2w, config['data']['end_id'])) 112 | context_embs, context_seq = model.context_encode((text_input, text_pos, text_turn, text_speaker, 113 | image_input, image_seq, image_turn, image_speaker)) 114 | pred_text = query_input[:, :1] 115 | for len_dec_seq in range(1, config['data']['text_length'] + 1): 116 | if config['model']['use_knowledge']: 117 | dec_output_prob = model.knowledge_text_decode((pred_text, query_pos[:, :len_dec_seq]), 118 | context_embs, context_seq) 119 | else: 120 | dec_output_prob = model.text_decode((pred_text, query_pos[:, :len_dec_seq]), 121 | context_embs, context_seq) 122 | dec_output_prob = dec_output_prob.view(-1, len_dec_seq, vocab_size) 123 | _, max_text = torch.max(torch.softmax(dec_output_prob, dim=2), dim=2) 124 | current_text = max_text[:, -1].view(-1, 1) 125 | pred_text = torch.cat((pred_text, current_text), dim=1) 126 | for sequence in pred_text.cpu().numpy(): 127 | pred_sequences.append(index2word(sequence, i2w, config['data']['end_id'])) 128 | prog.update() 129 | prog.close() 130 | with open(os.path.join(args.model_path, args.out_file), 'w') as f: 131 | for item in pred_sequences: 132 | f.write(f"{item}\n") 133 | if not os.path.isfile(os.path.join(args.model_path, 'gt_text.txt')): 134 | with open(os.path.join(args.model_path, 'gt_text.txt'), 'w') as f: 135 | for item in true_sequences: 136 | f.write(f"{item}\n") 137 | 138 | 139 | if __name__ == '__main__': 140 | _parser = argparse.ArgumentParser() 141 | # cuda device 142 | _parser.add_argument('-g', '--gpu', default='0', help='choose which GPU to use') 143 | # path 144 | _parser.add_argument('--config_file_path', help='path to json config', required=True) 145 | _parser.add_argument('--model_path', type=str, default='./models/', help='path for trained models') 146 | _parser.add_argument('--checkpoint_file', help='checkpoint file', required=True) 147 | _parser.add_argument('--out_file', type=str, help='path for saving result', required=True) 148 | _args = _parser.parse_args() 149 | os.environ['CUDA_VISIBLE_DEVICES'] = _args.gpu 150 | exit(main(_args)) 151 | -------------------------------------------------------------------------------- /widget/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | @Author: winton 4 | @File: __init__.py.py 5 | @Time: 2019/8/30 11:31 AM 6 | @Description: 7 | """ 8 | from . import data 9 | from . import model 10 | from . import module 11 | from . import utils 12 | -------------------------------------------------------------------------------- /widget/data.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | @Author: winton 4 | @File: data.py 5 | @Time: 2021/4/9 3:59 PM 6 | @Description: 7 | """ 8 | import json 9 | import os 10 | from os.path import isfile 11 | from collections import Counter 12 | 13 | import pickle as pkl 14 | 15 | import numpy as np 16 | import torch 17 | from nltk import word_tokenize 18 | from torch.utils.data import Dataset 19 | from annoy import AnnoyIndex 20 | from tqdm import tqdm 21 | 22 | from widget.utils import save_to_pkl 23 | 24 | PAD_ID = 0 25 | UNK_ID = 1 26 | START_ID = 2 27 | END_ID = 3 28 | 29 | 30 | def pad_text(vocab, length, text): 31 | text = list(map(lambda w: vocab.get(w.lower(), UNK_ID), word_tokenize(text))) 32 | if len(text) > length - 1: 33 | text = text[:length - 1] 34 | text.append(END_ID) 35 | text_length = length 36 | else: 37 | text_length = len(text) + 1 38 | text.append(END_ID) 39 | text.extend([PAD_ID for _ in range(length - len(text))]) 40 | return text, text_length 41 | 42 | 43 | def pad_img(length, imgs): 44 | if len(imgs) > length: 45 | imgs = imgs[:length] 46 | imgs_length = length 47 | else: 48 | imgs_length = len(imgs) 49 | imgs.extend(['' for _ in range(length - len(imgs))]) 50 | return imgs, imgs_length 51 | 52 | 53 | def save_to_txt(texts, file): 54 | with open(file, 'w') as f: 55 | for text in texts: 56 | f.write(text + '\n') 57 | 58 | 59 | class DataSource(Dataset): 60 | def __init__(self, config_path, task, mode, version, context_size): 61 | assert task in ['text', 'image'] 62 | assert mode in ['train', 'valid', 'test'] 63 | # Load config 64 | self.config = json.load(open(config_path, 'r')) 65 | self.task = task 66 | self.mode = mode 67 | self.context_size = context_size 68 | self.dialogs = None 69 | self.source_file = os.path.join(self.config['data']['source_path'], f'v{version}', f'{mode}.pkl') 70 | work_path = os.path.join(self.config['data']['work_path'], f'v{version}_c{context_size}') 71 | if not os.path.exists(work_path): 72 | os.makedirs(work_path) 73 | item_file = os.path.join(work_path, f'{task}_{mode}_item.pkl') 74 | gt_file = os.path.join(work_path, f'gt_text.txt') 75 | type_file = os.path.join(work_path, f'dialog_type.txt') 76 | self.vocab_file = os.path.join(work_path, f'vocab.pkl') 77 | if not isfile(self.vocab_file) or not isfile(item_file): 78 | print('loading dialog pkl...') 79 | self.dialogs = pkl.load(open(self.source_file, 'rb')) 80 | self.image_pos = ['1st', '2nd', '3rd', '4th', '5th', '6th', 81 | '7th', '8th', '9th', '10th', '11th', '12th'][:self.config['data']['image_length']] 82 | self.vocab = self.create_or_load_vocab() 83 | if 'annoy_file' in self.config['data']: 84 | # use pre-train VGG image vector 85 | self.annoy = AnnoyIndex(self.config['model']['image_size'], metric='euclidean') 86 | self.annoy.load(self.config['data']['annoy_file']) 87 | self.annoy_index = pkl.load(open(self.config['data']['annoy_pkl'], 'rb')) 88 | if not isfile(item_file): 89 | self.items, gt_texts, dialog_types = self.get_items_from_dialogs() 90 | save_to_pkl(self.items, item_file) 91 | if task == 'text' and mode == 'test': 92 | save_to_txt(gt_texts, gt_file) 93 | save_to_txt(dialog_types, type_file) 94 | else: 95 | print(f'loading {task} {mode} item pkl...') 96 | self.items = pkl.load(open(item_file, 'rb')) 97 | print(f'{task} {mode} item pkl read complete') 98 | 99 | def create_or_load_vocab(self): 100 | if not isfile(self.vocab_file): 101 | if self.mode == 'train': 102 | # get vocab 103 | print('get vocab...') 104 | word_freq = Counter() 105 | for dialog in self.dialogs: 106 | for utterance in dialog: 107 | # (speaker, text, images, false_images, utter_type) 108 | word_freq.update([word for word in word_tokenize(utterance[1])]) 109 | words = [word for word, freq in word_freq.most_common() 110 | if freq >= self.config['data']['context_text_cutoff']] 111 | vocab = {word: wid for wid, word in enumerate(words, 4)} 112 | vocab[''] = PAD_ID 113 | vocab[''] = UNK_ID 114 | vocab[''] = START_ID 115 | vocab[''] = END_ID 116 | # update speaker, turn 117 | assert '@user' not in vocab, '@user already exist!' 118 | vocab['@user'] = len(vocab) 119 | assert '@system' not in vocab, '@user already exist!' 120 | vocab['@system'] = len(vocab) 121 | for i in range(self.context_size): 122 | assert f'#{i}' not in vocab, f'#{i} already exist!' 123 | vocab[f'#{i}'] = len(vocab) 124 | for pos_i in self.image_pos: 125 | if pos_i not in vocab: 126 | print(f'{pos_i} not in vocabulary') 127 | vocab[pos_i] = len(vocab) 128 | save_to_pkl(vocab, self.vocab_file) 129 | else: 130 | raise Exception('Vocabulary is not exist!') 131 | else: 132 | print('loading vocab pkl...') 133 | vocab = pkl.load(open(self.vocab_file, 'rb')) 134 | print('vocab pkl load complete') 135 | return vocab 136 | 137 | def get_items_from_dialogs(self): 138 | empty_text = [END_ID] + [PAD_ID] * (self.config['data']['text_length'] - 1) 139 | prog = tqdm(total=len(self.dialogs), desc='get items from dialogs') 140 | items = [] 141 | gt_texts = [] 142 | dialog_types = [] 143 | for dialog in self.dialogs: 144 | history = [(empty_text, 1, [''] * self.config['data']['image_length'], 0, '', '')] * self.context_size 145 | for utter in dialog: 146 | # (speaker, text, images, false_images, utter_type) 147 | text, text_length = pad_text(self.vocab, self.config['data']['text_length'], utter[1]) 148 | img, img_length = pad_img(self.config['data']['image_length'], utter[2]) 149 | if utter[0] == 'user': 150 | history.append((text, text_length, img, img_length, '@user', utter[4])) 151 | else: 152 | context = history[-self.context_size:] 153 | if self.task == 'text': 154 | if len(utter[1]) > 0: 155 | items.append((context, (text, text_length))) 156 | gt_texts.append(utter[1]) 157 | dialog_types.append(history[-1][5]) 158 | else: 159 | # true_images = self.get_img_urls(utter.images) 160 | # false_images = self.get_img_urls(utter.false_images) 161 | # # ensure images number enough 162 | # if len(true_images) < 1 or len(false_images) < 1: 163 | # continue 164 | # true_images, true_images_num = pad_img(self.config['data']['num_pos_images'], true_images) 165 | # false_images, false_images_num = pad_img(self.config['data']['num_neg_images'], false_images) 166 | # self.items.append((context, (true_images, true_images_num, false_images, false_images_num))) 167 | pass 168 | history.append((text, text_length, img, img_length, '@system', utter[4])) 169 | prog.update() 170 | prog.close() 171 | return items, gt_texts, dialog_types 172 | 173 | def __getitem__(self, index): 174 | item = self.items[index % len(self.items)] 175 | # (text, text_length, img, img_length, speaker, dialog_type) 176 | texts, text_lengths, imgs, img_lengths, speakers, _ = map(list, zip(*item[0])) 177 | text_input = [] 178 | text_pos = [] 179 | text_turn = [] 180 | text_speaker = [] 181 | for turn, (text, length, speaker) in enumerate(zip(texts, text_lengths, speakers)): 182 | text_input.extend(text) 183 | text_pos.extend(list(range(1, length + 1)) + [0] * (self.config['data']['text_length'] - length)) 184 | text_turn.extend([self.vocab[f'#{turn}']] * length + [0] * (self.config['data']['text_length'] - length)) 185 | text_speaker.extend([self.vocab[speaker]] * length + [0] * (self.config['data']['text_length'] - length)) 186 | image_input = [] 187 | image_pos = [] 188 | image_turn = [] 189 | image_speaker = [] 190 | for turn, (img, img_length, speaker) in enumerate(zip(imgs, img_lengths, speakers)): 191 | image_input.extend(self.get_imgs(img)) 192 | image_pos.extend([self.vocab[x] for x in self.image_pos[:img_length]] + 193 | [0] * (self.config['data']['image_length'] - img_length)) 194 | image_turn.extend([self.vocab[f'#{turn}']] * img_length + 195 | [0] * (self.config['data']['image_length'] - img_length)) 196 | image_speaker.extend([self.vocab[speaker]] * img_length + 197 | [0] * (self.config['data']['image_length'] - img_length)) 198 | query_input, query_len = item[1] 199 | query_pos = list(range(1, query_len + 1)) + [0] * (self.config['data']['text_length'] - query_len) 200 | return np.array(text_input), np.array(text_pos), np.array(text_turn), np.array(text_speaker), \ 201 | np.array(image_input, dtype=np.float32), np.array(image_pos), np.array(image_turn), np.array( 202 | image_speaker), np.array(query_input), np.array(query_pos) 203 | 204 | def __len__(self): 205 | return len(self.items) 206 | 207 | def get_img_urls(self, urls): 208 | ret = [] 209 | for url in urls: 210 | if url in self.annoy_index: 211 | ret.append(url) 212 | return ret 213 | 214 | def get_imgs(self, urls): 215 | ret = [] 216 | for url in urls: 217 | try: 218 | vector = self.annoy.get_item_vector(self.annoy_index[url]) 219 | except: 220 | vector = [0.] * self.config['model']['image_size'] 221 | ret.append(vector) 222 | return ret 223 | 224 | def encode_knowledge_pair(self, path): 225 | if os.path.exists(path): 226 | with open(path, 'r', encoding='utf8') as file: 227 | knowledge_pairs = json.load(file) 228 | result = [] 229 | for knowledge_pair in knowledge_pairs: 230 | result.append([ 231 | self.vocab.get(knowledge_pair[0], UNK_ID), 232 | self.vocab.get(knowledge_pair[1], UNK_ID) 233 | ]) 234 | return torch.tensor(result) 235 | else: 236 | return None 237 | 238 | -------------------------------------------------------------------------------- /widget/model.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | @Author: winton 4 | @File: widget.py 5 | @Time: 2019/8/6 9:13 AM 6 | @Description: 7 | """ 8 | import torch 9 | from torch import nn 10 | 11 | from .module import Emb, Encoder, Decoder, KnowledgeDecoder 12 | 13 | 14 | def get_non_pad_mask(seq, padding_id): 15 | assert seq.dim() == 2 16 | return seq.ne(padding_id).type(torch.float).unsqueeze(-1) 17 | 18 | 19 | def get_attn_key_pad_mask(seq_k, seq_q, padding_id): 20 | """ For masking out the padding part of key sequence. """ 21 | 22 | # Expand to fit the shape of key query attention matrix. 23 | len_q = seq_q.size(1) 24 | padding_mask = seq_k.eq(padding_id) 25 | padding_mask = padding_mask.unsqueeze(1).expand(-1, len_q, -1) # b x lq x lk 26 | 27 | return padding_mask 28 | 29 | 30 | def get_subsequent_mask(seq): 31 | """ For masking out the subsequent info. """ 32 | 33 | sz_b, len_s = seq.size() 34 | subsequent_mask = torch.triu( 35 | torch.ones((len_s, len_s), device=seq.device, dtype=torch.uint8), diagonal=1) 36 | subsequent_mask = subsequent_mask.unsqueeze(0).expand(sz_b, -1, -1) # b x ls x ls 37 | 38 | return subsequent_mask 39 | 40 | 41 | class Model(nn.Module): 42 | def __init__(self, 43 | task, 44 | vocab_size, 45 | max_text_len, 46 | image_size, 47 | embedding_size, 48 | text_n_layers, text_n_head, text_d_k, text_d_v, text_d_model, text_d_inner, 49 | co_n_layers, co_n_head, co_d_k, co_d_v, co_d_model, co_d_inner, 50 | de_n_layers, de_n_head, de_d_k, de_d_v, de_d_model, de_d_inner, 51 | dropout_rate, 52 | padding_id, 53 | tgt_emb_prj_weight_sharing=True, 54 | use_knowledge=False, 55 | knowledge_data=None): 56 | super().__init__() 57 | self.task = task 58 | self.vocab_size = vocab_size 59 | self.padding_id = padding_id 60 | self.use_knowledge = use_knowledge 61 | self.emb = Emb(max_text_len, image_size, vocab_size, embedding_size, padding_id) 62 | self.text_encoder = Encoder(text_n_layers, text_n_head, text_d_k, text_d_v, 63 | text_d_model, text_d_inner, dropout_rate) 64 | self.text_co_encoder = Encoder(co_n_layers, co_n_head, co_d_k, co_d_v, 65 | co_d_model, co_d_inner, dropout_rate) 66 | self.image_co_encoder = Encoder(co_n_layers, co_n_head, co_d_k, co_d_v, 67 | co_d_model, co_d_inner, dropout_rate) 68 | if self.task == 'text': 69 | self.decoder = Decoder(de_n_layers, de_n_head, de_d_k, de_d_v, 70 | de_d_model, de_d_inner, dropout_rate) 71 | self.tgt_word_prj_1 = nn.Linear(de_d_model, vocab_size, bias=False) 72 | if tgt_emb_prj_weight_sharing: 73 | # Share the weight matrix between target word embedding & the final logit dense layer 74 | self.tgt_word_prj_1.weight = self.emb.tgt_token_emb.weight 75 | self.x_logit_scale = (de_d_model ** -0.5) 76 | else: 77 | nn.init.xavier_normal_(self.tgt_word_prj_1.weight) 78 | self.x_logit_scale = 1. 79 | if use_knowledge: 80 | self.knowledge_data = knowledge_data 81 | self.knowledge_linear = nn.Linear(2 * embedding_size, embedding_size) 82 | self.knowledge_decoder = KnowledgeDecoder(de_n_layers, de_n_head, de_d_k, de_d_v, 83 | de_d_model, de_d_inner, dropout_rate) 84 | self.tgt_word_prj_2 = nn.Linear(de_d_model, vocab_size, bias=False) 85 | if tgt_emb_prj_weight_sharing: 86 | # Share the weight matrix between target word embedding & the final logit dense layer 87 | self.tgt_word_prj_2.weight = self.emb.tgt_token_emb.weight 88 | else: 89 | nn.init.xavier_normal_(self.tgt_word_prj_2.weight) 90 | 91 | def forward(self, context, query): 92 | if self.task == 'text': 93 | context_embs, context_seq = self.context_encode(context) 94 | output_1 = self.text_decode(query, context_embs, context_seq) 95 | seq_logit_1 = self.tgt_word_prj_1(output_1) * self.x_logit_scale 96 | seq_logit_1 = seq_logit_1.view(-1, seq_logit_1.size(2)) 97 | if self.use_knowledge: 98 | output_2 = self.knowledge_text_decode(query, context_embs, context_seq) 99 | seq_logit_2 = self.tgt_word_prj_2(output_2) * self.x_logit_scale 100 | seq_logit_2 = seq_logit_2.view(-1, seq_logit_2.size(2)) 101 | return seq_logit_1, seq_logit_2 102 | else: 103 | return seq_logit_1 104 | 105 | def context_encode(self, context): 106 | text_input, text_pos, text_turn, text_speaker, image_input, image_pos, image_turn, image_speaker = context 107 | text_embs, image_embs = self.emb(text_input, text_pos, text_turn, text_speaker, 108 | image_input, image_pos, image_turn, image_speaker) 109 | # text_embs = (bs, text_len, embedding_size) 110 | # image_embs = (bs, image_len, embedding_size) 111 | # -- text transformer encoder 112 | attn_mask = get_attn_key_pad_mask(seq_k=text_input, seq_q=text_input, padding_id=self.padding_id) 113 | non_pad_mask = get_non_pad_mask(text_input, self.padding_id) 114 | text_embs, = self.text_encoder(text_embs, text_embs, non_pad_mask, attn_mask) # (bs, text_len, embedding_size) 115 | # -- co-attention encoder 116 | attn_mask = get_attn_key_pad_mask(seq_k=image_pos, seq_q=text_input, padding_id=self.padding_id) 117 | non_pad_mask = get_non_pad_mask(text_input, self.padding_id) 118 | text_co_embs, = self.text_co_encoder(image_embs, text_embs, non_pad_mask, attn_mask) 119 | # text_co_embs = (bs, text_len, embedding_size) 120 | attn_mask = get_attn_key_pad_mask(seq_k=text_input, seq_q=image_pos, padding_id=self.padding_id) 121 | non_pad_mask = get_non_pad_mask(image_pos, self.padding_id) 122 | image_co_embs, = self.image_co_encoder(text_embs, image_embs, non_pad_mask, attn_mask) 123 | # image_co_embs = (bs, image_len, embedding_size) 124 | context_embs = torch.cat((text_co_embs, image_co_embs), dim=1) 125 | # context_embs = (bs, text_len + image_len, embedding_size) 126 | context_seq = torch.cat((text_input, image_pos), dim=1) 127 | return context_embs, context_seq 128 | 129 | def text_decode(self, query, context_embs, context_seq): 130 | query_input, query_pos = query 131 | query_embs = self.emb.tgt_token_emb(query_input) + self.emb.position_enc(query_pos) 132 | # query_embs = (bs, text_len, embedding_size) 133 | # -- query transformer decoder 134 | non_pad_mask = get_non_pad_mask(query_input, self.padding_id) 135 | slf_attn_mask_subseq = get_subsequent_mask(query_input) 136 | slf_attn_mask_keypad = get_attn_key_pad_mask(seq_k=query_input, seq_q=query_input, 137 | padding_id=self.padding_id) 138 | slf_attn_mask = (slf_attn_mask_keypad + slf_attn_mask_subseq).gt(0) 139 | dec_enc_attn_mask = get_attn_key_pad_mask(seq_k=context_seq, seq_q=query_input, padding_id=self.padding_id) 140 | dec_output, = self.decoder(context_embs, query_embs, non_pad_mask, slf_attn_mask, dec_enc_attn_mask) 141 | # dec_output = (bs, query_len, embedding_size) 142 | # seq_logit = self.tgt_word_prj_1(dec_output) * self.x_logit_scale 143 | # seq_logit = (bs, query_len, vocab_size) 144 | return dec_output 145 | 146 | def knowledge_text_decode(self, query, context_embs, context_seq): 147 | query_input, query_pos = query 148 | query_embs = self.emb.tgt_token_emb(query_input) + self.emb.position_enc(query_pos) 149 | knowledge = self.emb.tgt_token_emb(self.knowledge_data) 150 | knowledge = self.knowledge_linear(torch.reshape(knowledge, [-1, 2 * knowledge.shape[2]])) 151 | knowledge = knowledge.unsqueeze(0).expand(context_embs.shape[0], knowledge.shape[0], knowledge.shape[1]) 152 | # query_embs = (bs, text_len, embedding_size) 153 | # -- query transformer decoder 154 | non_pad_mask = get_non_pad_mask(query_input, self.padding_id) 155 | slf_attn_mask_subseq = get_subsequent_mask(query_input) 156 | slf_attn_mask_keypad = get_attn_key_pad_mask(seq_k=query_input, seq_q=query_input, 157 | padding_id=self.padding_id) 158 | slf_attn_mask = (slf_attn_mask_keypad + slf_attn_mask_subseq).gt(0) 159 | dec_enc_attn_mask = get_attn_key_pad_mask(seq_k=context_seq, seq_q=query_input, padding_id=self.padding_id) 160 | dec_output, = self.knowledge_decoder(context_embs, query_embs, knowledge, 161 | non_pad_mask, slf_attn_mask, dec_enc_attn_mask) 162 | # dec_output = (bs, query_len, embedding_size) 163 | # seq_logit = self.tgt_word_prj_2(dec_output) * self.x_logit_scale 164 | # seq_logit = (bs, query_len, vocab_size) 165 | return dec_output 166 | 167 | 168 | if __name__ == '__main__': 169 | pass 170 | -------------------------------------------------------------------------------- /widget/module.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | @Author: winton 4 | @File: module.py 5 | @Time: 2021/4/9 4:21 PM 6 | @Description: 7 | """ 8 | import torch 9 | from torch import nn 10 | import numpy as np 11 | 12 | 13 | def get_position_encoding_table(n_position, d_hid, padding_idx=None): 14 | """ Sinusoid position encoding table""" 15 | 16 | def cal_angle(position, hid_idx): 17 | return position / np.power(10000, 2 * (hid_idx // 2) / d_hid) 18 | 19 | def get_position_angle_vec(position): 20 | return [cal_angle(position, hid_j) for hid_j in range(d_hid)] 21 | 22 | sinusoid_table = np.array([get_position_angle_vec(pos_i) for pos_i in range(n_position)]) 23 | 24 | sinusoid_table[:, 0::2] = np.sin(sinusoid_table[:, 0::2]) # dim 2i 25 | sinusoid_table[:, 1::2] = np.cos(sinusoid_table[:, 1::2]) # dim 2i+1 26 | 27 | if padding_idx is not None: 28 | # zero vector for padding dimension 29 | sinusoid_table[padding_idx] = 0. 30 | 31 | return torch.tensor(sinusoid_table, dtype=torch.float32) 32 | 33 | 34 | class Emb(nn.Module): 35 | def __init__(self, 36 | max_text_len, 37 | image_in_size, 38 | vocab_size, 39 | embedding_size, 40 | padding_id, 41 | emb_src_tgt_weight_sharing=True): 42 | super().__init__() 43 | self.position_enc = nn.Embedding.from_pretrained( 44 | get_position_encoding_table(max_text_len + 1, embedding_size, padding_idx=0), 45 | freeze=True) 46 | self.src_token_emb = nn.Embedding(vocab_size, embedding_size, padding_idx=padding_id) 47 | if emb_src_tgt_weight_sharing: 48 | self.tgt_token_emb = self.src_token_emb 49 | else: 50 | self.tgt_token_emb = nn.Embedding(vocab_size, embedding_size, padding_idx=padding_id) 51 | self.image_layer = nn.Linear(image_in_size, embedding_size, bias=False) 52 | 53 | def forward(self, src_input, src_pos, src_turn, src_speaker, 54 | image_input, image_pos, image_turn, image_speaker): 55 | # text_input, text_pos, text_turn, text_speaker, image_turn, image_speaker = (bs, text_len) 56 | # image_input = (bs, image_len, image_in_size) 57 | text_outputs = self.src_token_emb(src_input) + self.src_token_emb(src_turn) + \ 58 | self.src_token_emb(src_speaker) + self.position_enc(src_pos) 59 | # (bs, text_len, embedding_size) 60 | image_outputs = self.image_layer(image_input) + self.src_token_emb(image_turn) + \ 61 | self.src_token_emb(image_speaker) + self.src_token_emb(image_pos) 62 | # (bs, image_len, embedding_size) 63 | return text_outputs, image_outputs 64 | 65 | 66 | class Encoder(nn.Module): 67 | """ A encoder widget with attention mechanism. """ 68 | 69 | def __init__( 70 | self, 71 | n_layers, n_head, d_k, d_v, 72 | d_model, d_inner, dropout=0.1): 73 | super().__init__() 74 | self.layer_stack = nn.ModuleList([ 75 | SingleEncoderLayer(d_model, d_inner, n_head, d_k, d_v, dropout=dropout) 76 | for _ in range(n_layers)]) 77 | 78 | def forward(self, src_seq, tgt_seq, non_pad_mask, attn_mask, return_attns=False): 79 | enc_slf_attn_list = [] 80 | enc_output = tgt_seq 81 | for enc_layer in self.layer_stack: 82 | enc_output, enc_slf_attn = enc_layer( 83 | enc_output, 84 | src_seq, 85 | non_pad_mask=non_pad_mask, 86 | attn_mask=attn_mask) 87 | if return_attns: 88 | enc_slf_attn_list += [enc_slf_attn] 89 | if return_attns: 90 | return enc_output, enc_slf_attn_list 91 | return enc_output, 92 | 93 | 94 | class Decoder(nn.Module): 95 | """ A decoder widget with self attention mechanism. """ 96 | 97 | def __init__( 98 | self, 99 | n_layers, n_head, d_k, d_v, 100 | d_model, d_inner, dropout=0.1): 101 | 102 | super().__init__() 103 | self.layer_stack = nn.ModuleList([ 104 | SingleDecoderLayer(d_model, d_inner, n_head, d_k, d_v, dropout=dropout) 105 | for _ in range(n_layers)]) 106 | 107 | def forward(self, src_seq, tgt_seq, non_pad_mask, slf_attn_mask, dec_enc_attn_mask, return_attns=False): 108 | dec_slf_attn_list, dec_enc_attn_list = [], [] 109 | dec_output = tgt_seq 110 | for dec_layer in self.layer_stack: 111 | dec_output, dec_slf_attn, dec_enc_attn = dec_layer( 112 | dec_output, src_seq, 113 | non_pad_mask=non_pad_mask, 114 | slf_attn_mask=slf_attn_mask, 115 | dec_enc_attn_mask=dec_enc_attn_mask) 116 | 117 | if return_attns: 118 | dec_slf_attn_list += [dec_slf_attn] 119 | dec_enc_attn_list += [dec_enc_attn] 120 | 121 | if return_attns: 122 | return dec_output, dec_slf_attn_list, dec_enc_attn_list 123 | return dec_output, 124 | 125 | 126 | class KnowledgeDecoder(nn.Module): 127 | """ A decoder widget with domain knowledge. """ 128 | 129 | def __init__( 130 | self, 131 | n_layers, n_head, d_k, d_v, 132 | d_model, d_inner, dropout=0.1): 133 | 134 | super().__init__() 135 | self.layer_stack = nn.ModuleList([ 136 | KnowledgeDecoderLayer(d_model, d_inner, n_head, d_k, d_v, dropout=dropout) 137 | for _ in range(n_layers)]) 138 | 139 | def forward(self, src_seq, tgt_seq, knowledge, non_pad_mask, slf_attn_mask, dec_enc_attn_mask, return_attns=False): 140 | dec_slf_attn_list, dec_enc_attn_list = [], [] 141 | dec_output = tgt_seq 142 | for dec_layer in self.layer_stack: 143 | dec_output, dec_slf_attn, dec_enc_attn = dec_layer( 144 | dec_output, src_seq, knowledge, 145 | non_pad_mask=non_pad_mask, 146 | slf_attn_mask=slf_attn_mask, 147 | dec_enc_attn_mask=dec_enc_attn_mask) 148 | 149 | if return_attns: 150 | dec_slf_attn_list += [dec_slf_attn] 151 | dec_enc_attn_list += [dec_enc_attn] 152 | 153 | if return_attns: 154 | return dec_output, dec_slf_attn_list, dec_enc_attn_list 155 | return dec_output, 156 | 157 | 158 | class SingleEncoderLayer(nn.Module): 159 | """ Compose with two layers """ 160 | 161 | def __init__(self, d_model, d_inner, n_head, d_k, d_v, dropout=0.1): 162 | super(SingleEncoderLayer, self).__init__() 163 | self.multi_attn = MultiHeadAttention( 164 | n_head, d_model, d_k, d_v, dropout=dropout) 165 | self.pos_ffn = PositionWiseFeedForward(d_model, d_inner, dropout=dropout) 166 | 167 | def forward(self, query, kv, non_pad_mask=None, attn_mask=None): 168 | enc_output, enc_slf_attn = self.multi_attn(query, kv, kv, mask=attn_mask) 169 | enc_output *= non_pad_mask 170 | 171 | enc_output = self.pos_ffn(enc_output) 172 | enc_output *= non_pad_mask 173 | return enc_output, enc_slf_attn 174 | 175 | 176 | class SingleDecoderLayer(nn.Module): 177 | """ Compose with three layers """ 178 | 179 | def __init__(self, d_model, d_inner, n_head, d_k, d_v, dropout=0.1): 180 | super(SingleDecoderLayer, self).__init__() 181 | self.slf_attn = MultiHeadAttention(n_head, d_model, d_k, d_v, dropout=dropout) 182 | self.enc_attn = MultiHeadAttention(n_head, d_model, d_k, d_v, dropout=dropout) 183 | self.pos_ffn = PositionWiseFeedForward(d_model, d_inner, dropout=dropout) 184 | 185 | def forward(self, dec_input, enc_output, non_pad_mask=None, slf_attn_mask=None, dec_enc_attn_mask=None): 186 | dec_output, dec_slf_attn = self.slf_attn( 187 | dec_input, dec_input, dec_input, mask=slf_attn_mask) 188 | dec_output *= non_pad_mask 189 | 190 | dec_output, dec_enc_attn = self.enc_attn( 191 | dec_output, enc_output, enc_output, mask=dec_enc_attn_mask) 192 | dec_output *= non_pad_mask 193 | 194 | dec_output = self.pos_ffn(dec_output) 195 | dec_output *= non_pad_mask 196 | 197 | return dec_output, dec_slf_attn, dec_enc_attn 198 | 199 | 200 | class KnowledgeDecoderLayer(nn.Module): 201 | def __init__(self, d_model, d_inner, n_head, d_k, d_v, dropout=0.1): 202 | super(KnowledgeDecoderLayer, self).__init__() 203 | self.slf_attn = MultiHeadAttention(n_head, d_model, d_k, d_v, dropout=dropout) 204 | self.knowledge_attn = MultiHeadAttention(n_head, d_model, d_k, d_v, dropout=dropout) 205 | self.enc_attn = MultiHeadAttention(n_head, d_model, d_k, d_v, dropout=dropout) 206 | self.pos_ffn = PositionWiseFeedForward(d_model, d_inner, dropout=dropout) 207 | 208 | def forward(self, dec_input, enc_output, knowledge, non_pad_mask=None, slf_attn_mask=None, dec_enc_attn_mask=None): 209 | dec_output, dec_slf_attn = self.slf_attn( 210 | dec_input, dec_input, dec_input, mask=slf_attn_mask) 211 | dec_output *= non_pad_mask 212 | 213 | dec_output, dec_knowledge_attn = self.knowledge_attn( 214 | dec_output, knowledge, knowledge) 215 | dec_output *= non_pad_mask 216 | 217 | dec_output, dec_enc_attn = self.enc_attn( 218 | dec_output, enc_output, enc_output, mask=dec_enc_attn_mask) 219 | dec_output *= non_pad_mask 220 | 221 | dec_output = self.pos_ffn(dec_output) 222 | dec_output *= non_pad_mask 223 | 224 | return dec_output, dec_slf_attn, dec_enc_attn 225 | 226 | 227 | class MultiHeadAttention(nn.Module): 228 | """ Multi-Head Attention module """ 229 | 230 | def __init__(self, n_head, d_model, d_k, d_v, dropout=0.1): 231 | super().__init__() 232 | self.n_head = n_head 233 | self.d_model = d_model 234 | self.d_k = d_k 235 | self.d_v = d_v 236 | self.w_qs = nn.Linear(d_model, n_head * d_k) 237 | self.w_ks = nn.Linear(d_model, n_head * d_k) 238 | self.w_vs = nn.Linear(d_model, n_head * d_v) 239 | 240 | self.attention = ScaledDotProductAttention(temperature=np.power(d_k, 0.5)) 241 | self.layer_norm = nn.LayerNorm(d_model) 242 | 243 | self.fc = nn.Linear(n_head * d_v, d_model) 244 | 245 | self.dropout = nn.Dropout(dropout) 246 | 247 | self.init_param() 248 | 249 | def init_param(self): 250 | nn.init.normal_(self.w_qs.weight, mean=0, std=np.sqrt(2.0 / (self.d_model + self.d_k))) 251 | nn.init.normal_(self.w_ks.weight, mean=0, std=np.sqrt(2.0 / (self.d_model + self.d_k))) 252 | nn.init.normal_(self.w_vs.weight, mean=0, std=np.sqrt(2.0 / (self.d_model + self.d_v))) 253 | nn.init.xavier_normal_(self.fc.weight) 254 | 255 | def forward(self, q, k, v, mask=None): 256 | d_k, d_v, n_head = self.d_k, self.d_v, self.n_head 257 | 258 | sz_b, len_q, _ = q.size() 259 | sz_b, len_k, _ = k.size() 260 | sz_b, len_v, _ = v.size() 261 | 262 | residual = q 263 | 264 | q = self.w_qs(q).view(sz_b, len_q, n_head, d_k) 265 | k = self.w_ks(k).view(sz_b, len_k, n_head, d_k) 266 | v = self.w_vs(v).view(sz_b, len_v, n_head, d_v) 267 | 268 | q = q.permute(2, 0, 1, 3).contiguous().view(-1, len_q, d_k) # (n*b) x lq x dk 269 | k = k.permute(2, 0, 1, 3).contiguous().view(-1, len_k, d_k) # (n*b) x lk x dk 270 | v = v.permute(2, 0, 1, 3).contiguous().view(-1, len_v, d_v) # (n*b) x lv x dv 271 | 272 | if mask is not None: 273 | mask = mask.repeat(n_head, 1, 1) # (n*b) x .. x .. 274 | 275 | output, attn = self.attention(q, k, v, mask=mask) 276 | 277 | output = output.view(n_head, sz_b, len_q, d_v) 278 | output = output.permute(1, 2, 0, 3).contiguous().view(sz_b, len_q, -1) # b x lq x (n*dv) 279 | 280 | output = self.dropout(self.fc(output)) 281 | output = self.layer_norm(output + residual) 282 | 283 | return output, attn 284 | 285 | 286 | class PositionWiseFeedForward(nn.Module): 287 | """ A two-feed-forward-layer module """ 288 | 289 | def __init__(self, d_in, d_hid, dropout=0.1): 290 | super().__init__() 291 | self.w_1 = nn.Conv1d(d_in, d_hid, 1) # position-wise 292 | self.w_2 = nn.Conv1d(d_hid, d_in, 1) # position-wise 293 | # self.w_1 = nn.Linear(d_in, d_hid) 294 | # self.w_2 = nn.Linear(d_hid, d_in) 295 | self.layer_norm = nn.LayerNorm(d_in) 296 | self.dropout = nn.Dropout(dropout) 297 | 298 | def forward(self, x): 299 | residual = x 300 | output = x.transpose(1, 2) 301 | output = self.w_2(torch.relu(self.w_1(output))) 302 | output = output.transpose(1, 2) 303 | output = self.dropout(output) 304 | output = self.layer_norm(output + residual) 305 | return output 306 | 307 | 308 | class ScaledDotProductAttention(nn.Module): 309 | """ Scaled Dot-Product Attention 310 | Attention(Q, K, V)=Softmax(\left(\frac{Q K^{T}}{\sqrt{d_{k}}}\right)V) 311 | """ 312 | 313 | def __init__(self, temperature, attn_dropout=0.1): 314 | super().__init__() 315 | self.temperature = temperature 316 | self.dropout = nn.Dropout(attn_dropout) 317 | self.softmax = nn.Softmax(dim=2) 318 | 319 | def forward(self, q, k, v, mask=None): 320 | attn = torch.bmm(q, k.transpose(1, 2)) 321 | attn = attn / self.temperature 322 | 323 | if mask is not None: 324 | # attn = attn.masked_fill(mask, -np.inf) 325 | attn = attn.masked_fill(mask, -1e10) 326 | 327 | attn = self.softmax(attn) 328 | attn = self.dropout(attn) 329 | output = torch.bmm(attn, v) 330 | 331 | return output, attn 332 | -------------------------------------------------------------------------------- /widget/utils.py: -------------------------------------------------------------------------------- 1 | # -*- encoding: utf-8 -*- 2 | """ 3 | @File : utils.py 4 | @Time : 2021/4/9 10:39 5 | @Author : Winton He 6 | @Email : hwd@mail.ustc.edu.cn 7 | @Software: PyCharm 8 | @Description: 9 | """ 10 | import pickle as pkl 11 | 12 | 13 | def save_to_pkl(obj, pkl_file): 14 | # save to pkl_file 15 | print('save to {}...'.format(pkl_file)) 16 | with open(pkl_file, 'wb') as f: 17 | pkl.dump(obj, f) 18 | -------------------------------------------------------------------------------- /widget/vis.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | @Author: winton 4 | @File: vis.py 5 | @Time: 2019/9/16 10:09 AM 6 | @Description: 7 | """ 8 | import argparse 9 | import re 10 | import matplotlib.pyplot as plt 11 | 12 | 13 | def main(args): 14 | train_pattern = re.compile(r'INFO: Epoch \[\d*\] Train Loss: (\d*\.\d*), ' 15 | r'Train Perplexity: (\d*\.\d*), Train Accuracy: (\d*\.\d*) %') 16 | valid_pattern = re.compile(r'INFO: Epoch \[\d*\] Valid Loss: (\d*\.\d*), ' 17 | r'Valid Perplexity: (\d*\.\d*), Valid Accuracy: (\d*\.\d*) %') 18 | train_loss = [] 19 | train_perplexity = [] 20 | train_accuracy = [] 21 | valid_loss = [] 22 | valid_perplexity = [] 23 | valid_accuracy = [] 24 | with open(args.file, 'r') as f: 25 | for line in f.readlines(): 26 | match = train_pattern.search(line.strip()) 27 | if match: 28 | groups = match.groups() 29 | train_loss.append(float(groups[0])) 30 | train_perplexity.append(float(groups[1])) 31 | train_accuracy.append(float(groups[2])) 32 | match = valid_pattern.search(line.strip()) 33 | if match: 34 | groups = match.groups() 35 | valid_loss.append(float(groups[0])) 36 | valid_perplexity.append(float(groups[1])) 37 | valid_accuracy.append(float(groups[2])) 38 | epoch = list(range(1, len(train_loss) + 1)) 39 | # print(epoch) 40 | # print(train_loss) 41 | # print(valid_loss) 42 | # exit() 43 | fig = plt.figure() 44 | plt.subplots_adjust(wspace=0.4, hspace=0.4) 45 | ax1 = fig.add_subplot(2, 2, 1) 46 | ax2 = fig.add_subplot(2, 2, 2) 47 | ax3 = fig.add_subplot(2, 2, 3) 48 | ax1.plot(epoch, train_loss, marker='o', c='red', label='train') 49 | ax1.plot(epoch, valid_loss, marker='o', c='blue', label='valid') 50 | ax1.set_title('Loss') 51 | ax1.set_xlabel('Epoch') 52 | ax1.set_ylabel('Loss') 53 | ax1.legend(loc='best') 54 | ax2.plot(epoch, train_perplexity, marker='o', c='red', label='train') 55 | ax2.plot(epoch, valid_perplexity, marker='o', c='blue', label='valid') 56 | ax2.set_title('Perplexity') 57 | ax2.set_xlabel('Epoch') 58 | ax2.set_ylabel('Perplexity') 59 | ax2.legend(loc='best') 60 | ax3.plot(epoch, train_accuracy, marker='o', c='red', label='train') 61 | ax3.plot(epoch, valid_accuracy, marker='o', c='blue', label='valid') 62 | ax3.set_title('Accuracy') 63 | ax3.set_xlabel('Epoch') 64 | ax3.set_ylabel('Accuracy') 65 | ax3.legend(loc='best') 66 | plt.show() 67 | 68 | 69 | if __name__ == '__main__': 70 | _parser = argparse.ArgumentParser() 71 | _parser.add_argument('--file', required=True) 72 | _args = _parser.parse_args() 73 | exit(main(_args)) 74 | --------------------------------------------------------------------------------