-
Notifications
You must be signed in to change notification settings - Fork 2
/
utils_new.py
2308 lines (2238 loc) · 130 KB
/
utils_new.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
import math
import time
import random
import numpy as np
from typing import Optional
import torch
import torch.nn.functional as F
from torch.utils.data.distributed import Dataset, DistributedSampler
import nltk
RoBERTa_path = '/data1/dyh/models/RoBERTa/roberta-base-model'
def get_colors(sentence):
colors = set(SYSU_COLORS + RegDB_COLORS)
tokens = nltk.word_tokenize(sentence)
tokens = tokens[3:]
tags = nltk.pos_tag(tokens)
curr_colors = list()
curr_color = ''
for word, tag in tags:
if word in colors:
curr_color += word + ' '
elif (tag == 'CC') and (len(curr_color) > 0):
curr_color += word + ' '
elif (tag in ('NN', 'NNS')) and (len(curr_color) > 0):
curr_colors.append(curr_color[:-1])
curr_color = ''
return curr_colors
# [deprecated]
def compute_diversity_loss(feat_1, feat_2, dist='cosine', stop_gradient=True, norm=True):
if stop_gradient:
feat_1 = feat_1.detach()
if norm:
feat_1 = F.normalize(feat_1, p=2, dim=1)
feat_2 = F.normalize(feat_2, p=2, dim=1)
if dist == 'cosine':
loss = (feat_1 * feat_2).sum(dim=1)
loss = loss.clamp(min=0).sum() / loss.gt(0).sum() + 1e-5
elif dist == 'l2':
distance = F.pairwise_distance(feat_1, feat_2, p=2)
loss = (2 - distance) / 2
loss = loss.mean()
return loss
class mySampler(DistributedSampler):
"""
重写数据划分方式:
indices = indices[self.rank + self.num_samples : (self.rank + 1) * self.num_samples + 1]
"""
def __init__(self, dataset: Dataset, num_replicas: Optional[int] = None,
rank: Optional[int] = None, shuffle: bool = True,
seed: int = 0, drop_last: bool = False) -> None:
super(mySampler, self).__init__(dataset, num_replicas, rank, shuffle, seed, drop_last)
def __iter__(self):
if self.shuffle:
# deterministically shuffle based on epoch and seed
g = torch.Generator()
g.manual_seed(self.seed + self.epoch)
indices = torch.randperm(len(self.dataset), generator=g).tolist() # type: ignore[arg-type]
else:
indices = list(range(len(self.dataset))) # type: ignore[arg-type]
if not self.drop_last:
# add extra samples to make it evenly divisible
padding_size = self.total_size - len(indices)
if padding_size <= len(indices):
indices += indices[:padding_size]
else:
indices += (indices * math.ceil(padding_size / len(indices)))[:padding_size]
else:
# remove tail of data to make it evenly divisible.
indices = indices[:self.total_size]
assert len(indices) == self.total_size
# subsample
indices = indices[self.rank * self.num_samples : (self.rank + 1) * self.num_samples]
assert len(indices) == self.num_samples
return iter(indices)
def tokenize(sentence, tokenizer, max_tokens=20):
"""ref: https://github.com/henghuiding/ReLA/blob/main/gres_model/data/dataset_mappers/refcoco_mapper.py"""
attention_mask = [0] * max_tokens
padded_input_ids = [0] * max_tokens
input_ids = tokenizer.encode(text=sentence, add_special_tokens=True)
input_ids = input_ids[:max_tokens]
padded_input_ids[:len(input_ids)] = input_ids
attention_mask[:len(input_ids)] = [1] * len(input_ids)
padded_input_ids = torch.tensor(padded_input_ids)
attention_mask = torch.tensor(attention_mask)
return padded_input_ids, attention_mask
def set_seed_ddp(seed, rank):
"""
ref: https://blog.csdn.net/weixin_44791964/article/details/131622957
"""
seed = seed + rank + 1 # 为不同进程分配不同的、固定的随机种子
random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
def compute_textual_iou(sentences):
batch_size = len(sentences)
ious = torch.zeros([batch_size, batch_size])
colors = [get_colors(sentence) for sentence in sentences]
for i, color_i in enumerate(colors):
for j, color_j in enumerate(colors):
ious[i, j] = len(set(color_i).intersection(color_j)) / \
len(set(color_i).union(color_j))
return ious
def compute_kl_loss(
feat_1,
feat_2,
pid,
text=None,
lambda_iou=0.,
logit_scale=1/0.2,
epsilon=1e-8
):
"""ref: https://github.com/anosorae/IRRA/blob/main/model/objectives.py"""
batch_size = feat_1.shape[0]
pid = pid.reshape((batch_size, 1)) # make sure pid size is [batch_size, 1]
pid_dist = pid - pid.t()
labels = (pid_dist == 0).float()
feat_1_norm = feat_1 / feat_1.norm(dim=1, keepdim=True)
feat_2_norm = feat_2 / feat_2.norm(dim=1, keepdim=True)
t2i_cosine_theta = feat_2_norm @ feat_1_norm.t()
i2t_cosine_theta = t2i_cosine_theta.t()
text_proj_image = logit_scale * t2i_cosine_theta
image_proj_text = logit_scale * i2t_cosine_theta
if lambda_iou != 0:
textual_ious = compute_textual_iou(text).to(labels.device)
labels = (1 - lambda_iou) * labels + lambda_iou * textual_ious
# normalize the true matching distribution
labels_distribute = labels / labels.sum(dim=1)
i2t_pred = F.softmax(image_proj_text, dim=1)
i2t_loss = i2t_pred * (F.log_softmax(image_proj_text, dim=1) - torch.log(labels_distribute + epsilon))
t2i_pred = F.softmax(text_proj_image, dim=1)
t2i_loss = t2i_pred * (F.log_softmax(text_proj_image, dim=1) - torch.log(labels_distribute + epsilon))
loss = torch.mean(torch.sum(i2t_loss, dim=1)) + torch.mean(torch.sum(t2i_loss, dim=1))
return loss
def fliplr(img):
"""flip horizontal"""
inv_idx = torch.arange(img.size(3)-1,-1,-1).long() # N x C x H x W
img_flip = img.index_select(3,inv_idx)
return img_flip
def extract_gall_feat(net, gall_loader, ngall, pool_dim, test_mode, flip=True):
net.eval()
print ('Extracting Gallery Feature...')
start = time.time()
ptr = 0
gall_feat1 = np.zeros((ngall, pool_dim))
gall_feat2 = np.zeros((ngall, pool_dim))
gall_feat3 = np.zeros((ngall, pool_dim))
gall_feat4 = np.zeros((ngall, pool_dim))
gall_feat5 = np.zeros((ngall, pool_dim))
gall_feat6 = np.zeros((ngall, pool_dim))
gall_feat_txt = np.zeros((ngall, pool_dim))
gall_feat_joint = np.zeros((ngall, 2 * pool_dim))
with torch.no_grad():
for batch_idx, batch_data in enumerate(gall_loader):
inputs, label = batch_data.get('img'), batch_data.get('target')
batch_num = inputs.size(0)
outputs1 = net(
dict(
visible_image=inputs.cuda(),
),
test_mode[0]
)
feat, feat_att, feat_v2t, feat_joint = \
outputs1.get('feat_before_bn'), outputs1.get('feat_after_bn'), \
outputs1.get('v2t_feat'), outputs1.get('joint_feat')
if flip:
outputs2 = net(
dict(
visible_image=fliplr(inputs).cuda(),
),
test_mode[0]
)
feat_2, feat_att_2, feat_v2t_2, feat_joint_2 = \
outputs2.get('feat_before_bn'), outputs2.get('feat_after_bn'), \
outputs2.get('v2t_feat'), outputs2.get('joint_feat')
feat = (feat + feat_2) / 2
feat_att = (feat_att + feat_att_2) / 2
if feat_v2t is not None:
feat_v2t = (feat_v2t + feat_v2t_2) / 2
if feat_joint is not None:
feat_joint = (feat_joint + feat_joint_2) / 2
gall_feat1[ptr:ptr + batch_num, :] = feat[:batch_num].detach().cpu().numpy()
gall_feat2[ptr:ptr + batch_num, :] = feat_att[:batch_num].detach().cpu().numpy()
gall_feat3[ptr:ptr + batch_num, :] = feat[batch_num:batch_num*2].detach().cpu().numpy()
gall_feat4[ptr:ptr + batch_num, :] = feat_att[batch_num:batch_num*2].detach().cpu().numpy()
gall_feat5[ptr:ptr + batch_num, :] = feat[batch_num*2:].detach().cpu().numpy()
gall_feat6[ptr:ptr + batch_num, :] = feat_att[batch_num*2:].detach().cpu().numpy()
if feat_v2t is not None:
gall_feat_txt[ptr:ptr + batch_num, :] = feat_v2t.detach().cpu().numpy()
if feat_joint is not None:
gall_feat_joint[ptr:ptr + batch_num, ] = feat_joint.detach().cpu().numpy()
ptr = ptr + batch_num
print('Extracting Time:\t {:.3f}'.format(time.time()-start))
return gall_feat1, gall_feat2, gall_feat3, \
gall_feat4, gall_feat5, gall_feat6, \
gall_feat_txt, gall_feat_joint
def extract_query_feat(net, query_loader, nquery, pool_dim, test_mode, flip=True):
net.eval()
print ('Extracting Query Feature...')
start = time.time()
ptr = 0
query_feat1 = np.zeros((nquery, pool_dim))
query_feat2 = np.zeros((nquery, pool_dim))
query_feat3 = np.zeros((nquery, pool_dim))
query_feat4 = np.zeros((nquery, pool_dim))
query_feat5 = np.zeros((nquery, pool_dim))
query_feat6 = np.zeros((nquery, pool_dim))
query_feat_txt = np.zeros((nquery, pool_dim))
query_feat_joint = np.zeros((nquery, 2 * pool_dim))
with torch.no_grad():
for batch_idx, batch_data in enumerate(query_loader):
inputs, label, input_ids, attention_mask = \
batch_data.get('img'), batch_data.get('target'), \
batch_data.get('input_ids'), batch_data.get('attention_mask')
batch_num = inputs.size(0)
outputs1 = net(
dict(
thermal_image=inputs.cuda(),
input_ids=input_ids.cuda(),
attention_mask=attention_mask.cuda(),
),
test_mode[1],
)
feat, feat_att, feat_txt, feat_joint = \
outputs1.get('feat_before_bn'), outputs1.get('feat_after_bn'), \
outputs1.get('txt_feat'), outputs1.get('joint_feat')
if flip:
outputs2 = net(
dict(
thermal_image=fliplr(inputs).cuda(),
input_ids=input_ids.cuda(),
attention_mask=attention_mask.cuda(),
),
test_mode[1]
)
feat_2, feat_att_2, feat_joint_2 = \
outputs2.get('feat_before_bn'), outputs2.get('feat_after_bn'), \
outputs2.get('joint_feat')
feat = (feat + feat_2) / 2
feat_att = (feat_att + feat_att_2) / 2
if feat_joint is not None:
feat_joint = (feat_joint + feat_joint_2) / 2
query_feat1[ptr:ptr + batch_num, :] = feat[:batch_num].detach().cpu().numpy()
query_feat2[ptr:ptr + batch_num, :] = feat_att[:batch_num].detach().cpu().numpy()
query_feat3[ptr:ptr + batch_num, :] = feat[batch_num:batch_num*2].detach().cpu().numpy()
query_feat4[ptr:ptr + batch_num, :] = feat_att[batch_num:batch_num*2].detach().cpu().numpy()
query_feat5[ptr:ptr + batch_num, :] = feat[batch_num*2:].detach().cpu().numpy()
query_feat6[ptr:ptr + batch_num, :] = feat_att[batch_num*2:].detach().cpu().numpy()
if feat_txt is not None:
query_feat_txt[ptr:ptr + batch_num, :] = feat_txt.detach().cpu().numpy()
if feat_joint is not None:
query_feat_joint[ptr:ptr + batch_num, :] = feat_joint.detach().cpu().numpy()
ptr = ptr + batch_num
print('Extracting Time:\t {:.3f}'.format(time.time()-start))
return query_feat1, query_feat2, query_feat3, \
query_feat4, query_feat5, query_feat6, \
query_feat_txt, query_feat_joint
# "training label" to "raw pid"
SYSU_LABEL2PID = {0: 1, 1: 2, 2: 4, 3: 5, 4: 7, 5: 8, 6: 11, 7: 12, 8: 13, 9: 14, 10: 15, 11: 16, 12: 18, 13: 19, 14: 20, 15: 22, 16: 29, 17: 30, 18: 35, 19: 52, 20: 53, 21: 55, 22: 56, 23: 58, 24: 59, 25: 60, 26: 61, 27: 62, 28: 64, 29: 65, 30: 70, 31: 71, 32: 72, 33: 73, 34: 74, 35: 76, 36: 77, 37: 78, 38: 79, 39: 91, 40: 92, 41: 95, 42: 98, 43: 99, 44: 107, 45: 109, 46: 110, 47: 111, 48: 113, 49: 114, 50: 115, 51: 118, 52: 119, 53: 120, 54: 121, 55: 123, 56: 124, 57: 126, 58: 127, 59: 128, 60: 131, 61: 132, 62: 133, 63: 135, 64: 136, 65: 137, 66: 140, 67: 142, 68: 143, 69: 147, 70: 149, 71: 151, 72: 154, 73: 155, 74: 156, 75: 157, 76: 158, 77: 159, 78: 160, 79: 161, 80: 163, 81: 164, 82: 165, 83: 168, 84: 169, 85: 171, 86: 174, 87: 175, 88: 177, 89: 178, 90: 179, 91: 180, 92: 181, 93: 182, 94: 183, 95: 184, 96: 186, 97: 188, 98: 189, 99: 193, 100: 194, 101: 196, 102: 197, 103: 198, 104: 199, 105: 200, 106: 201, 107: 203, 108: 205, 109: 206, 110: 208, 111: 209, 112: 211, 113: 212, 114: 213, 115: 214, 116: 216, 117: 217, 118: 218, 119: 219, 120: 220, 121: 221, 122: 222, 123: 224, 124: 225, 125: 226, 126: 227, 127: 228, 128: 230, 129: 231, 130: 234, 131: 235, 132: 240, 133: 243, 134: 244, 135: 245, 136: 246, 137: 247, 138: 248, 139: 249, 140: 250, 141: 251, 142: 254, 143: 255, 144: 256, 145: 258, 146: 260, 147: 261, 148: 262, 149: 264, 150: 265, 151: 267, 152: 268, 153: 270, 154: 271, 155: 276, 156: 277, 157: 278, 158: 279, 159: 280, 160: 281, 161: 283, 162: 284, 163: 286, 164: 287, 165: 288, 166: 289, 167: 290, 168: 292, 169: 293, 170: 294, 171: 295, 172: 296, 173: 297, 174: 298, 175: 299, 176: 304, 177: 305, 178: 306, 179: 308, 180: 309, 181: 310, 182: 311, 183: 313, 184: 314, 185: 316, 186: 317, 187: 319, 188: 320, 189: 321, 190: 322, 191: 323, 192: 324, 193: 325, 194: 326, 195: 327, 196: 328, 197: 329, 198: 330, 199: 332, 200: 334, 201: 335, 202: 336, 203: 337, 204: 338, 205: 339, 206: 340, 207: 341, 208: 342, 209: 343, 210: 344, 211: 345, 212: 346, 213: 348, 214: 349, 215: 350, 216: 351, 217: 352, 218: 353, 219: 354, 220: 355, 221: 356, 222: 357, 223: 358, 224: 359, 225: 360, 226: 361, 227: 362, 228: 363, 229: 364, 230: 365, 231: 366, 232: 367, 233: 368, 234: 369, 235: 370, 236: 371, 237: 372, 238: 373, 239: 374, 240: 375, 241: 376, 242: 377, 243: 378, 244: 379, 245: 380, 246: 381, 247: 382, 248: 383, 249: 384, 250: 385, 251: 386, 252: 387, 253: 388, 254: 389, 255: 390, 256: 391, 257: 392, 258: 393, 259: 394, 260: 395, 261: 396, 262: 397, 263: 398, 264: 399, 265: 400, 266: 401, 267: 402, 268: 403, 269: 404, 270: 405, 271: 406, 272: 407, 273: 408, 274: 409, 275: 410, 276: 411, 277: 412, 278: 413, 279: 414, 280: 415, 281: 416, 282: 417, 283: 418, 284: 419, 285: 420, 286: 421, 287: 422, 288: 423, 289: 424, 290: 425, 291: 426, 292: 427, 293: 428, 294: 429, 295: 430, 296: 431, 297: 432, 298: 433, 299: 434, 300: 435, 301: 436, 302: 437, 303: 438, 304: 439, 305: 440, 306: 441, 307: 442, 308: 443, 309: 444, 310: 445, 311: 446, 312: 447, 313: 448, 314: 449, 315: 450, 316: 451, 317: 452, 318: 453, 319: 454, 320: 455, 321: 456, 322: 457, 323: 458, 324: 459, 325: 460, 326: 461, 327: 462, 328: 463, 329: 464, 330: 465, 331: 466, 332: 467, 333: 468, 334: 469, 335: 470, 336: 471, 337: 472, 338: 473, 339: 474, 340: 475, 341: 476, 342: 477, 343: 478, 344: 479, 345: 480, 346: 481, 347: 482, 348: 483, 349: 484, 350: 486, 351: 487, 352: 488, 353: 489, 354: 490, 355: 491, 356: 492, 357: 493, 358: 494, 359: 495, 360: 496, 361: 497, 362: 498, 363: 499, 364: 501, 365: 502, 366: 503, 367: 504, 368: 505, 369: 506, 370: 507, 371: 508, 372: 509, 373: 510, 374: 512, 375: 513, 376: 514, 377: 515, 378: 516, 379: 517, 380: 518, 381: 519, 382: 520, 383: 521, 384: 522, 385: 523, 386: 524, 387: 525, 388: 526, 389: 527, 390: 528, 391: 530, 392: 531, 393: 532, 394: 533}
# referring labels
SYSU_Refer = {
1: 'a man with gray short sleeves and white gray shorts',
2: 'a man with dark blue short sleeves and light blue jeans',
4: 'a woman with white short sleeves and blue denim shorts',
5: 'a woman with blue and white striped short sleeves and blue jeans',
6: 'a man with dark green short sleeves and black pants',
7: 'a man with dark blue and white striped short sleeves and black pants',
8: 'a man with white short sleeves and light brown shorts',
10: 'a man with dark short sleeves and light blue denim shorts',
11: 'a man with gray short sleeves and sky blue pants',
12: 'a man with gray short sleeves and blue jeans',
13: 'a man with dark gray short sleeves and blue jeans',
14: 'a man with white short sleeves and khaki pants',
15: 'a man with red short sleeves and dark pants',
16: 'a man with white short sleeves and dark green shorts',
17: 'a man with blue short sleeves and dark pants',
18: 'a man with gray short sleeves and blue denim shorts',
19: 'a man with yellow short sleeves and blue denim shorts',
20: 'a man with light blue and white striped short sleeves and light blue jeans',
21: 'a woman with white short sleeves and dark pants',
22: 'a woman with pink short sleeves and dark blue jeans',
24: 'a woman with light purple short sleeves and blue jeans',
25: 'a woman with a white dress with black accents',
27: 'a woman with gray short sleeves and blue denim shorts',
28: 'a man with black short sleeves and khaki shorts',
29: 'a man with orange short sleeves and black shorts',
30: 'a man with a dark gray shirt and blue jeans',
31: 'a man with white short sleeves and dark pants',
34: 'a man with yellow short sleeves and dark shorts',
35: 'a woman with white short sleeves and dark blue pants',
36: 'a man with purple short sleeves and dark blue denim shorts',
37: 'a man with white short sleeves and dark pants',
40: 'a man with gray shirt and black pants',
41: 'a man with gray short sleeves and blue jeans',
42: 'a man with black short sleeves and off-white pants',
43: 'a man with purple short sleeves and black pants',
44: 'a man with white short sleeves and khaki pants',
45: 'a man with sky blue short sleeves and gray pants',
49: 'a man with gray top and black pants',
50: 'a man with white short sleeves and black shorts',
51: 'a man with green short sleeves and blue pants',
52: 'a man with black short sleeves and gray shorts',
53: 'a man with gray short sleeves and blue jeans',
54: 'a man with gray short sleeves and brown pants',
55: 'a woman with a dark red dress with white accents',
56: 'a man with gray top and dark blue pants',
58: 'a woman with brown-gray coat and black pants',
59: 'a woman with red and black plaid coat and black pants',
60: 'a woman with white top and black skirt',
61: 'a woman with gray and white striped top and dark blue pants',
62: 'a man with dark purple top, blue backpack and black pants',
63: 'a woman with dark gray and white top and black skirt',
64: 'a man with dark blue top and dark blue pants',
65: 'a man with black top and dark gray pants',
69: 'a man with white short sleeves and black pants',
70: 'a woman with yellow top, yellow backpack and dark blue jeans',
71: 'a man with red, gray and white striped top and black pants',
72: 'a woman with white and dark blue top, gray backpack and light blue jeans',
73: 'a woman with pink-white top and dark blue pants',
74: 'a man with blue shirt and dark gray pants',
75: 'a woman with brown top, dark blue backpack and blue jeans',
76: 'a man with black top and dark blue pants',
77: 'a man with blue and white striped top and blue jeans',
78: 'a man with brown top and blue pants',
79: 'a woman with red top and dark blue pants',
80: 'a man with orange and dark blue top and gray pants',
81: 'a man with orange top and khaki pants',
82: 'a man with red top and black pants',
83: 'a woman with dark gray top and black pants',
84: 'a woman with dark blue top and sky blue jeans',
85: 'a woman with white top, black backpack and black skirt',
86: 'a woman with dark red top and sky blue pants',
87: 'a woman with dark blue top, black backpack and black pants',
88: 'a woman with off-white plaid coat and dark blue pants',
89: 'a woman with pink and gray top, purple backpack and blue jeans',
90: 'a man with dark gray top and blue jeans',
91: 'a man with gray short sleeves and black shorts',
92: 'a man with blue and white striped short sleeves and khaki shorts',
93: 'a man with gray short sleeves and dark green shorts',
95: 'a man with blue top and black pants',
98: 'a man with black short sleeves and black pants',
99: 'a man with dark blue short sleeves and black shorts',
102: 'a man with gray and white plaid shirt and black pants',
104: 'a man with white short sleeves and dark gray pants',
105: 'a man with red short sleeves and blue jeans',
106: 'a man with gray short sleeves and black and white plaid shorts',
107: 'a man with black and gray top, gray backpack and black pants',
108: 'a man with black and white plaid short sleeves, black satchel and black pants',
109: 'a man with black short sleeves, gray backpack and gray shorts',
110: 'a man with black short sleeves, black backpack and black pants',
111: 'a man with gray short sleeves, gray backpack and gray shorts',
112: 'a man with light blue short sleeves, dark blue backpack and blue shorts',
113: 'a man with gray short sleeves, black backpack and gray and white plaid shorts',
114: 'a man with white short sleeves, black backpack and khaki shorts',
115: 'a woman with pink and gray top and blue jeans',
116: 'a man with dark blue short sleeves and khaki pants',
117: 'a man with blue short sleeves and black pants',
118: 'a man with gray short sleeves and dark blue shorts',
119: 'a man with white short sleeves, black backpack and black pants',
120: 'a man with red short sleeves, gray backpack and black shorts',
121: 'a man with gray short sleeves, gray backpack and black pants',
122: 'a woman with black and white top and light blue shorts',
123: 'a man with blue short sleeves and khaki pants',
124: 'a man with white short sleeves and black pants',
125: 'a man with white short sleeves, black backpack and black pants',
126: 'a man with blue short sleeves, dark blue backpack and dark gray pants',
127: 'a man with red short sleeves, blue backpack and black pants',
128: 'a woman with pink short sleeves, yellow backpack and dark blue pants',
129: 'a man with black short sleeves and khaki pants',
130: 'a woman with black short sleeves and dark blue jeans',
131: 'a man with white short sleeves, black backpack and black pants',
132: 'a woman with black and white striped short sleeves and black shorts',
133: 'a man with black short sleeves and black shorts',
134: 'a man with black vest and blue shorts',
135: 'a man with black vest, black backpack and black shorts',
136: 'a woman with green short sleeves and black pants',
137: 'a woman with red short sleeves, black satchel and black shorts',
138: 'a woman with white short sleeves and black shorts',
139: 'a woman with dark cyan short sleeves and black shorts',
140: 'a woman with black short sleeves and black shorts',
142: 'a woman with red top and black pants',
143: 'a man with off-white short sleeves and dark gray pants',
147: 'a woman with white vest, white satchel and dark blue shorts',
149: 'a man with red and blue plaid shirt, blue satchel and khaki pants',
150: 'a man with dark blue short sleeves, black backpack and khaki shorts',
151: 'a man with yellow-green short sleeves, dark red backpack and black shorts',
152: 'a man with blue short sleeves, blue backpack and brown shorts',
154: 'a man with black short sleeves, black backpack and off-white pants',
155: 'a man with red short sleeves, black backpack and black shorts',
156: 'a woman with pink short sleeves, colorful backpack and blue shorts',
157: 'a woman with white short sleeves and black pants',
158: 'a man with blue short sleeves, camouflage backpack and blue shorts',
159: 'a man with gray short sleeves and black pants',
160: 'a woman with gray short sleeves, purple backpack and white shorts',
161: 'a man with white short sleeves, black backpack and black pants',
162: 'a man with purple short sleeves and black shorts',
163: 'a woman with blue short sleeves and black skirt',
164: 'a man with gray top, black backpack and black shorts',
165: 'a man with dark blue short sleeves and black shorts',
166: 'a man with white top and blue shorts',
167: 'a man with black short sleeves, brown backpack and black pants',
168: 'a man with white short sleeves, black backpack and black pants',
169: 'a woman with white vest, white and red backpack and black shorts',
170: 'a man with white short sleeves, black backpack and black pants',
171: 'a man with black short sleeves, black backpack and dark blue pants',
172: 'a woman with light green short sleeves, black backpack and black pants',
174: 'a man with red short sleeves, gray backpack and black pants',
175: 'a man with black short sleeves, black backpack and black pants',
176: 'a woman with white short sleeves, pink backpack and black shorts',
177: 'a man with dark blue short sleeves, black backpack and black shorts',
178: 'a man with black short sleeves and dark gray pants',
179: 'a man with white and purple short sleeves, orange backpack and black shorts',
180: 'a man with pink-red short sleeves, black backpack and dark blue pants',
181: 'a woman with black and white vertical striped dress and dark brown backpack',
182: 'a woman with dark blue dress and dark blue satchel',
183: 'a woman with light brown top, brown satchel and brown shorts',
184: 'a woman with dark gray dress with red accents',
185: 'a man with red short sleeves, black backpack and gray pants',
186: 'a man with off-white top, brown-gray backpack and dark blue pants',
188: 'a man with blue short sleeves, blue backpack and gray pants',
189: 'a man with white short sleeves, black backpack and black pants',
190: 'a man with white short sleeves, black backpack and black shorts',
192: 'a man with gray short sleeves and black pants',
193: 'a man with gray and blue short sleeves, dark gray backpack and dark gray shorts',
194: 'a woman with white short sleeves and black pants',
196: 'a woman with white short sleeves, black satchel and blue shorts',
197: 'a woman with white short sleeves, black backpack and black pants',
198: 'a woman with white short sleeves, pink-red backpack and black shorts',
199: 'a woman with off-white short sleeves, yellow backpack and black pants',
200: 'a man with gray short sleeves and dark gray shorts',
201: 'a man with black and white short sleeves and black shorts',
202: 'a man with white short sleeves and black pants',
203: 'a man with white short sleeves and white pants',
204: 'a woman with white and light cyan top and brown skirt',
205: 'a man with white short sleeves, pink-red backpack and gray and white plaid pants',
206: 'a man with white short sleeves, dark blue backpack and blue jeans',
207: 'a woman with white short sleeves, black backpack and light blue shorts',
208: 'a woman with white short sleeves and blue suspender skirt',
209: 'a woman with light purple short sleeves and light purple shorts',
210: 'a woman with red short sleeves and dark blue jeans',
211: 'a woman with black short sleeves, light blue backpack and dark blue jeans',
212: 'a man with red short sleeves, black backpack and dark blue shorts',
213: 'a woman with dark blue dress and pink backpack',
214: 'a man with black short sleeves, red backpack and blue shorts',
215: 'a woman with pink short sleeves, purple backpack and white pants',
216: 'a woman with dark green short sleeves, colorful backpack and black skirt',
217: 'a woman with dark red short sleeves, black satchel and blue skirt',
218: 'a woman with white short sleeves, black backpack and dark blue pants',
219: 'a woman with white short sleeves and dark gray shorts',
220: 'a woman with black short sleeves and black shorts',
221: 'a woman with light blue dress and black satchel',
222: 'a man with white short sleeves and black shorts',
223: 'a man with red short sleeves, dark gray backpack and black pants',
224: 'a woman with pink-red short sleeves and dark blue shorts',
225: 'a woman with white short sleeves and light blue shorts',
226: 'a woman with black short sleeves and blue pants',
227: 'a woman with black short sleeves, light blue satchel and blue shorts',
228: 'a man with yellow short sleeves, blue backpack and blue pants',
229: 'a woman with gray short sleeves, black backpack and gray skirt',
230: 'a man with white short sleeves, black backpack and yellow shorts',
231: 'a man with dark blue and gray short sleeves and blue jeans',
232: 'a man with blue top and khaki pants',
234: 'a woman with dark blue vest, pink-red satchel and gray shorts',
235: 'a man with blue and white striped short sleeves, black backpack and gray shorts',
237: 'a woman with dark gray vest, sky blue backpack and light blue shorts',
240: 'a woman with white short sleeves, blue backpack and blue shorts',
243: 'a woman with dark blue dress',
244: 'a woman with pink short sleeves, black backpack and blue pants',
245: 'a man with sky blue short sleeves, black satchel and black pants',
246: 'a woman with light purple short sleeves, black backpack and dark gray skirt',
247: 'a woman with gray short sleeves, light blue backpack and light blue shorts',
248: 'a man with black short sleeves, black backpack and red shorts',
249: 'a man with white short sleeves, dark green backpack and blue shorts',
250: 'a man with dark gray short sleeves, blue backpack and blue shorts',
251: 'a man with black short sleeves, black backpack and black pants',
252: 'a woman with black short sleeves, black backpack and white shorts',
253: 'a man with dark blue short sleeves, black backpack and black pants',
254: 'a man with white short sleeves, black backpack and black pants',
255: 'a woman with white short sleeves and dark blue shorts',
256: 'a woman with pink short sleeves, red backpack and dark blue shorts',
257: 'a woman with pink short sleeves, green backpack and blue shorts',
258: 'a woman with white short sleeves, dark gray backpack and light blue skirt',
259: 'a woman with dark blue short sleeves, black backpack and dark blue shorts',
260: 'a woman with black top, colorful backpack and dark blue skirt',
261: 'a woman with white short sleeves, gray backpack and dark blue shorts',
262: 'a woman with light pink short sleeves, black backpack and dark blue skirt',
263: 'a woman with white and blue top and black shorts',
264: 'a woman with dark red coat and light orange dress',
265: 'a man with gray short sleeves, black backpack and khaki shorts',
266: 'a man with yellow short sleeves, brown backpack and red shorts',
267: 'a woman with blue and white striped short sleeves, blue backpack and black pants',
268: 'a woman with blue and white striped short sleeves, off-white backpack and light blue pants',
269: 'a woman with white short sleeves, dark green backpack and white and black shorts',
270: 'a woman with black short sleeves, khaki backpack and dark blue pants',
271: 'a woman with gray short sleeves, dark red backpack and blue and purple skirt',
272: 'a man with dark blue short sleeves and dark blue pants',
273: 'a woman with white short sleeves, purple backpack and dark blue shorts',
274: 'a woman with black short sleeves, dark red backpack and blue shorts',
275: 'a man with black short sleeves, black backpack and light blue pants',
276: 'a woman with black short sleeves, black backpack and white shorts',
277: 'a man with dark purple short sleeves, black satchel and dark blue shorts',
278: 'a man with red short sleeves, dark gray backpack and black shorts',
279: 'a man with white, gray and brown striped short sleeves, black satchel and dark blue shorts',
280: 'a woman with pink short sleeves, black backpack and blue jeans',
281: 'a woman with gray short sleeves, black backpack and dark blue jeans',
282: 'a man with black short sleeves, black backpack and black shorts',
283: 'a man with purple, white and red short sleeves, black backpack and blue denim shorts',
284: 'a man with white short sleeves, blue backpack and dark gray shorts',
285: 'a man with purple plaid shirt, black backpack and dark blue pants',
286: 'a man with black short sleeves, black backpack and black pants',
287: 'a man with white short sleeves, black backpack and blue shorts',
288: 'a woman with white short sleeves, white satchel and black pants',
289: 'a woman with light blue top and light blue pants',
290: 'a woman with black short sleeves, black backpack and blue jeans',
291: 'a woman with white short sleeves, dark red backpack and blue pants',
292: 'a woman with white short sleeves and black backpack',
293: 'a woman with green short sleeves and black suspender skirt',
294: 'a woman with light blue short sleeves, green backpack and white shorts',
295: 'a woman with dark gray short sleeves, black satchel and dark gray shorts',
296: 'a woman with white short sleeves, purple backpack and light blue pants',
297: 'a woman with pink-white short sleeves, gray backpack and light blue shorts',
298: 'a woman with brown short sleeves, black backpack and blue shorts',
299: 'a man with white short sleeves, black backpack and black shorts',
300: 'a man with blue short sleeves, dark gray backpack and black shorts',
301: 'a man with gray short sleeves, black backpack and black pants',
302: 'a woman with gray short sleeves, blue-green backpack and gray pants',
303: 'a man with red short sleeves, black backpack and khaki pants',
304: 'a man with black short sleeves and black pants',
305: 'a man with white short sleeves, dark blue backpack and black pants',
306: 'a man with gray short sleeves, dark green backpack and khaki pants',
307: 'a man with dark gray short sleeves, black backpack and dark blue pants',
308: 'a woman with blue-green short sleeves, dark green backpack and blue denim shorts',
309: 'a man with dark green short sleeves, black backpack and black pants',
310: 'a man with black and white striped short sleeves, gray backpack and dark green shorts',
311: 'a man with pink short sleeves, dark blue backpack and black pants',
312: 'a man with gray short sleeves, black backpack and black pants',
313: 'a man with white short sleeves, black backpack and black pants',
314: 'a woman with gray short sleeves, black backpack and black pants',
315: 'a woman with white short sleeves, red backpack and black pants',
316: 'a woman with dark red short sleeves, blue satchel and black pants',
317: 'a woman with off-white vest, black satchel and dark gray shorts',
318: 'a woman with white short sleeves, black and white backpack and black pants',
319: 'a woman with pink short sleeves, light blue backpack and light blue shorts',
320: 'a woman with pink-white short sleeves, dark blue backpack and dark gray pants',
321: 'a man with white short sleeves and dark green shorts',
322: 'a man with green-blue short sleeves, white and black backpack and white and black pants',
323: 'a woman with gray short sleeves, black backpack and light blue pants',
324: 'a woman with white short sleeves, dark green backpack and dark blue pants',
325: 'a woman with colorful short sleeves, blue backpack and blue short denim shorts',
326: 'a man with white short sleeves, blue backpack and khaki shorts',
327: 'a woman with white short sleeves, light yellow backpack and black pants',
328: 'a man with dark blue short sleeves, dark red backpack and brown shorts',
329: 'a woman with light green short sleeves, colorful backpack and black pants',
330: 'a woman with dark blue short sleeves, black backpack and black pants',
331: 'a woman with black short sleeves, colorful white backpack and black pants',
332: 'a woman with white short sleeves, a khaki satchel and black pants',
333: 'a woman with black short sleeves and black pants',
334: 'a man with blue top and black pants',
335: 'a man with light blue shirt, black backpack and black pants',
336: 'a man with light blue shirt, black backpack and gray pants',
337: 'a man with black top and dark gray pants',
338: 'a man with light blue shirt, black backpack and black pants',
339: 'a man with black top and black pants',
340: 'a man with black top and black pants',
341: 'a woman with dark green top, gray backpack and black pants',
342: 'a man with black top and dark blue pants',
343: 'a man with gray top, black backpack and khaki pants',
344: 'a woman with light purple top, dark gray backpack and dark blue pants',
345: 'a woman with dark red top, red backpack and black pants',
346: 'a woman with dark red top, black backpack and dark blue jeans',
348: 'a man with black top and black shorts',
349: 'a man with black short sleeves, blue backpack and gray pants',
350: 'a woman with red short sleeves, black backpack and black pants',
351: 'a man with blue and yellow top and khaki pants',
352: 'a man with black top, light green backpack and black pants',
353: 'a man with blue top, black backpack, dark blue ubmrella and black pants',
354: 'a man with gray top, black backpack and black pants',
355: 'a man with black top and black pants',
356: 'a man with black top, orange backpack and black pants',
357: 'a man with white short sleeves, black backpack and black pants',
358: 'a man with gray top, blue backpack and off-white pants',
359: 'a man with black top and blue pants',
360: 'a man with dark gray short sleeves, black backpack and off-white pants',
361: 'a man with gray top, black backpack and black pants',
362: 'a man with red short sleeves, black backpack and off-white shorts',
363: 'a man with black short sleeves, black backpack and black pants',
364: 'a man with white and light blue top, black backpack and khaki pants',
365: 'a man with gray top, black backpack and black pants',
366: 'a man with black top, dark gray backpack and black pants',
367: 'a man with black top, black backpack and black pants',
368: 'a man with yellow and dark gray top, black backpack and black pants',
369: 'a man with light blue and black top, black backpack and black pants',
370: 'a man with blue short sleeves, black backpack and gray pants',
371: 'a man with black top, black backpack and black pants',
372: 'a man with black top, black backpack and gray pants',
373: 'a man with white and brown plaid shirt, black backpack and dark blue pants',
374: 'a man with light blue shirt, orange backpack and light green pants',
375: 'a woman with pink-red top, black backpack and black pants',
376: 'a woman with black coat, gray backpack and blue pants',
377: 'a woman with pink-red and white top, light blue backpack and black pants',
378: 'a woman with black coat, black backpack and dark blue pants',
379: 'a woman with blue top, dark blue backpack and dark blue pants',
380: 'a man with dark red top, black backpack and black pants',
381: 'a man with blue shirt, light green backpack and black pants',
382: 'a man with black top, black backpack and black pants',
383: 'a man with red top, dark blue backpack and dark blue pants',
384: 'a man with blue top, black backpack and dark gray pants',
385: 'a man with white and gray top, pink and gray backpack and dark blue pants',
386: 'a man with black top, black backpack and black pants',
387: 'a man with gray and white striped top, black backpack and black pants',
388: 'a man with black top, black backpack and khaki pants',
389: 'a man with gray top, black backpack and gray pants',
390: 'a man with white and black top, black backpack and black pants',
391: 'a man with dark blue top, black backpack and gray pants',
392: 'a woman with black and white dress, black backpack and black pants',
393: 'a woman with light blue coat, off-white backpack and black pants',
394: 'a woman with white top and dark green shorts',
395: 'a man with khaki and white top and dark blue pants',
396: 'a woman with khaki and white top and dark blue jeans',
397: 'a woman with white short sleeves and black pants',
398: 'a man with black top, black backpack and black pants',
399: 'a man with light blue top, blue backpack and gray pants',
400: 'a man with black and white top and black pants',
401: 'a man with dark blue short sleeves, silvery backpack and dark gray pants',
402: 'a man with white shirt and khaki pants',
403: 'a man with white short sleeves, black backpack and blue shorts',
404: 'a man with white and brown plaid shirt and blue pants',
405: 'a woman with white and light blue top and blue skirt',
406: 'a woman with dark gray top and black pants',
407: 'a woman with black top and black shorts',
408: 'a woman with white top and black pants',
409: 'a woman with light blue top and black pants',
410: 'a man with black short sleeves and black shorts',
411: 'a woman with white and brown top and black pants',
412: 'a woman with white and black top and black pants',
413: 'a woman with black top and black pants',
414: 'a woman with dark gray top and black pants',
415: 'a woman with light green coat and black pants',
416: 'a woman with black top, black backpack and black pants',
417: 'a woman with white top and light blue skirt',
418: 'a woman with off-white top, red backpack and white pants',
419: 'a woman with white and dark gray top, red backpack and black pants',
420: 'a man with gray top, gray backpack and black pants',
421: 'a man with blue top and black pants',
422: 'a woman with white and gray top, black backpack and black pants',
423: 'a woman with light blue top, black backpack and black pants',
424: 'a woman with light blue top, white satchel and black pants',
425: 'a man with red top, brown backpack and black shorts',
426: 'a woman with gray top and blue pants',
427: 'a woman with white top, blue backpack and dark blue shorts',
428: 'a woman with light blue and dark blue top and black pants',
429: 'a man with black and light blue top and black pants',
430: 'a man with dark blue top and black pants',
431: 'a woman with gray top and dark blue pants',
432: 'a man with black top, black backpack and black pants',
433: 'a woman with white and red top and red pants',
434: 'a man with blue top and dark blue jeans',
435: 'a man with blue top and black pants',
436: 'a woman with off-white coat and dark blue pants',
437: 'a man with dark gray top and dark green pants',
438: 'a man with white, gray and orange top, black backpack and khaki pants',
439: 'a man with white, gray and orange top, black backpack and khaki pants',
440: 'a man with black top and black pants',
441: 'a man with black top and khaki pants',
442: 'a man with gray top, white and black backpack and blue pants',
443: 'a woman with black top and dark blue pants',
444: 'a woman with black top and black pants',
445: 'a woman with white top, white backpack and black pants',
446: 'a man with dark blue top, black backpack and dark blue jeans',
447: 'a man with black top, blue backpack and gray pants',
448: 'a woman with off-white top and light blue pants',
449: 'a woman with light blue top and dark blue pants',
450: 'a man with dark green top, blue backpack and dark blue pants',
451: 'a man with white and blue plaid shirt, gray backpack and dark green pants',
452: 'a man with blue top and dark blue pants',
453: 'a woman with off-white top, pink-red backpack and black pants',
454: 'a woman with light blue coat, black satchel and black pants',
455: 'a woman with black top and black pants',
456: 'a woman with off-white top, white backpack and light blue pants',
457: 'a woman with dark green coat and dark blue jeans',
458: 'a woman with dark brown coat',
459: 'a woman with dark cyan top and black pants',
460: 'a man with light blue shirt, black backpack and blue denim shorts',
461: 'a man with dark green top, black backpack and black pants',
462: 'a man with gray short sleeves, black backpack and off-white pants',
463: 'a woman with pink-red, white and black top, black backpack and black pants',
464: 'a man with black top, blue backpack and black pants',
465: 'a woman with white and gray plaid shirt, off-white backpack and black pants',
466: 'a woman with white and brown top and black pants',
467: 'a woman with black and white top and black pants',
468: 'a woman with blue, yellow and gray top and dark blue pants',
469: 'a woman with dark blue coat and dark blue pants',
470: 'a woman with khaki coat and black pants',
471: 'a man with black top and black pants',
472: 'a man with light blue shirt and blue jeans',
473: 'a woman with white top, black backpack and blue pants',
474: 'a man with black top and dark green pants',
475: 'a woman with black and white top, white backpack and black pants',
476: 'a man with white and black top and dark blue jeans',
477: 'a man with light blue short sleeves and khaki pants',
478: 'a man with light blue top and blue jeans',
479: 'a man with black short sleeves and black pants',
480: 'a man with yellow and black top, black backpack and dark blue jeans',
481: 'a woman with gray top, black backpack and dark blue jeans',
482: 'a woman with black and white striped top, black backpack and black pants',
483: 'a woman with white top and gray skirt',
484: 'a woman with blue and black top and dark blue jeans',
486: 'a man with dark green top and black pants',
487: 'a man with black top and off-white pants',
488: 'a woman with dark blue short sleeves and black pants',
489: 'a man with dark blue short sleeves and black pants',
490: 'a woman with black short sleeves and black pants',
491: 'a woman with white short sleeves and black pants',
492: 'a woman with light green top and black pants',
493: 'a man with blue and white top and black pants',
494: 'a woman with dark blue top, yellow satchel and white pants',
495: 'a woman with gray top and black pants',
496: 'a woman with white top and black skirt',
497: 'a man with dark blue top and blue jeans',
498: 'a man with gray top and dark blue jeans',
499: 'a woman with white and black striped top and black pants',
501: 'a woman with black and white plaid shirt and black pants',
502: 'a man with white top, gray backpack and dark blue pants',
503: 'a man with black top and dark blue jeans',
504: 'a man with dark blue short sleeves and dark blue jeans',
505: 'a man with dark blue top and blue jeans',
506: 'a man with dark blue top and dark blue jeans',
507: 'a woman with white top and black pants',
508: 'a man with gray and white top and dark blue jeans',
509: 'a woman with white top and light blue pants',
510: 'a man with dark red shirt and dark blue jeans',
512: 'a man with blue top and black pants',
513: 'a man with white top and black pants',
514: 'a woman with white top and dark blue pants',
515: 'a woman with black and orange dress and black pants',
516: 'a woman with dark red top, gray skirt and black pants',
517: 'a woman with black and white striped top and black skirt',
518: 'a woman with purple top and black skirt',
519: 'a woman with pink-red and black top and black pants',
520: 'a man with black top and black pants',
521: 'a man with brown top and khaki pants',
522: 'a woman with white and pink top and dark gray pants',
523: 'a woman with dark cyan top and dark blue jeans',
524: 'a woman with dark green top, white and brown backpack and dark blue jeans',
525: 'a man with black top and black pants',
526: 'a man with blue top and black pants',
527: 'a man with black top and dark blue pants',
528: 'a man with white and dark blue top and black pants',
530: 'a woman with black top and khaki pants',
531: 'a woman with white and light blue top, gray backpack and black skirt',
532: 'a man with blue top and black pants',
533: 'a man with white and light blue top and black pants',
}
SYSU_COLORS = ['black', 'blue', 'blue-green', 'brown', 'brown-gray', 'colorful', 'cyan', 'dark', 'gray', 'green', 'green-blue', 'khaki', 'light', 'off-white', 'orange', 'pink', 'pink-red', 'pink-white', 'purple', 'red', 'silvery', 'sky', 'white', 'yellow', 'yellow-green']
RegDB_Refer = {
1: 'a person with green top and black pants',
2: 'a person with off-white top and black pants',
3: 'a person with black top and black pants',
4: 'a person with black top and black pants',
5: 'a person with black top, white backpack and black pants',
6: 'a person with black top and black pants',
7: 'a person with orange top, off-white backpack and black pants',
8: 'a person with black top and blue pants',
9: 'a person with purple top and blue pants',
10: 'a person with green top and black pants',
11: 'a person with dark blue top and black pants',
12: 'a person with blue top and off-white pants',
13: 'a person with pink top and pink pants',
14: 'a person with pink top and pink pants',
15: 'a person with white top and gray pants',
16: 'a person with white top and gray pants',
17: 'a person with off-white top and black pants',
18: 'a person with gray top and blue pants',
19: 'a person with black top, red backpack and black pants',
20: 'a person with brown top and brown pants',
21: 'a person with black top and black pants',
22: 'a person with black top and black pants',
23: 'a person with black top and black pants',
24: 'a person with black top and black pants',
25: 'a person with black top and black pants',
26: 'a person with black top and black pants',
27: 'a person with black top and black pants',
28: 'a person with black top and black pants',
29: 'a person with black and green top and black pants',
30: 'a person with black top and black pants',
31: 'a person with black top and black pants',
32: 'a person with black top and black pants',
33: 'a person with brown top and black pants',
34: 'a person with black top, white backpack and black pants',
35: 'a person with off-white top and black pants',
36: 'a person with black top and black pants',
37: 'a person with black and green top and black pants',
38: 'a person with black top and black pants',
39: 'a person with black top and black pants',
40: 'a person with black top and black pants',
41: 'a person with black top and black pants',
42: 'a person with black top and black pants',
43: 'a person with black top and black pants',
44: 'a person with black top and black pants',
45: 'a person with black top and black pants',
46: 'a person with black top and black pants',
47: 'a person with brown top and black pants',
48: 'a person with black top and black pants',
49: 'a person with red top and black pants',
50: 'a person with black top, yellow backpack and black pants',
51: 'a person with black top and black pants',
52: 'a person with red top, black backpack and black pants',
53: 'a person with black top and black pants',
54: 'a person with black top and black pants',
55: 'a person with brown top and black pants',
56: 'a person with black and blue top and black pants',
57: 'a person with black top and black pants',
58: 'a person with white top and black pants',
59: 'a person with black top and gray pants',
60: 'a person with black top and black pants',
61: 'a person with brown top and black pants',
62: 'a person with brown top and black pants',
63: 'a person with black top and black pants',
64: 'a person with brown and white top and black pants',
65: 'a person with white top, black satchel and black pants',
66: 'a person with black top and black pants',
67: 'a person with brown top and black pants',
68: 'a person with black top and black pants',
69: 'a person with orange top and black pants',
70: 'a person with black top and black pants',
71: 'a person with brown top and brown pants',
72: 'a person with white top, black satchel and gray pants',
73: 'a person with black and white top and black pants',
74: 'a person with black top and black pants',
75: 'a person with purple top and black pants',
76: 'a person with black top and black pants',
77: 'a person with black top and black pants',
78: 'a person with gray top, white backpack and black pants',
79: 'a person with white top, black satchel and black pants',
80: 'a person with black top, white belongings and black pants',
81: 'a person with black top and black pants',
82: 'a person with black top and black pants',
83: 'a person with black top and black pants',
84: 'a person with black top and black pants',
85: 'a person with brown top and gray and white pants',
86: 'a person with brown top and black pants',
87: 'a person with brown top and black pants',
88: 'a person with brown top and black pants',
89: 'a person with yellow top and black pants',
90: 'a person with yellow top and black pants',
91: 'a person with black top and brown pants',
92: 'a person with brown top and black pants',
93: 'a person with red top and black pants',
94: 'a person with brown top and black pants',
95: 'a person with black top and black pants',
96: 'a person with black top, blue backpack and black pants',
97: 'a person with black top and black pants',
98: 'a person with white top and black pants',
99: 'a person with black top and black pants',
100: 'a person with black top and black pants',
101: 'a person with brown top and brown pants',
102: 'a person with black top, white backpack and black pants',
103: 'a person with black top and brown pants',
104: 'a person with brown top and black pants',
105: 'a person with black top and black pants',
106: 'a person with gray top and black pants',
107: 'a person with blue top, black backpack and black pants',
108: 'a person with red top, black backpack and black pants',
109: 'a person with red top and gray pants',
110: 'a person with brown top, black backpack and black pants',
111: 'a person with brown top and black pants',
112: 'a person with white top and black pants',
113: 'a person with black top and black pants',
114: 'a person with brown and white top and black pants',
115: 'a person with brown and white top and black pants',
116: 'a person with black and white top and black pants',
117: 'a person with black top and black pants',
118: 'a person with black top and black pants',
119: 'a person with black top and black pants',
120: 'a person with black top and black pants',
121: 'a person with black top and black pants',
122: 'a person with black top and black pants',
123: 'a person with black top and black pants',
124: 'a person with black top and black pants',
125: 'a person with blue top and black pants',
126: 'a person with black and gray top and black pants',
127: 'a person with black top and black pants',
128: 'a person with brown top and black pants',
129: 'a person with brown top and black pants',
130: 'a person with brown top and black pants',
131: 'a person with black top and black pants',
132: 'a person with black top and black pants',
133: 'a person with black top and black pants',
134: 'a person with red top and gray pants',
135: 'a person with black top and black pants',
136: 'a person with brown top and black pants',
137: 'a person with brown top, white satchel and black pants',
138: 'a person with black top and black pants',
139: 'a person with brown top and black pants',
140: 'a person with black top and blue pants',
141: 'a person with brown and white top and black pants',
142: 'a person with gray top and black pants',
143: 'a person with black top and black pants',
144: 'a person with brown top, white belongings and black pants',
145: 'a person with brown top and black pants',
146: 'a person with brown top and black pants',
147: 'a person with brown top and black pants',
148: 'a person with black top and black pants',
149: 'a person with gray top and black pants',
150: 'a person with black top and black pants',
151: 'a person with green top and black pants',
152: 'a person with off-white top and blue pants',
153: 'a person with off-white and green top and black pants',
154: 'a person with purple top and black pants',
155: 'a person with purple top and black pants',
156: 'a person with purple top and black pants',
157: 'a person with purple top and black pants',
158: 'a person with purple top and black pants',
159: 'a person with purple top and black pants',
160: 'a person with blue top and black pants',
161: 'a person with purple top and black pants',
162: 'a person with purple top and black pants',
163: 'a person with brown top and black pants',
164: 'a person with brown top and black pants',
165: 'a person with pink top, black backpack and black pants',
166: 'a person with gray top, blue backpack and black pants',
167: 'a person with purple top and black pants',
168: 'a person with purple top and black pants',
169: 'a person with purple top and black pants',
170: 'a person with purple and gray top and black pants',
171: 'a person with purple top and black pants',
172: 'a person with blue top and black pants',
173: 'a person with purple top and black pants',
174: 'a person with purple top and black pants',
175: 'a person with purple top and black pants',
176: 'a person with blue top, gray backpack and black pants',