├── README.md ├── datasets ├── __init__.py └── crowd_semi.py ├── label_list ├── jhu-10.txt ├── jhu-40.txt ├── jhu-5.txt ├── nwpu-10.txt ├── nwpu-40.txt ├── nwpu-5.txt ├── nwpu-val.txt ├── sha-10.txt ├── sha-40.txt ├── sha-5.txt ├── shb-10.txt ├── shb-40.txt ├── shb-5.txt ├── ucf-10.txt ├── ucf-40.txt └── ucf-5.txt ├── losses ├── __init__.py ├── bay_loss_focal.py └── post_gau.py ├── models ├── __init__.py ├── transformer.py └── vgg.py ├── structure.jpg ├── test.py ├── train.py └── utils ├── __init__.py ├── helper.py ├── logger.py ├── regression_trainer.py └── trainer.py /README.md: -------------------------------------------------------------------------------- 1 | # Semi-supervised-Crowd-Counting-via-Density-Agency 2 | Official Implement of ACM Multimedia 2022 paper 'Semi-supervised Crowd Counting via Density Agency' 3 | 4 | [arxiv](https://arxiv.org/pdf/2209.02955.pdf) 5 | 6 | ![image](structure.jpg) 7 | 8 | ## Dataset Preparation 9 | 1. Dowload Dataset. 10 | 2. The Preprocess Code can be referred to [MAN](https://github.com/LoraLinH/Boosting-Crowd-Counting-via-Multifaceted-Attention). 11 | 12 | ## Train 13 | 1. Change the path to where your data and models are located in 'train.py'. 14 | 2. Run 'train.py' 15 | 3. Wait patiently and happily for the program to finish. 16 | 4. Then you will get a good counting model! 17 | 18 | 19 | ## Test 20 | 1. Change the path to where your data and models are located in 'test.py'. 21 | 2. Run 'test.py'. 22 | 23 | ## Citation 24 | If you use this code for your research, please cite our paper: 25 | 26 | ``` 27 | @inproceedings{lin2022semi, 28 | title={Semi-supervised Crowd Counting via Density Agency}, 29 | author={Lin, Hui and Ma, Zhiheng and Hong, Xiaopeng and Wang, Yaowei and Su, Zhou}, 30 | booktitle={ACM Multimedia}, 31 | year={2022} 32 | } 33 | ``` 34 | -------------------------------------------------------------------------------- /datasets/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /datasets/crowd_semi.py: -------------------------------------------------------------------------------- 1 | from PIL import Image 2 | import torch.utils.data as data 3 | import os 4 | from glob import glob 5 | import torch 6 | import torchvision.transforms.functional as F 7 | from torchvision import transforms 8 | import random 9 | import numpy as np 10 | 11 | 12 | def random_crop(im_h, im_w, crop_h, crop_w): 13 | res_h = im_h - crop_h 14 | res_w = im_w - crop_w 15 | i = random.randint(0, res_h) 16 | j = random.randint(0, res_w) 17 | return i, j, crop_h, crop_w 18 | 19 | 20 | def cal_innner_area(c_left, c_up, c_right, c_down, bbox): 21 | inner_left = np.maximum(c_left, bbox[:, 0]) 22 | inner_up = np.maximum(c_up, bbox[:, 1]) 23 | inner_right = np.minimum(c_right, bbox[:, 2]) 24 | inner_down = np.minimum(c_down, bbox[:, 3]) 25 | inner_area = np.maximum(inner_right-inner_left, 0.0) * np.maximum(inner_down-inner_up, 0.0) 26 | return inner_area 27 | 28 | 29 | class Crowd(data.Dataset): 30 | def __init__(self, root_path, crop_size, 31 | downsample_ratio, is_gray=False, 32 | method='train', info=None): 33 | 34 | self.root_path = root_path 35 | self.im_list = sorted(glob(os.path.join(self.root_path, '*.jpg'))) 36 | if method not in ['train', 'val']: 37 | raise Exception("not implement") 38 | self.label_list = [] 39 | if method in ['train']: 40 | try: 41 | with open(os.path.join('label_list', info+'.txt')) as f: 42 | for i in f: 43 | self.label_list.append(i.strip()) 44 | except: 45 | raise Exception("please give right info") 46 | 47 | self.method = method 48 | 49 | self.c_size = crop_size 50 | self.d_ratio = downsample_ratio 51 | assert self.c_size % self.d_ratio == 0 52 | self.dc_size = self.c_size // self.d_ratio 53 | if is_gray: 54 | self.trans = transforms.Compose([ 55 | transforms.ToTensor(), 56 | transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5]) 57 | ]) 58 | else: 59 | self.trans = transforms.Compose([ 60 | transforms.ToTensor(), 61 | transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) 62 | ]) 63 | 64 | def __len__(self): 65 | return len(self.im_list) 66 | 67 | def __getitem__(self, item): 68 | img_path = self.im_list[item] 69 | gd_path = img_path.replace('jpg', 'npy') 70 | img = Image.open(img_path).convert('RGB') 71 | if self.method == 'train': 72 | keypoints = np.load(gd_path) 73 | label = (os.path.basename(img_path) in self.label_list) 74 | return self.train_transform(img, keypoints, label) 75 | elif self.method == 'val': 76 | keypoints = np.load(gd_path) 77 | img = self.trans(img) 78 | name = os.path.basename(img_path).split('.')[0] 79 | return img, len(keypoints), name 80 | 81 | def train_transform(self, img, keypoints, label): 82 | """random crop image patch and find people in it""" 83 | wd, ht = img.size 84 | # assert len(keypoints) > 0 85 | if random.random() > 0.88: 86 | img = img.convert('L').convert('RGB') 87 | re_size = random.random() * 0.5 + 0.75 88 | wdd = (int)(wd * re_size) 89 | htt = (int)(ht * re_size) 90 | if min(wdd, htt) >= self.c_size: 91 | wd = wdd 92 | ht = htt 93 | img = img.resize((wd, ht)) 94 | keypoints = keypoints * re_size 95 | st_size = min(wd, ht) 96 | assert st_size >= self.c_size 97 | i, j, h, w = random_crop(ht, wd, self.c_size, self.c_size) 98 | img = F.crop(img, i, j, h, w) 99 | if len(keypoints) > 0: 100 | nearest_dis = np.clip(keypoints[:, 2], 4.0, 128.0) 101 | 102 | points_left_up = keypoints[:, :2] - nearest_dis[:, None] / 2.0 103 | points_right_down = keypoints[:, :2] + nearest_dis[:, None] / 2.0 104 | bbox = np.concatenate((points_left_up, points_right_down), axis=1) 105 | inner_area = cal_innner_area(j, i, j + w, i + h, bbox) 106 | origin_area = nearest_dis * nearest_dis 107 | ratio = np.clip(1.0 * inner_area / origin_area, 0.0, 1.0) 108 | mask = (ratio >= 0.3) 109 | 110 | target = ratio[mask] 111 | keypoints = keypoints[mask] 112 | keypoints = keypoints[:, :2] - [j, i] # change coodinate 113 | 114 | if len(keypoints) > 0: 115 | if random.random() > 0.5: 116 | img = F.hflip(img) 117 | keypoints[:, 0] = w - keypoints[:, 0] 118 | else: 119 | target = np.array([]) 120 | if random.random() > 0.5: 121 | img = F.hflip(img) 122 | return self.trans(img), torch.from_numpy(keypoints.copy()).float(), \ 123 | torch.from_numpy(target.copy()).float(), st_size, label 124 | -------------------------------------------------------------------------------- /label_list/jhu-10.txt: -------------------------------------------------------------------------------- 1 | 2922.jpg 2 | 1514.jpg 3 | 3818.jpg 4 | 0476.jpg 5 | 2275.jpg 6 | 0207.jpg 7 | 2747.jpg 8 | 3753.jpg 9 | 4302.jpg 10 | 4231.jpg 11 | 0667.jpg 12 | 3471.jpg 13 | 3444.jpg 14 | 3860.jpg 15 | 3293.jpg 16 | 3889.jpg 17 | 2098.jpg 18 | 0314.jpg 19 | 4086.jpg 20 | 2237.jpg 21 | 1137.jpg 22 | 1920.jpg 23 | 0032.jpg 24 | 3058.jpg 25 | 0394.jpg 26 | 2141.jpg 27 | 3292.jpg 28 | 0665.jpg 29 | 4112.jpg 30 | 2072.jpg 31 | 2446.jpg 32 | 1588.jpg 33 | 1807.jpg 34 | 2465.jpg 35 | 1420.jpg 36 | 0039.jpg 37 | 3100.jpg 38 | 1299.jpg 39 | 0201.jpg 40 | 3500.jpg 41 | 1776.jpg 42 | 1319.jpg 43 | 3290.jpg 44 | 0026.jpg 45 | 2837.jpg 46 | 4027.jpg 47 | 3287.jpg 48 | 2214.jpg 49 | 0270.jpg 50 | 3046.jpg 51 | 3150.jpg 52 | 2932.jpg 53 | 2376.jpg 54 | 0280.jpg 55 | 0795.jpg 56 | 2033.jpg 57 | 1804.jpg 58 | 4192.jpg 59 | 2846.jpg 60 | 2151.jpg 61 | 4067.jpg 62 | 1194.jpg 63 | 0393.jpg 64 | 3988.jpg 65 | 2726.jpg 66 | 2820.jpg 67 | 1875.jpg 68 | 4251.jpg 69 | 2630.jpg 70 | 1000.jpg 71 | 0089.jpg 72 | 1091.jpg 73 | 1823.jpg 74 | 1230.jpg 75 | 2557.jpg 76 | 2190.jpg 77 | 3967.jpg 78 | 3474.jpg 79 | 2407.jpg 80 | 1180.jpg 81 | 3152.jpg 82 | 3060.jpg 83 | 2896.jpg 84 | 1176.jpg 85 | 2128.jpg 86 | 0413.jpg 87 | 2481.jpg 88 | 3639.jpg 89 | 3736.jpg 90 | 1440.jpg 91 | 0414.jpg 92 | 1655.jpg 93 | 0135.jpg 94 | 3750.jpg 95 | 1555.jpg 96 | 0994.jpg 97 | 3321.jpg 98 | 2955.jpg 99 | 0989.jpg 100 | 0954.jpg 101 | 0980.jpg 102 | 1995.jpg 103 | 0655.jpg 104 | 2918.jpg 105 | 1316.jpg 106 | 0460.jpg 107 | 1126.jpg 108 | 2235.jpg 109 | 4161.jpg 110 | 1197.jpg 111 | 2787.jpg 112 | 4361.jpg 113 | 2583.jpg 114 | 1998.jpg 115 | 1951.jpg 116 | 0072.jpg 117 | 2926.jpg 118 | 1473.jpg 119 | 3420.jpg 120 | 3317.jpg 121 | 1260.jpg 122 | 0014.jpg 123 | 1704.jpg 124 | 3875.jpg 125 | 1539.jpg 126 | 0518.jpg 127 | 2940.jpg 128 | 0851.jpg 129 | 3428.jpg 130 | 2284.jpg 131 | 1270.jpg 132 | 3748.jpg 133 | 2130.jpg 134 | 3050.jpg 135 | 1495.jpg 136 | 1125.jpg 137 | 2752.jpg 138 | 2865.jpg 139 | 0845.jpg 140 | 0363.jpg 141 | 2682.jpg 142 | 2433.jpg 143 | 2960.jpg 144 | 2681.jpg 145 | 4216.jpg 146 | 3114.jpg 147 | 1168.jpg 148 | 0784.jpg 149 | 1839.jpg 150 | 3874.jpg 151 | 4221.jpg 152 | 2040.jpg 153 | 1844.jpg 154 | 3482.jpg 155 | 0596.jpg 156 | 3863.jpg 157 | 3445.jpg 158 | 0215.jpg 159 | 0717.jpg 160 | 1140.jpg 161 | 4099.jpg 162 | 3893.jpg 163 | 0425.jpg 164 | 0995.jpg 165 | 4338.jpg 166 | 0149.jpg 167 | 4198.jpg 168 | 1809.jpg 169 | 0961.jpg 170 | 1581.jpg 171 | 0452.jpg 172 | 2232.jpg 173 | 3309.jpg 174 | 3353.jpg 175 | 0283.jpg 176 | 2155.jpg 177 | 1160.jpg 178 | 1848.jpg 179 | 4045.jpg 180 | 2801.jpg 181 | 1686.jpg 182 | 1134.jpg 183 | 2343.jpg 184 | 1899.jpg 185 | 0069.jpg 186 | 1459.jpg 187 | 3335.jpg 188 | 3868.jpg 189 | 1763.jpg 190 | 1267.jpg 191 | 1427.jpg 192 | 0513.jpg 193 | 0996.jpg 194 | 3966.jpg 195 | 3319.jpg 196 | 1464.jpg 197 | 0204.jpg 198 | 2058.jpg 199 | 4194.jpg 200 | 2732.jpg 201 | 3965.jpg 202 | 1584.jpg 203 | 3481.jpg 204 | 4258.jpg 205 | 2545.jpg 206 | 0200.jpg 207 | 1255.jpg 208 | 0610.jpg 209 | 1836.jpg 210 | 1408.jpg 211 | 0255.jpg 212 | 0277.jpg 213 | 1032.jpg 214 | 4087.jpg 215 | 1999.jpg 216 | 3124.jpg 217 | 3375.jpg 218 | 4034.jpg 219 | 1759.jpg 220 | 0366.jpg 221 | 0893.jpg 222 | 4003.jpg 223 | 3430.jpg 224 | 2139.jpg 225 | 1735.jpg 226 | 2281.jpg 227 | 0190.jpg 228 | 1698.jpg 229 | -------------------------------------------------------------------------------- /label_list/jhu-40.txt: -------------------------------------------------------------------------------- 1 | 1929.jpg 2 | 2280.jpg 3 | 2020.jpg 4 | 0231.jpg 5 | 2330.jpg 6 | 3751.jpg 7 | 3641.jpg 8 | 1443.jpg 9 | 0750.jpg 10 | 2759.jpg 11 | 1543.jpg 12 | 0187.jpg 13 | 3010.jpg 14 | 3761.jpg 15 | 3309.jpg 16 | 1274.jpg 17 | 2177.jpg 18 | 1156.jpg 19 | 0405.jpg 20 | 3130.jpg 21 | 4153.jpg 22 | 2863.jpg 23 | 0019.jpg 24 | 0204.jpg 25 | 3789.jpg 26 | 1092.jpg 27 | 3136.jpg 28 | 3882.jpg 29 | 3376.jpg 30 | 0947.jpg 31 | 1774.jpg 32 | 2457.jpg 33 | 3017.jpg 34 | 1388.jpg 35 | 2484.jpg 36 | 3980.jpg 37 | 4303.jpg 38 | 1894.jpg 39 | 3643.jpg 40 | 1397.jpg 41 | 3762.jpg 42 | 3670.jpg 43 | 1174.jpg 44 | 2487.jpg 45 | 3115.jpg 46 | 2207.jpg 47 | 0113.jpg 48 | 3866.jpg 49 | 0272.jpg 50 | 1905.jpg 51 | 4251.jpg 52 | 2776.jpg 53 | 0126.jpg 54 | 1839.jpg 55 | 1023.jpg 56 | 4169.jpg 57 | 2500.jpg 58 | 1913.jpg 59 | 3050.jpg 60 | 0314.jpg 61 | 3865.jpg 62 | 2712.jpg 63 | 0241.jpg 64 | 0677.jpg 65 | 2769.jpg 66 | 1171.jpg 67 | 4213.jpg 68 | 3500.jpg 69 | 3319.jpg 70 | 2147.jpg 71 | 3083.jpg 72 | 2397.jpg 73 | 1692.jpg 74 | 3772.jpg 75 | 1755.jpg 76 | 3074.jpg 77 | 0636.jpg 78 | 3268.jpg 79 | 2720.jpg 80 | 3419.jpg 81 | 3732.jpg 82 | 0200.jpg 83 | 2663.jpg 84 | 3874.jpg 85 | 2243.jpg 86 | 1412.jpg 87 | 2031.jpg 88 | 2081.jpg 89 | 1587.jpg 90 | 0081.jpg 91 | 4339.jpg 92 | 4161.jpg 93 | 3106.jpg 94 | 4223.jpg 95 | 0075.jpg 96 | 3804.jpg 97 | 3696.jpg 98 | 1822.jpg 99 | 1571.jpg 100 | 0899.jpg 101 | 2699.jpg 102 | 2222.jpg 103 | 1732.jpg 104 | 1825.jpg 105 | 1847.jpg 106 | 3484.jpg 107 | 3824.jpg 108 | 2439.jpg 109 | 1120.jpg 110 | 1161.jpg 111 | 1157.jpg 112 | 1759.jpg 113 | 0566.jpg 114 | 2964.jpg 115 | 0467.jpg 116 | 1360.jpg 117 | 1178.jpg 118 | 3629.jpg 119 | 1637.jpg 120 | 3494.jpg 121 | 2881.jpg 122 | 2169.jpg 123 | 1339.jpg 124 | 3776.jpg 125 | 2271.jpg 126 | 4069.jpg 127 | 1135.jpg 128 | 2942.jpg 129 | 2114.jpg 130 | 3945.jpg 131 | 4253.jpg 132 | 3290.jpg 133 | 0572.jpg 134 | 0556.jpg 135 | 0474.jpg 136 | 2916.jpg 137 | 3413.jpg 138 | 0870.jpg 139 | 3470.jpg 140 | 0147.jpg 141 | 2482.jpg 142 | 4205.jpg 143 | 1362.jpg 144 | 3003.jpg 145 | 0639.jpg 146 | 1683.jpg 147 | 0710.jpg 148 | 2324.jpg 149 | 3739.jpg 150 | 3936.jpg 151 | 0971.jpg 152 | 2841.jpg 153 | 4018.jpg 154 | 1961.jpg 155 | 0386.jpg 156 | 2266.jpg 157 | 3170.jpg 158 | 4068.jpg 159 | 3322.jpg 160 | 0336.jpg 161 | 0893.jpg 162 | 3067.jpg 163 | 4209.jpg 164 | 3301.jpg 165 | 1917.jpg 166 | 3659.jpg 167 | 0784.jpg 168 | 2380.jpg 169 | 2415.jpg 170 | 0989.jpg 171 | 1473.jpg 172 | 0363.jpg 173 | 0747.jpg 174 | 2027.jpg 175 | 2268.jpg 176 | 3093.jpg 177 | 3730.jpg 178 | 3750.jpg 179 | 4086.jpg 180 | 1270.jpg 181 | 0072.jpg 182 | 3211.jpg 183 | 3235.jpg 184 | 3057.jpg 185 | 4326.jpg 186 | 0268.jpg 187 | 0277.jpg 188 | 2489.jpg 189 | 3479.jpg 190 | 3423.jpg 191 | 1413.jpg 192 | 0621.jpg 193 | 3548.jpg 194 | 1177.jpg 195 | 3860.jpg 196 | 3808.jpg 197 | 1267.jpg 198 | 1372.jpg 199 | 4095.jpg 200 | 1953.jpg 201 | 0795.jpg 202 | 0429.jpg 203 | 1296.jpg 204 | 2040.jpg 205 | 3110.jpg 206 | 0757.jpg 207 | 2810.jpg 208 | 0606.jpg 209 | 2362.jpg 210 | 1668.jpg 211 | 1541.jpg 212 | 3134.jpg 213 | 2972.jpg 214 | 3068.jpg 215 | 2799.jpg 216 | 3553.jpg 217 | 2128.jpg 218 | 0824.jpg 219 | 4158.jpg 220 | 1143.jpg 221 | 3053.jpg 222 | 3366.jpg 223 | 2436.jpg 224 | 4206.jpg 225 | 1004.jpg 226 | 1111.jpg 227 | 3398.jpg 228 | 3339.jpg 229 | 2958.jpg 230 | 0854.jpg 231 | 1241.jpg 232 | 4105.jpg 233 | 2661.jpg 234 | 1724.jpg 235 | 2291.jpg 236 | 2165.jpg 237 | 2235.jpg 238 | 0207.jpg 239 | 3223.jpg 240 | 1935.jpg 241 | 4117.jpg 242 | 1539.jpg 243 | 2287.jpg 244 | 4351.jpg 245 | 4091.jpg 246 | 2729.jpg 247 | 2179.jpg 248 | 0596.jpg 249 | 0685.jpg 250 | 4032.jpg 251 | 0284.jpg 252 | 0424.jpg 253 | 1686.jpg 254 | 2588.jpg 255 | 3526.jpg 256 | 2697.jpg 257 | 0141.jpg 258 | 1848.jpg 259 | 0477.jpg 260 | 1805.jpg 261 | 2662.jpg 262 | 4302.jpg 263 | 2934.jpg 264 | 2444.jpg 265 | 2191.jpg 266 | 3129.jpg 267 | 0368.jpg 268 | 2275.jpg 269 | 4300.jpg 270 | 3402.jpg 271 | 1521.jpg 272 | 2650.jpg 273 | 0456.jpg 274 | 1079.jpg 275 | 2733.jpg 276 | 1194.jpg 277 | 2325.jpg 278 | 0585.jpg 279 | 2038.jpg 280 | 1836.jpg 281 | 0845.jpg 282 | 0393.jpg 283 | 3049.jpg 284 | 3988.jpg 285 | 1630.jpg 286 | 3609.jpg 287 | 3838.jpg 288 | 1593.jpg 289 | 2419.jpg 290 | 3852.jpg 291 | 3703.jpg 292 | 0662.jpg 293 | 3950.jpg 294 | 2875.jpg 295 | 1407.jpg 296 | 0046.jpg 297 | 4219.jpg 298 | 0631.jpg 299 | 1148.jpg 300 | 4040.jpg 301 | 3970.jpg 302 | 4041.jpg 303 | 2987.jpg 304 | 1189.jpg 305 | 3200.jpg 306 | 0206.jpg 307 | 1324.jpg 308 | 3599.jpg 309 | 1672.jpg 310 | 3434.jpg 311 | 1124.jpg 312 | 1785.jpg 313 | 0452.jpg 314 | 2815.jpg 315 | 3185.jpg 316 | 1750.jpg 317 | 2852.jpg 318 | 0553.jpg 319 | 2414.jpg 320 | 1941.jpg 321 | 3265.jpg 322 | 1414.jpg 323 | 1139.jpg 324 | 1857.jpg 325 | 1691.jpg 326 | 1553.jpg 327 | 3554.jpg 328 | 3052.jpg 329 | 0439.jpg 330 | 2411.jpg 331 | 0715.jpg 332 | 2051.jpg 333 | 2993.jpg 334 | 0290.jpg 335 | 1214.jpg 336 | 2981.jpg 337 | 2281.jpg 338 | 3104.jpg 339 | 3475.jpg 340 | 2219.jpg 341 | 1646.jpg 342 | 1727.jpg 343 | 0739.jpg 344 | 2677.jpg 345 | 0534.jpg 346 | 3191.jpg 347 | 2818.jpg 348 | 0688.jpg 349 | 3056.jpg 350 | 2649.jpg 351 | 3061.jpg 352 | 0174.jpg 353 | 2119.jpg 354 | 3183.jpg 355 | 0485.jpg 356 | 0692.jpg 357 | 2607.jpg 358 | 2172.jpg 359 | 0809.jpg 360 | 1902.jpg 361 | 0969.jpg 362 | 2277.jpg 363 | 1247.jpg 364 | 2702.jpg 365 | 2343.jpg 366 | 0489.jpg 367 | 0816.jpg 368 | 0575.jpg 369 | 3954.jpg 370 | 1355.jpg 371 | 1391.jpg 372 | 0905.jpg 373 | 1855.jpg 374 | 2780.jpg 375 | 1786.jpg 376 | 3047.jpg 377 | 2193.jpg 378 | 1053.jpg 379 | 3469.jpg 380 | 0628.jpg 381 | 3070.jpg 382 | 1890.jpg 383 | 1035.jpg 384 | 2494.jpg 385 | 2915.jpg 386 | 0607.jpg 387 | 3416.jpg 388 | 1540.jpg 389 | 2632.jpg 390 | 2435.jpg 391 | 1970.jpg 392 | 1010.jpg 393 | 3615.jpg 394 | 3559.jpg 395 | 3844.jpg 396 | 2434.jpg 397 | 3655.jpg 398 | 3868.jpg 399 | 3877.jpg 400 | 2805.jpg 401 | 2637.jpg 402 | 2775.jpg 403 | 0150.jpg 404 | 0369.jpg 405 | 3060.jpg 406 | 2984.jpg 407 | 2861.jpg 408 | 0337.jpg 409 | 4115.jpg 410 | 4165.jpg 411 | 3254.jpg 412 | 1564.jpg 413 | 1745.jpg 414 | 3157.jpg 415 | 0063.jpg 416 | 3038.jpg 417 | 3238.jpg 418 | 2675.jpg 419 | 1228.jpg 420 | 1886.jpg 421 | 2640.jpg 422 | 3773.jpg 423 | 0329.jpg 424 | 3326.jpg 425 | 3740.jpg 426 | 0664.jpg 427 | 1554.jpg 428 | 2738.jpg 429 | 1137.jpg 430 | 0655.jpg 431 | 1385.jpg 432 | 0190.jpg 433 | 4363.jpg 434 | 1426.jpg 435 | 2940.jpg 436 | 3839.jpg 437 | 2878.jpg 438 | 0367.jpg 439 | 2599.jpg 440 | 1532.jpg 441 | 4113.jpg 442 | 1173.jpg 443 | 0667.jpg 444 | 2705.jpg 445 | 2122.jpg 446 | 1963.jpg 447 | 0239.jpg 448 | 4081.jpg 449 | 4234.jpg 450 | 2234.jpg 451 | 0375.jpg 452 | 2327.jpg 453 | 4059.jpg 454 | 1999.jpg 455 | 2667.jpg 456 | 3653.jpg 457 | 1320.jpg 458 | 1464.jpg 459 | 3337.jpg 460 | 0370.jpg 461 | 1110.jpg 462 | 2630.jpg 463 | 1821.jpg 464 | 0954.jpg 465 | 3144.jpg 466 | 1235.jpg 467 | 0885.jpg 468 | 2582.jpg 469 | 2745.jpg 470 | 1909.jpg 471 | 0956.jpg 472 | 3022.jpg 473 | 0015.jpg 474 | 1144.jpg 475 | 0139.jpg 476 | 1054.jpg 477 | 2066.jpg 478 | 1287.jpg 479 | 3270.jpg 480 | 1454.jpg 481 | 3373.jpg 482 | 3246.jpg 483 | 3058.jpg 484 | 0500.jpg 485 | 1326.jpg 486 | 0428.jpg 487 | 3540.jpg 488 | 3059.jpg 489 | 1305.jpg 490 | 0892.jpg 491 | 0328.jpg 492 | 3509.jpg 493 | 2938.jpg 494 | 3794.jpg 495 | 0300.jpg 496 | 2750.jpg 497 | 0171.jpg 498 | 1538.jpg 499 | 1217.jpg 500 | 1623.jpg 501 | 3635.jpg 502 | 1384.jpg 503 | 1368.jpg 504 | 3900.jpg 505 | 3541.jpg 506 | 3638.jpg 507 | 2657.jpg 508 | 1879.jpg 509 | 0721.jpg 510 | 2655.jpg 511 | 0917.jpg 512 | 3333.jpg 513 | 3317.jpg 514 | 3012.jpg 515 | 2026.jpg 516 | 2555.jpg 517 | 0018.jpg 518 | 0491.jpg 519 | 3465.jpg 520 | 1526.jpg 521 | 2221.jpg 522 | 1215.jpg 523 | 0862.jpg 524 | 2752.jpg 525 | 0501.jpg 526 | 3545.jpg 527 | 0010.jpg 528 | 3004.jpg 529 | 1628.jpg 530 | 0298.jpg 531 | 3091.jpg 532 | 2190.jpg 533 | 2218.jpg 534 | 3089.jpg 535 | 2767.jpg 536 | 2906.jpg 537 | 2321.jpg 538 | 0828.jpg 539 | 2900.jpg 540 | 2735.jpg 541 | 2807.jpg 542 | 4198.jpg 543 | 0270.jpg 544 | 2571.jpg 545 | 0812.jpg 546 | 2532.jpg 547 | 2994.jpg 548 | 3984.jpg 549 | 1313.jpg 550 | 2062.jpg 551 | 3150.jpg 552 | 3825.jpg 553 | 2872.jpg 554 | 2783.jpg 555 | 3931.jpg 556 | 2121.jpg 557 | 0061.jpg 558 | 2778.jpg 559 | 4192.jpg 560 | 0864.jpg 561 | 2232.jpg 562 | 0360.jpg 563 | 2468.jpg 564 | 2715.jpg 565 | 1643.jpg 566 | 2453.jpg 567 | 3669.jpg 568 | 3257.jpg 569 | 1229.jpg 570 | 0197.jpg 571 | 2508.jpg 572 | 1898.jpg 573 | 1002.jpg 574 | 2665.jpg 575 | 3127.jpg 576 | 2233.jpg 577 | 0791.jpg 578 | 1798.jpg 579 | 3785.jpg 580 | 2656.jpg 581 | 0482.jpg 582 | 1448.jpg 583 | 3222.jpg 584 | 1060.jpg 585 | 1127.jpg 586 | 2787.jpg 587 | 1348.jpg 588 | 2029.jpg 589 | 0250.jpg 590 | 0145.jpg 591 | 1995.jpg 592 | 2262.jpg 593 | 1072.jpg 594 | 2438.jpg 595 | 0746.jpg 596 | 2034.jpg 597 | 2348.jpg 598 | 2111.jpg 599 | 2341.jpg 600 | 3738.jpg 601 | 2869.jpg 602 | 0468.jpg 603 | 1975.jpg 604 | 4255.jpg 605 | 3625.jpg 606 | 3861.jpg 607 | 1501.jpg 608 | 2834.jpg 609 | 2691.jpg 610 | 3192.jpg 611 | 2237.jpg 612 | 1581.jpg 613 | 3626.jpg 614 | 2375.jpg 615 | 0292.jpg 616 | 3459.jpg 617 | 0026.jpg 618 | 2319.jpg 619 | 0962.jpg 620 | 1038.jpg 621 | 0324.jpg 622 | 3636.jpg 623 | 0640.jpg 624 | 3226.jpg 625 | 3350.jpg 626 | 2346.jpg 627 | 2183.jpg 628 | 0610.jpg 629 | 4229.jpg 630 | 2446.jpg 631 | 0339.jpg 632 | 2929.jpg 633 | 0320.jpg 634 | 2410.jpg 635 | 3206.jpg 636 | 3689.jpg 637 | 3681.jpg 638 | 2391.jpg 639 | 0851.jpg 640 | 2955.jpg 641 | 0021.jpg 642 | 3307.jpg 643 | 4231.jpg 644 | 1688.jpg 645 | 0158.jpg 646 | 3981.jpg 647 | 1119.jpg 648 | 2113.jpg 649 | 2570.jpg 650 | 3415.jpg 651 | 0964.jpg 652 | 3606.jpg 653 | 1701.jpg 654 | 2539.jpg 655 | 1285.jpg 656 | 1282.jpg 657 | 3535.jpg 658 | 3665.jpg 659 | 2185.jpg 660 | 0811.jpg 661 | 3943.jpg 662 | 2550.jpg 663 | 1899.jpg 664 | 3168.jpg 665 | 1610.jpg 666 | 0448.jpg 667 | 3209.jpg 668 | 2709.jpg 669 | 2941.jpg 670 | 1642.jpg 671 | 3439.jpg 672 | 1508.jpg 673 | 3188.jpg 674 | 3646.jpg 675 | 1551.jpg 676 | 1573.jpg 677 | 1983.jpg 678 | 3590.jpg 679 | 3628.jpg 680 | 1126.jpg 681 | 3279.jpg 682 | 3912.jpg 683 | 2982.jpg 684 | 1528.jpg 685 | 0725.jpg 686 | 1263.jpg 687 | 0387.jpg 688 | 3620.jpg 689 | 0035.jpg 690 | 2210.jpg 691 | 1495.jpg 692 | 3634.jpg 693 | 0001.jpg 694 | 0101.jpg 695 | 3817.jpg 696 | 4364.jpg 697 | 2151.jpg 698 | 0248.jpg 699 | 1611.jpg 700 | 3920.jpg 701 | 4216.jpg 702 | 1471.jpg 703 | 3375.jpg 704 | 2835.jpg 705 | 4344.jpg 706 | 3433.jpg 707 | 4120.jpg 708 | 1478.jpg 709 | 4305.jpg 710 | 0465.jpg 711 | 2867.jpg 712 | 0217.jpg 713 | 1833.jpg 714 | 3974.jpg 715 | 0315.jpg 716 | 2830.jpg 717 | 1290.jpg 718 | 1958.jpg 719 | 3863.jpg 720 | 3474.jpg 721 | 4242.jpg 722 | 2591.jpg 723 | 0846.jpg 724 | 0763.jpg 725 | 2679.jpg 726 | 2583.jpg 727 | 2250.jpg 728 | 0834.jpg 729 | 2282.jpg 730 | 3425.jpg 731 | 3152.jpg 732 | 2288.jpg 733 | 2957.jpg 734 | 2390.jpg 735 | 4203.jpg 736 | 0069.jpg 737 | 0192.jpg 738 | 2048.jpg 739 | 3543.jpg 740 | 1278.jpg 741 | 3688.jpg 742 | 2744.jpg 743 | 1283.jpg 744 | 0442.jpg 745 | 3828.jpg 746 | 0039.jpg 747 | 1445.jpg 748 | 3300.jpg 749 | 3963.jpg 750 | 2133.jpg 751 | 3672.jpg 752 | 2883.jpg 753 | 1356.jpg 754 | 2279.jpg 755 | 3321.jpg 756 | 0528.jpg 757 | 4007.jpg 758 | 0734.jpg 759 | 1604.jpg 760 | 1468.jpg 761 | 3220.jpg 762 | 0668.jpg 763 | 1300.jpg 764 | 3347.jpg 765 | 0635.jpg 766 | 3661.jpg 767 | 2903.jpg 768 | 3867.jpg 769 | 2682.jpg 770 | 0338.jpg 771 | 3426.jpg 772 | 0057.jpg 773 | 1809.jpg 774 | 1948.jpg 775 | 0185.jpg 776 | 0191.jpg 777 | 3511.jpg 778 | 1255.jpg 779 | 2284.jpg 780 | 1121.jpg 781 | 0333.jpg 782 | 1998.jpg 783 | 2918.jpg 784 | 3710.jpg 785 | 2876.jpg 786 | 3767.jpg 787 | 1647.jpg 788 | 1924.jpg 789 | 3247.jpg 790 | 2664.jpg 791 | 2840.jpg 792 | 3992.jpg 793 | 2871.jpg 794 | 1612.jpg 795 | 2726.jpg 796 | 4133.jpg 797 | 1463.jpg 798 | 2080.jpg 799 | 0738.jpg 800 | 0613.jpg 801 | 1240.jpg 802 | 1204.jpg 803 | 4051.jpg 804 | 3186.jpg 805 | 2188.jpg 806 | 3464.jpg 807 | 3533.jpg 808 | 0697.jpg 809 | 2195.jpg 810 | 1425.jpg 811 | 0163.jpg 812 | 3691.jpg 813 | 4039.jpg 814 | 1014.jpg 815 | 2214.jpg 816 | 4200.jpg 817 | 3708.jpg 818 | 2215.jpg 819 | 3564.jpg 820 | 3795.jpg 821 | 2748.jpg 822 | 0487.jpg 823 | 0796.jpg 824 | 2535.jpg 825 | 2256.jpg 826 | 2132.jpg 827 | 2980.jpg 828 | 1889.jpg 829 | 2505.jpg 830 | 1837.jpg 831 | 1227.jpg 832 | 3715.jpg 833 | 1524.jpg 834 | 2701.jpg 835 | 3568.jpg 836 | 4024.jpg 837 | 3490.jpg 838 | 1866.jpg 839 | 2613.jpg 840 | 0480.jpg 841 | 2865.jpg 842 | 0235.jpg 843 | 0932.jpg 844 | 0948.jpg 845 | 0137.jpg 846 | 3835.jpg 847 | 0326.jpg 848 | 1829.jpg 849 | 2765.jpg 850 | 2181.jpg 851 | 1381.jpg 852 | 1844.jpg 853 | 2294.jpg 854 | 3043.jpg 855 | 2596.jpg 856 | 3386.jpg 857 | 2479.jpg 858 | 2575.jpg 859 | 2801.jpg 860 | 0302.jpg 861 | 2507.jpg 862 | 2369.jpg 863 | 0858.jpg 864 | 2022.jpg 865 | 3909.jpg 866 | 1262.jpg 867 | 1751.jpg 868 | 1772.jpg 869 | 0173.jpg 870 | 2811.jpg 871 | 3161.jpg 872 | 4004.jpg 873 | 0966.jpg 874 | 1367.jpg 875 | 0053.jpg 876 | 2770.jpg 877 | 3999.jpg 878 | 4337.jpg 879 | 2848.jpg 880 | 2791.jpg 881 | 4003.jpg 882 | 1431.jpg 883 | 3296.jpg 884 | 1115.jpg 885 | 2228.jpg 886 | 3160.jpg 887 | 0961.jpg 888 | 0077.jpg 889 | 3973.jpg 890 | 2184.jpg 891 | 2887.jpg 892 | 1279.jpg 893 | 3876.jpg 894 | 3230.jpg 895 | 0382.jpg 896 | 3666.jpg 897 | 3753.jpg 898 | 2492.jpg 899 | 1039.jpg 900 | 2629.jpg 901 | 4345.jpg 902 | 0682.jpg 903 | 3392.jpg 904 | 2569.jpg 905 | 1549.jpg 906 | 3482.jpg 907 | 0397.jpg 908 | 4369.jpg 909 | 0078.jpg 910 | -------------------------------------------------------------------------------- /label_list/jhu-5.txt: -------------------------------------------------------------------------------- 1 | 4209.jpg 2 | 3330.jpg 3 | 1305.jpg 4 | 0075.jpg 5 | 4086.jpg 6 | 3391.jpg 7 | 4151.jpg 8 | 0861.jpg 9 | 2127.jpg 10 | 0137.jpg 11 | 0846.jpg 12 | 1153.jpg 13 | 1950.jpg 14 | 0261.jpg 15 | 3926.jpg 16 | 1355.jpg 17 | 2179.jpg 18 | 4229.jpg 19 | 0989.jpg 20 | 1617.jpg 21 | 0998.jpg 22 | 2405.jpg 23 | 1971.jpg 24 | 3571.jpg 25 | 3042.jpg 26 | 4027.jpg 27 | 0063.jpg 28 | 3852.jpg 29 | 2290.jpg 30 | 2165.jpg 31 | 3978.jpg 32 | 1171.jpg 33 | 3317.jpg 34 | 3553.jpg 35 | 1578.jpg 36 | 0173.jpg 37 | 2955.jpg 38 | 0446.jpg 39 | 4162.jpg 40 | 0893.jpg 41 | 2026.jpg 42 | 2737.jpg 43 | 1910.jpg 44 | 2500.jpg 45 | 4234.jpg 46 | 0083.jpg 47 | 0144.jpg 48 | 4031.jpg 49 | 3638.jpg 50 | 0190.jpg 51 | 3864.jpg 52 | 3742.jpg 53 | 2674.jpg 54 | 2781.jpg 55 | 2181.jpg 56 | 2207.jpg 57 | 0501.jpg 58 | 0682.jpg 59 | 3557.jpg 60 | 2323.jpg 61 | 2464.jpg 62 | 4124.jpg 63 | 3940.jpg 64 | 1665.jpg 65 | 0315.jpg 66 | 1184.jpg 67 | 1253.jpg 68 | 3532.jpg 69 | 1469.jpg 70 | 3720.jpg 71 | 3497.jpg 72 | 0406.jpg 73 | 2773.jpg 74 | 3384.jpg 75 | 0394.jpg 76 | 2155.jpg 77 | 1995.jpg 78 | 1256.jpg 79 | 4364.jpg 80 | 3874.jpg 81 | 0988.jpg 82 | 1526.jpg 83 | 3599.jpg 84 | 0197.jpg 85 | 1324.jpg 86 | 1151.jpg 87 | 3046.jpg 88 | 4133.jpg 89 | 2271.jpg 90 | 2991.jpg 91 | 4329.jpg 92 | 0271.jpg 93 | 2635.jpg 94 | 2937.jpg 95 | 1143.jpg 96 | 3906.jpg 97 | 1866.jpg 98 | 3024.jpg 99 | 2245.jpg 100 | 3983.jpg 101 | 0767.jpg 102 | 1977.jpg 103 | 0283.jpg 104 | 0103.jpg 105 | 0141.jpg 106 | 1508.jpg 107 | 3190.jpg 108 | 2726.jpg 109 | 2984.jpg 110 | 3254.jpg 111 | 0014.jpg 112 | 2650.jpg 113 | 2597.jpg 114 | 3091.jpg 115 | -------------------------------------------------------------------------------- /label_list/nwpu-10.txt: -------------------------------------------------------------------------------- 1 | 0793.jpg 2 | 3031.jpg 3 | 1685.jpg 4 | 2742.jpg 5 | 1829.jpg 6 | 2999.jpg 7 | 2787.jpg 8 | 0910.jpg 9 | 0181.jpg 10 | 1531.jpg 11 | 2052.jpg 12 | 0530.jpg 13 | 0514.jpg 14 | 0150.jpg 15 | 2828.jpg 16 | 3044.jpg 17 | 1613.jpg 18 | 1816.jpg 19 | 1330.jpg 20 | 2935.jpg 21 | 2621.jpg 22 | 1924.jpg 23 | 0744.jpg 24 | 0258.jpg 25 | 1122.jpg 26 | 2075.jpg 27 | 1619.jpg 28 | 2068.jpg 29 | 1386.jpg 30 | 1565.jpg 31 | 0325.jpg 32 | 0100.jpg 33 | 2297.jpg 34 | 3021.jpg 35 | 1864.jpg 36 | 0930.jpg 37 | 3074.jpg 38 | 1093.jpg 39 | 0385.jpg 40 | 0891.jpg 41 | 2841.jpg 42 | 2464.jpg 43 | 1768.jpg 44 | 2107.jpg 45 | 0249.jpg 46 | 0877.jpg 47 | 1918.jpg 48 | 2296.jpg 49 | 1467.jpg 50 | 0548.jpg 51 | 2592.jpg 52 | 0337.jpg 53 | 0217.jpg 54 | 0214.jpg 55 | 1672.jpg 56 | 0981.jpg 57 | 2047.jpg 58 | 2815.jpg 59 | 0470.jpg 60 | 2260.jpg 61 | 3093.jpg 62 | 0567.jpg 63 | 2422.jpg 64 | 2281.jpg 65 | 0907.jpg 66 | 2954.jpg 67 | 0020.jpg 68 | 1937.jpg 69 | 1095.jpg 70 | 1714.jpg 71 | 2905.jpg 72 | 2618.jpg 73 | 0899.jpg 74 | 1333.jpg 75 | 1892.jpg 76 | 0180.jpg 77 | 2733.jpg 78 | 2449.jpg 79 | 2139.jpg 80 | 0982.jpg 81 | 0156.jpg 82 | 2519.jpg 83 | 1955.jpg 84 | 0179.jpg 85 | 0367.jpg 86 | 2351.jpg 87 | 0431.jpg 88 | 2264.jpg 89 | 2505.jpg 90 | 1794.jpg 91 | 0159.jpg 92 | 2981.jpg 93 | 1090.jpg 94 | 1969.jpg 95 | 2617.jpg 96 | 3036.jpg 97 | 2236.jpg 98 | 0468.jpg 99 | 0906.jpg 100 | 2752.jpg 101 | 0944.jpg 102 | 0900.jpg 103 | 2726.jpg 104 | 0225.jpg 105 | 1951.jpg 106 | 1250.jpg 107 | 2918.jpg 108 | 0589.jpg 109 | 3015.jpg 110 | 2106.jpg 111 | 0266.jpg 112 | 2702.jpg 113 | 2906.jpg 114 | 2595.jpg 115 | 1920.jpg 116 | 3017.jpg 117 | 2146.jpg 118 | 0769.jpg 119 | 2921.jpg 120 | 0144.jpg 121 | 0106.jpg 122 | 0167.jpg 123 | 2042.jpg 124 | 0378.jpg 125 | 2226.jpg 126 | 1113.jpg 127 | 0346.jpg 128 | 0752.jpg 129 | 1936.jpg 130 | 1827.jpg 131 | 1501.jpg 132 | 0637.jpg 133 | 2913.jpg 134 | 0441.jpg 135 | 0729.jpg 136 | 2013.jpg 137 | 2513.jpg 138 | 2468.jpg 139 | 1703.jpg 140 | 0648.jpg 141 | 1292.jpg 142 | 0450.jpg 143 | 0139.jpg 144 | 1986.jpg 145 | 0748.jpg 146 | 0776.jpg 147 | 0404.jpg 148 | 1353.jpg 149 | 1812.jpg 150 | 0645.jpg 151 | 1070.jpg 152 | 1627.jpg 153 | 1921.jpg 154 | 2597.jpg 155 | 2152.jpg 156 | 2790.jpg 157 | 2748.jpg 158 | 1154.jpg 159 | 0275.jpg 160 | 2189.jpg 161 | 3095.jpg 162 | 2004.jpg 163 | 1370.jpg 164 | 2470.jpg 165 | 1723.jpg 166 | 1839.jpg 167 | 2762.jpg 168 | 1645.jpg 169 | 1751.jpg 170 | 0259.jpg 171 | 2622.jpg 172 | 0002.jpg 173 | 1143.jpg 174 | 1290.jpg 175 | 1758.jpg 176 | 2308.jpg 177 | 2171.jpg 178 | 2983.jpg 179 | 0354.jpg 180 | 2318.jpg 181 | 2454.jpg 182 | 1803.jpg 183 | 0565.jpg 184 | 2467.jpg 185 | 2858.jpg 186 | 0116.jpg 187 | 1134.jpg 188 | 2100.jpg 189 | 1540.jpg 190 | 0222.jpg 191 | 0881.jpg 192 | 1360.jpg 193 | 0988.jpg 194 | 1047.jpg 195 | 2808.jpg 196 | 1006.jpg 197 | 0521.jpg 198 | 2709.jpg 199 | 1696.jpg 200 | 1781.jpg 201 | 2630.jpg 202 | 2548.jpg 203 | 1826.jpg 204 | 1740.jpg 205 | 1550.jpg 206 | 2485.jpg 207 | 1127.jpg 208 | 2466.jpg 209 | 0666.jpg 210 | 1050.jpg 211 | 2083.jpg 212 | 2043.jpg 213 | 2637.jpg 214 | 1900.jpg 215 | 2445.jpg 216 | 1564.jpg 217 | 2064.jpg 218 | 2666.jpg 219 | 2392.jpg 220 | 0011.jpg 221 | 0583.jpg 222 | 2446.jpg 223 | 0027.jpg 224 | 0578.jpg 225 | 0777.jpg 226 | 1598.jpg 227 | 0595.jpg 228 | 1610.jpg 229 | 1347.jpg 230 | 2852.jpg 231 | 2460.jpg 232 | 2055.jpg 233 | 1649.jpg 234 | 2475.jpg 235 | 0155.jpg 236 | 2239.jpg 237 | 1144.jpg 238 | 2649.jpg 239 | 2158.jpg 240 | 2059.jpg 241 | 2926.jpg 242 | 2038.jpg 243 | 2561.jpg 244 | 2005.jpg 245 | 0585.jpg 246 | 1378.jpg 247 | 0770.jpg 248 | 0784.jpg 249 | 2796.jpg 250 | 1516.jpg 251 | 0069.jpg 252 | 0439.jpg 253 | 0379.jpg 254 | 1406.jpg 255 | 2428.jpg 256 | 0428.jpg 257 | 1057.jpg 258 | 0185.jpg 259 | 0643.jpg 260 | 3073.jpg 261 | 2404.jpg 262 | 1082.jpg 263 | 0681.jpg 264 | 0760.jpg 265 | 1465.jpg 266 | 2675.jpg 267 | 2613.jpg 268 | 0788.jpg 269 | 3037.jpg 270 | 0157.jpg 271 | 0987.jpg 272 | 0041.jpg 273 | 2086.jpg 274 | 3042.jpg 275 | 2112.jpg 276 | 0190.jpg 277 | 0590.jpg 278 | 0878.jpg 279 | 2672.jpg 280 | 2343.jpg 281 | 0680.jpg 282 | 1691.jpg 283 | 0183.jpg 284 | 1929.jpg 285 | 1964.jpg 286 | 1225.jpg 287 | 2919.jpg 288 | 1307.jpg 289 | 1169.jpg 290 | 1395.jpg 291 | 2008.jpg 292 | 2025.jpg 293 | 3022.jpg 294 | 1435.jpg 295 | 1779.jpg 296 | 2266.jpg 297 | 1590.jpg 298 | 0627.jpg 299 | 1881.jpg 300 | 2789.jpg 301 | 2997.jpg 302 | 0478.jpg 303 | 0792.jpg 304 | 1309.jpg 305 | 1931.jpg 306 | 3085.jpg 307 | 2722.jpg 308 | 3060.jpg 309 | 1994.jpg 310 | 1296.jpg 311 | -------------------------------------------------------------------------------- /label_list/nwpu-40.txt: -------------------------------------------------------------------------------- 1 | 2162.jpg 2 | 2428.jpg 3 | 2528.jpg 4 | 3012.jpg 5 | 2166.jpg 6 | 2150.jpg 7 | 0300.jpg 8 | 1672.jpg 9 | 0550.jpg 10 | 0795.jpg 11 | 0193.jpg 12 | 2390.jpg 13 | 2451.jpg 14 | 1487.jpg 15 | 0257.jpg 16 | 2682.jpg 17 | 2577.jpg 18 | 0955.jpg 19 | 2392.jpg 20 | 0362.jpg 21 | 1166.jpg 22 | 1799.jpg 23 | 2134.jpg 24 | 2848.jpg 25 | 1184.jpg 26 | 2157.jpg 27 | 1081.jpg 28 | 1408.jpg 29 | 1603.jpg 30 | 2485.jpg 31 | 2792.jpg 32 | 0546.jpg 33 | 0092.jpg 34 | 1417.jpg 35 | 1821.jpg 36 | 1904.jpg 37 | 1009.jpg 38 | 3033.jpg 39 | 1550.jpg 40 | 2111.jpg 41 | 2964.jpg 42 | 1803.jpg 43 | 2925.jpg 44 | 2239.jpg 45 | 0561.jpg 46 | 1202.jpg 47 | 2047.jpg 48 | 1110.jpg 49 | 2717.jpg 50 | 0678.jpg 51 | 1357.jpg 52 | 0771.jpg 53 | 1246.jpg 54 | 1330.jpg 55 | 0418.jpg 56 | 1175.jpg 57 | 1938.jpg 58 | 1823.jpg 59 | 2561.jpg 60 | 2514.jpg 61 | 1323.jpg 62 | 0261.jpg 63 | 1686.jpg 64 | 2836.jpg 65 | 0810.jpg 66 | 1893.jpg 67 | 2331.jpg 68 | 2123.jpg 69 | 0965.jpg 70 | 0659.jpg 71 | 1158.jpg 72 | 0024.jpg 73 | 0439.jpg 74 | 1195.jpg 75 | 2840.jpg 76 | 0867.jpg 77 | 1306.jpg 78 | 0691.jpg 79 | 2990.jpg 80 | 0425.jpg 81 | 2707.jpg 82 | 0051.jpg 83 | 2576.jpg 84 | 0924.jpg 85 | 0580.jpg 86 | 2059.jpg 87 | 1784.jpg 88 | 0610.jpg 89 | 1490.jpg 90 | 1385.jpg 91 | 1410.jpg 92 | 2957.jpg 93 | 0440.jpg 94 | 0833.jpg 95 | 0824.jpg 96 | 2857.jpg 97 | 1521.jpg 98 | 1234.jpg 99 | 0555.jpg 100 | 0079.jpg 101 | 0600.jpg 102 | 2304.jpg 103 | 1687.jpg 104 | 0385.jpg 105 | 0155.jpg 106 | 1775.jpg 107 | 2715.jpg 108 | 0302.jpg 109 | 1456.jpg 110 | 1201.jpg 111 | 0053.jpg 112 | 2411.jpg 113 | 0285.jpg 114 | 2860.jpg 115 | 1605.jpg 116 | 0680.jpg 117 | 1685.jpg 118 | 1517.jpg 119 | 2237.jpg 120 | 0078.jpg 121 | 2441.jpg 122 | 0568.jpg 123 | 1607.jpg 124 | 2966.jpg 125 | 1630.jpg 126 | 1030.jpg 127 | 0757.jpg 128 | 2249.jpg 129 | 0954.jpg 130 | 1946.jpg 131 | 2146.jpg 132 | 0521.jpg 133 | 0724.jpg 134 | 1802.jpg 135 | 0419.jpg 136 | 2893.jpg 137 | 1327.jpg 138 | 0374.jpg 139 | 1978.jpg 140 | 3001.jpg 141 | 1375.jpg 142 | 0747.jpg 143 | 1789.jpg 144 | 0207.jpg 145 | 1426.jpg 146 | 0599.jpg 147 | 0111.jpg 148 | 1359.jpg 149 | 0723.jpg 150 | 0501.jpg 151 | 3039.jpg 152 | 2636.jpg 153 | 0949.jpg 154 | 0758.jpg 155 | 2129.jpg 156 | 0995.jpg 157 | 1061.jpg 158 | 0260.jpg 159 | 2301.jpg 160 | 0034.jpg 161 | 2928.jpg 162 | 2430.jpg 163 | 0892.jpg 164 | 3010.jpg 165 | 0980.jpg 166 | 1341.jpg 167 | 2623.jpg 168 | 0791.jpg 169 | 2257.jpg 170 | 1709.jpg 171 | 0982.jpg 172 | 2556.jpg 173 | 1091.jpg 174 | 2692.jpg 175 | 1541.jpg 176 | 0342.jpg 177 | 1854.jpg 178 | 2804.jpg 179 | 2842.jpg 180 | 2038.jpg 181 | 0734.jpg 182 | 0895.jpg 183 | 0376.jpg 184 | 0141.jpg 185 | 2748.jpg 186 | 1052.jpg 187 | 0929.jpg 188 | 1777.jpg 189 | 1909.jpg 190 | 1479.jpg 191 | 2807.jpg 192 | 1367.jpg 193 | 1766.jpg 194 | 2310.jpg 195 | 2023.jpg 196 | 1157.jpg 197 | 0987.jpg 198 | 1890.jpg 199 | 1920.jpg 200 | 1769.jpg 201 | 0964.jpg 202 | 2774.jpg 203 | 0784.jpg 204 | 0910.jpg 205 | 1985.jpg 206 | 2234.jpg 207 | 2087.jpg 208 | 1458.jpg 209 | 0435.jpg 210 | 2951.jpg 211 | 1320.jpg 212 | 1148.jpg 213 | 0446.jpg 214 | 0673.jpg 215 | 0044.jpg 216 | 0431.jpg 217 | 2746.jpg 218 | 0585.jpg 219 | 1937.jpg 220 | 2307.jpg 221 | 0216.jpg 222 | 1432.jpg 223 | 2200.jpg 224 | 2641.jpg 225 | 2427.jpg 226 | 2319.jpg 227 | 1324.jpg 228 | 0460.jpg 229 | 1401.jpg 230 | 1501.jpg 231 | 3077.jpg 232 | 1402.jpg 233 | 2013.jpg 234 | 2711.jpg 235 | 2083.jpg 236 | 0507.jpg 237 | 0138.jpg 238 | 0314.jpg 239 | 0370.jpg 240 | 0232.jpg 241 | 2396.jpg 242 | 1834.jpg 243 | 1842.jpg 244 | 2133.jpg 245 | 0616.jpg 246 | 1276.jpg 247 | 2318.jpg 248 | 0445.jpg 249 | 2546.jpg 250 | 1249.jpg 251 | 0084.jpg 252 | 0094.jpg 253 | 2442.jpg 254 | 1529.jpg 255 | 2406.jpg 256 | 2093.jpg 257 | 1940.jpg 258 | 0739.jpg 259 | 1271.jpg 260 | 0945.jpg 261 | 0732.jpg 262 | 0225.jpg 263 | 0635.jpg 264 | 0907.jpg 265 | 1598.jpg 266 | 1318.jpg 267 | 2844.jpg 268 | 3094.jpg 269 | 1248.jpg 270 | 2196.jpg 271 | 1586.jpg 272 | 0331.jpg 273 | 1206.jpg 274 | 1500.jpg 275 | 1142.jpg 276 | 2784.jpg 277 | 2706.jpg 278 | 0303.jpg 279 | 3089.jpg 280 | 1604.jpg 281 | 3078.jpg 282 | 2883.jpg 283 | 1109.jpg 284 | 1846.jpg 285 | 1064.jpg 286 | 2511.jpg 287 | 1512.jpg 288 | 2470.jpg 289 | 0174.jpg 290 | 0359.jpg 291 | 1189.jpg 292 | 1144.jpg 293 | 2373.jpg 294 | 0672.jpg 295 | 1120.jpg 296 | 1416.jpg 297 | 1293.jpg 298 | 2961.jpg 299 | 2949.jpg 300 | 1072.jpg 301 | 2688.jpg 302 | 0597.jpg 303 | 2147.jpg 304 | 0101.jpg 305 | 2759.jpg 306 | 0950.jpg 307 | 0882.jpg 308 | 1395.jpg 309 | 1994.jpg 310 | 1173.jpg 311 | 0947.jpg 312 | 2119.jpg 313 | 2282.jpg 314 | 2225.jpg 315 | 2850.jpg 316 | 2031.jpg 317 | 2797.jpg 318 | 2568.jpg 319 | 0900.jpg 320 | 2685.jpg 321 | 2054.jpg 322 | 1143.jpg 323 | 2547.jpg 324 | 1407.jpg 325 | 0799.jpg 326 | 2606.jpg 327 | 2781.jpg 328 | 0014.jpg 329 | 0406.jpg 330 | 0809.jpg 331 | 0097.jpg 332 | 1339.jpg 333 | 2053.jpg 334 | 0927.jpg 335 | 1757.jpg 336 | 2634.jpg 337 | 2703.jpg 338 | 2601.jpg 339 | 2343.jpg 340 | 1918.jpg 341 | 1848.jpg 342 | 2195.jpg 343 | 2010.jpg 344 | 1337.jpg 345 | 0812.jpg 346 | 3002.jpg 347 | 1433.jpg 348 | 1028.jpg 349 | 2726.jpg 350 | 2172.jpg 351 | 1139.jpg 352 | 2073.jpg 353 | 2796.jpg 354 | 2522.jpg 355 | 0780.jpg 356 | 0948.jpg 357 | 0434.jpg 358 | 1602.jpg 359 | 1032.jpg 360 | 0290.jpg 361 | 0974.jpg 362 | 2314.jpg 363 | 0497.jpg 364 | 1240.jpg 365 | 1372.jpg 366 | 1596.jpg 367 | 0459.jpg 368 | 1073.jpg 369 | 2191.jpg 370 | 0488.jpg 371 | 1880.jpg 372 | 2096.jpg 373 | 1083.jpg 374 | 2769.jpg 375 | 2782.jpg 376 | 3051.jpg 377 | 2537.jpg 378 | 0242.jpg 379 | 0457.jpg 380 | 0821.jpg 381 | 2974.jpg 382 | 0637.jpg 383 | 0762.jpg 384 | 1138.jpg 385 | 2359.jpg 386 | 0677.jpg 387 | 0489.jpg 388 | 0190.jpg 389 | 1696.jpg 390 | 0403.jpg 391 | 2773.jpg 392 | 1527.jpg 393 | 2452.jpg 394 | 0286.jpg 395 | 0049.jpg 396 | 0366.jpg 397 | 2559.jpg 398 | 0571.jpg 399 | 1506.jpg 400 | 1360.jpg 401 | 2882.jpg 402 | 2069.jpg 403 | 1117.jpg 404 | 1092.jpg 405 | 1430.jpg 406 | 0037.jpg 407 | 0271.jpg 408 | 2346.jpg 409 | 0612.jpg 410 | 0214.jpg 411 | 1922.jpg 412 | 2058.jpg 413 | 0400.jpg 414 | 2865.jpg 415 | 0899.jpg 416 | 1365.jpg 417 | 1241.jpg 418 | 0978.jpg 419 | 2881.jpg 420 | 0136.jpg 421 | 1661.jpg 422 | 1959.jpg 423 | 2663.jpg 424 | 1161.jpg 425 | 0735.jpg 426 | 0422.jpg 427 | 1818.jpg 428 | 2405.jpg 429 | 2562.jpg 430 | 2002.jpg 431 | 1822.jpg 432 | 2107.jpg 433 | 1067.jpg 434 | 0829.jpg 435 | 0355.jpg 436 | 0467.jpg 437 | 2861.jpg 438 | 1353.jpg 439 | 1268.jpg 440 | 0888.jpg 441 | 0086.jpg 442 | 1781.jpg 443 | 2474.jpg 444 | 1294.jpg 445 | 0035.jpg 446 | 0413.jpg 447 | 1608.jpg 448 | 0839.jpg 449 | 0420.jpg 450 | 0191.jpg 451 | 2218.jpg 452 | 0123.jpg 453 | 1844.jpg 454 | 0508.jpg 455 | 1104.jpg 456 | 0320.jpg 457 | 1124.jpg 458 | 2383.jpg 459 | 2418.jpg 460 | 1997.jpg 461 | 0294.jpg 462 | 0524.jpg 463 | 2526.jpg 464 | 1027.jpg 465 | 0931.jpg 466 | 1663.jpg 467 | 0365.jpg 468 | 2518.jpg 469 | 1514.jpg 470 | 2847.jpg 471 | 0533.jpg 472 | 1204.jpg 473 | 0741.jpg 474 | 2395.jpg 475 | 1226.jpg 476 | 1626.jpg 477 | 1374.jpg 478 | 1156.jpg 479 | 0623.jpg 480 | 1974.jpg 481 | 0251.jpg 482 | 1348.jpg 483 | 1391.jpg 484 | 1714.jpg 485 | 2637.jpg 486 | 1344.jpg 487 | 2475.jpg 488 | 2958.jpg 489 | 0042.jpg 490 | 2098.jpg 491 | 2837.jpg 492 | 1214.jpg 493 | 2329.jpg 494 | 0999.jpg 495 | 0494.jpg 496 | 2156.jpg 497 | 2993.jpg 498 | 2659.jpg 499 | 1333.jpg 500 | 0436.jpg 501 | 0398.jpg 502 | 0514.jpg 503 | 1233.jpg 504 | 1307.jpg 505 | 1575.jpg 506 | 2931.jpg 507 | 1082.jpg 508 | 0916.jpg 509 | 2159.jpg 510 | 0715.jpg 511 | 2130.jpg 512 | 0045.jpg 513 | 0236.jpg 514 | 2639.jpg 515 | 1508.jpg 516 | 0252.jpg 517 | 0719.jpg 518 | 1557.jpg 519 | 2264.jpg 520 | 1829.jpg 521 | 1077.jpg 522 | 0681.jpg 523 | 0095.jpg 524 | 2457.jpg 525 | 1058.jpg 526 | 1252.jpg 527 | 0265.jpg 528 | 0544.jpg 529 | 3087.jpg 530 | 1452.jpg 531 | 1774.jpg 532 | 1668.jpg 533 | 0394.jpg 534 | 0932.jpg 535 | 2468.jpg 536 | 0729.jpg 537 | 3081.jpg 538 | 0750.jpg 539 | 0469.jpg 540 | 1250.jpg 541 | 2833.jpg 542 | 2469.jpg 543 | 1108.jpg 544 | 0338.jpg 545 | 1943.jpg 546 | 1996.jpg 547 | 1122.jpg 548 | 0626.jpg 549 | 1972.jpg 550 | 1328.jpg 551 | 0327.jpg 552 | 2652.jpg 553 | 1232.jpg 554 | 0062.jpg 555 | 2410.jpg 556 | 1343.jpg 557 | 0960.jpg 558 | 0783.jpg 559 | 0360.jpg 560 | 1321.jpg 561 | 0529.jpg 562 | 1251.jpg 563 | 0613.jpg 564 | 0464.jpg 565 | 2167.jpg 566 | 2538.jpg 567 | 0390.jpg 568 | 0854.jpg 569 | 0601.jpg 570 | 1882.jpg 571 | 2312.jpg 572 | 0203.jpg 573 | 1080.jpg 574 | 2420.jpg 575 | 2604.jpg 576 | 1640.jpg 577 | 2009.jpg 578 | 1210.jpg 579 | 1902.jpg 580 | 0149.jpg 581 | 1792.jpg 582 | 0648.jpg 583 | 2222.jpg 584 | 2862.jpg 585 | 3041.jpg 586 | 0994.jpg 587 | 2551.jpg 588 | 1641.jpg 589 | 1913.jpg 590 | 1673.jpg 591 | 1495.jpg 592 | 1380.jpg 593 | 2240.jpg 594 | 1704.jpg 595 | 1315.jpg 596 | 0250.jpg 597 | 2421.jpg 598 | 1085.jpg 599 | 0213.jpg 600 | 1289.jpg 601 | 2391.jpg 602 | 1956.jpg 603 | 0861.jpg 604 | 0650.jpg 605 | 1535.jpg 606 | 0543.jpg 607 | 1335.jpg 608 | 3169.jpg 609 | 1717.jpg 610 | 0479.jpg 611 | 1101.jpg 612 | 1764.jpg 613 | 1235.jpg 614 | 1912.jpg 615 | 2399.jpg 616 | 1750.jpg 617 | 2275.jpg 618 | 2687.jpg 619 | 0792.jpg 620 | 1923.jpg 621 | 0963.jpg 622 | 3018.jpg 623 | 1225.jpg 624 | 2853.jpg 625 | 1497.jpg 626 | 0769.jpg 627 | 2048.jpg 628 | 0027.jpg 629 | 2823.jpg 630 | 1540.jpg 631 | 1459.jpg 632 | 1196.jpg 633 | 0519.jpg 634 | 0822.jpg 635 | 2007.jpg 636 | 0905.jpg 637 | 2772.jpg 638 | 1728.jpg 639 | 0083.jpg 640 | 1697.jpg 641 | 1018.jpg 642 | 2030.jpg 643 | 2879.jpg 644 | 2020.jpg 645 | 3037.jpg 646 | 1000.jpg 647 | 0219.jpg 648 | 0770.jpg 649 | 0786.jpg 650 | 2459.jpg 651 | 2089.jpg 652 | 1463.jpg 653 | 1496.jpg 654 | 1326.jpg 655 | 1590.jpg 656 | 1853.jpg 657 | 0490.jpg 658 | 2034.jpg 659 | 2969.jpg 660 | 0713.jpg 661 | 2305.jpg 662 | 0716.jpg 663 | 1742.jpg 664 | 0119.jpg 665 | 0940.jpg 666 | 0411.jpg 667 | 0751.jpg 668 | 1253.jpg 669 | 1219.jpg 670 | 1200.jpg 671 | 1934.jpg 672 | 1526.jpg 673 | 1921.jpg 674 | 2729.jpg 675 | 0473.jpg 676 | 0426.jpg 677 | 2012.jpg 678 | 0212.jpg 679 | 0688.jpg 680 | 2791.jpg 681 | 2697.jpg 682 | 2826.jpg 683 | 2500.jpg 684 | 2608.jpg 685 | 0132.jpg 686 | 2667.jpg 687 | 2080.jpg 688 | 1929.jpg 689 | 0316.jpg 690 | 2900.jpg 691 | 0378.jpg 692 | 2904.jpg 693 | 2977.jpg 694 | 0150.jpg 695 | 0534.jpg 696 | 0860.jpg 697 | 1445.jpg 698 | 2262.jpg 699 | 1957.jpg 700 | 0997.jpg 701 | 1988.jpg 702 | 0337.jpg 703 | 0160.jpg 704 | 1287.jpg 705 | 0986.jpg 706 | 2492.jpg 707 | 0270.jpg 708 | 0522.jpg 709 | 2341.jpg 710 | 0288.jpg 711 | 2520.jpg 712 | 0520.jpg 713 | 0018.jpg 714 | 0017.jpg 715 | 1768.jpg 716 | 1760.jpg 717 | 2698.jpg 718 | 1481.jpg 719 | 1062.jpg 720 | 1983.jpg 721 | 1903.jpg 722 | 2494.jpg 723 | 0516.jpg 724 | 3038.jpg 725 | 2555.jpg 726 | 1859.jpg 727 | 0108.jpg 728 | 0560.jpg 729 | 1736.jpg 730 | 1998.jpg 731 | 0107.jpg 732 | 0883.jpg 733 | 0868.jpg 734 | 1636.jpg 735 | 0109.jpg 736 | 0938.jpg 737 | 0671.jpg 738 | 0556.jpg 739 | 0465.jpg 740 | 2613.jpg 741 | 1096.jpg 742 | 0894.jpg 743 | 2279.jpg 744 | 0865.jpg 745 | 2493.jpg 746 | 1007.jpg 747 | 2056.jpg 748 | 1618.jpg 749 | 0726.jpg 750 | 1961.jpg 751 | 0256.jpg 752 | 2978.jpg 753 | 0059.jpg 754 | 0188.jpg 755 | 2448.jpg 756 | 0851.jpg 757 | 0197.jpg 758 | 0448.jpg 759 | 1509.jpg 760 | 2897.jpg 761 | 2431.jpg 762 | 1150.jpg 763 | 1485.jpg 764 | 2165.jpg 765 | 0003.jpg 766 | 1406.jpg 767 | 2889.jpg 768 | 3059.jpg 769 | 0722.jpg 770 | 2597.jpg 771 | 2027.jpg 772 | 0666.jpg 773 | 0566.jpg 774 | 1412.jpg 775 | 0324.jpg 776 | 3021.jpg 777 | 1507.jpg 778 | 2905.jpg 779 | 1187.jpg 780 | 1425.jpg 781 | 2032.jpg 782 | 1364.jpg 783 | 0720.jpg 784 | 1102.jpg 785 | 1071.jpg 786 | 0956.jpg 787 | 2994.jpg 788 | 0781.jpg 789 | 2694.jpg 790 | 2024.jpg 791 | 1617.jpg 792 | 2326.jpg 793 | 2506.jpg 794 | 0131.jpg 795 | 0608.jpg 796 | 1049.jpg 797 | 2251.jpg 798 | 0112.jpg 799 | 0939.jpg 800 | 0738.jpg 801 | 0089.jpg 802 | 1578.jpg 803 | 2043.jpg 804 | 0807.jpg 805 | 1767.jpg 806 | 2795.jpg 807 | 1908.jpg 808 | 0031.jpg 809 | 0332.jpg 810 | 2439.jpg 811 | 2661.jpg 812 | 1716.jpg 813 | 1600.jpg 814 | 0117.jpg 815 | 1562.jpg 816 | 1230.jpg 817 | 0828.jpg 818 | 0652.jpg 819 | 0970.jpg 820 | 1057.jpg 821 | 1739.jpg 822 | 3035.jpg 823 | 0181.jpg 824 | 1699.jpg 825 | 1297.jpg 826 | 1362.jpg 827 | 0127.jpg 828 | 2854.jpg 829 | 0513.jpg 830 | 2351.jpg 831 | 2649.jpg 832 | 0305.jpg 833 | 0356.jpg 834 | 1576.jpg 835 | 1753.jpg 836 | 1051.jpg 837 | 1751.jpg 838 | 0313.jpg 839 | 2153.jpg 840 | 2185.jpg 841 | 2152.jpg 842 | 3102.jpg 843 | 1945.jpg 844 | 3022.jpg 845 | 0229.jpg 846 | 1270.jpg 847 | 0325.jpg 848 | 2749.jpg 849 | 1046.jpg 850 | 1180.jpg 851 | 0857.jpg 852 | 0118.jpg 853 | 2695.jpg 854 | 1008.jpg 855 | 2362.jpg 856 | 1159.jpg 857 | 2815.jpg 858 | 2287.jpg 859 | 3019.jpg 860 | 0858.jpg 861 | 1141.jpg 862 | 1659.jpg 863 | 0665.jpg 864 | 0577.jpg 865 | 1830.jpg 866 | 1475.jpg 867 | 1981.jpg 868 | 0451.jpg 869 | 1555.jpg 870 | 0076.jpg 871 | 1776.jpg 872 | 2794.jpg 873 | 0875.jpg 874 | 0238.jpg 875 | 3085.jpg 876 | 2171.jpg 877 | 1911.jpg 878 | 2281.jpg 879 | 0179.jpg 880 | 1892.jpg 881 | 0396.jpg 882 | 1347.jpg 883 | 0192.jpg 884 | 1089.jpg 885 | 1224.jpg 886 | 1583.jpg 887 | 2744.jpg 888 | 2787.jpg 889 | 2693.jpg 890 | 1045.jpg 891 | 2079.jpg 892 | 2143.jpg 893 | 2050.jpg 894 | 2704.jpg 895 | 0705.jpg 896 | 0504.jpg 897 | 1029.jpg 898 | 0913.jpg 899 | 0774.jpg 900 | 2266.jpg 901 | 2479.jpg 902 | 1389.jpg 903 | 2585.jpg 904 | 1707.jpg 905 | 1840.jpg 906 | 1549.jpg 907 | 1221.jpg 908 | 1874.jpg 909 | 2638.jpg 910 | 0846.jpg 911 | 0505.jpg 912 | 2610.jpg 913 | 1427.jpg 914 | 1566.jpg 915 | 2618.jpg 916 | 1361.jpg 917 | 0200.jpg 918 | 1188.jpg 919 | 2534.jpg 920 | 2758.jpg 921 | 2926.jpg 922 | 1858.jpg 923 | 0971.jpg 924 | 2903.jpg 925 | 0437.jpg 926 | 2829.jpg 927 | 2498.jpg 928 | 1273.jpg 929 | 2910.jpg 930 | 2311.jpg 931 | 2984.jpg 932 | 1149.jpg 933 | 1163.jpg 934 | 0023.jpg 935 | 1746.jpg 936 | 2294.jpg 937 | 2770.jpg 938 | 2841.jpg 939 | 0453.jpg 940 | 2120.jpg 941 | 1820.jpg 942 | 2970.jpg 943 | 1574.jpg 944 | 0573.jpg 945 | 2338.jpg 946 | 0447.jpg 947 | 2612.jpg 948 | 1951.jpg 949 | 1107.jpg 950 | 2864.jpg 951 | 0231.jpg 952 | 2943.jpg 953 | 2691.jpg 954 | 2716.jpg 955 | 1132.jpg 956 | 2763.jpg 957 | 2465.jpg 958 | 1087.jpg 959 | 1927.jpg 960 | 0272.jpg 961 | 1545.jpg 962 | 1568.jpg 963 | 1876.jpg 964 | 0526.jpg 965 | 2040.jpg 966 | 1691.jpg 967 | 3092.jpg 968 | 2902.jpg 969 | 0584.jpg 970 | 2350.jpg 971 | 2593.jpg 972 | 2284.jpg 973 | 2181.jpg 974 | 1467.jpg 975 | 2741.jpg 976 | 2510.jpg 977 | 2647.jpg 978 | 0967.jpg 979 | 0468.jpg 980 | 1436.jpg 981 | 2806.jpg 982 | 0125.jpg 983 | 1370.jpg 984 | 1310.jpg 985 | 2466.jpg 986 | 2532.jpg 987 | 1770.jpg 988 | 1332.jpg 989 | 2254.jpg 990 | 3105.jpg 991 | 1179.jpg 992 | 0605.jpg 993 | 2382.jpg 994 | 0618.jpg 995 | 0028.jpg 996 | 2819.jpg 997 | 0158.jpg 998 | 1896.jpg 999 | 0156.jpg 1000 | 2247.jpg 1001 | 2817.jpg 1002 | 0976.jpg 1003 | 2867.jpg 1004 | 0274.jpg 1005 | 0040.jpg 1006 | 2446.jpg 1007 | 3052.jpg 1008 | 1666.jpg 1009 | 1489.jpg 1010 | 0624.jpg 1011 | 3049.jpg 1012 | 1388.jpg 1013 | 1894.jpg 1014 | 1218.jpg 1015 | 1900.jpg 1016 | 0067.jpg 1017 | 0025.jpg 1018 | 1899.jpg 1019 | 2104.jpg 1020 | 1744.jpg 1021 | 0611.jpg 1022 | 1134.jpg 1023 | 2245.jpg 1024 | 1611.jpg 1025 | 2913.jpg 1026 | 2121.jpg 1027 | 1414.jpg 1028 | 0461.jpg 1029 | 1570.jpg 1030 | 0730.jpg 1031 | 1465.jpg 1032 | 1394.jpg 1033 | 2578.jpg 1034 | 0754.jpg 1035 | 1670.jpg 1036 | 1536.jpg 1037 | 2868.jpg 1038 | 2906.jpg 1039 | 2037.jpg 1040 | 1811.jpg 1041 | 1133.jpg 1042 | 2375.jpg 1043 | 2168.jpg 1044 | 2105.jpg 1045 | 0926.jpg 1046 | 0391.jpg 1047 | 0813.jpg 1048 | 2839.jpg 1049 | 2345.jpg 1050 | 1763.jpg 1051 | 1966.jpg 1052 | 0106.jpg 1053 | 1883.jpg 1054 | 1634.jpg 1055 | 1786.jpg 1056 | 0217.jpg 1057 | 1845.jpg 1058 | 1572.jpg 1059 | 2899.jpg 1060 | 2141.jpg 1061 | 2835.jpg 1062 | 0643.jpg 1063 | 1227.jpg 1064 | 1778.jpg 1065 | 1002.jpg 1066 | 2360.jpg 1067 | 2802.jpg 1068 | 2208.jpg 1069 | 2843.jpg 1070 | 0638.jpg 1071 | 0904.jpg 1072 | 1782.jpg 1073 | 1192.jpg 1074 | 0737.jpg 1075 | 0348.jpg 1076 | 1342.jpg 1077 | 1656.jpg 1078 | 2189.jpg 1079 | 0942.jpg 1080 | 0721.jpg 1081 | 0975.jpg 1082 | 0162.jpg 1083 | 0527.jpg 1084 | 2962.jpg 1085 | 2489.jpg 1086 | 1628.jpg 1087 | 0169.jpg 1088 | 3028.jpg 1089 | 2233.jpg 1090 | 2747.jpg 1091 | 0663.jpg 1092 | 2752.jpg 1093 | 2128.jpg 1094 | 0788.jpg 1095 | 0582.jpg 1096 | 1285.jpg 1097 | 1217.jpg 1098 | 0287.jpg 1099 | 3031.jpg 1100 | 3009.jpg 1101 | 2407.jpg 1102 | 2672.jpg 1103 | 2491.jpg 1104 | 2135.jpg 1105 | 2099.jpg 1106 | 2088.jpg 1107 | 0669.jpg 1108 | 1646.jpg 1109 | 1123.jpg 1110 | 0276.jpg 1111 | 2680.jpg 1112 | 2140.jpg 1113 | 2447.jpg 1114 | 2106.jpg 1115 | 2182.jpg 1116 | 0969.jpg 1117 | 2982.jpg 1118 | 0103.jpg 1119 | 1721.jpg 1120 | 0346.jpg 1121 | 2708.jpg 1122 | 1258.jpg 1123 | 2068.jpg 1124 | 0280.jpg 1125 | 3097.jpg 1126 | 1209.jpg 1127 | 2504.jpg 1128 | 0989.jpg 1129 | 0667.jpg 1130 | 1807.jpg 1131 | 1290.jpg 1132 | 1726.jpg 1133 | 1203.jpg 1134 | 3024.jpg 1135 | 2586.jpg 1136 | 1106.jpg 1137 | 2780.jpg 1138 | 2598.jpg 1139 | 1684.jpg 1140 | 0304.jpg 1141 | 2253.jpg 1142 | 1269.jpg 1143 | 2539.jpg 1144 | 0071.jpg 1145 | 1693.jpg 1146 | 1662.jpg 1147 | 1522.jpg 1148 | 0884.jpg 1149 | 0291.jpg 1150 | 0818.jpg 1151 | 0636.jpg 1152 | 1313.jpg 1153 | 2139.jpg 1154 | 1804.jpg 1155 | 2937.jpg 1156 | 0235.jpg 1157 | 0645.jpg 1158 | 0914.jpg 1159 | 2550.jpg 1160 | 0277.jpg 1161 | 0538.jpg 1162 | 0528.jpg 1163 | 0233.jpg 1164 | 3029.jpg 1165 | 0491.jpg 1166 | 1288.jpg 1167 | 0744.jpg 1168 | 2042.jpg 1169 | 2803.jpg 1170 | 2934.jpg 1171 | 2615.jpg 1172 | 0484.jpg 1173 | 0480.jpg 1174 | 0823.jpg 1175 | 0392.jpg 1176 | 0874.jpg 1177 | 2709.jpg 1178 | 3068.jpg 1179 | 2705.jpg 1180 | 1624.jpg 1181 | 2939.jpg 1182 | 2440.jpg 1183 | 1076.jpg 1184 | 0209.jpg 1185 | 0620.jpg 1186 | 2212.jpg 1187 | 0711.jpg 1188 | 1191.jpg 1189 | 2935.jpg 1190 | 1413.jpg 1191 | 0186.jpg 1192 | 2127.jpg 1193 | 0243.jpg 1194 | 1856.jpg 1195 | 0474.jpg 1196 | 2737.jpg 1197 | 0204.jpg 1198 | 0262.jpg 1199 | 0934.jpg 1200 | 0502.jpg 1201 | 2983.jpg 1202 | 3084.jpg 1203 | 0870.jpg 1204 | 2885.jpg 1205 | 0773.jpg 1206 | 2811.jpg 1207 | 2242.jpg 1208 | 2497.jpg 1209 | 2184.jpg 1210 | 2044.jpg 1211 | 0820.jpg 1212 | 0477.jpg 1213 | 0427.jpg 1214 | 0275.jpg 1215 | 2754.jpg 1216 | 3104.jpg 1217 | 1525.jpg 1218 | 2624.jpg 1219 | 0432.jpg 1220 | 1423.jpg 1221 | 2808.jpg 1222 | 1601.jpg 1223 | 1584.jpg 1224 | 2194.jpg 1225 | 2112.jpg 1226 | 0240.jpg 1227 | 2960.jpg 1228 | 0693.jpg 1229 | 0498.jpg 1230 | 0756.jpg 1231 | 1010.jpg 1232 | 1103.jpg 1233 | 1635.jpg 1234 | 2046.jpg 1235 | 0694.jpg 1236 | 2973.jpg 1237 | 1719.jpg 1238 | 1745.jpg 1239 | 1787.jpg 1240 | 1520.jpg 1241 | 3055.jpg 1242 | 1215.jpg 1243 | 2180.jpg 1244 | -------------------------------------------------------------------------------- /label_list/nwpu-5.txt: -------------------------------------------------------------------------------- 1 | 2689.jpg 2 | 0604.jpg 3 | 0667.jpg 4 | 0636.jpg 5 | 0380.jpg 6 | 2140.jpg 7 | 1815.jpg 8 | 0851.jpg 9 | 1446.jpg 10 | 2318.jpg 11 | 2877.jpg 12 | 1258.jpg 13 | 0739.jpg 14 | 1032.jpg 15 | 1691.jpg 16 | 0158.jpg 17 | 0220.jpg 18 | 0587.jpg 19 | 0465.jpg 20 | 2656.jpg 21 | 1797.jpg 22 | 0807.jpg 23 | 2507.jpg 24 | 1561.jpg 25 | 2260.jpg 26 | 1757.jpg 27 | 1304.jpg 28 | 3056.jpg 29 | 1415.jpg 30 | 1488.jpg 31 | 1787.jpg 32 | 2291.jpg 33 | 2819.jpg 34 | 0488.jpg 35 | 1628.jpg 36 | 2221.jpg 37 | 0835.jpg 38 | 2433.jpg 39 | 1672.jpg 40 | 2305.jpg 41 | 0939.jpg 42 | 1008.jpg 43 | 2342.jpg 44 | 2665.jpg 45 | 1378.jpg 46 | 1810.jpg 47 | 0226.jpg 48 | 1981.jpg 49 | 1900.jpg 50 | 1544.jpg 51 | 1784.jpg 52 | 1664.jpg 53 | 0277.jpg 54 | 1245.jpg 55 | 0184.jpg 56 | 0197.jpg 57 | 0319.jpg 58 | 1923.jpg 59 | 0906.jpg 60 | 0441.jpg 61 | 1714.jpg 62 | 1854.jpg 63 | 2691.jpg 64 | 1920.jpg 65 | 0706.jpg 66 | 2998.jpg 67 | 0186.jpg 68 | 1461.jpg 69 | 2296.jpg 70 | 2058.jpg 71 | 2681.jpg 72 | 0920.jpg 73 | 2398.jpg 74 | 1794.jpg 75 | 1018.jpg 76 | 1827.jpg 77 | 0600.jpg 78 | 0535.jpg 79 | 0170.jpg 80 | 0884.jpg 81 | 2579.jpg 82 | 2141.jpg 83 | 0836.jpg 84 | 1679.jpg 85 | 2418.jpg 86 | 0288.jpg 87 | 1774.jpg 88 | 2212.jpg 89 | 2826.jpg 90 | 1559.jpg 91 | 2559.jpg 92 | 0581.jpg 93 | 3041.jpg 94 | 1616.jpg 95 | 1349.jpg 96 | 0882.jpg 97 | 1250.jpg 98 | 2257.jpg 99 | 1408.jpg 100 | 0842.jpg 101 | 0964.jpg 102 | 1806.jpg 103 | 2328.jpg 104 | 0785.jpg 105 | 1650.jpg 106 | 3037.jpg 107 | 1610.jpg 108 | 1956.jpg 109 | 2207.jpg 110 | 1869.jpg 111 | 1988.jpg 112 | 2127.jpg 113 | 0359.jpg 114 | 0564.jpg 115 | 2101.jpg 116 | 2312.jpg 117 | 3085.jpg 118 | 0166.jpg 119 | 0127.jpg 120 | 0157.jpg 121 | 0217.jpg 122 | 1648.jpg 123 | 1223.jpg 124 | 0470.jpg 125 | 0392.jpg 126 | 2184.jpg 127 | 3092.jpg 128 | 2779.jpg 129 | 2310.jpg 130 | 0759.jpg 131 | 0156.jpg 132 | 2922.jpg 133 | 1396.jpg 134 | 2057.jpg 135 | 1917.jpg 136 | 0834.jpg 137 | 1214.jpg 138 | 0335.jpg 139 | 0547.jpg 140 | 0211.jpg 141 | 0110.jpg 142 | 0017.jpg 143 | 1500.jpg 144 | 1640.jpg 145 | 2134.jpg 146 | 0238.jpg 147 | 1982.jpg 148 | 2793.jpg 149 | 2548.jpg 150 | 1913.jpg 151 | 2225.jpg 152 | 2068.jpg 153 | 3065.jpg 154 | 0083.jpg 155 | 2382.jpg 156 | -------------------------------------------------------------------------------- /label_list/nwpu-val.txt: -------------------------------------------------------------------------------- 1 | 0208.jpg 2 | 1112.jpg 3 | 0333.jpg 4 | 1725.jpg 5 | 0817.jpg 6 | 2488.jpg 7 | 0068.jpg 8 | 0837.jpg 9 | 0499.jpg 10 | 0224.jpg 11 | 0443.jpg 12 | 0512.jpg 13 | 0633.jpg 14 | 0797.jpg 15 | 2751.jpg 16 | 0421.jpg 17 | 0933.jpg 18 | 2731.jpg 19 | 1231.jpg 20 | 2243.jpg 21 | 2830.jpg 22 | 1373.jpg 23 | 0953.jpg 24 | 1176.jpg 25 | 2851.jpg 26 | 1952.jpg 27 | 0959.jpg 28 | 1694.jpg 29 | 1543.jpg 30 | 0074.jpg 31 | 2859.jpg 32 | 1384.jpg 33 | 0389.jpg 34 | 2940.jpg 35 | 0632.jpg 36 | 0572.jpg 37 | 2473.jpg 38 | 2231.jpg 39 | 2416.jpg 40 | 2525.jpg 41 | 0344.jpg 42 | 0709.jpg 43 | 2409.jpg 44 | 2896.jpg 45 | 2444.jpg 46 | 2436.jpg 47 | 0862.jpg 48 | 0553.jpg 49 | 0925.jpg 50 | 1125.jpg 51 | 2898.jpg 52 | 0310.jpg 53 | 2108.jpg 54 | 0058.jpg 55 | 0361.jpg 56 | 1919.jpg 57 | 0802.jpg 58 | 2210.jpg 59 | 0165.jpg 60 | 2674.jpg 61 | 1702.jpg 62 | 1238.jpg 63 | 1759.jpg 64 | 1701.jpg 65 | 0901.jpg 66 | 0576.jpg 67 | 1905.jpg 68 | 0700.jpg 69 | 2812.jpg 70 | 2366.jpg 71 | 0728.jpg 72 | 1399.jpg 73 | 1275.jpg 74 | 0382.jpg 75 | 1298.jpg 76 | 1404.jpg 77 | 0847.jpg 78 | 2788.jpg 79 | 1266.jpg 80 | 2078.jpg 81 | 1593.jpg 82 | 2472.jpg 83 | 2950.jpg 84 | 1037.jpg 85 | 1965.jpg 86 | 2060.jpg 87 | 0321.jpg 88 | 2953.jpg 89 | 1710.jpg 90 | 0844.jpg 91 | 2271.jpg 92 | 1020.jpg 93 | 2866.jpg 94 | 0662.jpg 95 | 1178.jpg 96 | 2122.jpg 97 | 0476.jpg 98 | 0105.jpg 99 | 0273.jpg 100 | 2777.jpg 101 | 1486.jpg 102 | 2408.jpg 103 | 0199.jpg 104 | 2014.jpg 105 | 2412.jpg 106 | 1738.jpg 107 | 2767.jpg 108 | 1040.jpg 109 | 2570.jpg 110 | 3007.jpg 111 | 2289.jpg 112 | 2283.jpg 113 | 1755.jpg 114 | 0606.jpg 115 | 1660.jpg 116 | 0072.jpg 117 | 0890.jpg 118 | 2798.jpg 119 | 1542.jpg 120 | 2095.jpg 121 | 1754.jpg 122 | 3025.jpg 123 | 0952.jpg 124 | 0205.jpg 125 | 0621.jpg 126 | 0922.jpg 127 | 1629.jpg 128 | 1119.jpg 129 | 1731.jpg 130 | 1860.jpg 131 | 1558.jpg 132 | 1305.jpg 133 | 1547.jpg 134 | 2901.jpg 135 | 0707.jpg 136 | 0278.jpg 137 | 1733.jpg 138 | 2827.jpg 139 | 1795.jpg 140 | 2269.jpg 141 | 0009.jpg 142 | 1581.jpg 143 | 0373.jpg 144 | 3066.jpg 145 | 0475.jpg 146 | 2838.jpg 147 | 2946.jpg 148 | 2750.jpg 149 | 2521.jpg 150 | 2276.jpg 151 | 2965.jpg 152 | 0350.jpg 153 | 1639.jpg 154 | 3030.jpg 155 | 0330.jpg 156 | 2540.jpg 157 | 1257.jpg 158 | 1034.jpg 159 | 0098.jpg 160 | 2255.jpg 161 | 0279.jpg 162 | 2509.jpg 163 | 0462.jpg 164 | 1765.jpg 165 | 0853.jpg 166 | 0057.jpg 167 | 0005.jpg 168 | 1884.jpg 169 | 3057.jpg 170 | 0653.jpg 171 | 0917.jpg 172 | 1995.jpg 173 | 2364.jpg 174 | 1482.jpg 175 | 3034.jpg 176 | 3008.jpg 177 | 1055.jpg 178 | 1954.jpg 179 | 0532.jpg 180 | 0725.jpg 181 | 2569.jpg 182 | 1523.jpg 183 | 2394.jpg 184 | 1819.jpg 185 | 0855.jpg 186 | 0301.jpg 187 | 1980.jpg 188 | 2372.jpg 189 | 0811.jpg 190 | 2878.jpg 191 | 0152.jpg 192 | 2306.jpg 193 | 1563.jpg 194 | 1068.jpg 195 | 2357.jpg 196 | 1502.jpg 197 | 0979.jpg 198 | 2508.jpg 199 | 0341.jpg 200 | 1683.jpg 201 | 1451.jpg 202 | 0594.jpg 203 | 2600.jpg 204 | 2109.jpg 205 | 0383.jpg 206 | 3106.jpg 207 | 1470.jpg 208 | 0856.jpg 209 | 3050.jpg 210 | 2309.jpg 211 | 1033.jpg 212 | 2256.jpg 213 | 3053.jpg 214 | 0485.jpg 215 | 0531.jpg 216 | 0318.jpg 217 | 0708.jpg 218 | 0175.jpg 219 | 0687.jpg 220 | 1358.jpg 221 | 1243.jpg 222 | 1254.jpg 223 | 3101.jpg 224 | 1247.jpg 225 | 1539.jpg 226 | 0154.jpg 227 | 0990.jpg 228 | 0958.jpg 229 | 1267.jpg 230 | 0030.jpg 231 | 0549.jpg 232 | 1886.jpg 233 | 2434.jpg 234 | 0135.jpg 235 | 2696.jpg 236 | 1510.jpg 237 | 1528.jpg 238 | 1948.jpg 239 | 0253.jpg 240 | 2131.jpg 241 | 1553.jpg 242 | 2642.jpg 243 | 2545.jpg 244 | 1999.jpg 245 | 1571.jpg 246 | 0746.jpg 247 | 2573.jpg 248 | 2616.jpg 249 | 2529.jpg 250 | 0838.jpg 251 | 2894.jpg 252 | 0056.jpg 253 | 1066.jpg 254 | 2179.jpg 255 | 1048.jpg 256 | 2197.jpg 257 | 1554.jpg 258 | 2589.jpg 259 | 0755.jpg 260 | 0482.jpg 261 | 3003.jpg 262 | 0198.jpg 263 | 1383.jpg 264 | 1730.jpg 265 | 1612.jpg 266 | 1678.jpg 267 | 0631.jpg 268 | 0263.jpg 269 | 2941.jpg 270 | 3032.jpg 271 | 0503.jpg 272 | 1949.jpg 273 | 2614.jpg 274 | 1692.jpg 275 | 1556.jpg 276 | 0825.jpg 277 | 2584.jpg 278 | 1056.jpg 279 | 2571.jpg 280 | 2290.jpg 281 | 2756.jpg 282 | 0749.jpg 283 | 0317.jpg 284 | 1213.jpg 285 | 0015.jpg 286 | 2776.jpg 287 | 1530.jpg 288 | 2039.jpg 289 | 1597.jpg 290 | 0038.jpg 291 | 3048.jpg 292 | 2348.jpg 293 | 2126.jpg 294 | 1340.jpg 295 | 2496.jpg 296 | 1352.jpg 297 | 2377.jpg 298 | 2591.jpg 299 | 1825.jpg 300 | 1084.jpg 301 | 2483.jpg 302 | 1953.jpg 303 | 2274.jpg 304 | 2987.jpg 305 | 0592.jpg 306 | 1632.jpg 307 | 0128.jpg 308 | 2374.jpg 309 | 0055.jpg 310 | 2495.jpg 311 | -------------------------------------------------------------------------------- /label_list/sha-10.txt: -------------------------------------------------------------------------------- 1 | IMG_25.jpg 2 | IMG_108.jpg 3 | IMG_249.jpg 4 | IMG_251.jpg 5 | IMG_73.jpg 6 | IMG_168.jpg 7 | IMG_49.jpg 8 | IMG_76.jpg 9 | IMG_203.jpg 10 | IMG_174.jpg 11 | IMG_144.jpg 12 | IMG_88.jpg 13 | IMG_300.jpg 14 | IMG_195.jpg 15 | IMG_6.jpg 16 | IMG_266.jpg 17 | IMG_288.jpg 18 | IMG_75.jpg 19 | IMG_113.jpg 20 | IMG_80.jpg 21 | IMG_96.jpg 22 | IMG_208.jpg 23 | IMG_1.jpg 24 | IMG_2.jpg 25 | IMG_245.jpg 26 | IMG_247.jpg 27 | IMG_228.jpg 28 | IMG_226.jpg 29 | IMG_215.jpg 30 | IMG_154.jpg 31 | -------------------------------------------------------------------------------- /label_list/sha-40.txt: -------------------------------------------------------------------------------- 1 | IMG_207.jpg 2 | IMG_19.jpg 3 | IMG_187.jpg 4 | IMG_2.jpg 5 | IMG_155.jpg 6 | IMG_225.jpg 7 | IMG_150.jpg 8 | IMG_119.jpg 9 | IMG_204.jpg 10 | IMG_113.jpg 11 | IMG_298.jpg 12 | IMG_293.jpg 13 | IMG_122.jpg 14 | IMG_223.jpg 15 | IMG_87.jpg 16 | IMG_91.jpg 17 | IMG_237.jpg 18 | IMG_256.jpg 19 | IMG_115.jpg 20 | IMG_219.jpg 21 | IMG_197.jpg 22 | IMG_9.jpg 23 | IMG_284.jpg 24 | IMG_249.jpg 25 | IMG_292.jpg 26 | IMG_126.jpg 27 | IMG_96.jpg 28 | IMG_60.jpg 29 | IMG_66.jpg 30 | IMG_125.jpg 31 | IMG_216.jpg 32 | IMG_82.jpg 33 | IMG_20.jpg 34 | IMG_110.jpg 35 | IMG_53.jpg 36 | IMG_175.jpg 37 | IMG_253.jpg 38 | IMG_146.jpg 39 | IMG_203.jpg 40 | IMG_241.jpg 41 | IMG_290.jpg 42 | IMG_218.jpg 43 | IMG_16.jpg 44 | IMG_184.jpg 45 | IMG_267.jpg 46 | IMG_61.jpg 47 | IMG_77.jpg 48 | IMG_107.jpg 49 | IMG_180.jpg 50 | IMG_11.jpg 51 | IMG_263.jpg 52 | IMG_266.jpg 53 | IMG_287.jpg 54 | IMG_30.jpg 55 | IMG_85.jpg 56 | IMG_68.jpg 57 | IMG_137.jpg 58 | IMG_15.jpg 59 | IMG_179.jpg 60 | IMG_299.jpg 61 | IMG_215.jpg 62 | IMG_271.jpg 63 | IMG_56.jpg 64 | IMG_118.jpg 65 | IMG_135.jpg 66 | IMG_248.jpg 67 | IMG_159.jpg 68 | IMG_127.jpg 69 | IMG_270.jpg 70 | IMG_98.jpg 71 | IMG_250.jpg 72 | IMG_230.jpg 73 | IMG_32.jpg 74 | IMG_104.jpg 75 | IMG_141.jpg 76 | IMG_44.jpg 77 | IMG_181.jpg 78 | IMG_132.jpg 79 | IMG_79.jpg 80 | IMG_147.jpg 81 | IMG_258.jpg 82 | IMG_26.jpg 83 | IMG_280.jpg 84 | IMG_259.jpg 85 | IMG_158.jpg 86 | IMG_124.jpg 87 | IMG_1.jpg 88 | IMG_192.jpg 89 | IMG_105.jpg 90 | IMG_296.jpg 91 | IMG_222.jpg 92 | IMG_268.jpg 93 | IMG_136.jpg 94 | IMG_145.jpg 95 | IMG_170.jpg 96 | IMG_23.jpg 97 | IMG_151.jpg 98 | IMG_21.jpg 99 | IMG_17.jpg 100 | IMG_283.jpg 101 | IMG_10.jpg 102 | IMG_166.jpg 103 | IMG_38.jpg 104 | IMG_55.jpg 105 | IMG_75.jpg 106 | IMG_277.jpg 107 | IMG_42.jpg 108 | IMG_88.jpg 109 | IMG_8.jpg 110 | IMG_54.jpg 111 | IMG_89.jpg 112 | IMG_252.jpg 113 | IMG_33.jpg 114 | IMG_3.jpg 115 | IMG_36.jpg 116 | IMG_295.jpg 117 | IMG_134.jpg 118 | IMG_205.jpg 119 | IMG_86.jpg 120 | IMG_276.jpg 121 | -------------------------------------------------------------------------------- /label_list/sha-5.txt: -------------------------------------------------------------------------------- 1 | IMG_119.jpg 2 | IMG_42.jpg 3 | IMG_30.jpg 4 | IMG_146.jpg 5 | IMG_195.jpg 6 | IMG_283.jpg 7 | IMG_186.jpg 8 | IMG_2.jpg 9 | IMG_158.jpg 10 | IMG_297.jpg 11 | IMG_224.jpg 12 | IMG_218.jpg 13 | IMG_101.jpg 14 | IMG_122.jpg 15 | IMG_5.jpg 16 | -------------------------------------------------------------------------------- /label_list/shb-10.txt: -------------------------------------------------------------------------------- 1 | IMG_249.jpg 2 | IMG_388.jpg 3 | IMG_363.jpg 4 | IMG_168.jpg 5 | IMG_230.jpg 6 | IMG_172.jpg 7 | IMG_382.jpg 8 | IMG_200.jpg 9 | IMG_373.jpg 10 | IMG_359.jpg 11 | IMG_332.jpg 12 | IMG_325.jpg 13 | IMG_102.jpg 14 | IMG_217.jpg 15 | IMG_264.jpg 16 | IMG_245.jpg 17 | IMG_368.jpg 18 | IMG_46.jpg 19 | IMG_225.jpg 20 | IMG_6.jpg 21 | IMG_220.jpg 22 | IMG_19.jpg 23 | IMG_267.jpg 24 | IMG_269.jpg 25 | IMG_281.jpg 26 | IMG_159.jpg 27 | IMG_32.jpg 28 | IMG_331.jpg 29 | IMG_247.jpg 30 | IMG_340.jpg 31 | IMG_157.jpg 32 | IMG_303.jpg 33 | IMG_135.jpg 34 | IMG_232.jpg 35 | IMG_33.jpg 36 | IMG_208.jpg 37 | IMG_207.jpg 38 | IMG_156.jpg 39 | IMG_246.jpg 40 | IMG_376.jpg 41 | -------------------------------------------------------------------------------- /label_list/shb-40.txt: -------------------------------------------------------------------------------- 1 | IMG_351.jpg 2 | IMG_17.jpg 3 | IMG_301.jpg 4 | IMG_199.jpg 5 | IMG_75.jpg 6 | IMG_299.jpg 7 | IMG_312.jpg 8 | IMG_314.jpg 9 | IMG_273.jpg 10 | IMG_144.jpg 11 | IMG_14.jpg 12 | IMG_332.jpg 13 | IMG_190.jpg 14 | IMG_320.jpg 15 | IMG_306.jpg 16 | IMG_189.jpg 17 | IMG_94.jpg 18 | IMG_86.jpg 19 | IMG_250.jpg 20 | IMG_290.jpg 21 | IMG_384.jpg 22 | IMG_93.jpg 23 | IMG_369.jpg 24 | IMG_119.jpg 25 | IMG_211.jpg 26 | IMG_54.jpg 27 | IMG_264.jpg 28 | IMG_120.jpg 29 | IMG_184.jpg 30 | IMG_81.jpg 31 | IMG_5.jpg 32 | IMG_311.jpg 33 | IMG_191.jpg 34 | IMG_99.jpg 35 | IMG_205.jpg 36 | IMG_376.jpg 37 | IMG_374.jpg 38 | IMG_388.jpg 39 | IMG_206.jpg 40 | IMG_146.jpg 41 | IMG_183.jpg 42 | IMG_380.jpg 43 | IMG_170.jpg 44 | IMG_331.jpg 45 | IMG_293.jpg 46 | IMG_158.jpg 47 | IMG_362.jpg 48 | IMG_221.jpg 49 | IMG_122.jpg 50 | IMG_18.jpg 51 | IMG_316.jpg 52 | IMG_201.jpg 53 | IMG_304.jpg 54 | IMG_287.jpg 55 | IMG_356.jpg 56 | IMG_354.jpg 57 | IMG_346.jpg 58 | IMG_87.jpg 59 | IMG_212.jpg 60 | IMG_155.jpg 61 | IMG_253.jpg 62 | IMG_34.jpg 63 | IMG_378.jpg 64 | IMG_82.jpg 65 | IMG_140.jpg 66 | IMG_302.jpg 67 | IMG_60.jpg 68 | IMG_48.jpg 69 | IMG_337.jpg 70 | IMG_152.jpg 71 | IMG_240.jpg 72 | IMG_400.jpg 73 | IMG_96.jpg 74 | IMG_341.jpg 75 | IMG_236.jpg 76 | IMG_187.jpg 77 | IMG_318.jpg 78 | IMG_230.jpg 79 | IMG_232.jpg 80 | IMG_55.jpg 81 | IMG_198.jpg 82 | IMG_218.jpg 83 | IMG_222.jpg 84 | IMG_387.jpg 85 | IMG_292.jpg 86 | IMG_223.jpg 87 | IMG_327.jpg 88 | IMG_74.jpg 89 | IMG_65.jpg 90 | IMG_329.jpg 91 | IMG_385.jpg 92 | IMG_358.jpg 93 | IMG_10.jpg 94 | IMG_278.jpg 95 | IMG_103.jpg 96 | IMG_42.jpg 97 | IMG_256.jpg 98 | IMG_154.jpg 99 | IMG_323.jpg 100 | IMG_272.jpg 101 | IMG_355.jpg 102 | IMG_382.jpg 103 | IMG_163.jpg 104 | IMG_303.jpg 105 | IMG_247.jpg 106 | IMG_124.jpg 107 | IMG_305.jpg 108 | IMG_147.jpg 109 | IMG_282.jpg 110 | IMG_289.jpg 111 | IMG_118.jpg 112 | IMG_345.jpg 113 | IMG_257.jpg 114 | IMG_307.jpg 115 | IMG_4.jpg 116 | IMG_130.jpg 117 | IMG_61.jpg 118 | IMG_128.jpg 119 | IMG_349.jpg 120 | IMG_171.jpg 121 | IMG_156.jpg 122 | IMG_393.jpg 123 | IMG_213.jpg 124 | IMG_396.jpg 125 | IMG_182.jpg 126 | IMG_219.jpg 127 | IMG_79.jpg 128 | IMG_148.jpg 129 | IMG_106.jpg 130 | IMG_370.jpg 131 | IMG_188.jpg 132 | IMG_235.jpg 133 | IMG_267.jpg 134 | IMG_340.jpg 135 | IMG_298.jpg 136 | IMG_109.jpg 137 | IMG_110.jpg 138 | IMG_174.jpg 139 | IMG_246.jpg 140 | IMG_398.jpg 141 | IMG_276.jpg 142 | IMG_386.jpg 143 | IMG_173.jpg 144 | IMG_300.jpg 145 | IMG_46.jpg 146 | IMG_265.jpg 147 | IMG_203.jpg 148 | IMG_248.jpg 149 | IMG_136.jpg 150 | IMG_138.jpg 151 | IMG_244.jpg 152 | IMG_160.jpg 153 | IMG_116.jpg 154 | IMG_129.jpg 155 | IMG_350.jpg 156 | IMG_268.jpg 157 | IMG_263.jpg 158 | IMG_308.jpg 159 | IMG_229.jpg 160 | IMG_66.jpg 161 | -------------------------------------------------------------------------------- /label_list/shb-5.txt: -------------------------------------------------------------------------------- 1 | IMG_101.jpg 2 | IMG_90.jpg 3 | IMG_55.jpg 4 | IMG_155.jpg 5 | IMG_280.jpg 6 | IMG_227.jpg 7 | IMG_105.jpg 8 | IMG_145.jpg 9 | IMG_350.jpg 10 | IMG_120.jpg 11 | IMG_307.jpg 12 | IMG_326.jpg 13 | IMG_174.jpg 14 | IMG_321.jpg 15 | IMG_224.jpg 16 | IMG_26.jpg 17 | IMG_207.jpg 18 | IMG_286.jpg 19 | IMG_381.jpg 20 | IMG_175.jpg 21 | -------------------------------------------------------------------------------- /label_list/ucf-10.txt: -------------------------------------------------------------------------------- 1 | img_0589.jpg 2 | img_0376.jpg 3 | img_0168.jpg 4 | img_0111.jpg 5 | img_0971.jpg 6 | img_0471.jpg 7 | img_0278.jpg 8 | img_1159.jpg 9 | img_0350.jpg 10 | img_0734.jpg 11 | img_0391.jpg 12 | img_0942.jpg 13 | img_0133.jpg 14 | img_0057.jpg 15 | img_0332.jpg 16 | img_0814.jpg 17 | img_0757.jpg 18 | img_0753.jpg 19 | img_0901.jpg 20 | img_0478.jpg 21 | img_0656.jpg 22 | img_1142.jpg 23 | img_0629.jpg 24 | img_0123.jpg 25 | img_0390.jpg 26 | img_1076.jpg 27 | img_0087.jpg 28 | img_0683.jpg 29 | img_0263.jpg 30 | img_0237.jpg 31 | img_1037.jpg 32 | img_0199.jpg 33 | img_0214.jpg 34 | img_0084.jpg 35 | img_0711.jpg 36 | img_1149.jpg 37 | img_0595.jpg 38 | img_0807.jpg 39 | img_0909.jpg 40 | img_0626.jpg 41 | img_0306.jpg 42 | img_0330.jpg 43 | img_0479.jpg 44 | img_0855.jpg 45 | img_1003.jpg 46 | img_1108.jpg 47 | img_0632.jpg 48 | img_0885.jpg 49 | img_0567.jpg 50 | img_0793.jpg 51 | img_0056.jpg 52 | img_0211.jpg 53 | img_0064.jpg 54 | img_1089.jpg 55 | img_1170.jpg 56 | img_0988.jpg 57 | img_0226.jpg 58 | img_1015.jpg 59 | img_1064.jpg 60 | img_0466.jpg 61 | img_1056.jpg 62 | img_0105.jpg 63 | img_1143.jpg 64 | img_1090.jpg 65 | img_0636.jpg 66 | img_1011.jpg 67 | img_0249.jpg 68 | img_0559.jpg 69 | img_0608.jpg 70 | img_1045.jpg 71 | img_1124.jpg 72 | img_0234.jpg 73 | img_0998.jpg 74 | img_0588.jpg 75 | img_0834.jpg 76 | img_0102.jpg 77 | img_0061.jpg 78 | img_0361.jpg 79 | img_0006.jpg 80 | img_0902.jpg 81 | img_0930.jpg 82 | img_0397.jpg 83 | img_0624.jpg 84 | img_0161.jpg 85 | img_1074.jpg 86 | img_0392.jpg 87 | img_0359.jpg 88 | img_0408.jpg 89 | img_0204.jpg 90 | img_0077.jpg 91 | img_0533.jpg 92 | img_0681.jpg 93 | img_0145.jpg 94 | img_0768.jpg 95 | img_0926.jpg 96 | img_1151.jpg 97 | img_0940.jpg 98 | img_1197.jpg 99 | img_0606.jpg 100 | img_0017.jpg 101 | img_0634.jpg 102 | img_0506.jpg 103 | img_0812.jpg 104 | img_0353.jpg 105 | img_0109.jpg 106 | img_0672.jpg 107 | img_1067.jpg 108 | img_0717.jpg 109 | img_0955.jpg 110 | -------------------------------------------------------------------------------- /label_list/ucf-40.txt: -------------------------------------------------------------------------------- 1 | img_0185.jpg 2 | img_0279.jpg 3 | img_0018.jpg 4 | img_0567.jpg 5 | img_0421.jpg 6 | img_0552.jpg 7 | img_0582.jpg 8 | img_0254.jpg 9 | img_0253.jpg 10 | img_0249.jpg 11 | img_0901.jpg 12 | img_0304.jpg 13 | img_1108.jpg 14 | img_0194.jpg 15 | img_0921.jpg 16 | img_0982.jpg 17 | img_0598.jpg 18 | img_0863.jpg 19 | img_0547.jpg 20 | img_0918.jpg 21 | img_0137.jpg 22 | img_0584.jpg 23 | img_0573.jpg 24 | img_1091.jpg 25 | img_0499.jpg 26 | img_0795.jpg 27 | img_0646.jpg 28 | img_0883.jpg 29 | img_0079.jpg 30 | img_0261.jpg 31 | img_1143.jpg 32 | img_0039.jpg 33 | img_0077.jpg 34 | img_1034.jpg 35 | img_0093.jpg 36 | img_0030.jpg 37 | img_0176.jpg 38 | img_0448.jpg 39 | img_0985.jpg 40 | img_1057.jpg 41 | img_0428.jpg 42 | img_0509.jpg 43 | img_0443.jpg 44 | img_0148.jpg 45 | img_0200.jpg 46 | img_0035.jpg 47 | img_1066.jpg 48 | img_0612.jpg 49 | img_0110.jpg 50 | img_0501.jpg 51 | img_0495.jpg 52 | img_0653.jpg 53 | img_0392.jpg 54 | img_1121.jpg 55 | img_0544.jpg 56 | img_0263.jpg 57 | img_0055.jpg 58 | img_0820.jpg 59 | img_1021.jpg 60 | img_0450.jpg 61 | img_0040.jpg 62 | img_1047.jpg 63 | img_1125.jpg 64 | img_0980.jpg 65 | img_0969.jpg 66 | img_0096.jpg 67 | img_0902.jpg 68 | img_0270.jpg 69 | img_0293.jpg 70 | img_0829.jpg 71 | img_0661.jpg 72 | img_0491.jpg 73 | img_0869.jpg 74 | img_0149.jpg 75 | img_0940.jpg 76 | img_0297.jpg 77 | img_0717.jpg 78 | img_0657.jpg 79 | img_0588.jpg 80 | img_0696.jpg 81 | img_1050.jpg 82 | img_0109.jpg 83 | img_0206.jpg 84 | img_0945.jpg 85 | img_1157.jpg 86 | img_1109.jpg 87 | img_1116.jpg 88 | img_1196.jpg 89 | img_0138.jpg 90 | img_0976.jpg 91 | img_1186.jpg 92 | img_0494.jpg 93 | img_0229.jpg 94 | img_0351.jpg 95 | img_0226.jpg 96 | img_1190.jpg 97 | img_1136.jpg 98 | img_0009.jpg 99 | img_0275.jpg 100 | img_0664.jpg 101 | img_0187.jpg 102 | img_0438.jpg 103 | img_0386.jpg 104 | img_0649.jpg 105 | img_0484.jpg 106 | img_0196.jpg 107 | img_0397.jpg 108 | img_0496.jpg 109 | img_0709.jpg 110 | img_0464.jpg 111 | img_0551.jpg 112 | img_0915.jpg 113 | img_0773.jpg 114 | img_0899.jpg 115 | img_0036.jpg 116 | img_0218.jpg 117 | img_0625.jpg 118 | img_0837.jpg 119 | img_0651.jpg 120 | img_0205.jpg 121 | img_0412.jpg 122 | img_0324.jpg 123 | img_0269.jpg 124 | img_0238.jpg 125 | img_0162.jpg 126 | img_0081.jpg 127 | img_0636.jpg 128 | img_0700.jpg 129 | img_0758.jpg 130 | img_0248.jpg 131 | img_0756.jpg 132 | img_0440.jpg 133 | img_1105.jpg 134 | img_0845.jpg 135 | img_0857.jpg 136 | img_0426.jpg 137 | img_0861.jpg 138 | img_1145.jpg 139 | img_0466.jpg 140 | img_0388.jpg 141 | img_0309.jpg 142 | img_0380.jpg 143 | img_0765.jpg 144 | img_0858.jpg 145 | img_0203.jpg 146 | img_1122.jpg 147 | img_0360.jpg 148 | img_0639.jpg 149 | img_0711.jpg 150 | img_1120.jpg 151 | img_0953.jpg 152 | img_1177.jpg 153 | img_0595.jpg 154 | img_0171.jpg 155 | img_0434.jpg 156 | img_0362.jpg 157 | img_0807.jpg 158 | img_0793.jpg 159 | img_0960.jpg 160 | img_0383.jpg 161 | img_0319.jpg 162 | img_1118.jpg 163 | img_0507.jpg 164 | img_1135.jpg 165 | img_0078.jpg 166 | img_0767.jpg 167 | img_0107.jpg 168 | img_0211.jpg 169 | img_0050.jpg 170 | img_0233.jpg 171 | img_0175.jpg 172 | img_0401.jpg 173 | img_0770.jpg 174 | img_0877.jpg 175 | img_0104.jpg 176 | img_1142.jpg 177 | img_0099.jpg 178 | img_0080.jpg 179 | img_0722.jpg 180 | img_0528.jpg 181 | img_0744.jpg 182 | img_1097.jpg 183 | img_1147.jpg 184 | img_0127.jpg 185 | img_1026.jpg 186 | img_0867.jpg 187 | img_0827.jpg 188 | img_0665.jpg 189 | img_0981.jpg 190 | img_1198.jpg 191 | img_0439.jpg 192 | img_0705.jpg 193 | img_1014.jpg 194 | img_0010.jpg 195 | img_0432.jpg 196 | img_1151.jpg 197 | img_0621.jpg 198 | img_0854.jpg 199 | img_0160.jpg 200 | img_0971.jpg 201 | img_1081.jpg 202 | img_1038.jpg 203 | img_0026.jpg 204 | img_0548.jpg 205 | img_0847.jpg 206 | img_0961.jpg 207 | img_0872.jpg 208 | img_0707.jpg 209 | img_0954.jpg 210 | img_0285.jpg 211 | img_0005.jpg 212 | img_0237.jpg 213 | img_0873.jpg 214 | img_0144.jpg 215 | img_0370.jpg 216 | img_0502.jpg 217 | img_0288.jpg 218 | img_0292.jpg 219 | img_0498.jpg 220 | img_0785.jpg 221 | img_0838.jpg 222 | img_1003.jpg 223 | img_1056.jpg 224 | img_0886.jpg 225 | img_0283.jpg 226 | img_0102.jpg 227 | img_0396.jpg 228 | img_0518.jpg 229 | img_1039.jpg 230 | img_0922.jpg 231 | img_0549.jpg 232 | img_0894.jpg 233 | img_1173.jpg 234 | img_1082.jpg 235 | img_1076.jpg 236 | img_0884.jpg 237 | img_0330.jpg 238 | img_0632.jpg 239 | img_0721.jpg 240 | img_0885.jpg 241 | img_1028.jpg 242 | img_0008.jpg 243 | img_0305.jpg 244 | img_0747.jpg 245 | img_0650.jpg 246 | img_1192.jpg 247 | img_0515.jpg 248 | img_1100.jpg 249 | img_0259.jpg 250 | img_0043.jpg 251 | img_0457.jpg 252 | img_1129.jpg 253 | img_0859.jpg 254 | img_0787.jpg 255 | img_0754.jpg 256 | img_0413.jpg 257 | img_1103.jpg 258 | img_1024.jpg 259 | img_0819.jpg 260 | img_0408.jpg 261 | img_1096.jpg 262 | img_0002.jpg 263 | img_0486.jpg 264 | img_0609.jpg 265 | img_0645.jpg 266 | img_0527.jpg 267 | img_0212.jpg 268 | img_0693.jpg 269 | img_0326.jpg 270 | img_0322.jpg 271 | img_0692.jpg 272 | img_0675.jpg 273 | img_0757.jpg 274 | img_1138.jpg 275 | img_0752.jpg 276 | img_0019.jpg 277 | img_0553.jpg 278 | img_0702.jpg 279 | img_0228.jpg 280 | img_0220.jpg 281 | img_0258.jpg 282 | img_1176.jpg 283 | img_0479.jpg 284 | img_0276.jpg 285 | img_0666.jpg 286 | img_0586.jpg 287 | img_0626.jpg 288 | img_0046.jpg 289 | img_0974.jpg 290 | img_1036.jpg 291 | img_0146.jpg 292 | img_0202.jpg 293 | img_0848.jpg 294 | img_0023.jpg 295 | img_0874.jpg 296 | img_0988.jpg 297 | img_0395.jpg 298 | img_0678.jpg 299 | img_0524.jpg 300 | img_0900.jpg 301 | img_0316.jpg 302 | img_1088.jpg 303 | img_1032.jpg 304 | img_0084.jpg 305 | img_0017.jpg 306 | img_0473.jpg 307 | img_0594.jpg 308 | img_0273.jpg 309 | img_0640.jpg 310 | img_0506.jpg 311 | img_0331.jpg 312 | img_0964.jpg 313 | img_1017.jpg 314 | img_0755.jpg 315 | img_0895.jpg 316 | img_0445.jpg 317 | img_0851.jpg 318 | img_0710.jpg 319 | img_0946.jpg 320 | img_0742.jpg 321 | img_0124.jpg 322 | img_0493.jpg 323 | img_0745.jpg 324 | img_1084.jpg 325 | img_0810.jpg 326 | img_0999.jpg 327 | img_0163.jpg 328 | img_0410.jpg 329 | img_0286.jpg 330 | img_0978.jpg 331 | img_0064.jpg 332 | img_0788.jpg 333 | img_1197.jpg 334 | img_0771.jpg 335 | img_0760.jpg 336 | img_0591.jpg 337 | img_1001.jpg 338 | img_0930.jpg 339 | img_1008.jpg 340 | img_1148.jpg 341 | img_1013.jpg 342 | img_0618.jpg 343 | img_0603.jpg 344 | img_1188.jpg 345 | img_1150.jpg 346 | img_0508.jpg 347 | img_0834.jpg 348 | img_0425.jpg 349 | img_0355.jpg 350 | img_0983.jpg 351 | img_0511.jpg 352 | img_0334.jpg 353 | img_0908.jpg 354 | img_0762.jpg 355 | img_0798.jpg 356 | img_0965.jpg 357 | img_0184.jpg 358 | img_0723.jpg 359 | img_0348.jpg 360 | img_0934.jpg 361 | img_0282.jpg 362 | img_0328.jpg 363 | img_0057.jpg 364 | img_0948.jpg 365 | img_0476.jpg 366 | img_0373.jpg 367 | img_0213.jpg 368 | img_0998.jpg 369 | img_0728.jpg 370 | img_1156.jpg 371 | img_0182.jpg 372 | img_0361.jpg 373 | img_0145.jpg 374 | img_0532.jpg 375 | img_0674.jpg 376 | img_0122.jpg 377 | img_0644.jpg 378 | img_0939.jpg 379 | img_1113.jpg 380 | img_0231.jpg 381 | img_0060.jpg 382 | img_1043.jpg 383 | img_0459.jpg 384 | img_0746.jpg 385 | img_0623.jpg 386 | img_0321.jpg 387 | img_0706.jpg 388 | img_0726.jpg 389 | img_0994.jpg 390 | img_0014.jpg 391 | img_1087.jpg 392 | img_0583.jpg 393 | img_0572.jpg 394 | img_0724.jpg 395 | img_0662.jpg 396 | img_0399.jpg 397 | img_0369.jpg 398 | img_0577.jpg 399 | img_0318.jpg 400 | img_1040.jpg 401 | img_0454.jpg 402 | img_0336.jpg 403 | img_0759.jpg 404 | img_0748.jpg 405 | img_0398.jpg 406 | img_0087.jpg 407 | img_0034.jpg 408 | img_0525.jpg 409 | img_0683.jpg 410 | img_0513.jpg 411 | img_0850.jpg 412 | img_0602.jpg 413 | img_0718.jpg 414 | img_0056.jpg 415 | img_0910.jpg 416 | img_0082.jpg 417 | img_0359.jpg 418 | img_0686.jpg 419 | img_0011.jpg 420 | img_0581.jpg 421 | img_0058.jpg 422 | img_0223.jpg 423 | img_0935.jpg 424 | img_1067.jpg 425 | img_0526.jpg 426 | img_0575.jpg 427 | img_1002.jpg 428 | img_1058.jpg 429 | img_0800.jpg 430 | img_0015.jpg 431 | img_0541.jpg 432 | img_0776.jpg 433 | img_0995.jpg 434 | -------------------------------------------------------------------------------- /label_list/ucf-5.txt: -------------------------------------------------------------------------------- 1 | img_0465.jpg 2 | img_0010.jpg 3 | img_0747.jpg 4 | img_0608.jpg 5 | img_0021.jpg 6 | img_0753.jpg 7 | img_0188.jpg 8 | img_0848.jpg 9 | img_1167.jpg 10 | img_0089.jpg 11 | img_0343.jpg 12 | img_0780.jpg 13 | img_0243.jpg 14 | img_0326.jpg 15 | img_0450.jpg 16 | img_0582.jpg 17 | img_0367.jpg 18 | img_0767.jpg 19 | img_0636.jpg 20 | img_0538.jpg 21 | img_0872.jpg 22 | img_0324.jpg 23 | img_0238.jpg 24 | img_0951.jpg 25 | img_0262.jpg 26 | img_0436.jpg 27 | img_0516.jpg 28 | img_0727.jpg 29 | img_1076.jpg 30 | img_1171.jpg 31 | img_0413.jpg 32 | img_0358.jpg 33 | img_0168.jpg 34 | img_0050.jpg 35 | img_0331.jpg 36 | img_0659.jpg 37 | img_0098.jpg 38 | img_0053.jpg 39 | img_0162.jpg 40 | img_0345.jpg 41 | img_0199.jpg 42 | img_1066.jpg 43 | img_1071.jpg 44 | img_0002.jpg 45 | img_0312.jpg 46 | img_0197.jpg 47 | img_0349.jpg 48 | img_0254.jpg 49 | img_0446.jpg 50 | img_0340.jpg 51 | img_0744.jpg 52 | img_0362.jpg 53 | img_0371.jpg 54 | img_0876.jpg 55 | img_0973.jpg -------------------------------------------------------------------------------- /losses/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /losses/bay_loss_focal.py: -------------------------------------------------------------------------------- 1 | from torch.nn.modules import Module 2 | import torch 3 | from math import ceil 4 | 5 | class Bay_Loss(Module): 6 | def __init__(self, use_background, device): 7 | super(Bay_Loss, self).__init__() 8 | self.device = device 9 | self.use_bg = use_background 10 | 11 | def forward(self, prob_list, target_list, pre_density): 12 | loss = 0 13 | for idx, prob in enumerate(prob_list): # iterative through each sample 14 | if prob is None: # image contains no annotation points 15 | pre_count = torch.sum(pre_density[idx]) 16 | target = torch.zeros((1,), dtype=torch.float32, device=self.device) 17 | else: 18 | N = len(prob) 19 | if self.use_bg: 20 | target = torch.zeros((N,), dtype=torch.float32, device=self.device) 21 | target[:-1] = target_list[idx] 22 | else: 23 | target = target_list[idx] 24 | pre_count = torch.sum(pre_density[idx].view((1, -1)) * prob, dim=1) # flatten into vector 25 | 26 | res = torch.abs(target - pre_count) 27 | 28 | loss += res[-1] 29 | loss += torch.sum(res[:-1] * (torch.exp(-res[:-1]).detach())) 30 | 31 | loss = loss / len(prob_list) 32 | return loss 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /losses/post_gau.py: -------------------------------------------------------------------------------- 1 | import torch 2 | from torch.nn import Module 3 | 4 | class Post_Prob(Module): 5 | def __init__(self, sigma, c_size, stride, background_ratio, use_background, device): 6 | super(Post_Prob, self).__init__() 7 | assert c_size % stride == 0 8 | 9 | self.sigma = sigma 10 | self.bg_ratio = background_ratio 11 | self.device = device 12 | # coordinate is same to image space, set to constant since crop size is same 13 | self.cood = torch.arange(0, c_size, step=stride, 14 | dtype=torch.float32, device=device) + stride / 2 15 | self.cood.unsqueeze_(0) 16 | self.softmax = torch.nn.Softmax(dim=0) 17 | self.use_bg = use_background 18 | self.wid = c_size // stride 19 | 20 | def forward(self, points, st_sizes): 21 | num_points_per_image = [len(points_per_image) for points_per_image in points] 22 | all_points = torch.cat(points, dim=0) 23 | 24 | if len(all_points) > 0: 25 | x = all_points[:, 0].unsqueeze_(1) 26 | y = all_points[:, 1].unsqueeze_(1) 27 | x_dis = -2 * torch.matmul(x, self.cood) + x * x + self.cood * self.cood 28 | y_dis = -2 * torch.matmul(y, self.cood) + y * y + self.cood * self.cood 29 | y_dis.unsqueeze_(2) 30 | x_dis.unsqueeze_(1) 31 | dis = y_dis + x_dis 32 | dis = dis.view((dis.size(0), -1)) 33 | 34 | dis_list = torch.split(dis, num_points_per_image) 35 | prob_list = [] 36 | for dis, st_size in zip(dis_list, st_sizes): 37 | if len(dis) > 0: 38 | gau = -dis / (2.0 * self.sigma ** 2) 39 | gau = torch.nn.functional.softmax(gau, dim=1) 40 | gau = torch.sum(gau, dim=0).resize(self.wid, self.wid) 41 | if self.use_bg: 42 | min_dis = torch.clamp(torch.min(dis, dim=0, keepdim=True)[0], min=0.0) 43 | d = st_size * self.bg_ratio 44 | bg_dis = (d - torch.sqrt(min_dis))**2 45 | dis = torch.cat([dis, bg_dis], 0) # concatenate background distance to the last 46 | dis = -dis / (2.0 * self.sigma ** 2) 47 | prob = self.softmax(dis) 48 | 49 | else: 50 | prob = None 51 | gau = torch.zeros((self.wid, self.wid), dtype=torch.float32, device=self.device) 52 | prob_list.append(prob) 53 | else: 54 | gau = torch.zeros((self.wid, self.wid), dtype=torch.float32, device=self.device) 55 | prob_list = [] 56 | for _ in range(len(points)): 57 | prob_list.append(None) 58 | return prob_list, gau 59 | 60 | 61 | -------------------------------------------------------------------------------- /models/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoraLinH/Semi-supervised-Crowd-Counting-via-Density-Agency/faeb8d3ec8dfed706d8c554167e6653d4e4832e2/models/__init__.py -------------------------------------------------------------------------------- /models/transformer.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved 2 | """ 3 | DETR Transformer class. 4 | 5 | Copy-paste from torch.nn.Transformer with modifications: 6 | * positional encodings are passed in MHattention 7 | * extra LN at the end of encoder is removed 8 | * decoder returns a stack of activations from all decoding layers 9 | """ 10 | import copy 11 | from typing import Optional, List 12 | 13 | import torch 14 | import torch.nn.functional as F 15 | from torch import nn, Tensor 16 | 17 | 18 | class Transformer(nn.Module): 19 | 20 | def __init__(self, d_model=512, nhead=8, num_encoder_layers=6, 21 | num_decoder_layers=6, dim_feedforward=2048, dropout=0.1, 22 | activation="relu", normalize_before=False, 23 | return_intermediate_dec=False): 24 | super().__init__() 25 | 26 | encoder_layer = TransformerEncoderLayer(d_model, nhead, dim_feedforward, 27 | dropout, activation, normalize_before) 28 | encoder_norm = nn.LayerNorm(d_model) if normalize_before else None 29 | self.encoder = TransformerEncoder(encoder_layer, num_encoder_layers, encoder_norm) 30 | 31 | decoder_layer = TransformerDecoderLayer(d_model, nhead, dim_feedforward, 32 | dropout, activation, normalize_before) 33 | decoder_norm = nn.LayerNorm(d_model) 34 | self.decoder = TransformerDecoder(decoder_layer, num_decoder_layers, decoder_norm, 35 | return_intermediate=return_intermediate_dec) 36 | 37 | self._reset_parameters() 38 | 39 | self.d_model = d_model 40 | self.nhead = nhead 41 | 42 | def _reset_parameters(self): 43 | for p in self.parameters(): 44 | if p.dim() > 1: 45 | nn.init.xavier_uniform_(p) 46 | 47 | def forward(self, src, mask, query_embed, pos_embed): 48 | # flatten NxCxHxW to HWxNxC 49 | bs, c, h, w = src.shape 50 | src = src.flatten(2).permute(2, 0, 1) 51 | pos_embed = pos_embed.flatten(2).permute(2, 0, 1) 52 | query_embed = query_embed.unsqueeze(1).repeat(1, bs, 1) 53 | mask = mask.flatten(1) 54 | 55 | tgt = torch.zeros_like(query_embed) 56 | memory = self.encoder(src, src_key_padding_mask=mask, pos=pos_embed) 57 | hs = self.decoder(tgt, memory, memory_key_padding_mask=mask, 58 | pos=pos_embed, query_pos=query_embed) 59 | return hs.transpose(1, 2), memory.permute(1, 2, 0).view(bs, c, h, w) 60 | 61 | 62 | class TransformerEncoder(nn.Module): 63 | 64 | def __init__(self, encoder_layer, num_layers, norm=None): 65 | super().__init__() 66 | self.layers = _get_clones(encoder_layer, num_layers) 67 | self.num_layers = num_layers 68 | self.norm = norm 69 | 70 | def forward(self, src, 71 | mask: Optional[Tensor] = None, 72 | src_key_padding_mask: Optional[Tensor] = None, 73 | pos: Optional[Tensor] = None): 74 | output = src 75 | 76 | for layer in self.layers: 77 | output = layer(output, src_mask=mask, 78 | src_key_padding_mask=src_key_padding_mask, pos=pos) 79 | 80 | if self.norm is not None: 81 | output = self.norm(output) 82 | 83 | return output 84 | 85 | 86 | class TransformerDecoder(nn.Module): 87 | 88 | def __init__(self, decoder_layer, num_layers, norm=None, return_intermediate=False): 89 | super().__init__() 90 | self.layers = _get_clones(decoder_layer, num_layers) 91 | self.num_layers = num_layers 92 | self.norm = norm 93 | self.return_intermediate = return_intermediate 94 | 95 | def forward(self, tgt, memory, 96 | tgt_mask: Optional[Tensor] = None, 97 | memory_mask: Optional[Tensor] = None, 98 | tgt_key_padding_mask: Optional[Tensor] = None, 99 | memory_key_padding_mask: Optional[Tensor] = None, 100 | pos: Optional[Tensor] = None, 101 | query_pos: Optional[Tensor] = None): 102 | output = tgt 103 | 104 | intermediate = [] 105 | 106 | for layer in self.layers: 107 | output = layer(output, memory, tgt_mask=tgt_mask, 108 | memory_mask=memory_mask, 109 | tgt_key_padding_mask=tgt_key_padding_mask, 110 | memory_key_padding_mask=memory_key_padding_mask, 111 | pos=pos, query_pos=query_pos) 112 | if self.return_intermediate: 113 | intermediate.append(self.norm(output)) 114 | 115 | if self.norm is not None: 116 | output = self.norm(output) 117 | if self.return_intermediate: 118 | intermediate.pop() 119 | intermediate.append(output) 120 | 121 | if self.return_intermediate: 122 | return torch.stack(intermediate) 123 | 124 | return output.unsqueeze(0) 125 | 126 | 127 | class TransformerEncoderLayer(nn.Module): 128 | 129 | def __init__(self, d_model, nhead, dim_feedforward=2048, dropout=0.1, 130 | activation="relu", normalize_before=False): 131 | super().__init__() 132 | self.self_attn = nn.MultiheadAttention(d_model, nhead, dropout=dropout) 133 | # Implementation of Feedforward model 134 | self.linear1 = nn.Linear(d_model, dim_feedforward) 135 | self.dropout = nn.Dropout(dropout) 136 | self.linear2 = nn.Linear(dim_feedforward, d_model) 137 | 138 | self.norm1 = nn.LayerNorm(d_model) 139 | self.norm2 = nn.LayerNorm(d_model) 140 | self.dropout1 = nn.Dropout(dropout) 141 | self.dropout2 = nn.Dropout(dropout) 142 | 143 | self.activation = _get_activation_fn(activation) 144 | self.normalize_before = normalize_before 145 | 146 | def with_pos_embed(self, tensor, pos: Optional[Tensor]): 147 | return tensor if pos is None else tensor + pos 148 | 149 | def forward_post(self, src, 150 | src_mask: Optional[Tensor] = None, 151 | src_key_padding_mask: Optional[Tensor] = None, 152 | pos: Optional[Tensor] = None): 153 | q = k = self.with_pos_embed(src, pos) 154 | # src2 = self.self_attn(q, k[src_mask], value=src[src_mask], attn_mask=None, 155 | # key_padding_mask=src_key_padding_mask)[0] 156 | src2 = self.self_attn(q, k, value=src, attn_mask=src_mask, 157 | key_padding_mask=src_key_padding_mask)[0] 158 | src = src + self.dropout1(src2) 159 | src = self.norm1(src) 160 | src2 = self.linear2(self.dropout(self.activation(self.linear1(src)))) 161 | src = src + self.dropout2(src2) 162 | src = self.norm2(src) 163 | return src 164 | 165 | def forward_pre(self, src, 166 | src_mask: Optional[Tensor] = None, 167 | src_key_padding_mask: Optional[Tensor] = None, 168 | pos: Optional[Tensor] = None): 169 | src2 = self.norm1(src) 170 | q = k = self.with_pos_embed(src2, pos) 171 | src2 = self.self_attn(q, k, value=src2, attn_mask=src_mask, 172 | key_padding_mask=src_key_padding_mask)[0] 173 | src = src + self.dropout1(src2) 174 | src2 = self.norm2(src) 175 | src2 = self.linear2(self.dropout(self.activation(self.linear1(src2)))) 176 | src = src + self.dropout2(src2) 177 | return src 178 | 179 | def forward(self, src, 180 | src_mask: Optional[Tensor] = None, 181 | src_key_padding_mask: Optional[Tensor] = None, 182 | pos: Optional[Tensor] = None): 183 | if self.normalize_before: 184 | return self.forward_pre(src, src_mask, src_key_padding_mask, pos) 185 | return self.forward_post(src, src_mask, src_key_padding_mask, pos) 186 | 187 | 188 | class TransformerDecoderLayer(nn.Module): 189 | 190 | def __init__(self, d_model, nhead, dim_feedforward=2048, dropout=0.1, 191 | activation="relu", normalize_before=False): 192 | super().__init__() 193 | self.self_attn = nn.MultiheadAttention(d_model, nhead, dropout=dropout) 194 | self.multihead_attn = nn.MultiheadAttention(d_model, nhead, dropout=dropout) 195 | # Implementation of Feedforward model 196 | self.linear1 = nn.Linear(d_model, dim_feedforward) 197 | self.dropout = nn.Dropout(dropout) 198 | self.linear2 = nn.Linear(dim_feedforward, d_model) 199 | 200 | self.norm1 = nn.LayerNorm(d_model) 201 | self.norm2 = nn.LayerNorm(d_model) 202 | self.norm3 = nn.LayerNorm(d_model) 203 | self.dropout1 = nn.Dropout(dropout) 204 | self.dropout2 = nn.Dropout(dropout) 205 | self.dropout3 = nn.Dropout(dropout) 206 | 207 | self.activation = _get_activation_fn(activation) 208 | self.normalize_before = normalize_before 209 | 210 | def with_pos_embed(self, tensor, pos: Optional[Tensor]): 211 | return tensor if pos is None else tensor + pos 212 | 213 | def forward_post(self, tgt, memory, 214 | tgt_mask: Optional[Tensor] = None, 215 | memory_mask: Optional[Tensor] = None, 216 | tgt_key_padding_mask: Optional[Tensor] = None, 217 | memory_key_padding_mask: Optional[Tensor] = None, 218 | pos: Optional[Tensor] = None, 219 | query_pos: Optional[Tensor] = None): 220 | q = k = self.with_pos_embed(tgt, query_pos) 221 | tgt2 = self.self_attn(q, k, value=tgt, attn_mask=tgt_mask, 222 | key_padding_mask=tgt_key_padding_mask)[0] 223 | tgt = tgt + self.dropout1(tgt2) 224 | tgt = self.norm1(tgt) 225 | tgt2 = self.multihead_attn(query=self.with_pos_embed(tgt, query_pos), 226 | key=self.with_pos_embed(memory, pos), 227 | value=memory, attn_mask=memory_mask, 228 | key_padding_mask=memory_key_padding_mask)[0] 229 | tgt = tgt + self.dropout2(tgt2) 230 | tgt = self.norm2(tgt) 231 | tgt2 = self.linear2(self.dropout(self.activation(self.linear1(tgt)))) 232 | tgt = tgt + self.dropout3(tgt2) 233 | tgt = self.norm3(tgt) 234 | return tgt 235 | 236 | def forward_pre(self, tgt, memory, 237 | tgt_mask: Optional[Tensor] = None, 238 | memory_mask: Optional[Tensor] = None, 239 | tgt_key_padding_mask: Optional[Tensor] = None, 240 | memory_key_padding_mask: Optional[Tensor] = None, 241 | pos: Optional[Tensor] = None, 242 | query_pos: Optional[Tensor] = None): 243 | tgt2 = self.norm1(tgt) 244 | q = k = self.with_pos_embed(tgt2, query_pos) 245 | tgt2 = self.self_attn(q, k, value=tgt2, attn_mask=tgt_mask, 246 | key_padding_mask=tgt_key_padding_mask)[0] 247 | tgt = tgt + self.dropout1(tgt2) 248 | tgt2 = self.norm2(tgt) 249 | tgt2 = self.multihead_attn(query=self.with_pos_embed(tgt2, query_pos), 250 | key=self.with_pos_embed(memory, pos), 251 | value=memory, attn_mask=memory_mask, 252 | key_padding_mask=memory_key_padding_mask)[0] 253 | tgt = tgt + self.dropout2(tgt2) 254 | tgt2 = self.norm3(tgt) 255 | tgt2 = self.linear2(self.dropout(self.activation(self.linear1(tgt2)))) 256 | tgt = tgt + self.dropout3(tgt2) 257 | return tgt 258 | 259 | def forward(self, tgt, memory, 260 | tgt_mask: Optional[Tensor] = None, 261 | memory_mask: Optional[Tensor] = None, 262 | tgt_key_padding_mask: Optional[Tensor] = None, 263 | memory_key_padding_mask: Optional[Tensor] = None, 264 | pos: Optional[Tensor] = None, 265 | query_pos: Optional[Tensor] = None): 266 | if self.normalize_before: 267 | return self.forward_pre(tgt, memory, tgt_mask, memory_mask, 268 | tgt_key_padding_mask, memory_key_padding_mask, pos, query_pos) 269 | return self.forward_post(tgt, memory, tgt_mask, memory_mask, 270 | tgt_key_padding_mask, memory_key_padding_mask, pos, query_pos) 271 | 272 | 273 | def _get_clones(module, N): 274 | return nn.ModuleList([copy.deepcopy(module) for i in range(N)]) 275 | 276 | 277 | def build_transformer(args): 278 | return Transformer( 279 | d_model=args.hidden_dim, 280 | dropout=args.dropout, 281 | nhead=args.nheads, 282 | dim_feedforward=args.dim_feedforward, 283 | num_encoder_layers=args.enc_layers, 284 | num_decoder_layers=args.dec_layers, 285 | normalize_before=args.pre_norm, 286 | return_intermediate_dec=True, 287 | ) 288 | 289 | 290 | def _get_activation_fn(activation): 291 | """Return an activation function given a string""" 292 | if activation == "relu": 293 | return F.relu 294 | if activation == "gelu": 295 | return F.gelu 296 | if activation == "glu": 297 | return F.glu 298 | raise RuntimeError(F"activation should be relu/gelu, not {activation}.") 299 | -------------------------------------------------------------------------------- /models/vgg.py: -------------------------------------------------------------------------------- 1 | import torch.nn as nn 2 | import torch.utils.model_zoo as model_zoo 3 | import torch 4 | from torch.nn import functional as F 5 | import math 6 | from .transformer import TransformerDecoder, TransformerDecoderLayer 7 | 8 | 9 | __all__ = ['vgg19', 'vgg19_mask', 'vgg19_mask_up', 'vgg_19_3D', 'vgg19_z', 'vgg19_y', 'vgg19_trans'] 10 | model_urls = {'vgg19': 'https://download.pytorch.org/models/vgg19-dcbb9e9d.pth'} 11 | 12 | 13 | class VGG(nn.Module): 14 | def __init__(self, features): 15 | super(VGG, self).__init__() 16 | self.features = features 17 | self.reg_layer_0 = nn.Sequential( 18 | nn.Conv2d(512, 256, kernel_size=3, padding=1), 19 | nn.ReLU(inplace=True), 20 | nn.Conv2d(256, 128, kernel_size=3, padding=1), 21 | nn.ReLU(inplace=True), 22 | nn.Conv2d(128, 1, 1) 23 | ) 24 | 25 | def forward(self, x): 26 | b, c, h, w = x.shape 27 | h = int(h) // 8 28 | w = int(w) // 8 29 | x = self.features(x) 30 | x = F.upsample_bilinear(x, size=(h, w)) 31 | x = self.reg_layer_0(x) 32 | return torch.relu(x) 33 | 34 | class VGG_Trans(nn.Module): 35 | def __init__(self, features): 36 | super(VGG_Trans, self).__init__() 37 | self.features = features 38 | 39 | d_model = 512 40 | nhead = 2 41 | num_layers = 2 42 | dim_feedforward = 1024 43 | dropout = 0.1 44 | activation = "relu" 45 | normalize_before = False 46 | decoder_layer = TransformerDecoderLayer(d_model, nhead, dim_feedforward, 47 | dropout, activation, normalize_before) 48 | if_norm = nn.LayerNorm(d_model) if normalize_before else None 49 | 50 | self.decoder = TransformerDecoder(decoder_layer, num_layers, if_norm) 51 | self.reg_layer_0 = nn.Sequential( 52 | nn.Conv2d(512, 256, kernel_size=3, padding=1), 53 | nn.ReLU(inplace=True), 54 | nn.Conv2d(256, 128, kernel_size=3, padding=1), 55 | nn.ReLU(inplace=True), 56 | nn.Conv2d(128, 1, 1) 57 | ) 58 | self.mask = nn.Sequential( 59 | nn.Conv2d(512, 256, kernel_size=3, padding=1), 60 | nn.ReLU(inplace=True), 61 | nn.Conv2d(256, 128, kernel_size=3, padding=1), 62 | nn.ReLU(inplace=True), 63 | nn.Conv2d(128, 1, 1) 64 | ) 65 | self.memory_list = nn.Parameter(torch.randn((24, 512))) 66 | 67 | 68 | def forward(self, x): 69 | 70 | x = self.features(x) 71 | mask = torch.sigmoid(self.mask(x)) 72 | mask_de = (mask.detach() > 0.5) 73 | 74 | bs, c, h, w = x.shape 75 | x = x.flatten(2).permute(2, 0, 1) 76 | y = x.clone() 77 | if mask_de.sum(): 78 | y[mask_de.flatten()] = self.decoder(y[mask_de.flatten()], x) 79 | z = y.permute(1, 2, 0).view(bs, c, h, w) 80 | 81 | z = self.reg_layer_0(z) 82 | return torch.relu(z)*mask_de, mask, x.squeeze(1) 83 | 84 | 85 | class VGG_Mask(nn.Module): 86 | def __init__(self, features): 87 | super(VGG_Mask, self).__init__() 88 | self.features = features 89 | 90 | self.reg_layer = nn.Sequential( 91 | nn.Conv2d(512, 256, kernel_size=3, padding=1), 92 | nn.ReLU(inplace=True), 93 | nn.Conv2d(256, 128, kernel_size=3, padding=1), 94 | nn.ReLU(inplace=True), 95 | nn.Conv2d(128, 1, 1) 96 | ) 97 | 98 | self.reg_layer_1 = nn.Sequential( 99 | nn.Conv2d(512, 256, kernel_size=3, padding=1), 100 | nn.ReLU(inplace=True), 101 | nn.Conv2d(256, 128, kernel_size=3, padding=1), 102 | nn.ReLU(inplace=True), 103 | nn.Conv2d(128, 1, 1) 104 | ) 105 | 106 | 107 | def forward(self, x): 108 | x_0 = self.features(x) 109 | x = self.reg_layer(x_0) 110 | x_1 = self.reg_layer_1(x_0) 111 | return x, torch.relu(x_1) 112 | 113 | 114 | class VGG_3D(nn.Module): 115 | def __init__(self, features, scale_dim): 116 | super(VGG_3D, self).__init__() 117 | self.features = features 118 | self.reg_layer = nn.Sequential( 119 | nn.Conv2d(512, 256, kernel_size=3, padding=1), 120 | nn.ReLU(inplace=True), 121 | nn.Conv2d(256, 128, kernel_size=3, padding=1), 122 | nn.ReLU(inplace=True), 123 | nn.Conv2d(128, scale_dim, 1) 124 | ) 125 | 126 | def forward(self, x): 127 | x = self.features(x) 128 | x = self.reg_layer(x) 129 | return torch.relu(x) # output is the probability 130 | 131 | 132 | class VGG_Mask_8(nn.Module): 133 | def __init__(self, features): 134 | super(VGG_Mask_8, self).__init__() 135 | self.features = features 136 | 137 | self.reg_layer = nn.Sequential( 138 | nn.Conv2d(512, 256, kernel_size=3, padding=1), 139 | nn.ReLU(inplace=True), 140 | nn.Conv2d(256, 128, kernel_size=3, padding=1), 141 | nn.ReLU(inplace=True), 142 | nn.Conv2d(128, 1, 1) 143 | ) 144 | 145 | self.reg_layer_1 = nn.Sequential( 146 | nn.Conv2d(512, 256, kernel_size=3, padding=1), 147 | nn.ReLU(inplace=True), 148 | nn.Conv2d(256, 128, kernel_size=3, padding=1), 149 | nn.ReLU(inplace=True), 150 | nn.Conv2d(128, 1, 1) 151 | ) 152 | 153 | 154 | def forward(self, x): 155 | b, c, h, w = x.shape 156 | h = int(h) // 8 157 | w = int(w) // 8 158 | x_0 = self.features(x) 159 | x_0 = F.upsample_bilinear(x_0, size=(h, w)) 160 | x = self.reg_layer(x_0) 161 | x_1 = self.reg_layer_1(x_0) 162 | return x, torch.relu(x_1) 163 | 164 | 165 | class VGG_Z(nn.Module): 166 | def __init__(self, features): 167 | super(VGG_Z, self).__init__() 168 | self.features = features 169 | 170 | self.reg_layer = nn.Sequential( 171 | nn.Conv2d(512, 256, kernel_size=3, padding=1), 172 | nn.ReLU(inplace=True), 173 | nn.Conv2d(256, 128, kernel_size=3, padding=1), 174 | nn.ReLU(inplace=True), 175 | nn.Conv2d(128, 1, 1) 176 | ) 177 | 178 | self.reg_layer_1 = nn.Sequential( 179 | nn.Conv2d(512, 256, kernel_size=3, padding=1), 180 | nn.ReLU(inplace=True), 181 | nn.Conv2d(256, 128, kernel_size=3, padding=1), 182 | nn.ReLU(inplace=True), 183 | nn.Conv2d(128, 1, 1) 184 | ) 185 | 186 | 187 | def forward(self, x): 188 | x_0 = self.features(x) 189 | x = self.reg_layer(x_0) 190 | x_1 = self.reg_layer_1(x_0) 191 | return torch.relu(x), torch.sigmoid(x_1) 192 | # return torch.relu(x), torch.relu(x_1) 193 | 194 | class VGG_Y(nn.Module): 195 | def __init__(self, features): 196 | super(VGG_Y, self).__init__() 197 | self.features = features 198 | 199 | self.reg_layer = nn.Sequential( 200 | nn.Conv2d(512, 256, kernel_size=3, padding=1), 201 | nn.ReLU(inplace=True), 202 | nn.Conv2d(256, 128, kernel_size=3, padding=1), 203 | nn.ReLU(inplace=True), 204 | nn.Conv2d(128, 2, 1) 205 | ) 206 | 207 | def forward(self, x): 208 | X = self.features(x) 209 | x = self.reg_layer(X) 210 | x_0, x_1 = torch.split(x, 1, dim=1) 211 | return torch.relu(x_0), torch.sigmoid(x_1) 212 | 213 | def make_layers(cfg, batch_norm=False): 214 | layers = [] 215 | in_channels = 3 216 | for v in cfg: 217 | if v == 'M': 218 | layers += [nn.MaxPool2d(kernel_size=2, stride=2)] 219 | else: 220 | conv2d = nn.Conv2d(in_channels, v, kernel_size=3, padding=1) 221 | if batch_norm: 222 | layers += [conv2d, nn.BatchNorm2d(v), nn.ReLU(inplace=True)] 223 | else: 224 | layers += [conv2d, nn.ReLU(inplace=True)] 225 | in_channels = v 226 | return nn.Sequential(*layers) 227 | 228 | 229 | cfg = { 230 | 'E': [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 256, 'M', 512, 512, 512, 512, 'M', 512, 512, 512, 512] 231 | } 232 | 233 | def vgg19(): 234 | """VGG 19-layer model (configuration "E") 235 | model pre-trained on ImageNet 236 | """ 237 | model = VGG(make_layers(cfg['E'])) 238 | model.load_state_dict(model_zoo.load_url(model_urls['vgg19']), strict=False) 239 | return model 240 | 241 | def vgg19_trans(): 242 | """VGG 19-layer model (configuration "E") 243 | model pre-trained on ImageNet 244 | """ 245 | model = VGG_Trans(make_layers(cfg['E'])) 246 | model.load_state_dict(model_zoo.load_url(model_urls['vgg19']), strict=False) 247 | return model 248 | 249 | def vgg19_mask(): 250 | """VGG 19-layer model (configuration "E") 251 | model pre-trained on ImageNet 252 | """ 253 | model = VGG_Mask(make_layers(cfg['E'])) 254 | model.load_state_dict(model_zoo.load_url(model_urls['vgg19']), strict=False) 255 | return model 256 | 257 | def vgg19_z(): 258 | """VGG 19-layer model (configuration "E") 259 | model pre-trained on ImageNet 260 | """ 261 | model = VGG_Z(make_layers(cfg['E'])) 262 | model.load_state_dict(model_zoo.load_url(model_urls['vgg19']), strict=False) 263 | return model 264 | 265 | def vgg19_y(): 266 | """VGG 19-layer model (configuration "E") 267 | model pre-trained on ImageNet 268 | """ 269 | model = VGG_Y(make_layers(cfg['E'])) 270 | model.load_state_dict(model_zoo.load_url(model_urls['vgg19']), strict=False) 271 | return model 272 | 273 | def vgg19_mask_up(): 274 | """VGG 19-layer model (configuration "E") 275 | model pre-trained on ImageNet 276 | """ 277 | model = VGG_Mask_8(make_layers(cfg['E'])) 278 | model.load_state_dict(model_zoo.load_url(model_urls['vgg19']), strict=False) 279 | return model 280 | 281 | 282 | def vgg_19_3D(fea_dim): 283 | model = VGG_3D(make_layers(cfg['E']), fea_dim) 284 | model.load_state_dict(model_zoo.load_url(model_urls['vgg19']), strict=False) 285 | return model 286 | -------------------------------------------------------------------------------- /structure.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoraLinH/Semi-supervised-Crowd-Counting-via-Density-Agency/faeb8d3ec8dfed706d8c554167e6653d4e4832e2/structure.jpg -------------------------------------------------------------------------------- /test.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import os 3 | import numpy as np 4 | from datasets.crowd_semi import Crowd 5 | from models.vgg import vgg19_trans 6 | import argparse 7 | import math 8 | from glob import glob 9 | from datetime import datetime 10 | 11 | args = None 12 | 13 | 14 | def parse_args(): 15 | parser = argparse.ArgumentParser(description='Test ') 16 | parser.add_argument('--data-dir', default='/tmp/Counting/UCF-Train-Val-Test', 17 | help='training data directory') 18 | parser.add_argument('--save-dir', default='model', 19 | help='model directory') 20 | parser.add_argument('--device', default='0', help='assign device') 21 | args = parser.parse_args() 22 | return args 23 | 24 | 25 | if __name__ == '__main__': 26 | args = parse_args() 27 | os.environ['CUDA_VISIBLE_DEVICES'] = args.device.strip() # set vis gpu 28 | 29 | datasets = Crowd(os.path.join(args.data_dir, 'test'), 512, 8, is_gray=False, method='val') 30 | dataloader = torch.utils.data.DataLoader(datasets, 1, shuffle=False, 31 | num_workers=8, pin_memory=False) 32 | 33 | model_list = sorted(glob(os.path.join(args.save_dir, '*.pth'))) 34 | if len(model_list) > 3: 35 | model_list = model_list[-3:] 36 | device = torch.device('cuda') 37 | model = vgg19_trans() 38 | model.to(device) 39 | model.eval() 40 | log_list = [] 41 | 42 | for model_path in model_list: 43 | epoch_minus = [] 44 | model.load_state_dict(torch.load(model_path, device)) 45 | for inputs, count, name in dataloader: 46 | inputs = inputs.to(device) 47 | b, c, h, w = inputs.shape 48 | h, w = int(h), int(w) 49 | assert b == 1, 'the batch size should equal to 1 in validation mode' 50 | input_list = [] 51 | c_size = 2560 52 | if h >= c_size or w >= c_size: 53 | h_stride = int(math.ceil(1.0 * h / c_size)) 54 | w_stride = int(math.ceil(1.0 * w / c_size)) 55 | h_step = h // h_stride 56 | w_step = w // w_stride 57 | for i in range(h_stride): 58 | for j in range(w_stride): 59 | h_start = i * h_step 60 | if i != h_stride - 1: 61 | h_end = (i + 1) * h_step 62 | else: 63 | h_end = h 64 | w_start = j * w_step 65 | if j != w_stride - 1: 66 | w_end = (j + 1) * w_step 67 | else: 68 | w_end = w 69 | input_list.append(inputs[:, :, h_start:h_end, w_start:w_end]) 70 | with torch.set_grad_enabled(False): 71 | pre_count = 0.0 72 | for idx, input in enumerate(input_list): 73 | output = model(input)[0] 74 | pre_count += torch.sum(output) 75 | res = count[0].item() - pre_count.item() 76 | epoch_minus.append(res) 77 | else: 78 | with torch.set_grad_enabled(False): 79 | outputs = model(inputs)[0] 80 | res = count[0].item() - torch.sum(outputs).item() 81 | epoch_minus.append(res) 82 | 83 | epoch_minus = np.array(epoch_minus) 84 | mse = np.sqrt(np.mean(np.square(epoch_minus))) 85 | mae = np.mean(np.abs(epoch_minus)) 86 | log_str = 'model_name {}, mae {}, mse {}'.format(os.path.basename(model_path), mae, mse) 87 | log_list.append(log_str) 88 | print(log_str) 89 | 90 | date_str = datetime.strftime(datetime.now(), '%m%d-%H%M%S') 91 | with open(os.path.join(args.save_dir, 'test_results_{}.txt'.format(date_str)), 'w') as f: 92 | for log_str in log_list: 93 | f.write(log_str + '\n') 94 | -------------------------------------------------------------------------------- /train.py: -------------------------------------------------------------------------------- 1 | from utils.regression_trainer import RegTrainer 2 | import argparse 3 | import os 4 | import torch 5 | args = None 6 | 7 | def parse_args(): 8 | parser = argparse.ArgumentParser(description='Train ') 9 | parser.add_argument('--model-name', default='vgg19_trans', help='the name of the model') 10 | parser.add_argument('--data-dir', default='/tmp/Counting/UCF-Train-Val-Test', 11 | help='training data directory') 12 | parser.add_argument('--save-dir', default='model', 13 | help='directory to save models.') 14 | parser.add_argument('--info', default='ucf-5', 15 | help='refer to label list') 16 | parser.add_argument('--save-all', type=bool, default=False, 17 | help='whether to save all best model') 18 | parser.add_argument('--lr', type=float, default=0.5*1e-5, 19 | help='the initial learning rate') 20 | parser.add_argument('--weight-decay', type=float, default=1e-5, 21 | help='the weight decay') 22 | parser.add_argument('--resume', default='', 23 | help='the path of resume training model') 24 | parser.add_argument('--max-model-num', type=int, default=1, 25 | help='max models num to save ') 26 | parser.add_argument('--max-epoch', type=int, default=1200, 27 | help='max training epoch') 28 | parser.add_argument('--val-epoch', type=int, default=5, 29 | help='the num of steps to log training information') 30 | parser.add_argument('--val-start', type=int, default=250, 31 | help='the epoch start to val') 32 | parser.add_argument('--unlabel-start', type=int, default=5, 33 | help='the epoch start to unlabel') 34 | parser.add_argument('--device', default='0', help='assign device') 35 | parser.add_argument('--num-workers', type=int, default=8, 36 | help='the num of training process') 37 | parser.add_argument('--is-gray', type=bool, default=False, 38 | help='whether the input image is gray') 39 | parser.add_argument('--crop-size', type=int, default=512, 40 | help='the crop size of the train image') 41 | parser.add_argument('--downsample-ratio', type=int, default=16, 42 | help='downsample ratio') 43 | parser.add_argument('--use-background', type=bool, default=True, 44 | help='whether to use background modelling') 45 | parser.add_argument('--sigma', type=float, default=8.0, 46 | help='sigma for likelihood') 47 | parser.add_argument('--background-ratio', type=float, default=0.15, 48 | help='background ratio') 49 | args = parser.parse_args() 50 | return args 51 | 52 | 53 | if __name__ == '__main__': 54 | args = parse_args() 55 | torch.backends.cudnn.benchmark = True 56 | os.environ['CUDA_VISIBLE_DEVICES'] = args.device.strip() # set vis gpu 57 | trainer = RegTrainer(args) 58 | trainer.setup() 59 | trainer.train() 60 | -------------------------------------------------------------------------------- /utils/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /utils/helper.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | class Save_Handle(object): 4 | """handle the number of """ 5 | def __init__(self, max_num): 6 | self.save_list = [] 7 | self.max_num = max_num 8 | 9 | def append(self, save_path): 10 | if len(self.save_list) < self.max_num: 11 | self.save_list.append(save_path) 12 | else: 13 | remove_path = self.save_list[0] 14 | del self.save_list[0] 15 | self.save_list.append(save_path) 16 | if os.path.exists(remove_path): 17 | os.remove(remove_path) 18 | 19 | 20 | class AverageMeter(object): 21 | """Computes and stores the average and current value""" 22 | def __init__(self): 23 | self.reset() 24 | 25 | def reset(self): 26 | self.val = 0 27 | self.avg = 0 28 | self.sum = 0 29 | self.count = 0 30 | 31 | def update(self, val, n=1): 32 | self.val = val 33 | self.sum += val * n 34 | self.count += n 35 | self.avg = 1.0 * self.sum / self.count 36 | 37 | def get_avg(self): 38 | return self.avg 39 | 40 | def get_count(self): 41 | return self.count 42 | -------------------------------------------------------------------------------- /utils/logger.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | def setlogger(path): 4 | logger = logging.getLogger() 5 | logger.setLevel(logging.INFO) 6 | logFormatter = logging.Formatter("%(asctime)s %(message)s", 7 | "%m-%d %H:%M:%S") 8 | 9 | fileHandler = logging.FileHandler(path) 10 | fileHandler.setFormatter(logFormatter) 11 | logger.addHandler(fileHandler) 12 | 13 | consoleHandler = logging.StreamHandler() 14 | consoleHandler.setFormatter(logFormatter) 15 | logger.addHandler(consoleHandler) 16 | 17 | -------------------------------------------------------------------------------- /utils/regression_trainer.py: -------------------------------------------------------------------------------- 1 | from utils.trainer import Trainer 2 | from utils.helper import Save_Handle, AverageMeter 3 | import os 4 | import sys 5 | import time 6 | import torch 7 | from torch import optim 8 | from torch.utils.data import DataLoader 9 | from torch.utils.data.dataloader import default_collate 10 | from torch import nn 11 | import logging 12 | import numpy as np 13 | sys.path.append(os.path.join(os.path.dirname(__file__), "..")) 14 | from models.vgg import vgg19_trans 15 | from datasets.crowd_semi import Crowd 16 | from losses.bay_loss_focal import Bay_Loss 17 | from losses.post_gau import Post_Prob 18 | from math import ceil 19 | 20 | 21 | 22 | def train_collate(batch): 23 | transposed_batch = list(zip(*batch)) 24 | images = torch.stack(transposed_batch[0], 0) 25 | points = transposed_batch[1] # the number of points is not fixed, keep it as a list of tensor 26 | targets = transposed_batch[2] 27 | st_sizes = torch.FloatTensor(transposed_batch[3]) 28 | label = transposed_batch[4] 29 | return images, points, targets, st_sizes, label 30 | 31 | 32 | class RegTrainer(Trainer): 33 | def setup(self): 34 | """initial the datasets, model, loss and optimizer""" 35 | args = self.args 36 | if torch.cuda.is_available(): 37 | self.device = torch.device("cuda") 38 | self.device_count = torch.cuda.device_count() 39 | # for code conciseness, we release the single gpu version 40 | assert self.device_count == 1 41 | logging.info('using {} gpus'.format(self.device_count)) 42 | else: 43 | raise Exception("gpu is not available") 44 | 45 | self.downsample_ratio = args.downsample_ratio 46 | self.datasets = {x: Crowd(os.path.join(args.data_dir, x), 47 | args.crop_size, 48 | args.downsample_ratio, 49 | args.is_gray, x, args.info) for x in ['train', 'val']} 50 | self.dataloaders = {x: DataLoader(self.datasets[x], 51 | collate_fn=(train_collate if x == 'train' else default_collate), 52 | batch_size=1, 53 | shuffle=(True if x == 'train' else False), 54 | num_workers=args.num_workers*self.device_count, 55 | pin_memory=False) 56 | for x in ['train', 'val']} 57 | self.model = vgg19_trans() 58 | self.model.to(self.device) 59 | self.optimizer = optim.Adam(self.model.parameters(), lr=args.lr, weight_decay=args.weight_decay) 60 | 61 | self.start_epoch = 0 62 | if args.resume: 63 | suf = args.resume.rsplit('.', 1)[-1] 64 | if suf == 'tar': 65 | checkpoint = torch.load(args.resume, self.device) 66 | self.model.load_state_dict(checkpoint['model_state_dict']) 67 | self.optimizer.load_state_dict(checkpoint['optimizer_state_dict']) 68 | self.start_epoch = checkpoint['epoch'] + 1 69 | elif suf == 'pth': 70 | self.model.load_state_dict(torch.load(args.resume, self.device)) 71 | 72 | self.post_prob = Post_Prob(args.sigma, 73 | args.crop_size, 74 | args.downsample_ratio, 75 | args.background_ratio, 76 | args.use_background, 77 | self.device) 78 | self.criterion = Bay_Loss(args.use_background, self.device) 79 | self.criterion_mse = torch.nn.MSELoss(reduction='sum') 80 | self.save_list = Save_Handle(max_num=args.max_model_num) 81 | self.best_mae = np.inf 82 | self.best_mse = np.inf 83 | self.save_all = args.save_all 84 | self.best_count = 0 85 | label_count = torch.tensor( 86 | [0.00016, 0.0048202634789049625, 0.01209819596260786, 0.02164922095835209, 0.03357841819524765, 87 | 0.04810526967048645, 0.06570728123188019, 0.08683456480503082, 0.11207923293113708, 0.1422334909439087, 88 | 0.17838051915168762, 0.22167329490184784, 0.2732916474342346, 0.33556100726127625, 0.41080838441848755, 89 | 0.5030269622802734, 0.6174761652946472, 0.762194037437439, 0.9506691694259644, 1.2056223154067993, 90 | 1.5706151723861694, 2.138580322265625, 3.233219861984253, 7.914860725402832]) 91 | self.label_count = label_count.unsqueeze(1).to(self.device) 92 | self.mae=[] 93 | self.mse=[] 94 | 95 | 96 | def train(self): 97 | """training process""" 98 | args = self.args 99 | for epoch in range(self.start_epoch, args.max_epoch): 100 | logging.info('-'*5 + 'Epoch {}/{}'.format(epoch, args.max_epoch - 1) + '-'*5) 101 | self.epoch = epoch 102 | self.train_epoch(epoch >= args.unlabel_start) 103 | if epoch % args.val_epoch == 0 and epoch >= args.val_start: 104 | self.val_epoch() 105 | 106 | 107 | def train_epoch(self, unlabel): 108 | epoch_loss = AverageMeter() 109 | epoch_loss_m = AverageMeter() 110 | epoch_loss_simi = AverageMeter() 111 | epoch_loss_semi = AverageMeter() 112 | epoch_mae = AverageMeter() 113 | epoch_mse = AverageMeter() 114 | epoch_start = time.time() 115 | self.model.train() # Set model to training mode 116 | 117 | # Iterate over data. 118 | for step, (inputs, points, targets, st_sizes, label) in enumerate(self.dataloaders['train']): 119 | assert inputs.size(0) == 1, 'sorry, the code now only supports one batch' 120 | if not (unlabel | label[0]): 121 | continue 122 | inputs = inputs.to(self.device) 123 | st_sizes = st_sizes.to(self.device) 124 | gd_count = np.array([len(p) for p in points], dtype=np.float32) 125 | points = [p.to(self.device) for p in points] 126 | targets = [t.to(self.device) for t in targets] 127 | 128 | with torch.set_grad_enabled(True): 129 | N = inputs.size(0) 130 | outputs, mask, feature = self.model(inputs) 131 | if label[0]: 132 | prob_list, gau = self.post_prob(points, st_sizes) 133 | gau = gau.flatten().unsqueeze(0).detach() - self.label_count 134 | gaum = torch.sum(gau>0, dim=0) 135 | gt_bool = gaum.bool() 136 | loss = self.criterion(prob_list, targets, outputs) 137 | epoch_loss.update(loss.item(), N) 138 | loss_m = 0.1 * self.criterion_mse(mask.flatten(), gt_bool.float()) 139 | 140 | epoch_loss_m.update(loss_m.item(), N) 141 | loss += loss_m 142 | 143 | else: 144 | gau = outputs.flatten().unsqueeze(0).detach() - self.label_count 145 | gaum = torch.sum(gau > 0, dim=0) 146 | gt_bool = gaum.bool() 147 | loss = 0 148 | 149 | fea_sum = torch.sum(feature ** 2, dim=-1) ** 0.5 + 1e-5 150 | memory_sum = torch.sum(self.model.memory_list ** 2, dim=-1) ** 0.5 + 1e-5 151 | simi = torch.matmul(feature, self.model.memory_list.T) 152 | simi = simi / memory_sum / fea_sum.unsqueeze(1) 153 | loss_simi = torch.sum(torch.mean(simi[~gt_bool] + 1, dim=-1)) 154 | 155 | if torch.sum(gt_bool) > 0: 156 | gaum = torch.where(gaum > 0, gaum - 1, gaum)[gt_bool] 157 | rebalanced = gaum.unsqueeze(1) - torch.arange(len(self.label_count), device=gaum.device).unsqueeze(0) 158 | rebalanced = torch.abs(rebalanced)/0.5 159 | rebalanced = 2 * torch.exp(-rebalanced) - 1 160 | 161 | positive = rebalanced>0 162 | rebalanced = torch.abs(rebalanced) 163 | 164 | match_value = simi[gt_bool].gather(1, gaum.unsqueeze(0).long()).T 165 | loss_simi += torch.sum(1 - match_value) 166 | simi_de = torch.matmul(feature[gt_bool], self.model.memory_list.T.detach()) 167 | simi_de = simi_de / memory_sum.detach() / fea_sum[gt_bool].unsqueeze(1) 168 | 169 | soft = torch.exp(simi_de/0.1) 170 | soft = soft * rebalanced.detach() 171 | soft_loss = torch.sum(soft*positive.float(), dim=-1) / torch.sum(soft, dim=-1) 172 | loss_simi += torch.sum(-torch.log(soft_loss+1e-6)) 173 | 174 | loss += 0.01 * loss_simi 175 | if label[0]: 176 | epoch_loss_simi.update(0.01 * loss_simi.item(), N) 177 | else: 178 | epoch_loss_semi.update(loss.item(), N) 179 | loss = loss * 0.05 180 | 181 | self.optimizer.zero_grad() 182 | loss.backward() 183 | self.optimizer.step() 184 | 185 | pre_count = torch.sum(outputs.view(N, -1), dim=1).detach().cpu().numpy() 186 | res = pre_count - gd_count 187 | 188 | epoch_mse.update(np.mean(res * res), N) 189 | epoch_mae.update(np.mean(abs(res)), N) 190 | 191 | 192 | logging.info('Epoch {} Train, Loss: {:.2f}, Loss_m: {:.2f}, Simi: {:.2f}, Semi: {:.2f}, MSE: {:.2f} MAE: {:.2f}, Cost {:.1f} sec' 193 | .format(self.epoch, epoch_loss.get_avg(), epoch_loss_m.get_avg(), epoch_loss_simi.get_avg(), epoch_loss_semi.get_avg(), 194 | np.sqrt(epoch_mse.get_avg()), epoch_mae.get_avg(), 195 | time.time()-epoch_start)) 196 | 197 | model_state_dic = self.model.state_dict() 198 | save_path = os.path.join(self.save_dir, '{}_ckpt.tar'.format(self.epoch)) 199 | torch.save({ 200 | 'epoch': self.epoch, 201 | 'optimizer_state_dict': self.optimizer.state_dict(), 202 | 'model_state_dict': model_state_dic 203 | }, save_path) 204 | self.save_list.append(save_path) # control the number of saved models 205 | 206 | def val_epoch(self): 207 | epoch_start = time.time() 208 | self.model.eval() # Set model to evaluate mode 209 | epoch_res = [] 210 | # Iterate over data. 211 | for inputs, count, name in self.dataloaders['val']: 212 | inputs = inputs.to(self.device) 213 | # inputs are images with different sizes 214 | b, c, h, w = inputs.shape 215 | h, w = int(h), int(w) 216 | assert b == 1, 'the batch size should equal to 1 in validation mode' 217 | input_list = [] 218 | c_size = 2048 219 | if h >= c_size or w >= c_size: 220 | h_stride = int(ceil(1.0 * h / c_size)) 221 | w_stride = int(ceil(1.0 * w / c_size)) 222 | h_step = h // h_stride 223 | w_step = w // w_stride 224 | for i in range(h_stride): 225 | for j in range(w_stride): 226 | h_start = i * h_step 227 | if i != h_stride - 1: 228 | h_end = (i + 1) * h_step 229 | else: 230 | h_end = h 231 | w_start = j * w_step 232 | if j != w_stride - 1: 233 | w_end = (j + 1) * w_step 234 | else: 235 | w_end = w 236 | input_list.append(inputs[:, :, h_start:h_end, w_start:w_end]) 237 | with torch.set_grad_enabled(False): 238 | pre_count = 0.0 239 | for idx, input in enumerate(input_list): 240 | output = self.model(input)[0] 241 | pre_count += torch.sum(output) 242 | res = count[0].item() - pre_count.item() 243 | epoch_res.append(res) 244 | else: 245 | with torch.set_grad_enabled(False): 246 | outputs = self.model(inputs)[0] 247 | # save_results(inputs, outputs, self.vis_dir, '{}.jpg'.format(name[0])) 248 | res = count[0].item() - torch.sum(outputs).item() 249 | epoch_res.append(res) 250 | 251 | epoch_res = np.array(epoch_res) 252 | mse = np.sqrt(np.mean(np.square(epoch_res))) 253 | mae = np.mean(np.abs(epoch_res)) 254 | logging.info('Epoch {} Val, MSE: {:.2f} MAE: {:.2f}, Cost {:.1f} sec' 255 | .format(self.epoch, mse, mae, time.time()-epoch_start)) 256 | 257 | model_state_dic = self.model.state_dict() 258 | if (2.0 * mse + mae) < (2.0 * self.best_mse + self.best_mae): 259 | self.best_mse = mse 260 | self.best_mae = mae 261 | logging.info("save best mse {:.2f} mae {:.2f} model epoch {}".format(self.best_mse, 262 | self.best_mae, 263 | self.epoch)) 264 | if self.save_all: 265 | torch.save(model_state_dic, os.path.join(self.save_dir, 'best_model_{}.pth'.format(self.best_count))) 266 | self.best_count += 1 267 | else: 268 | torch.save(model_state_dic, os.path.join(self.save_dir, 'best_model.pth')) 269 | 270 | 271 | 272 | -------------------------------------------------------------------------------- /utils/trainer.py: -------------------------------------------------------------------------------- 1 | import os 2 | import logging 3 | from datetime import datetime 4 | from utils.logger import setlogger 5 | 6 | 7 | class Trainer(object): 8 | def __init__(self, args): 9 | sub_dir = datetime.strftime(datetime.now(), '%m%d-%H%M%S') # prepare saving path 10 | self.save_dir = os.path.join(args.save_dir, sub_dir) 11 | if not os.path.exists(self.save_dir): 12 | os.makedirs(self.save_dir) 13 | setlogger(os.path.join(self.save_dir, 'train.log')) # set logger 14 | for k, v in args.__dict__.items(): # save args 15 | logging.info("{}: {}".format(k, v)) 16 | self.args = args 17 | 18 | def setup(self): 19 | """initial the datasets, model, loss and optimizer""" 20 | pass 21 | 22 | def train(self): 23 | """training one epoch""" 24 | pass 25 | --------------------------------------------------------------------------------