├── LICENSE ├── README.md ├── data ├── AFW │ └── img_list.txt ├── FDDB │ └── img_list.txt ├── PASCAL │ └── img_list.txt ├── WIDER_FACE │ └── img_list.txt ├── __init__.py ├── config.py ├── data_augment.py └── wider_voc.py ├── layers ├── __init__.py ├── functions │ └── prior_box.py └── modules │ ├── __init__.py │ └── multibox_loss.py ├── make.sh ├── models ├── __init__.py └── faceboxes.py ├── test.py ├── train.py └── utils ├── __init__.py ├── box_utils.py ├── build.py ├── nms ├── __init__.py ├── cpu_nms.pyx ├── gpu_nms.hpp ├── gpu_nms.pyx ├── nms_kernel.cu └── py_cpu_nms.py ├── nms_wrapper.py └── timer.py /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Max deGroot, Ellis Brown 4 | Copyright (c) 2019 Zisian Wong, Shifeng Zhang 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # FaceBoxes in PyTorch 2 | 3 | [![License](https://img.shields.io/badge/license-BSD-blue.svg)](LICENSE) 4 | 5 | By [Zisian Wong](https://github.com/zisianw), [Shifeng Zhang](http://www.cbsr.ia.ac.cn/users/sfzhang/) 6 | 7 | A [PyTorch](https://pytorch.org/) implementation of [FaceBoxes: A CPU Real-time Face Detector with High Accuracy](https://arxiv.org/abs/1708.05234). The official code in Caffe can be found [here](https://github.com/sfzhang15/FaceBoxes). 8 | 9 | ## Performance 10 | | Dataset | Original Caffe | PyTorch Implementation | 11 | |:-|:-:|:-:| 12 | | AFW | 98.98 % | 98.55% | 13 | | PASCAL | 96.77 % | 97.05% | 14 | | FDDB | 95.90 % | 96.00% | 15 | 16 | ## Citation 17 | Please cite the paper in your publications if it helps your research: 18 | 19 | @inproceedings{zhang2017faceboxes, 20 | title = {Faceboxes: A CPU Real-time Face Detector with High Accuracy}, 21 | author = {Zhang, Shifeng and Zhu, Xiangyu and Lei, Zhen and Shi, Hailin and Wang, Xiaobo and Li, Stan Z.}, 22 | booktitle = {IJCB}, 23 | year = {2017} 24 | } 25 | 26 | ### Contents 27 | - [Installation](#installation) 28 | - [Training](#training) 29 | - [Evaluation](#evaluation) 30 | - [References](#references) 31 | 32 | ## Installation 33 | 1. Install [PyTorch](https://pytorch.org/) >= v1.0.0 following official instruction. 34 | 35 | 2. Clone this repository. We will call the cloned directory as `$FaceBoxes_ROOT`. 36 | ```Shell 37 | git clone https://github.com/zisianw/FaceBoxes.PyTorch.git 38 | ``` 39 | 40 | 3. Compile the nms: 41 | ```Shell 42 | ./make.sh 43 | ``` 44 | 45 | _Note: Codes are based on Python 3+._ 46 | 47 | ## Training 48 | 1. Download [WIDER FACE](http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/index.html) dataset, place the images under this directory: 49 | ```Shell 50 | $FaceBoxes_ROOT/data/WIDER_FACE/images 51 | ``` 52 | 2. Convert WIDER FACE annotations to VOC format or download [our converted annotations](https://drive.google.com/open?id=1-s4QCu_v76yNwR-yXMfGqMGgHQ30WxV2), place them under this directory: 53 | ```Shell 54 | $FaceBoxes_ROOT/data/WIDER_FACE/annotations 55 | ``` 56 | 57 | 3. Train the model using WIDER FACE: 58 | ```Shell 59 | cd $FaceBoxes_ROOT/ 60 | python3 train.py 61 | ``` 62 | 63 | If you do not wish to train the model, you can download [our pre-trained model](https://drive.google.com/file/d/128m1QasIwQRkrY-Eb5Epi-ShXnrZWUCQ/view?usp=drive_link) and save it in `$FaceBoxes_ROOT/weights`. 64 | 65 | 66 | ## Evaluation 67 | 1. Download the images of [AFW](https://drive.google.com/open?id=1Kl2Cjy8IwrkYDwMbe_9DVuAwTHJ8fjev), [PASCAL Face](https://drive.google.com/open?id=1p7dDQgYh2RBPUZSlOQVU4PgaSKlq64ik) and [FDDB](https://drive.google.com/open?id=17t4WULUDgZgiSy5kpCax4aooyPaz3GQH) to: 68 | ```Shell 69 | $FaceBoxes_ROOT/data/AFW/images/ 70 | $FaceBoxes_ROOT/data/PASCAL/images/ 71 | $FaceBoxes_ROOT/data/FDDB/images/ 72 | ``` 73 | 74 | 2. Evaluate the trained model using: 75 | ```Shell 76 | # dataset choices = ['AFW', 'PASCAL', 'FDDB'] 77 | python3 test.py --dataset FDDB 78 | # evaluate using cpu 79 | python3 test.py --cpu 80 | # visualize detection results 81 | python3 test.py -s --vis_thres 0.3 82 | ``` 83 | 84 | 3. Download [eval_tool](https://github.com/sfzhang15/face-eval) to evaluate the performance. 85 | 86 | ## References 87 | - [Official release (Caffe)](https://github.com/sfzhang15/FaceBoxes) 88 | - A huge thank you to SSD ports in PyTorch that have been helpful: 89 | * [ssd.pytorch](https://github.com/amdegroot/ssd.pytorch), [RFBNet](https://github.com/ruinmessi/RFBNet) 90 | 91 | _Note: If you can not download the converted annotations, the provided images and the trained model through the above links, you can download them through [BaiduYun](https://pan.baidu.com/s/1HoW3wbldnbmgW2PS4i4Irw)._ 92 | -------------------------------------------------------------------------------- /data/AFW/img_list.txt: -------------------------------------------------------------------------------- 1 | 1004109301 2 | 111076519 3 | 1139324862 4 | 1204062305 5 | 1224897301 6 | 1254885428 7 | 1295311477 8 | 1361196352 9 | 1372188757 10 | 14424972 11 | 156474078 12 | 1587030290 13 | 1634816 14 | 1636651575 15 | 1648807314 16 | 170817766 17 | 1709378501 18 | 174692320 19 | 1814664578 20 | 18489332 21 | 199759840 22 | 2030653815 23 | 2043831280 24 | 2118625994 25 | 2120936774 26 | 213654866 27 | 2147052512 28 | 2186255795 29 | 2233672250 30 | 2239710476 31 | 225191079 32 | 2266416332 33 | 22699817 34 | 2288136183 35 | 2312639559 36 | 2353849 37 | 2372995574 38 | 237815567 39 | 2404040793 40 | 2417212918 41 | 2437602091 42 | 2451065225 43 | 250277765 44 | 2542662563 45 | 2580479214 46 | 261068 47 | 2653111362 48 | 270814102 49 | 2715171150 50 | 281972218 51 | 2844520516 52 | 2863107962 53 | 2911658494 54 | 2939015820 55 | 3062021448 56 | 3089202157 57 | 310076750 58 | 3187108438 59 | 3210734866 60 | 3284354538 61 | 3331716292 62 | 342149506 63 | 3464901851 64 | 346731834 65 | 347629355 66 | 347826333 67 | 3576294411 68 | 364259537 69 | 3662810723 70 | 3684472818 71 | 368987306 72 | 37096733 73 | 3729198156 74 | 3796238727 75 | 3854178896 76 | 3858593140 77 | 3873491482 78 | 3893740955 79 | 3929640120 80 | 3944399031 81 | 3989161 82 | 399829006 83 | 40014967 84 | 4017305068 85 | 4022732812 86 | 406798473 87 | 4082680322 88 | 4141887018 89 | 4174638819 90 | 4237203680 91 | 4250120238 92 | 4253907822 93 | 4285163979 94 | 432269399 95 | 4332978153 96 | 4337161543 97 | 4351876664 98 | 435926861 99 | 437595409 100 | 442651885 101 | 4470478982 102 | 4471110141 103 | 447910249 104 | 448291547 105 | 4492032921 106 | 45092961 107 | 4512714865 108 | 4520272436 109 | 4553922208 110 | 4555082379 111 | 4560029166 112 | 4584451140 113 | 4683040401 114 | 4739664721 115 | 4758145781 116 | 47618649 117 | 4774338842 118 | 4801259916 119 | 4821642 120 | 4856974482 121 | 4880083461 122 | 4970182488 123 | 5002723411 124 | 5007442 125 | 5020454673 126 | 5065140719 127 | 5083671561 128 | 5144909700 129 | 5146483815 130 | 5151536225 131 | 5188566452 132 | 5201079592 133 | 5204730083 134 | 5227275045 135 | 52381600 136 | 5301057994 137 | 539722510 138 | 5452623 139 | 56054945 140 | 59354095 141 | 642820626 142 | 658607626 143 | 79378097 144 | 815038 145 | 82161078 146 | 823016568 147 | 878985234 148 | 88094323 149 | 899545263 150 | 90800092 151 | 91328372 152 | 9545523490 153 | 955659370 154 | 1051618982 155 | 1130084326 156 | 120563545 157 | 134212 158 | 1602308 159 | 16413031 160 | 2037185414 161 | 2060241469 162 | 2080551997 163 | 2086996835 164 | 2099639490 165 | 2122067003 166 | 2201628776 167 | 2239259 168 | 2296215131 169 | 2316734819 170 | 2329110240 171 | 2339510439 172 | 2392075438 173 | 2406586388 174 | 24795717 175 | 2519293956 176 | 253915276 177 | 255360810 178 | 2751381965 179 | 2803423910 180 | 2805422179 181 | 3020248483 182 | 3116931144 183 | 3346359383 184 | 3363054468 185 | 3504938758 186 | 3532475790 187 | 3722549017 188 | 378492784 189 | 397921011 190 | 4009440741 191 | 410225851 192 | 411555970 193 | 4145388945 194 | 4239974048 195 | 4400753623 196 | 442743156 197 | 4538917191 198 | 4573422380 199 | 4906266640 200 | 507521047 201 | 5082623456 202 | 5106695994 203 | 5169701116 204 | 70037463 205 | 719902933 206 | -------------------------------------------------------------------------------- /data/FDDB/img_list.txt: -------------------------------------------------------------------------------- 1 | 2002/08/11/big/img_591 2 | 2002/08/26/big/img_265 3 | 2002/07/19/big/img_423 4 | 2002/08/24/big/img_490 5 | 2002/08/31/big/img_17676 6 | 2002/07/31/big/img_228 7 | 2002/07/24/big/img_402 8 | 2002/08/04/big/img_769 9 | 2002/07/19/big/img_581 10 | 2002/08/13/big/img_723 11 | 2002/08/12/big/img_821 12 | 2003/01/17/big/img_610 13 | 2002/08/13/big/img_1116 14 | 2002/08/28/big/img_19238 15 | 2002/08/21/big/img_660 16 | 2002/08/14/big/img_607 17 | 2002/08/05/big/img_3708 18 | 2002/08/19/big/img_511 19 | 2002/08/07/big/img_1316 20 | 2002/07/25/big/img_1047 21 | 2002/07/23/big/img_474 22 | 2002/07/27/big/img_970 23 | 2002/09/02/big/img_15752 24 | 2002/09/01/big/img_16378 25 | 2002/09/01/big/img_16189 26 | 2002/08/26/big/img_276 27 | 2002/07/24/big/img_518 28 | 2002/08/14/big/img_1027 29 | 2002/08/24/big/img_733 30 | 2002/08/15/big/img_249 31 | 2003/01/15/big/img_1371 32 | 2002/08/07/big/img_1348 33 | 2003/01/01/big/img_331 34 | 2002/08/23/big/img_536 35 | 2002/07/30/big/img_224 36 | 2002/08/10/big/img_763 37 | 2002/08/21/big/img_293 38 | 2002/08/15/big/img_1211 39 | 2002/08/15/big/img_1194 40 | 2003/01/15/big/img_390 41 | 2002/08/06/big/img_2893 42 | 2002/08/17/big/img_691 43 | 2002/08/07/big/img_1695 44 | 2002/08/16/big/img_829 45 | 2002/07/25/big/img_201 46 | 2002/08/23/big/img_36 47 | 2003/01/15/big/img_763 48 | 2003/01/15/big/img_637 49 | 2002/08/22/big/img_592 50 | 2002/07/25/big/img_817 51 | 2003/01/15/big/img_1219 52 | 2002/08/05/big/img_3508 53 | 2002/08/15/big/img_1108 54 | 2002/07/19/big/img_488 55 | 2003/01/16/big/img_704 56 | 2003/01/13/big/img_1087 57 | 2002/08/10/big/img_670 58 | 2002/07/24/big/img_104 59 | 2002/08/27/big/img_19823 60 | 2002/09/01/big/img_16229 61 | 2003/01/13/big/img_846 62 | 2002/08/04/big/img_412 63 | 2002/07/22/big/img_554 64 | 2002/08/12/big/img_331 65 | 2002/08/02/big/img_533 66 | 2002/08/12/big/img_259 67 | 2002/08/18/big/img_328 68 | 2003/01/14/big/img_630 69 | 2002/08/05/big/img_3541 70 | 2002/08/06/big/img_2390 71 | 2002/08/20/big/img_150 72 | 2002/08/02/big/img_1231 73 | 2002/08/16/big/img_710 74 | 2002/08/19/big/img_591 75 | 2002/07/22/big/img_725 76 | 2002/07/24/big/img_820 77 | 2003/01/13/big/img_568 78 | 2002/08/22/big/img_853 79 | 2002/08/09/big/img_648 80 | 2002/08/23/big/img_528 81 | 2003/01/14/big/img_888 82 | 2002/08/30/big/img_18201 83 | 2002/08/13/big/img_965 84 | 2003/01/14/big/img_660 85 | 2002/07/19/big/img_517 86 | 2003/01/14/big/img_406 87 | 2002/08/30/big/img_18433 88 | 2002/08/07/big/img_1630 89 | 2002/08/06/big/img_2717 90 | 2002/08/21/big/img_470 91 | 2002/07/23/big/img_633 92 | 2002/08/20/big/img_915 93 | 2002/08/16/big/img_893 94 | 2002/07/29/big/img_644 95 | 2002/08/15/big/img_529 96 | 2002/08/16/big/img_668 97 | 2002/08/07/big/img_1871 98 | 2002/07/25/big/img_192 99 | 2002/07/31/big/img_961 100 | 2002/08/19/big/img_738 101 | 2002/07/31/big/img_382 102 | 2002/08/19/big/img_298 103 | 2003/01/17/big/img_608 104 | 2002/08/21/big/img_514 105 | 2002/07/23/big/img_183 106 | 2003/01/17/big/img_536 107 | 2002/07/24/big/img_478 108 | 2002/08/06/big/img_2997 109 | 2002/09/02/big/img_15380 110 | 2002/08/07/big/img_1153 111 | 2002/07/31/big/img_967 112 | 2002/07/31/big/img_711 113 | 2002/08/26/big/img_664 114 | 2003/01/01/big/img_326 115 | 2002/08/24/big/img_775 116 | 2002/08/08/big/img_961 117 | 2002/08/16/big/img_77 118 | 2002/08/12/big/img_296 119 | 2002/07/22/big/img_905 120 | 2003/01/13/big/img_284 121 | 2002/08/13/big/img_887 122 | 2002/08/24/big/img_849 123 | 2002/07/30/big/img_345 124 | 2002/08/18/big/img_419 125 | 2002/08/01/big/img_1347 126 | 2002/08/05/big/img_3670 127 | 2002/07/21/big/img_479 128 | 2002/08/08/big/img_913 129 | 2002/09/02/big/img_15828 130 | 2002/08/30/big/img_18194 131 | 2002/08/08/big/img_471 132 | 2002/08/22/big/img_734 133 | 2002/08/09/big/img_586 134 | 2002/08/09/big/img_454 135 | 2002/07/29/big/img_47 136 | 2002/07/19/big/img_381 137 | 2002/07/29/big/img_733 138 | 2002/08/20/big/img_327 139 | 2002/07/21/big/img_96 140 | 2002/08/06/big/img_2680 141 | 2002/07/25/big/img_919 142 | 2002/07/21/big/img_158 143 | 2002/07/22/big/img_801 144 | 2002/07/22/big/img_567 145 | 2002/07/24/big/img_804 146 | 2002/07/24/big/img_690 147 | 2003/01/15/big/img_576 148 | 2002/08/14/big/img_335 149 | 2003/01/13/big/img_390 150 | 2002/08/11/big/img_258 151 | 2002/07/23/big/img_917 152 | 2002/08/15/big/img_525 153 | 2003/01/15/big/img_505 154 | 2002/07/30/big/img_886 155 | 2003/01/16/big/img_640 156 | 2003/01/14/big/img_642 157 | 2003/01/17/big/img_844 158 | 2002/08/04/big/img_571 159 | 2002/08/29/big/img_18702 160 | 2003/01/15/big/img_240 161 | 2002/07/29/big/img_553 162 | 2002/08/10/big/img_354 163 | 2002/08/18/big/img_17 164 | 2003/01/15/big/img_782 165 | 2002/07/27/big/img_382 166 | 2002/08/14/big/img_970 167 | 2003/01/16/big/img_70 168 | 2003/01/16/big/img_625 169 | 2002/08/18/big/img_341 170 | 2002/08/26/big/img_188 171 | 2002/08/09/big/img_405 172 | 2002/08/02/big/img_37 173 | 2002/08/13/big/img_748 174 | 2002/07/22/big/img_399 175 | 2002/07/25/big/img_844 176 | 2002/08/12/big/img_340 177 | 2003/01/13/big/img_815 178 | 2002/08/26/big/img_5 179 | 2002/08/10/big/img_158 180 | 2002/08/18/big/img_95 181 | 2002/07/29/big/img_1297 182 | 2003/01/13/big/img_508 183 | 2002/09/01/big/img_16680 184 | 2003/01/16/big/img_338 185 | 2002/08/13/big/img_517 186 | 2002/07/22/big/img_626 187 | 2002/08/06/big/img_3024 188 | 2002/07/26/big/img_499 189 | 2003/01/13/big/img_387 190 | 2002/08/31/big/img_18025 191 | 2002/08/13/big/img_520 192 | 2003/01/16/big/img_576 193 | 2002/07/26/big/img_121 194 | 2002/08/25/big/img_703 195 | 2002/08/26/big/img_615 196 | 2002/08/17/big/img_434 197 | 2002/08/02/big/img_677 198 | 2002/08/18/big/img_276 199 | 2002/08/05/big/img_3672 200 | 2002/07/26/big/img_700 201 | 2002/07/31/big/img_277 202 | 2003/01/14/big/img_220 203 | 2002/08/23/big/img_232 204 | 2002/08/31/big/img_17422 205 | 2002/07/22/big/img_508 206 | 2002/08/13/big/img_681 207 | 2003/01/15/big/img_638 208 | 2002/08/30/big/img_18408 209 | 2003/01/14/big/img_533 210 | 2003/01/17/big/img_12 211 | 2002/08/28/big/img_19388 212 | 2002/08/08/big/img_133 213 | 2002/07/26/big/img_885 214 | 2002/08/19/big/img_387 215 | 2002/08/27/big/img_19976 216 | 2002/08/26/big/img_118 217 | 2002/08/28/big/img_19146 218 | 2002/08/05/big/img_3259 219 | 2002/08/15/big/img_536 220 | 2002/07/22/big/img_279 221 | 2002/07/22/big/img_9 222 | 2002/08/13/big/img_301 223 | 2002/08/15/big/img_974 224 | 2002/08/06/big/img_2355 225 | 2002/08/01/big/img_1526 226 | 2002/08/03/big/img_417 227 | 2002/08/04/big/img_407 228 | 2002/08/15/big/img_1029 229 | 2002/07/29/big/img_700 230 | 2002/08/01/big/img_1463 231 | 2002/08/31/big/img_17365 232 | 2002/07/28/big/img_223 233 | 2002/07/19/big/img_827 234 | 2002/07/27/big/img_531 235 | 2002/07/19/big/img_845 236 | 2002/08/20/big/img_382 237 | 2002/07/31/big/img_268 238 | 2002/08/27/big/img_19705 239 | 2002/08/02/big/img_830 240 | 2002/08/23/big/img_250 241 | 2002/07/20/big/img_777 242 | 2002/08/21/big/img_879 243 | 2002/08/26/big/img_20146 244 | 2002/08/23/big/img_789 245 | 2002/08/06/big/img_2683 246 | 2002/08/25/big/img_576 247 | 2002/08/09/big/img_498 248 | 2002/08/08/big/img_384 249 | 2002/08/26/big/img_592 250 | 2002/07/29/big/img_1470 251 | 2002/08/21/big/img_452 252 | 2002/08/30/big/img_18395 253 | 2002/08/15/big/img_215 254 | 2002/07/21/big/img_643 255 | 2002/07/22/big/img_209 256 | 2003/01/17/big/img_346 257 | 2002/08/25/big/img_658 258 | 2002/08/21/big/img_221 259 | 2002/08/14/big/img_60 260 | 2003/01/17/big/img_885 261 | 2003/01/16/big/img_482 262 | 2002/08/19/big/img_593 263 | 2002/08/08/big/img_233 264 | 2002/07/30/big/img_458 265 | 2002/07/23/big/img_384 266 | 2003/01/15/big/img_670 267 | 2003/01/15/big/img_267 268 | 2002/08/26/big/img_540 269 | 2002/07/29/big/img_552 270 | 2002/07/30/big/img_997 271 | 2003/01/17/big/img_377 272 | 2002/08/21/big/img_265 273 | 2002/08/09/big/img_561 274 | 2002/07/31/big/img_945 275 | 2002/09/02/big/img_15252 276 | 2002/08/11/big/img_276 277 | 2002/07/22/big/img_491 278 | 2002/07/26/big/img_517 279 | 2002/08/14/big/img_726 280 | 2002/08/08/big/img_46 281 | 2002/08/28/big/img_19458 282 | 2002/08/06/big/img_2935 283 | 2002/07/29/big/img_1392 284 | 2002/08/13/big/img_776 285 | 2002/08/24/big/img_616 286 | 2002/08/14/big/img_1065 287 | 2002/07/29/big/img_889 288 | 2002/08/18/big/img_188 289 | 2002/08/07/big/img_1453 290 | 2002/08/02/big/img_760 291 | 2002/07/28/big/img_416 292 | 2002/08/07/big/img_1393 293 | 2002/08/26/big/img_292 294 | 2002/08/26/big/img_301 295 | 2003/01/13/big/img_195 296 | 2002/07/26/big/img_532 297 | 2002/08/20/big/img_550 298 | 2002/08/05/big/img_3658 299 | 2002/08/26/big/img_738 300 | 2002/09/02/big/img_15750 301 | 2003/01/17/big/img_451 302 | 2002/07/23/big/img_339 303 | 2002/08/16/big/img_637 304 | 2002/08/14/big/img_748 305 | 2002/08/06/big/img_2739 306 | 2002/07/25/big/img_482 307 | 2002/08/19/big/img_191 308 | 2002/08/26/big/img_537 309 | 2003/01/15/big/img_716 310 | 2003/01/15/big/img_767 311 | 2002/08/02/big/img_452 312 | 2002/08/08/big/img_1011 313 | 2002/08/10/big/img_144 314 | 2003/01/14/big/img_122 315 | 2002/07/24/big/img_586 316 | 2002/07/24/big/img_762 317 | 2002/08/20/big/img_369 318 | 2002/07/30/big/img_146 319 | 2002/08/23/big/img_396 320 | 2003/01/15/big/img_200 321 | 2002/08/15/big/img_1183 322 | 2003/01/14/big/img_698 323 | 2002/08/09/big/img_792 324 | 2002/08/06/big/img_2347 325 | 2002/07/31/big/img_911 326 | 2002/08/26/big/img_722 327 | 2002/08/23/big/img_621 328 | 2002/08/05/big/img_3790 329 | 2003/01/13/big/img_633 330 | 2002/08/09/big/img_224 331 | 2002/07/24/big/img_454 332 | 2002/07/21/big/img_202 333 | 2002/08/02/big/img_630 334 | 2002/08/30/big/img_18315 335 | 2002/07/19/big/img_491 336 | 2002/09/01/big/img_16456 337 | 2002/08/09/big/img_242 338 | 2002/07/25/big/img_595 339 | 2002/07/22/big/img_522 340 | 2002/08/01/big/img_1593 341 | 2002/07/29/big/img_336 342 | 2002/08/15/big/img_448 343 | 2002/08/28/big/img_19281 344 | 2002/07/29/big/img_342 345 | 2002/08/12/big/img_78 346 | 2003/01/14/big/img_525 347 | 2002/07/28/big/img_147 348 | 2002/08/11/big/img_353 349 | 2002/08/22/big/img_513 350 | 2002/08/04/big/img_721 351 | 2002/08/17/big/img_247 352 | 2003/01/14/big/img_891 353 | 2002/08/20/big/img_853 354 | 2002/07/19/big/img_414 355 | 2002/08/01/big/img_1530 356 | 2003/01/14/big/img_924 357 | 2002/08/22/big/img_468 358 | 2002/08/18/big/img_354 359 | 2002/08/30/big/img_18193 360 | 2002/08/23/big/img_492 361 | 2002/08/15/big/img_871 362 | 2002/08/12/big/img_494 363 | 2002/08/06/big/img_2470 364 | 2002/07/23/big/img_923 365 | 2002/08/26/big/img_155 366 | 2002/08/08/big/img_669 367 | 2002/07/23/big/img_404 368 | 2002/08/28/big/img_19421 369 | 2002/08/29/big/img_18993 370 | 2002/08/25/big/img_416 371 | 2003/01/17/big/img_434 372 | 2002/07/29/big/img_1370 373 | 2002/07/28/big/img_483 374 | 2002/08/11/big/img_50 375 | 2002/08/10/big/img_404 376 | 2002/09/02/big/img_15057 377 | 2003/01/14/big/img_911 378 | 2002/09/01/big/img_16697 379 | 2003/01/16/big/img_665 380 | 2002/09/01/big/img_16708 381 | 2002/08/22/big/img_612 382 | 2002/08/28/big/img_19471 383 | 2002/08/02/big/img_198 384 | 2003/01/16/big/img_527 385 | 2002/08/22/big/img_209 386 | 2002/08/30/big/img_18205 387 | 2003/01/14/big/img_114 388 | 2003/01/14/big/img_1028 389 | 2003/01/16/big/img_894 390 | 2003/01/14/big/img_837 391 | 2002/07/30/big/img_9 392 | 2002/08/06/big/img_2821 393 | 2002/08/04/big/img_85 394 | 2003/01/13/big/img_884 395 | 2002/07/22/big/img_570 396 | 2002/08/07/big/img_1773 397 | 2002/07/26/big/img_208 398 | 2003/01/17/big/img_946 399 | 2002/07/19/big/img_930 400 | 2003/01/01/big/img_698 401 | 2003/01/17/big/img_612 402 | 2002/07/19/big/img_372 403 | 2002/07/30/big/img_721 404 | 2003/01/14/big/img_649 405 | 2002/08/19/big/img_4 406 | 2002/07/25/big/img_1024 407 | 2003/01/15/big/img_601 408 | 2002/08/30/big/img_18470 409 | 2002/07/22/big/img_29 410 | 2002/08/07/big/img_1686 411 | 2002/07/20/big/img_294 412 | 2002/08/14/big/img_800 413 | 2002/08/19/big/img_353 414 | 2002/08/19/big/img_350 415 | 2002/08/05/big/img_3392 416 | 2002/08/09/big/img_622 417 | 2003/01/15/big/img_236 418 | 2002/08/11/big/img_643 419 | 2002/08/05/big/img_3458 420 | 2002/08/12/big/img_413 421 | 2002/08/22/big/img_415 422 | 2002/08/13/big/img_635 423 | 2002/08/07/big/img_1198 424 | 2002/08/04/big/img_873 425 | 2002/08/12/big/img_407 426 | 2003/01/15/big/img_346 427 | 2002/08/02/big/img_275 428 | 2002/08/17/big/img_997 429 | 2002/08/21/big/img_958 430 | 2002/08/20/big/img_579 431 | 2002/07/29/big/img_142 432 | 2003/01/14/big/img_1115 433 | 2002/08/16/big/img_365 434 | 2002/07/29/big/img_1414 435 | 2002/08/17/big/img_489 436 | 2002/08/13/big/img_1010 437 | 2002/07/31/big/img_276 438 | 2002/07/25/big/img_1000 439 | 2002/08/23/big/img_524 440 | 2002/08/28/big/img_19147 441 | 2003/01/13/big/img_433 442 | 2002/08/20/big/img_205 443 | 2003/01/01/big/img_458 444 | 2002/07/29/big/img_1449 445 | 2003/01/16/big/img_696 446 | 2002/08/28/big/img_19296 447 | 2002/08/29/big/img_18688 448 | 2002/08/21/big/img_767 449 | 2002/08/20/big/img_532 450 | 2002/08/26/big/img_187 451 | 2002/07/26/big/img_183 452 | 2002/07/27/big/img_890 453 | 2003/01/13/big/img_576 454 | 2002/07/30/big/img_15 455 | 2002/07/31/big/img_889 456 | 2002/08/31/big/img_17759 457 | 2003/01/14/big/img_1114 458 | 2002/07/19/big/img_445 459 | 2002/08/03/big/img_593 460 | 2002/07/24/big/img_750 461 | 2002/07/30/big/img_133 462 | 2002/08/25/big/img_671 463 | 2002/07/20/big/img_351 464 | 2002/08/31/big/img_17276 465 | 2002/08/05/big/img_3231 466 | 2002/09/02/big/img_15882 467 | 2002/08/14/big/img_115 468 | 2002/08/02/big/img_1148 469 | 2002/07/25/big/img_936 470 | 2002/07/31/big/img_639 471 | 2002/08/04/big/img_427 472 | 2002/08/22/big/img_843 473 | 2003/01/17/big/img_17 474 | 2003/01/13/big/img_690 475 | 2002/08/13/big/img_472 476 | 2002/08/09/big/img_425 477 | 2002/08/05/big/img_3450 478 | 2003/01/17/big/img_439 479 | 2002/08/13/big/img_539 480 | 2002/07/28/big/img_35 481 | 2002/08/16/big/img_241 482 | 2002/08/06/big/img_2898 483 | 2003/01/16/big/img_429 484 | 2002/08/05/big/img_3817 485 | 2002/08/27/big/img_19919 486 | 2002/07/19/big/img_422 487 | 2002/08/15/big/img_560 488 | 2002/07/23/big/img_750 489 | 2002/07/30/big/img_353 490 | 2002/08/05/big/img_43 491 | 2002/08/23/big/img_305 492 | 2002/08/01/big/img_2137 493 | 2002/08/30/big/img_18097 494 | 2002/08/01/big/img_1389 495 | 2002/08/02/big/img_308 496 | 2003/01/14/big/img_652 497 | 2002/08/01/big/img_1798 498 | 2003/01/14/big/img_732 499 | 2003/01/16/big/img_294 500 | 2002/08/26/big/img_213 501 | 2002/07/24/big/img_842 502 | 2003/01/13/big/img_630 503 | 2003/01/13/big/img_634 504 | 2002/08/06/big/img_2285 505 | 2002/08/01/big/img_2162 506 | 2002/08/30/big/img_18134 507 | 2002/08/02/big/img_1045 508 | 2002/08/01/big/img_2143 509 | 2002/07/25/big/img_135 510 | 2002/07/20/big/img_645 511 | 2002/08/05/big/img_3666 512 | 2002/08/14/big/img_523 513 | 2002/08/04/big/img_425 514 | 2003/01/14/big/img_137 515 | 2003/01/01/big/img_176 516 | 2002/08/15/big/img_505 517 | 2002/08/24/big/img_386 518 | 2002/08/05/big/img_3187 519 | 2002/08/15/big/img_419 520 | 2003/01/13/big/img_520 521 | 2002/08/04/big/img_444 522 | 2002/08/26/big/img_483 523 | 2002/08/05/big/img_3449 524 | 2002/08/30/big/img_18409 525 | 2002/08/28/big/img_19455 526 | 2002/08/27/big/img_20090 527 | 2002/07/23/big/img_625 528 | 2002/08/24/big/img_205 529 | 2002/08/08/big/img_938 530 | 2003/01/13/big/img_527 531 | 2002/08/07/big/img_1712 532 | 2002/07/24/big/img_801 533 | 2002/08/09/big/img_579 534 | 2003/01/14/big/img_41 535 | 2003/01/15/big/img_1130 536 | 2002/07/21/big/img_672 537 | 2002/08/07/big/img_1590 538 | 2003/01/01/big/img_532 539 | 2002/08/02/big/img_529 540 | 2002/08/05/big/img_3591 541 | 2002/08/23/big/img_5 542 | 2003/01/14/big/img_882 543 | 2002/08/28/big/img_19234 544 | 2002/07/24/big/img_398 545 | 2003/01/14/big/img_592 546 | 2002/08/22/big/img_548 547 | 2002/08/12/big/img_761 548 | 2003/01/16/big/img_497 549 | 2002/08/18/big/img_133 550 | 2002/08/08/big/img_874 551 | 2002/07/19/big/img_247 552 | 2002/08/15/big/img_170 553 | 2002/08/27/big/img_19679 554 | 2002/08/20/big/img_246 555 | 2002/08/24/big/img_358 556 | 2002/07/29/big/img_599 557 | 2002/08/01/big/img_1555 558 | 2002/07/30/big/img_491 559 | 2002/07/30/big/img_371 560 | 2003/01/16/big/img_682 561 | 2002/07/25/big/img_619 562 | 2003/01/15/big/img_587 563 | 2002/08/02/big/img_1212 564 | 2002/08/01/big/img_2152 565 | 2002/07/25/big/img_668 566 | 2003/01/16/big/img_574 567 | 2002/08/28/big/img_19464 568 | 2002/08/11/big/img_536 569 | 2002/07/24/big/img_201 570 | 2002/08/05/big/img_3488 571 | 2002/07/25/big/img_887 572 | 2002/07/22/big/img_789 573 | 2002/07/30/big/img_432 574 | 2002/08/16/big/img_166 575 | 2002/09/01/big/img_16333 576 | 2002/07/26/big/img_1010 577 | 2002/07/21/big/img_793 578 | 2002/07/22/big/img_720 579 | 2002/07/31/big/img_337 580 | 2002/07/27/big/img_185 581 | 2002/08/23/big/img_440 582 | 2002/07/31/big/img_801 583 | 2002/07/25/big/img_478 584 | 2003/01/14/big/img_171 585 | 2002/08/07/big/img_1054 586 | 2002/09/02/big/img_15659 587 | 2002/07/29/big/img_1348 588 | 2002/08/09/big/img_337 589 | 2002/08/26/big/img_684 590 | 2002/07/31/big/img_537 591 | 2002/08/15/big/img_808 592 | 2003/01/13/big/img_740 593 | 2002/08/07/big/img_1667 594 | 2002/08/03/big/img_404 595 | 2002/08/06/big/img_2520 596 | 2002/07/19/big/img_230 597 | 2002/07/19/big/img_356 598 | 2003/01/16/big/img_627 599 | 2002/08/04/big/img_474 600 | 2002/07/29/big/img_833 601 | 2002/07/25/big/img_176 602 | 2002/08/01/big/img_1684 603 | 2002/08/21/big/img_643 604 | 2002/08/27/big/img_19673 605 | 2002/08/02/big/img_838 606 | 2002/08/06/big/img_2378 607 | 2003/01/15/big/img_48 608 | 2002/07/30/big/img_470 609 | 2002/08/15/big/img_963 610 | 2002/08/24/big/img_444 611 | 2002/08/16/big/img_662 612 | 2002/08/15/big/img_1209 613 | 2002/07/24/big/img_25 614 | 2002/08/06/big/img_2740 615 | 2002/07/29/big/img_996 616 | 2002/08/31/big/img_18074 617 | 2002/08/04/big/img_343 618 | 2003/01/17/big/img_509 619 | 2003/01/13/big/img_726 620 | 2002/08/07/big/img_1466 621 | 2002/07/26/big/img_307 622 | 2002/08/10/big/img_598 623 | 2002/08/13/big/img_890 624 | 2002/08/14/big/img_997 625 | 2002/07/19/big/img_392 626 | 2002/08/02/big/img_475 627 | 2002/08/29/big/img_19038 628 | 2002/07/29/big/img_538 629 | 2002/07/29/big/img_502 630 | 2002/08/02/big/img_364 631 | 2002/08/31/big/img_17353 632 | 2002/08/08/big/img_539 633 | 2002/08/01/big/img_1449 634 | 2002/07/22/big/img_363 635 | 2002/08/02/big/img_90 636 | 2002/09/01/big/img_16867 637 | 2002/08/05/big/img_3371 638 | 2002/07/30/big/img_342 639 | 2002/08/07/big/img_1363 640 | 2002/08/22/big/img_790 641 | 2003/01/15/big/img_404 642 | 2002/08/05/big/img_3447 643 | 2002/09/01/big/img_16167 644 | 2003/01/13/big/img_840 645 | 2002/08/22/big/img_1001 646 | 2002/08/09/big/img_431 647 | 2002/07/27/big/img_618 648 | 2002/07/31/big/img_741 649 | 2002/07/30/big/img_964 650 | 2002/07/25/big/img_86 651 | 2002/07/29/big/img_275 652 | 2002/08/21/big/img_921 653 | 2002/07/26/big/img_892 654 | 2002/08/21/big/img_663 655 | 2003/01/13/big/img_567 656 | 2003/01/14/big/img_719 657 | 2002/07/28/big/img_251 658 | 2003/01/15/big/img_1123 659 | 2002/07/29/big/img_260 660 | 2002/08/24/big/img_337 661 | 2002/08/01/big/img_1914 662 | 2002/08/13/big/img_373 663 | 2003/01/15/big/img_589 664 | 2002/08/13/big/img_906 665 | 2002/07/26/big/img_270 666 | 2002/08/26/big/img_313 667 | 2002/08/25/big/img_694 668 | 2003/01/01/big/img_327 669 | 2002/07/23/big/img_261 670 | 2002/08/26/big/img_642 671 | 2002/07/29/big/img_918 672 | 2002/07/23/big/img_455 673 | 2002/07/24/big/img_612 674 | 2002/07/23/big/img_534 675 | 2002/07/19/big/img_534 676 | 2002/07/19/big/img_726 677 | 2002/08/01/big/img_2146 678 | 2002/08/02/big/img_543 679 | 2003/01/16/big/img_777 680 | 2002/07/30/big/img_484 681 | 2002/08/13/big/img_1161 682 | 2002/07/21/big/img_390 683 | 2002/08/06/big/img_2288 684 | 2002/08/21/big/img_677 685 | 2002/08/13/big/img_747 686 | 2002/08/15/big/img_1248 687 | 2002/07/31/big/img_416 688 | 2002/09/02/big/img_15259 689 | 2002/08/16/big/img_781 690 | 2002/08/24/big/img_754 691 | 2002/07/24/big/img_803 692 | 2002/08/20/big/img_609 693 | 2002/08/28/big/img_19571 694 | 2002/09/01/big/img_16140 695 | 2002/08/26/big/img_769 696 | 2002/07/20/big/img_588 697 | 2002/08/02/big/img_898 698 | 2002/07/21/big/img_466 699 | 2002/08/14/big/img_1046 700 | 2002/07/25/big/img_212 701 | 2002/08/26/big/img_353 702 | 2002/08/19/big/img_810 703 | 2002/08/31/big/img_17824 704 | 2002/08/12/big/img_631 705 | 2002/07/19/big/img_828 706 | 2002/07/24/big/img_130 707 | 2002/08/25/big/img_580 708 | 2002/07/31/big/img_699 709 | 2002/07/23/big/img_808 710 | 2002/07/31/big/img_377 711 | 2003/01/16/big/img_570 712 | 2002/09/01/big/img_16254 713 | 2002/07/21/big/img_471 714 | 2002/08/01/big/img_1548 715 | 2002/08/18/big/img_252 716 | 2002/08/19/big/img_576 717 | 2002/08/20/big/img_464 718 | 2002/07/27/big/img_735 719 | 2002/08/21/big/img_589 720 | 2003/01/15/big/img_1192 721 | 2002/08/09/big/img_302 722 | 2002/07/31/big/img_594 723 | 2002/08/23/big/img_19 724 | 2002/08/29/big/img_18819 725 | 2002/08/19/big/img_293 726 | 2002/07/30/big/img_331 727 | 2002/08/23/big/img_607 728 | 2002/07/30/big/img_363 729 | 2002/08/16/big/img_766 730 | 2003/01/13/big/img_481 731 | 2002/08/06/big/img_2515 732 | 2002/09/02/big/img_15913 733 | 2002/09/02/big/img_15827 734 | 2002/09/02/big/img_15053 735 | 2002/08/07/big/img_1576 736 | 2002/07/23/big/img_268 737 | 2002/08/21/big/img_152 738 | 2003/01/15/big/img_578 739 | 2002/07/21/big/img_589 740 | 2002/07/20/big/img_548 741 | 2002/08/27/big/img_19693 742 | 2002/08/31/big/img_17252 743 | 2002/07/31/big/img_138 744 | 2002/07/23/big/img_372 745 | 2002/08/16/big/img_695 746 | 2002/07/27/big/img_287 747 | 2002/08/15/big/img_315 748 | 2002/08/10/big/img_361 749 | 2002/07/29/big/img_899 750 | 2002/08/13/big/img_771 751 | 2002/08/21/big/img_92 752 | 2003/01/15/big/img_425 753 | 2003/01/16/big/img_450 754 | 2002/09/01/big/img_16942 755 | 2002/08/02/big/img_51 756 | 2002/09/02/big/img_15379 757 | 2002/08/24/big/img_147 758 | 2002/08/30/big/img_18122 759 | 2002/07/26/big/img_950 760 | 2002/08/07/big/img_1400 761 | 2002/08/17/big/img_468 762 | 2002/08/15/big/img_470 763 | 2002/07/30/big/img_318 764 | 2002/07/22/big/img_644 765 | 2002/08/27/big/img_19732 766 | 2002/07/23/big/img_601 767 | 2002/08/26/big/img_398 768 | 2002/08/21/big/img_428 769 | 2002/08/06/big/img_2119 770 | 2002/08/29/big/img_19103 771 | 2003/01/14/big/img_933 772 | 2002/08/11/big/img_674 773 | 2002/08/28/big/img_19420 774 | 2002/08/03/big/img_418 775 | 2002/08/17/big/img_312 776 | 2002/07/25/big/img_1044 777 | 2003/01/17/big/img_671 778 | 2002/08/30/big/img_18297 779 | 2002/07/25/big/img_755 780 | 2002/07/23/big/img_471 781 | 2002/08/21/big/img_39 782 | 2002/07/26/big/img_699 783 | 2003/01/14/big/img_33 784 | 2002/07/31/big/img_411 785 | 2002/08/16/big/img_645 786 | 2003/01/17/big/img_116 787 | 2002/09/02/big/img_15903 788 | 2002/08/20/big/img_120 789 | 2002/08/22/big/img_176 790 | 2002/07/29/big/img_1316 791 | 2002/08/27/big/img_19914 792 | 2002/07/22/big/img_719 793 | 2002/08/28/big/img_19239 794 | 2003/01/13/big/img_385 795 | 2002/08/08/big/img_525 796 | 2002/07/19/big/img_782 797 | 2002/08/13/big/img_843 798 | 2002/07/30/big/img_107 799 | 2002/08/11/big/img_752 800 | 2002/07/29/big/img_383 801 | 2002/08/26/big/img_249 802 | 2002/08/29/big/img_18860 803 | 2002/07/30/big/img_70 804 | 2002/07/26/big/img_194 805 | 2002/08/15/big/img_530 806 | 2002/08/08/big/img_816 807 | 2002/07/31/big/img_286 808 | 2003/01/13/big/img_294 809 | 2002/07/31/big/img_251 810 | 2002/07/24/big/img_13 811 | 2002/08/31/big/img_17938 812 | 2002/07/22/big/img_642 813 | 2003/01/14/big/img_728 814 | 2002/08/18/big/img_47 815 | 2002/08/22/big/img_306 816 | 2002/08/20/big/img_348 817 | 2002/08/15/big/img_764 818 | 2002/08/08/big/img_163 819 | 2002/07/23/big/img_531 820 | 2002/07/23/big/img_467 821 | 2003/01/16/big/img_743 822 | 2003/01/13/big/img_535 823 | 2002/08/02/big/img_523 824 | 2002/08/22/big/img_120 825 | 2002/08/11/big/img_496 826 | 2002/08/29/big/img_19075 827 | 2002/08/08/big/img_465 828 | 2002/08/09/big/img_790 829 | 2002/08/19/big/img_588 830 | 2002/08/23/big/img_407 831 | 2003/01/17/big/img_435 832 | 2002/08/24/big/img_398 833 | 2002/08/27/big/img_19899 834 | 2003/01/15/big/img_335 835 | 2002/08/13/big/img_493 836 | 2002/09/02/big/img_15460 837 | 2002/07/31/big/img_470 838 | 2002/08/05/big/img_3550 839 | 2002/07/28/big/img_123 840 | 2002/08/01/big/img_1498 841 | 2002/08/04/big/img_504 842 | 2003/01/17/big/img_427 843 | 2002/08/27/big/img_19708 844 | 2002/07/27/big/img_861 845 | 2002/07/25/big/img_685 846 | 2002/07/31/big/img_207 847 | 2003/01/14/big/img_745 848 | 2002/08/31/big/img_17756 849 | 2002/08/24/big/img_288 850 | 2002/08/18/big/img_181 851 | 2002/08/10/big/img_520 852 | 2002/08/25/big/img_705 853 | 2002/08/23/big/img_226 854 | 2002/08/04/big/img_727 855 | 2002/07/24/big/img_625 856 | 2002/08/28/big/img_19157 857 | 2002/08/23/big/img_586 858 | 2002/07/31/big/img_232 859 | 2003/01/13/big/img_240 860 | 2003/01/14/big/img_321 861 | 2003/01/15/big/img_533 862 | 2002/07/23/big/img_480 863 | 2002/07/24/big/img_371 864 | 2002/08/21/big/img_702 865 | 2002/08/31/big/img_17075 866 | 2002/09/02/big/img_15278 867 | 2002/07/29/big/img_246 868 | 2003/01/15/big/img_829 869 | 2003/01/15/big/img_1213 870 | 2003/01/16/big/img_441 871 | 2002/08/14/big/img_921 872 | 2002/07/23/big/img_425 873 | 2002/08/15/big/img_296 874 | 2002/07/19/big/img_135 875 | 2002/07/26/big/img_402 876 | 2003/01/17/big/img_88 877 | 2002/08/20/big/img_872 878 | 2002/08/13/big/img_1110 879 | 2003/01/16/big/img_1040 880 | 2002/07/23/big/img_9 881 | 2002/08/13/big/img_700 882 | 2002/08/16/big/img_371 883 | 2002/08/27/big/img_19966 884 | 2003/01/17/big/img_391 885 | 2002/08/18/big/img_426 886 | 2002/08/01/big/img_1618 887 | 2002/07/21/big/img_754 888 | 2003/01/14/big/img_1101 889 | 2003/01/16/big/img_1022 890 | 2002/07/22/big/img_275 891 | 2002/08/24/big/img_86 892 | 2002/08/17/big/img_582 893 | 2003/01/15/big/img_765 894 | 2003/01/17/big/img_449 895 | 2002/07/28/big/img_265 896 | 2003/01/13/big/img_552 897 | 2002/07/28/big/img_115 898 | 2003/01/16/big/img_56 899 | 2002/08/02/big/img_1232 900 | 2003/01/17/big/img_925 901 | 2002/07/22/big/img_445 902 | 2002/07/25/big/img_957 903 | 2002/07/20/big/img_589 904 | 2002/08/31/big/img_17107 905 | 2002/07/29/big/img_483 906 | 2002/08/14/big/img_1063 907 | 2002/08/07/big/img_1545 908 | 2002/08/14/big/img_680 909 | 2002/09/01/big/img_16694 910 | 2002/08/14/big/img_257 911 | 2002/08/11/big/img_726 912 | 2002/07/26/big/img_681 913 | 2002/07/25/big/img_481 914 | 2003/01/14/big/img_737 915 | 2002/08/28/big/img_19480 916 | 2003/01/16/big/img_362 917 | 2002/08/27/big/img_19865 918 | 2003/01/01/big/img_547 919 | 2002/09/02/big/img_15074 920 | 2002/08/01/big/img_1453 921 | 2002/08/22/big/img_594 922 | 2002/08/28/big/img_19263 923 | 2002/08/13/big/img_478 924 | 2002/07/29/big/img_1358 925 | 2003/01/14/big/img_1022 926 | 2002/08/16/big/img_450 927 | 2002/08/02/big/img_159 928 | 2002/07/26/big/img_781 929 | 2003/01/13/big/img_601 930 | 2002/08/20/big/img_407 931 | 2002/08/15/big/img_468 932 | 2002/08/31/big/img_17902 933 | 2002/08/16/big/img_81 934 | 2002/07/25/big/img_987 935 | 2002/07/25/big/img_500 936 | 2002/08/02/big/img_31 937 | 2002/08/18/big/img_538 938 | 2002/08/08/big/img_54 939 | 2002/07/23/big/img_686 940 | 2002/07/24/big/img_836 941 | 2003/01/17/big/img_734 942 | 2002/08/16/big/img_1055 943 | 2003/01/16/big/img_521 944 | 2002/07/25/big/img_612 945 | 2002/08/22/big/img_778 946 | 2002/08/03/big/img_251 947 | 2002/08/12/big/img_436 948 | 2002/08/23/big/img_705 949 | 2002/07/28/big/img_243 950 | 2002/07/25/big/img_1029 951 | 2002/08/20/big/img_287 952 | 2002/08/29/big/img_18739 953 | 2002/08/05/big/img_3272 954 | 2002/07/27/big/img_214 955 | 2003/01/14/big/img_5 956 | 2002/08/01/big/img_1380 957 | 2002/08/29/big/img_19097 958 | 2002/07/30/big/img_486 959 | 2002/08/29/big/img_18707 960 | 2002/08/10/big/img_559 961 | 2002/08/15/big/img_365 962 | 2002/08/09/big/img_525 963 | 2002/08/10/big/img_689 964 | 2002/07/25/big/img_502 965 | 2002/08/03/big/img_667 966 | 2002/08/10/big/img_855 967 | 2002/08/10/big/img_706 968 | 2002/08/18/big/img_603 969 | 2003/01/16/big/img_1055 970 | 2002/08/31/big/img_17890 971 | 2002/08/15/big/img_761 972 | 2003/01/15/big/img_489 973 | 2002/08/26/big/img_351 974 | 2002/08/01/big/img_1772 975 | 2002/08/31/big/img_17729 976 | 2002/07/25/big/img_609 977 | 2003/01/13/big/img_539 978 | 2002/07/27/big/img_686 979 | 2002/07/31/big/img_311 980 | 2002/08/22/big/img_799 981 | 2003/01/16/big/img_936 982 | 2002/08/31/big/img_17813 983 | 2002/08/04/big/img_862 984 | 2002/08/09/big/img_332 985 | 2002/07/20/big/img_148 986 | 2002/08/12/big/img_426 987 | 2002/07/24/big/img_69 988 | 2002/07/27/big/img_685 989 | 2002/08/02/big/img_480 990 | 2002/08/26/big/img_154 991 | 2002/07/24/big/img_598 992 | 2002/08/01/big/img_1881 993 | 2002/08/20/big/img_667 994 | 2003/01/14/big/img_495 995 | 2002/07/21/big/img_744 996 | 2002/07/30/big/img_150 997 | 2002/07/23/big/img_924 998 | 2002/08/08/big/img_272 999 | 2002/07/23/big/img_310 1000 | 2002/07/25/big/img_1011 1001 | 2002/09/02/big/img_15725 1002 | 2002/07/19/big/img_814 1003 | 2002/08/20/big/img_936 1004 | 2002/07/25/big/img_85 1005 | 2002/08/24/big/img_662 1006 | 2002/08/09/big/img_495 1007 | 2003/01/15/big/img_196 1008 | 2002/08/16/big/img_707 1009 | 2002/08/28/big/img_19370 1010 | 2002/08/06/big/img_2366 1011 | 2002/08/06/big/img_3012 1012 | 2002/08/01/big/img_1452 1013 | 2002/07/31/big/img_742 1014 | 2002/07/27/big/img_914 1015 | 2003/01/13/big/img_290 1016 | 2002/07/31/big/img_288 1017 | 2002/08/02/big/img_171 1018 | 2002/08/22/big/img_191 1019 | 2002/07/27/big/img_1066 1020 | 2002/08/12/big/img_383 1021 | 2003/01/17/big/img_1018 1022 | 2002/08/01/big/img_1785 1023 | 2002/08/11/big/img_390 1024 | 2002/08/27/big/img_20037 1025 | 2002/08/12/big/img_38 1026 | 2003/01/15/big/img_103 1027 | 2002/08/26/big/img_31 1028 | 2002/08/18/big/img_660 1029 | 2002/07/22/big/img_694 1030 | 2002/08/15/big/img_24 1031 | 2002/07/27/big/img_1077 1032 | 2002/08/01/big/img_1943 1033 | 2002/07/22/big/img_292 1034 | 2002/09/01/big/img_16857 1035 | 2002/07/22/big/img_892 1036 | 2003/01/14/big/img_46 1037 | 2002/08/09/big/img_469 1038 | 2002/08/09/big/img_414 1039 | 2003/01/16/big/img_40 1040 | 2002/08/28/big/img_19231 1041 | 2002/07/27/big/img_978 1042 | 2002/07/23/big/img_475 1043 | 2002/07/25/big/img_92 1044 | 2002/08/09/big/img_799 1045 | 2002/07/25/big/img_491 1046 | 2002/08/03/big/img_654 1047 | 2003/01/15/big/img_687 1048 | 2002/08/11/big/img_478 1049 | 2002/08/07/big/img_1664 1050 | 2002/08/20/big/img_362 1051 | 2002/08/01/big/img_1298 1052 | 2003/01/13/big/img_500 1053 | 2002/08/06/big/img_2896 1054 | 2002/08/30/big/img_18529 1055 | 2002/08/16/big/img_1020 1056 | 2002/07/29/big/img_892 1057 | 2002/08/29/big/img_18726 1058 | 2002/07/21/big/img_453 1059 | 2002/08/17/big/img_437 1060 | 2002/07/19/big/img_665 1061 | 2002/07/22/big/img_440 1062 | 2002/07/19/big/img_582 1063 | 2002/07/21/big/img_233 1064 | 2003/01/01/big/img_82 1065 | 2002/07/25/big/img_341 1066 | 2002/07/29/big/img_864 1067 | 2002/08/02/big/img_276 1068 | 2002/08/29/big/img_18654 1069 | 2002/07/27/big/img_1024 1070 | 2002/08/19/big/img_373 1071 | 2003/01/15/big/img_241 1072 | 2002/07/25/big/img_84 1073 | 2002/08/13/big/img_834 1074 | 2002/08/10/big/img_511 1075 | 2002/08/01/big/img_1627 1076 | 2002/08/08/big/img_607 1077 | 2002/08/06/big/img_2083 1078 | 2002/08/01/big/img_1486 1079 | 2002/08/08/big/img_700 1080 | 2002/08/01/big/img_1954 1081 | 2002/08/21/big/img_54 1082 | 2002/07/30/big/img_847 1083 | 2002/08/28/big/img_19169 1084 | 2002/07/21/big/img_549 1085 | 2002/08/03/big/img_693 1086 | 2002/07/31/big/img_1002 1087 | 2003/01/14/big/img_1035 1088 | 2003/01/16/big/img_622 1089 | 2002/07/30/big/img_1201 1090 | 2002/08/10/big/img_444 1091 | 2002/07/31/big/img_374 1092 | 2002/08/21/big/img_301 1093 | 2002/08/13/big/img_1095 1094 | 2003/01/13/big/img_288 1095 | 2002/07/25/big/img_232 1096 | 2003/01/13/big/img_967 1097 | 2002/08/26/big/img_360 1098 | 2002/08/05/big/img_67 1099 | 2002/08/29/big/img_18969 1100 | 2002/07/28/big/img_16 1101 | 2002/08/16/big/img_515 1102 | 2002/07/20/big/img_708 1103 | 2002/08/18/big/img_178 1104 | 2003/01/15/big/img_509 1105 | 2002/07/25/big/img_430 1106 | 2002/08/21/big/img_738 1107 | 2002/08/16/big/img_886 1108 | 2002/09/02/big/img_15605 1109 | 2002/09/01/big/img_16242 1110 | 2002/08/24/big/img_711 1111 | 2002/07/25/big/img_90 1112 | 2002/08/09/big/img_491 1113 | 2002/07/30/big/img_534 1114 | 2003/01/13/big/img_474 1115 | 2002/08/25/big/img_510 1116 | 2002/08/15/big/img_555 1117 | 2002/08/02/big/img_775 1118 | 2002/07/23/big/img_975 1119 | 2002/08/19/big/img_229 1120 | 2003/01/17/big/img_860 1121 | 2003/01/02/big/img_10 1122 | 2002/07/23/big/img_542 1123 | 2002/08/06/big/img_2535 1124 | 2002/07/22/big/img_37 1125 | 2002/08/06/big/img_2342 1126 | 2002/08/25/big/img_515 1127 | 2002/08/25/big/img_336 1128 | 2002/08/18/big/img_837 1129 | 2002/08/21/big/img_616 1130 | 2003/01/17/big/img_24 1131 | 2002/07/26/big/img_936 1132 | 2002/08/14/big/img_896 1133 | 2002/07/29/big/img_465 1134 | 2002/07/31/big/img_543 1135 | 2002/08/01/big/img_1411 1136 | 2002/08/02/big/img_423 1137 | 2002/08/21/big/img_44 1138 | 2002/07/31/big/img_11 1139 | 2003/01/15/big/img_628 1140 | 2003/01/15/big/img_605 1141 | 2002/07/30/big/img_571 1142 | 2002/07/23/big/img_428 1143 | 2002/08/15/big/img_942 1144 | 2002/07/26/big/img_531 1145 | 2003/01/16/big/img_59 1146 | 2002/08/02/big/img_410 1147 | 2002/07/31/big/img_230 1148 | 2002/08/19/big/img_806 1149 | 2003/01/14/big/img_462 1150 | 2002/08/16/big/img_370 1151 | 2002/08/13/big/img_380 1152 | 2002/08/16/big/img_932 1153 | 2002/07/19/big/img_393 1154 | 2002/08/20/big/img_764 1155 | 2002/08/15/big/img_616 1156 | 2002/07/26/big/img_267 1157 | 2002/07/27/big/img_1069 1158 | 2002/08/14/big/img_1041 1159 | 2003/01/13/big/img_594 1160 | 2002/09/01/big/img_16845 1161 | 2002/08/09/big/img_229 1162 | 2003/01/16/big/img_639 1163 | 2002/08/19/big/img_398 1164 | 2002/08/18/big/img_978 1165 | 2002/08/24/big/img_296 1166 | 2002/07/29/big/img_415 1167 | 2002/07/30/big/img_923 1168 | 2002/08/18/big/img_575 1169 | 2002/08/22/big/img_182 1170 | 2002/07/25/big/img_806 1171 | 2002/07/22/big/img_49 1172 | 2002/07/29/big/img_989 1173 | 2003/01/17/big/img_789 1174 | 2003/01/15/big/img_503 1175 | 2002/09/01/big/img_16062 1176 | 2003/01/17/big/img_794 1177 | 2002/08/15/big/img_564 1178 | 2003/01/15/big/img_222 1179 | 2002/08/01/big/img_1656 1180 | 2003/01/13/big/img_432 1181 | 2002/07/19/big/img_426 1182 | 2002/08/17/big/img_244 1183 | 2002/08/13/big/img_805 1184 | 2002/09/02/big/img_15067 1185 | 2002/08/11/big/img_58 1186 | 2002/08/22/big/img_636 1187 | 2002/07/22/big/img_416 1188 | 2002/08/13/big/img_836 1189 | 2002/08/26/big/img_363 1190 | 2002/07/30/big/img_917 1191 | 2003/01/14/big/img_206 1192 | 2002/08/12/big/img_311 1193 | 2002/08/31/big/img_17623 1194 | 2002/07/29/big/img_661 1195 | 2003/01/13/big/img_417 1196 | 2002/08/02/big/img_463 1197 | 2002/08/02/big/img_669 1198 | 2002/08/26/big/img_670 1199 | 2002/08/02/big/img_375 1200 | 2002/07/19/big/img_209 1201 | 2002/08/08/big/img_115 1202 | 2002/08/21/big/img_399 1203 | 2002/08/20/big/img_911 1204 | 2002/08/07/big/img_1212 1205 | 2002/08/20/big/img_578 1206 | 2002/08/22/big/img_554 1207 | 2002/08/21/big/img_484 1208 | 2002/07/25/big/img_450 1209 | 2002/08/03/big/img_542 1210 | 2002/08/15/big/img_561 1211 | 2002/07/23/big/img_360 1212 | 2002/08/30/big/img_18137 1213 | 2002/07/25/big/img_250 1214 | 2002/08/03/big/img_647 1215 | 2002/08/20/big/img_375 1216 | 2002/08/14/big/img_387 1217 | 2002/09/01/big/img_16990 1218 | 2002/08/28/big/img_19341 1219 | 2003/01/15/big/img_239 1220 | 2002/08/20/big/img_528 1221 | 2002/08/12/big/img_130 1222 | 2002/09/02/big/img_15108 1223 | 2003/01/15/big/img_372 1224 | 2002/08/16/big/img_678 1225 | 2002/08/04/big/img_623 1226 | 2002/07/23/big/img_477 1227 | 2002/08/28/big/img_19590 1228 | 2003/01/17/big/img_978 1229 | 2002/09/01/big/img_16692 1230 | 2002/07/20/big/img_109 1231 | 2002/08/06/big/img_2660 1232 | 2003/01/14/big/img_464 1233 | 2002/08/09/big/img_618 1234 | 2002/07/22/big/img_722 1235 | 2002/08/25/big/img_419 1236 | 2002/08/03/big/img_314 1237 | 2002/08/25/big/img_40 1238 | 2002/07/27/big/img_430 1239 | 2002/08/10/big/img_569 1240 | 2002/08/23/big/img_398 1241 | 2002/07/23/big/img_893 1242 | 2002/08/16/big/img_261 1243 | 2002/08/06/big/img_2668 1244 | 2002/07/22/big/img_835 1245 | 2002/09/02/big/img_15093 1246 | 2003/01/16/big/img_65 1247 | 2002/08/21/big/img_448 1248 | 2003/01/14/big/img_351 1249 | 2003/01/17/big/img_133 1250 | 2002/07/28/big/img_493 1251 | 2003/01/15/big/img_640 1252 | 2002/09/01/big/img_16880 1253 | 2002/08/15/big/img_350 1254 | 2002/08/20/big/img_624 1255 | 2002/08/25/big/img_604 1256 | 2002/08/06/big/img_2200 1257 | 2002/08/23/big/img_290 1258 | 2002/08/13/big/img_1152 1259 | 2003/01/14/big/img_251 1260 | 2002/08/02/big/img_538 1261 | 2002/08/22/big/img_613 1262 | 2003/01/13/big/img_351 1263 | 2002/08/18/big/img_368 1264 | 2002/07/23/big/img_392 1265 | 2002/07/25/big/img_198 1266 | 2002/07/25/big/img_418 1267 | 2002/08/26/big/img_614 1268 | 2002/07/23/big/img_405 1269 | 2003/01/14/big/img_445 1270 | 2002/07/25/big/img_326 1271 | 2002/08/10/big/img_734 1272 | 2003/01/14/big/img_530 1273 | 2002/08/08/big/img_561 1274 | 2002/08/29/big/img_18990 1275 | 2002/08/10/big/img_576 1276 | 2002/07/29/big/img_1494 1277 | 2002/07/19/big/img_198 1278 | 2002/08/10/big/img_562 1279 | 2002/07/22/big/img_901 1280 | 2003/01/14/big/img_37 1281 | 2002/09/02/big/img_15629 1282 | 2003/01/14/big/img_58 1283 | 2002/08/01/big/img_1364 1284 | 2002/07/27/big/img_636 1285 | 2003/01/13/big/img_241 1286 | 2002/09/01/big/img_16988 1287 | 2003/01/13/big/img_560 1288 | 2002/08/09/big/img_533 1289 | 2002/07/31/big/img_249 1290 | 2003/01/17/big/img_1007 1291 | 2002/07/21/big/img_64 1292 | 2003/01/13/big/img_537 1293 | 2003/01/15/big/img_606 1294 | 2002/08/18/big/img_651 1295 | 2002/08/24/big/img_405 1296 | 2002/07/26/big/img_837 1297 | 2002/08/09/big/img_562 1298 | 2002/08/01/big/img_1983 1299 | 2002/08/03/big/img_514 1300 | 2002/07/29/big/img_314 1301 | 2002/08/12/big/img_493 1302 | 2003/01/14/big/img_121 1303 | 2003/01/14/big/img_479 1304 | 2002/08/04/big/img_410 1305 | 2002/07/22/big/img_607 1306 | 2003/01/17/big/img_417 1307 | 2002/07/20/big/img_547 1308 | 2002/08/13/big/img_396 1309 | 2002/08/31/big/img_17538 1310 | 2002/08/13/big/img_187 1311 | 2002/08/12/big/img_328 1312 | 2003/01/14/big/img_569 1313 | 2002/07/27/big/img_1081 1314 | 2002/08/14/big/img_504 1315 | 2002/08/23/big/img_785 1316 | 2002/07/26/big/img_339 1317 | 2002/08/07/big/img_1156 1318 | 2002/08/07/big/img_1456 1319 | 2002/08/23/big/img_378 1320 | 2002/08/27/big/img_19719 1321 | 2002/07/31/big/img_39 1322 | 2002/07/31/big/img_883 1323 | 2003/01/14/big/img_676 1324 | 2002/07/29/big/img_214 1325 | 2002/07/26/big/img_669 1326 | 2002/07/25/big/img_202 1327 | 2002/08/08/big/img_259 1328 | 2003/01/17/big/img_943 1329 | 2003/01/15/big/img_512 1330 | 2002/08/05/big/img_3295 1331 | 2002/08/27/big/img_19685 1332 | 2002/08/08/big/img_277 1333 | 2002/08/30/big/img_18154 1334 | 2002/07/22/big/img_663 1335 | 2002/08/29/big/img_18914 1336 | 2002/07/31/big/img_908 1337 | 2002/08/27/big/img_19926 1338 | 2003/01/13/big/img_791 1339 | 2003/01/15/big/img_827 1340 | 2002/08/18/big/img_878 1341 | 2002/08/14/big/img_670 1342 | 2002/07/20/big/img_182 1343 | 2002/08/15/big/img_291 1344 | 2002/08/06/big/img_2600 1345 | 2002/07/23/big/img_587 1346 | 2002/08/14/big/img_577 1347 | 2003/01/15/big/img_585 1348 | 2002/07/30/big/img_310 1349 | 2002/08/03/big/img_658 1350 | 2002/08/10/big/img_157 1351 | 2002/08/19/big/img_811 1352 | 2002/07/29/big/img_1318 1353 | 2002/08/04/big/img_104 1354 | 2002/07/30/big/img_332 1355 | 2002/07/24/big/img_789 1356 | 2002/07/29/big/img_516 1357 | 2002/07/23/big/img_843 1358 | 2002/08/01/big/img_1528 1359 | 2002/08/13/big/img_798 1360 | 2002/08/07/big/img_1729 1361 | 2002/08/28/big/img_19448 1362 | 2003/01/16/big/img_95 1363 | 2002/08/12/big/img_473 1364 | 2002/07/27/big/img_269 1365 | 2003/01/16/big/img_621 1366 | 2002/07/29/big/img_772 1367 | 2002/07/24/big/img_171 1368 | 2002/07/19/big/img_429 1369 | 2002/08/07/big/img_1933 1370 | 2002/08/27/big/img_19629 1371 | 2002/08/05/big/img_3688 1372 | 2002/08/07/big/img_1691 1373 | 2002/07/23/big/img_600 1374 | 2002/07/29/big/img_666 1375 | 2002/08/25/big/img_566 1376 | 2002/08/06/big/img_2659 1377 | 2002/08/29/big/img_18929 1378 | 2002/08/16/big/img_407 1379 | 2002/08/18/big/img_774 1380 | 2002/08/19/big/img_249 1381 | 2002/08/06/big/img_2427 1382 | 2002/08/29/big/img_18899 1383 | 2002/08/01/big/img_1818 1384 | 2002/07/31/big/img_108 1385 | 2002/07/29/big/img_500 1386 | 2002/08/11/big/img_115 1387 | 2002/07/19/big/img_521 1388 | 2002/08/02/big/img_1163 1389 | 2002/07/22/big/img_62 1390 | 2002/08/13/big/img_466 1391 | 2002/08/21/big/img_956 1392 | 2002/08/23/big/img_602 1393 | 2002/08/20/big/img_858 1394 | 2002/07/25/big/img_690 1395 | 2002/07/19/big/img_130 1396 | 2002/08/04/big/img_874 1397 | 2002/07/26/big/img_489 1398 | 2002/07/22/big/img_548 1399 | 2002/08/10/big/img_191 1400 | 2002/07/25/big/img_1051 1401 | 2002/08/18/big/img_473 1402 | 2002/08/12/big/img_755 1403 | 2002/08/18/big/img_413 1404 | 2002/08/08/big/img_1044 1405 | 2002/08/17/big/img_680 1406 | 2002/08/26/big/img_235 1407 | 2002/08/20/big/img_330 1408 | 2002/08/22/big/img_344 1409 | 2002/08/09/big/img_593 1410 | 2002/07/31/big/img_1006 1411 | 2002/08/14/big/img_337 1412 | 2002/08/16/big/img_728 1413 | 2002/07/24/big/img_834 1414 | 2002/08/04/big/img_552 1415 | 2002/09/02/big/img_15213 1416 | 2002/07/25/big/img_725 1417 | 2002/08/30/big/img_18290 1418 | 2003/01/01/big/img_475 1419 | 2002/07/27/big/img_1083 1420 | 2002/08/29/big/img_18955 1421 | 2002/08/31/big/img_17232 1422 | 2002/08/08/big/img_480 1423 | 2002/08/01/big/img_1311 1424 | 2002/07/30/big/img_745 1425 | 2002/08/03/big/img_649 1426 | 2002/08/12/big/img_193 1427 | 2002/07/29/big/img_228 1428 | 2002/07/25/big/img_836 1429 | 2002/08/20/big/img_400 1430 | 2002/07/30/big/img_507 1431 | 2002/09/02/big/img_15072 1432 | 2002/07/26/big/img_658 1433 | 2002/07/28/big/img_503 1434 | 2002/08/05/big/img_3814 1435 | 2002/08/24/big/img_745 1436 | 2003/01/13/big/img_817 1437 | 2002/08/08/big/img_579 1438 | 2002/07/22/big/img_251 1439 | 2003/01/13/big/img_689 1440 | 2002/07/25/big/img_407 1441 | 2002/08/13/big/img_1050 1442 | 2002/08/14/big/img_733 1443 | 2002/07/24/big/img_82 1444 | 2003/01/17/big/img_288 1445 | 2003/01/15/big/img_475 1446 | 2002/08/14/big/img_620 1447 | 2002/08/21/big/img_167 1448 | 2002/07/19/big/img_300 1449 | 2002/07/26/big/img_219 1450 | 2002/08/01/big/img_1468 1451 | 2002/07/23/big/img_260 1452 | 2002/08/09/big/img_555 1453 | 2002/07/19/big/img_160 1454 | 2002/08/02/big/img_1060 1455 | 2003/01/14/big/img_149 1456 | 2002/08/15/big/img_346 1457 | 2002/08/24/big/img_597 1458 | 2002/08/22/big/img_502 1459 | 2002/08/30/big/img_18228 1460 | 2002/07/21/big/img_766 1461 | 2003/01/15/big/img_841 1462 | 2002/07/24/big/img_516 1463 | 2002/08/02/big/img_265 1464 | 2002/08/15/big/img_1243 1465 | 2003/01/15/big/img_223 1466 | 2002/08/04/big/img_236 1467 | 2002/07/22/big/img_309 1468 | 2002/07/20/big/img_656 1469 | 2002/07/31/big/img_412 1470 | 2002/09/01/big/img_16462 1471 | 2003/01/16/big/img_431 1472 | 2002/07/22/big/img_793 1473 | 2002/08/15/big/img_877 1474 | 2002/07/26/big/img_282 1475 | 2002/07/25/big/img_529 1476 | 2002/08/24/big/img_613 1477 | 2003/01/17/big/img_700 1478 | 2002/08/06/big/img_2526 1479 | 2002/08/24/big/img_394 1480 | 2002/08/21/big/img_521 1481 | 2002/08/25/big/img_560 1482 | 2002/07/29/big/img_966 1483 | 2002/07/25/big/img_448 1484 | 2003/01/13/big/img_782 1485 | 2002/08/21/big/img_296 1486 | 2002/09/01/big/img_16755 1487 | 2002/08/05/big/img_3552 1488 | 2002/09/02/big/img_15823 1489 | 2003/01/14/big/img_193 1490 | 2002/07/21/big/img_159 1491 | 2002/08/02/big/img_564 1492 | 2002/08/16/big/img_300 1493 | 2002/07/19/big/img_269 1494 | 2002/08/13/big/img_676 1495 | 2002/07/28/big/img_57 1496 | 2002/08/05/big/img_3318 1497 | 2002/07/31/big/img_218 1498 | 2002/08/21/big/img_898 1499 | 2002/07/29/big/img_109 1500 | 2002/07/19/big/img_854 1501 | 2002/08/23/big/img_311 1502 | 2002/08/14/big/img_318 1503 | 2002/07/25/big/img_523 1504 | 2002/07/21/big/img_678 1505 | 2003/01/17/big/img_690 1506 | 2002/08/28/big/img_19503 1507 | 2002/08/18/big/img_251 1508 | 2002/08/22/big/img_672 1509 | 2002/08/20/big/img_663 1510 | 2002/08/02/big/img_148 1511 | 2002/09/02/big/img_15580 1512 | 2002/07/25/big/img_778 1513 | 2002/08/14/big/img_565 1514 | 2002/08/12/big/img_374 1515 | 2002/08/13/big/img_1018 1516 | 2002/08/20/big/img_474 1517 | 2002/08/25/big/img_33 1518 | 2002/08/02/big/img_1190 1519 | 2002/08/08/big/img_864 1520 | 2002/08/14/big/img_1071 1521 | 2002/08/30/big/img_18103 1522 | 2002/08/18/big/img_533 1523 | 2003/01/16/big/img_650 1524 | 2002/07/25/big/img_108 1525 | 2002/07/26/big/img_81 1526 | 2002/07/27/big/img_543 1527 | 2002/07/29/big/img_521 1528 | 2003/01/13/big/img_434 1529 | 2002/08/26/big/img_674 1530 | 2002/08/06/big/img_2932 1531 | 2002/08/07/big/img_1262 1532 | 2003/01/15/big/img_201 1533 | 2003/01/16/big/img_673 1534 | 2002/09/02/big/img_15988 1535 | 2002/07/29/big/img_1306 1536 | 2003/01/14/big/img_1072 1537 | 2002/08/30/big/img_18232 1538 | 2002/08/05/big/img_3711 1539 | 2002/07/23/big/img_775 1540 | 2002/08/01/big/img_16 1541 | 2003/01/16/big/img_630 1542 | 2002/08/22/big/img_695 1543 | 2002/08/14/big/img_51 1544 | 2002/08/14/big/img_782 1545 | 2002/08/24/big/img_742 1546 | 2003/01/14/big/img_512 1547 | 2003/01/15/big/img_1183 1548 | 2003/01/15/big/img_714 1549 | 2002/08/01/big/img_2078 1550 | 2002/07/31/big/img_682 1551 | 2002/09/02/big/img_15687 1552 | 2002/07/26/big/img_518 1553 | 2002/08/27/big/img_19676 1554 | 2002/09/02/big/img_15969 1555 | 2002/08/02/big/img_931 1556 | 2002/08/25/big/img_508 1557 | 2002/08/29/big/img_18616 1558 | 2002/07/22/big/img_839 1559 | 2002/07/28/big/img_313 1560 | 2003/01/14/big/img_155 1561 | 2002/08/02/big/img_1105 1562 | 2002/08/09/big/img_53 1563 | 2002/08/16/big/img_469 1564 | 2002/08/15/big/img_502 1565 | 2002/08/20/big/img_575 1566 | 2002/07/25/big/img_138 1567 | 2003/01/16/big/img_579 1568 | 2002/07/19/big/img_352 1569 | 2003/01/14/big/img_762 1570 | 2003/01/01/big/img_588 1571 | 2002/08/02/big/img_981 1572 | 2002/08/21/big/img_447 1573 | 2002/09/01/big/img_16151 1574 | 2003/01/14/big/img_769 1575 | 2002/08/23/big/img_461 1576 | 2002/08/17/big/img_240 1577 | 2002/09/02/big/img_15220 1578 | 2002/07/19/big/img_408 1579 | 2002/09/02/big/img_15496 1580 | 2002/07/29/big/img_758 1581 | 2002/08/28/big/img_19392 1582 | 2002/08/06/big/img_2723 1583 | 2002/08/31/big/img_17752 1584 | 2002/08/23/big/img_469 1585 | 2002/08/13/big/img_515 1586 | 2002/09/02/big/img_15551 1587 | 2002/08/03/big/img_462 1588 | 2002/07/24/big/img_613 1589 | 2002/07/22/big/img_61 1590 | 2002/08/08/big/img_171 1591 | 2002/08/21/big/img_177 1592 | 2003/01/14/big/img_105 1593 | 2002/08/02/big/img_1017 1594 | 2002/08/22/big/img_106 1595 | 2002/07/27/big/img_542 1596 | 2002/07/21/big/img_665 1597 | 2002/07/23/big/img_595 1598 | 2002/08/04/big/img_657 1599 | 2002/08/29/big/img_19002 1600 | 2003/01/15/big/img_550 1601 | 2002/08/14/big/img_662 1602 | 2002/07/20/big/img_425 1603 | 2002/08/30/big/img_18528 1604 | 2002/07/26/big/img_611 1605 | 2002/07/22/big/img_849 1606 | 2002/08/07/big/img_1655 1607 | 2002/08/21/big/img_638 1608 | 2003/01/17/big/img_732 1609 | 2003/01/01/big/img_496 1610 | 2002/08/18/big/img_713 1611 | 2002/08/08/big/img_109 1612 | 2002/07/27/big/img_1008 1613 | 2002/07/20/big/img_559 1614 | 2002/08/16/big/img_699 1615 | 2002/08/31/big/img_17702 1616 | 2002/07/31/big/img_1013 1617 | 2002/08/01/big/img_2027 1618 | 2002/08/02/big/img_1001 1619 | 2002/08/03/big/img_210 1620 | 2002/08/01/big/img_2087 1621 | 2003/01/14/big/img_199 1622 | 2002/07/29/big/img_48 1623 | 2002/07/19/big/img_727 1624 | 2002/08/09/big/img_249 1625 | 2002/08/04/big/img_632 1626 | 2002/08/22/big/img_620 1627 | 2003/01/01/big/img_457 1628 | 2002/08/05/big/img_3223 1629 | 2002/07/27/big/img_240 1630 | 2002/07/25/big/img_797 1631 | 2002/08/13/big/img_430 1632 | 2002/07/25/big/img_615 1633 | 2002/08/12/big/img_28 1634 | 2002/07/30/big/img_220 1635 | 2002/07/24/big/img_89 1636 | 2002/08/21/big/img_357 1637 | 2002/08/09/big/img_590 1638 | 2003/01/13/big/img_525 1639 | 2002/08/17/big/img_818 1640 | 2003/01/02/big/img_7 1641 | 2002/07/26/big/img_636 1642 | 2003/01/13/big/img_1122 1643 | 2002/07/23/big/img_810 1644 | 2002/08/20/big/img_888 1645 | 2002/07/27/big/img_3 1646 | 2002/08/15/big/img_451 1647 | 2002/09/02/big/img_15787 1648 | 2002/07/31/big/img_281 1649 | 2002/08/05/big/img_3274 1650 | 2002/08/07/big/img_1254 1651 | 2002/07/31/big/img_27 1652 | 2002/08/01/big/img_1366 1653 | 2002/07/30/big/img_182 1654 | 2002/08/27/big/img_19690 1655 | 2002/07/29/big/img_68 1656 | 2002/08/23/big/img_754 1657 | 2002/07/30/big/img_540 1658 | 2002/08/27/big/img_20063 1659 | 2002/08/14/big/img_471 1660 | 2002/08/02/big/img_615 1661 | 2002/07/30/big/img_186 1662 | 2002/08/25/big/img_150 1663 | 2002/07/27/big/img_626 1664 | 2002/07/20/big/img_225 1665 | 2003/01/15/big/img_1252 1666 | 2002/07/19/big/img_367 1667 | 2003/01/15/big/img_582 1668 | 2002/08/09/big/img_572 1669 | 2002/08/08/big/img_428 1670 | 2003/01/15/big/img_639 1671 | 2002/08/28/big/img_19245 1672 | 2002/07/24/big/img_321 1673 | 2002/08/02/big/img_662 1674 | 2002/08/08/big/img_1033 1675 | 2003/01/17/big/img_867 1676 | 2002/07/22/big/img_652 1677 | 2003/01/14/big/img_224 1678 | 2002/08/18/big/img_49 1679 | 2002/07/26/big/img_46 1680 | 2002/08/31/big/img_18021 1681 | 2002/07/25/big/img_151 1682 | 2002/08/23/big/img_540 1683 | 2002/08/25/big/img_693 1684 | 2002/07/23/big/img_340 1685 | 2002/07/28/big/img_117 1686 | 2002/09/02/big/img_15768 1687 | 2002/08/26/big/img_562 1688 | 2002/07/24/big/img_480 1689 | 2003/01/15/big/img_341 1690 | 2002/08/10/big/img_783 1691 | 2002/08/20/big/img_132 1692 | 2003/01/14/big/img_370 1693 | 2002/07/20/big/img_720 1694 | 2002/08/03/big/img_144 1695 | 2002/08/20/big/img_538 1696 | 2002/08/01/big/img_1745 1697 | 2002/08/11/big/img_683 1698 | 2002/08/03/big/img_328 1699 | 2002/08/10/big/img_793 1700 | 2002/08/14/big/img_689 1701 | 2002/08/02/big/img_162 1702 | 2003/01/17/big/img_411 1703 | 2002/07/31/big/img_361 1704 | 2002/08/15/big/img_289 1705 | 2002/08/08/big/img_254 1706 | 2002/08/15/big/img_996 1707 | 2002/08/20/big/img_785 1708 | 2002/07/24/big/img_511 1709 | 2002/08/06/big/img_2614 1710 | 2002/08/29/big/img_18733 1711 | 2002/08/17/big/img_78 1712 | 2002/07/30/big/img_378 1713 | 2002/08/31/big/img_17947 1714 | 2002/08/26/big/img_88 1715 | 2002/07/30/big/img_558 1716 | 2002/08/02/big/img_67 1717 | 2003/01/14/big/img_325 1718 | 2002/07/29/big/img_1357 1719 | 2002/07/19/big/img_391 1720 | 2002/07/30/big/img_307 1721 | 2003/01/13/big/img_219 1722 | 2002/07/24/big/img_807 1723 | 2002/08/23/big/img_543 1724 | 2002/08/29/big/img_18620 1725 | 2002/07/22/big/img_769 1726 | 2002/08/26/big/img_503 1727 | 2002/07/30/big/img_78 1728 | 2002/08/14/big/img_1036 1729 | 2002/08/09/big/img_58 1730 | 2002/07/24/big/img_616 1731 | 2002/08/02/big/img_464 1732 | 2002/07/26/big/img_576 1733 | 2002/07/22/big/img_273 1734 | 2003/01/16/big/img_470 1735 | 2002/07/29/big/img_329 1736 | 2002/07/30/big/img_1086 1737 | 2002/07/31/big/img_353 1738 | 2002/09/02/big/img_15275 1739 | 2003/01/17/big/img_555 1740 | 2002/08/26/big/img_212 1741 | 2002/08/01/big/img_1692 1742 | 2003/01/15/big/img_600 1743 | 2002/07/29/big/img_825 1744 | 2002/08/08/big/img_68 1745 | 2002/08/10/big/img_719 1746 | 2002/07/31/big/img_636 1747 | 2002/07/29/big/img_325 1748 | 2002/07/21/big/img_515 1749 | 2002/07/22/big/img_705 1750 | 2003/01/13/big/img_818 1751 | 2002/08/09/big/img_486 1752 | 2002/08/22/big/img_141 1753 | 2002/07/22/big/img_303 1754 | 2002/08/09/big/img_393 1755 | 2002/07/29/big/img_963 1756 | 2002/08/02/big/img_1215 1757 | 2002/08/19/big/img_674 1758 | 2002/08/12/big/img_690 1759 | 2002/08/21/big/img_637 1760 | 2002/08/21/big/img_841 1761 | 2002/08/24/big/img_71 1762 | 2002/07/25/big/img_596 1763 | 2002/07/24/big/img_864 1764 | 2002/08/18/big/img_293 1765 | 2003/01/14/big/img_657 1766 | 2002/08/15/big/img_411 1767 | 2002/08/16/big/img_348 1768 | 2002/08/05/big/img_3157 1769 | 2002/07/20/big/img_663 1770 | 2003/01/13/big/img_654 1771 | 2003/01/16/big/img_433 1772 | 2002/08/30/big/img_18200 1773 | 2002/08/12/big/img_226 1774 | 2003/01/16/big/img_491 1775 | 2002/08/08/big/img_666 1776 | 2002/07/19/big/img_576 1777 | 2003/01/15/big/img_776 1778 | 2003/01/16/big/img_899 1779 | 2002/07/19/big/img_397 1780 | 2002/08/14/big/img_44 1781 | 2003/01/15/big/img_762 1782 | 2002/08/02/big/img_982 1783 | 2002/09/02/big/img_15234 1784 | 2002/08/17/big/img_556 1785 | 2002/08/21/big/img_410 1786 | 2002/08/21/big/img_386 1787 | 2002/07/19/big/img_690 1788 | 2002/08/05/big/img_3052 1789 | 2002/08/14/big/img_219 1790 | 2002/08/16/big/img_273 1791 | 2003/01/15/big/img_752 1792 | 2002/08/08/big/img_184 1793 | 2002/07/31/big/img_743 1794 | 2002/08/23/big/img_338 1795 | 2003/01/14/big/img_1055 1796 | 2002/08/05/big/img_3405 1797 | 2003/01/15/big/img_17 1798 | 2002/08/03/big/img_141 1799 | 2002/08/14/big/img_549 1800 | 2002/07/27/big/img_1034 1801 | 2002/07/31/big/img_932 1802 | 2002/08/30/big/img_18487 1803 | 2002/09/02/big/img_15814 1804 | 2002/08/01/big/img_2086 1805 | 2002/09/01/big/img_16535 1806 | 2002/07/22/big/img_500 1807 | 2003/01/13/big/img_400 1808 | 2002/08/25/big/img_607 1809 | 2002/08/30/big/img_18384 1810 | 2003/01/14/big/img_951 1811 | 2002/08/13/big/img_1150 1812 | 2002/08/08/big/img_1022 1813 | 2002/08/10/big/img_428 1814 | 2002/08/28/big/img_19242 1815 | 2002/08/05/big/img_3098 1816 | 2002/07/23/big/img_400 1817 | 2002/08/26/big/img_365 1818 | 2002/07/20/big/img_318 1819 | 2002/08/13/big/img_740 1820 | 2003/01/16/big/img_37 1821 | 2002/08/26/big/img_274 1822 | 2002/08/02/big/img_205 1823 | 2002/08/21/big/img_695 1824 | 2002/08/06/big/img_2289 1825 | 2002/08/20/big/img_794 1826 | 2002/08/18/big/img_438 1827 | 2002/08/07/big/img_1380 1828 | 2002/08/02/big/img_737 1829 | 2002/08/07/big/img_1651 1830 | 2002/08/15/big/img_1238 1831 | 2002/08/01/big/img_1681 1832 | 2002/08/06/big/img_3017 1833 | 2002/07/23/big/img_706 1834 | 2002/07/31/big/img_392 1835 | 2002/08/09/big/img_539 1836 | 2002/07/29/big/img_835 1837 | 2002/08/26/big/img_723 1838 | 2002/08/28/big/img_19235 1839 | 2003/01/16/big/img_353 1840 | 2002/08/10/big/img_150 1841 | 2002/08/29/big/img_19025 1842 | 2002/08/21/big/img_310 1843 | 2002/08/10/big/img_823 1844 | 2002/07/26/big/img_981 1845 | 2002/08/11/big/img_288 1846 | 2002/08/19/big/img_534 1847 | 2002/08/21/big/img_300 1848 | 2002/07/31/big/img_49 1849 | 2002/07/30/big/img_469 1850 | 2002/08/28/big/img_19197 1851 | 2002/08/25/big/img_205 1852 | 2002/08/10/big/img_390 1853 | 2002/08/23/big/img_291 1854 | 2002/08/26/big/img_230 1855 | 2002/08/18/big/img_76 1856 | 2002/07/23/big/img_409 1857 | 2002/08/14/big/img_1053 1858 | 2003/01/14/big/img_291 1859 | 2002/08/10/big/img_503 1860 | 2002/08/27/big/img_19928 1861 | 2002/08/03/big/img_563 1862 | 2002/08/17/big/img_250 1863 | 2002/08/06/big/img_2381 1864 | 2002/08/17/big/img_948 1865 | 2002/08/06/big/img_2710 1866 | 2002/07/22/big/img_696 1867 | 2002/07/31/big/img_670 1868 | 2002/08/12/big/img_594 1869 | 2002/07/29/big/img_624 1870 | 2003/01/17/big/img_934 1871 | 2002/08/03/big/img_584 1872 | 2002/08/22/big/img_1003 1873 | 2002/08/05/big/img_3396 1874 | 2003/01/13/big/img_570 1875 | 2002/08/02/big/img_219 1876 | 2002/09/02/big/img_15774 1877 | 2002/08/16/big/img_818 1878 | 2002/08/23/big/img_402 1879 | 2003/01/14/big/img_552 1880 | 2002/07/29/big/img_71 1881 | 2002/08/05/big/img_3592 1882 | 2002/08/16/big/img_80 1883 | 2002/07/27/big/img_672 1884 | 2003/01/13/big/img_470 1885 | 2003/01/16/big/img_702 1886 | 2002/09/01/big/img_16130 1887 | 2002/08/08/big/img_240 1888 | 2002/09/01/big/img_16338 1889 | 2002/07/26/big/img_312 1890 | 2003/01/14/big/img_538 1891 | 2002/07/20/big/img_695 1892 | 2002/08/30/big/img_18098 1893 | 2002/08/25/big/img_259 1894 | 2002/08/16/big/img_1042 1895 | 2002/08/09/big/img_837 1896 | 2002/08/31/big/img_17760 1897 | 2002/07/31/big/img_14 1898 | 2002/08/09/big/img_361 1899 | 2003/01/16/big/img_107 1900 | 2002/08/14/big/img_124 1901 | 2002/07/19/big/img_463 1902 | 2003/01/15/big/img_275 1903 | 2002/07/25/big/img_1151 1904 | 2002/07/29/big/img_1501 1905 | 2002/08/27/big/img_19889 1906 | 2002/08/29/big/img_18603 1907 | 2003/01/17/big/img_601 1908 | 2002/08/25/big/img_355 1909 | 2002/08/08/big/img_297 1910 | 2002/08/20/big/img_290 1911 | 2002/07/31/big/img_195 1912 | 2003/01/01/big/img_336 1913 | 2002/08/18/big/img_369 1914 | 2002/07/25/big/img_621 1915 | 2002/08/11/big/img_508 1916 | 2003/01/14/big/img_458 1917 | 2003/01/15/big/img_795 1918 | 2002/08/12/big/img_498 1919 | 2002/08/01/big/img_1734 1920 | 2002/08/02/big/img_246 1921 | 2002/08/16/big/img_565 1922 | 2002/08/11/big/img_475 1923 | 2002/08/22/big/img_408 1924 | 2002/07/28/big/img_78 1925 | 2002/07/21/big/img_81 1926 | 2003/01/14/big/img_697 1927 | 2002/08/14/big/img_661 1928 | 2002/08/15/big/img_507 1929 | 2002/08/19/big/img_55 1930 | 2002/07/22/big/img_152 1931 | 2003/01/14/big/img_470 1932 | 2002/08/03/big/img_379 1933 | 2002/08/22/big/img_506 1934 | 2003/01/16/big/img_966 1935 | 2002/08/18/big/img_698 1936 | 2002/08/24/big/img_528 1937 | 2002/08/23/big/img_10 1938 | 2002/08/01/big/img_1655 1939 | 2002/08/22/big/img_953 1940 | 2002/07/19/big/img_630 1941 | 2002/07/22/big/img_889 1942 | 2002/08/16/big/img_351 1943 | 2003/01/16/big/img_83 1944 | 2002/07/19/big/img_805 1945 | 2002/08/14/big/img_704 1946 | 2002/07/19/big/img_389 1947 | 2002/08/31/big/img_17765 1948 | 2002/07/29/big/img_606 1949 | 2003/01/17/big/img_939 1950 | 2002/09/02/big/img_15081 1951 | 2002/08/21/big/img_181 1952 | 2002/07/29/big/img_1321 1953 | 2002/07/21/big/img_497 1954 | 2002/07/20/big/img_539 1955 | 2002/08/24/big/img_119 1956 | 2002/08/01/big/img_1281 1957 | 2002/07/26/big/img_207 1958 | 2002/07/26/big/img_432 1959 | 2002/07/27/big/img_1006 1960 | 2002/08/05/big/img_3087 1961 | 2002/08/14/big/img_252 1962 | 2002/08/14/big/img_798 1963 | 2002/07/24/big/img_538 1964 | 2002/09/02/big/img_15507 1965 | 2002/08/08/big/img_901 1966 | 2003/01/14/big/img_557 1967 | 2002/08/07/big/img_1819 1968 | 2002/08/04/big/img_470 1969 | 2002/08/01/big/img_1504 1970 | 2002/08/16/big/img_1070 1971 | 2002/08/16/big/img_372 1972 | 2002/08/23/big/img_416 1973 | 2002/08/30/big/img_18208 1974 | 2002/08/01/big/img_2043 1975 | 2002/07/22/big/img_385 1976 | 2002/08/22/big/img_466 1977 | 2002/08/21/big/img_869 1978 | 2002/08/28/big/img_19429 1979 | 2002/08/02/big/img_770 1980 | 2002/07/23/big/img_433 1981 | 2003/01/14/big/img_13 1982 | 2002/07/27/big/img_953 1983 | 2002/09/02/big/img_15728 1984 | 2002/08/01/big/img_1361 1985 | 2002/08/29/big/img_18897 1986 | 2002/08/26/big/img_534 1987 | 2002/08/11/big/img_121 1988 | 2002/08/26/big/img_20130 1989 | 2002/07/31/big/img_363 1990 | 2002/08/13/big/img_978 1991 | 2002/07/25/big/img_835 1992 | 2002/08/02/big/img_906 1993 | 2003/01/14/big/img_548 1994 | 2002/07/30/big/img_80 1995 | 2002/07/26/big/img_982 1996 | 2003/01/16/big/img_99 1997 | 2002/08/19/big/img_362 1998 | 2002/08/24/big/img_376 1999 | 2002/08/07/big/img_1264 2000 | 2002/07/27/big/img_938 2001 | 2003/01/17/big/img_535 2002 | 2002/07/26/big/img_457 2003 | 2002/08/08/big/img_848 2004 | 2003/01/15/big/img_859 2005 | 2003/01/15/big/img_622 2006 | 2002/07/30/big/img_403 2007 | 2002/07/29/big/img_217 2008 | 2002/07/26/big/img_891 2009 | 2002/07/24/big/img_70 2010 | 2002/08/25/big/img_619 2011 | 2002/08/05/big/img_3375 2012 | 2002/08/01/big/img_2160 2013 | 2002/08/06/big/img_2227 2014 | 2003/01/14/big/img_117 2015 | 2002/08/14/big/img_227 2016 | 2002/08/13/big/img_565 2017 | 2002/08/19/big/img_625 2018 | 2002/08/03/big/img_812 2019 | 2002/07/24/big/img_41 2020 | 2002/08/16/big/img_235 2021 | 2002/07/29/big/img_759 2022 | 2002/07/21/big/img_433 2023 | 2002/07/29/big/img_190 2024 | 2003/01/16/big/img_435 2025 | 2003/01/13/big/img_708 2026 | 2002/07/30/big/img_57 2027 | 2002/08/22/big/img_162 2028 | 2003/01/01/big/img_558 2029 | 2003/01/15/big/img_604 2030 | 2002/08/16/big/img_935 2031 | 2002/08/20/big/img_394 2032 | 2002/07/28/big/img_465 2033 | 2002/09/02/big/img_15534 2034 | 2002/08/16/big/img_87 2035 | 2002/07/22/big/img_469 2036 | 2002/08/12/big/img_245 2037 | 2003/01/13/big/img_236 2038 | 2002/08/06/big/img_2736 2039 | 2002/08/03/big/img_348 2040 | 2003/01/14/big/img_218 2041 | 2002/07/26/big/img_232 2042 | 2003/01/15/big/img_244 2043 | 2002/07/25/big/img_1121 2044 | 2002/08/01/big/img_1484 2045 | 2002/07/26/big/img_541 2046 | 2002/08/07/big/img_1244 2047 | 2002/07/31/big/img_3 2048 | 2002/08/30/big/img_18437 2049 | 2002/08/29/big/img_19094 2050 | 2002/08/01/big/img_1355 2051 | 2002/08/19/big/img_338 2052 | 2002/07/19/big/img_255 2053 | 2002/07/21/big/img_76 2054 | 2002/08/25/big/img_199 2055 | 2002/08/12/big/img_740 2056 | 2002/07/30/big/img_852 2057 | 2002/08/15/big/img_599 2058 | 2002/08/23/big/img_254 2059 | 2002/08/19/big/img_125 2060 | 2002/07/24/big/img_2 2061 | 2002/08/04/big/img_145 2062 | 2002/08/05/big/img_3137 2063 | 2002/07/28/big/img_463 2064 | 2003/01/14/big/img_801 2065 | 2002/07/23/big/img_366 2066 | 2002/08/26/big/img_600 2067 | 2002/08/26/big/img_649 2068 | 2002/09/02/big/img_15849 2069 | 2002/07/26/big/img_248 2070 | 2003/01/13/big/img_200 2071 | 2002/08/07/big/img_1794 2072 | 2002/08/31/big/img_17270 2073 | 2002/08/23/big/img_608 2074 | 2003/01/13/big/img_837 2075 | 2002/08/23/big/img_581 2076 | 2002/08/20/big/img_754 2077 | 2002/08/18/big/img_183 2078 | 2002/08/20/big/img_328 2079 | 2002/07/22/big/img_494 2080 | 2002/07/29/big/img_399 2081 | 2002/08/28/big/img_19284 2082 | 2002/08/08/big/img_566 2083 | 2002/07/25/big/img_376 2084 | 2002/07/23/big/img_138 2085 | 2002/07/25/big/img_435 2086 | 2002/08/17/big/img_685 2087 | 2002/07/19/big/img_90 2088 | 2002/07/20/big/img_716 2089 | 2002/08/31/big/img_17458 2090 | 2002/08/26/big/img_461 2091 | 2002/07/25/big/img_355 2092 | 2002/08/06/big/img_2152 2093 | 2002/07/27/big/img_932 2094 | 2002/07/23/big/img_232 2095 | 2002/08/08/big/img_1020 2096 | 2002/07/31/big/img_366 2097 | 2002/08/06/big/img_2667 2098 | 2002/08/21/big/img_465 2099 | 2002/08/15/big/img_305 2100 | 2002/08/02/big/img_247 2101 | 2002/07/28/big/img_46 2102 | 2002/08/27/big/img_19922 2103 | 2002/08/23/big/img_643 2104 | 2003/01/13/big/img_624 2105 | 2002/08/23/big/img_625 2106 | 2002/08/05/big/img_3787 2107 | 2003/01/13/big/img_627 2108 | 2002/09/01/big/img_16381 2109 | 2002/08/05/big/img_3668 2110 | 2002/07/21/big/img_535 2111 | 2002/08/27/big/img_19680 2112 | 2002/07/22/big/img_413 2113 | 2002/07/29/big/img_481 2114 | 2003/01/15/big/img_496 2115 | 2002/07/23/big/img_701 2116 | 2002/08/29/big/img_18670 2117 | 2002/07/28/big/img_319 2118 | 2003/01/14/big/img_517 2119 | 2002/07/26/big/img_256 2120 | 2003/01/16/big/img_593 2121 | 2002/07/30/big/img_956 2122 | 2002/07/30/big/img_667 2123 | 2002/07/25/big/img_100 2124 | 2002/08/11/big/img_570 2125 | 2002/07/26/big/img_745 2126 | 2002/08/04/big/img_834 2127 | 2002/08/25/big/img_521 2128 | 2002/08/01/big/img_2148 2129 | 2002/09/02/big/img_15183 2130 | 2002/08/22/big/img_514 2131 | 2002/08/23/big/img_477 2132 | 2002/07/23/big/img_336 2133 | 2002/07/26/big/img_481 2134 | 2002/08/20/big/img_409 2135 | 2002/07/23/big/img_918 2136 | 2002/08/09/big/img_474 2137 | 2002/08/02/big/img_929 2138 | 2002/08/31/big/img_17932 2139 | 2002/08/19/big/img_161 2140 | 2002/08/09/big/img_667 2141 | 2002/07/31/big/img_805 2142 | 2002/09/02/big/img_15678 2143 | 2002/08/31/big/img_17509 2144 | 2002/08/29/big/img_18998 2145 | 2002/07/23/big/img_301 2146 | 2002/08/07/big/img_1612 2147 | 2002/08/06/big/img_2472 2148 | 2002/07/23/big/img_466 2149 | 2002/08/27/big/img_19634 2150 | 2003/01/16/big/img_16 2151 | 2002/08/14/big/img_193 2152 | 2002/08/21/big/img_340 2153 | 2002/08/27/big/img_19799 2154 | 2002/08/01/big/img_1345 2155 | 2002/08/07/big/img_1448 2156 | 2002/08/11/big/img_324 2157 | 2003/01/16/big/img_754 2158 | 2002/08/13/big/img_418 2159 | 2003/01/16/big/img_544 2160 | 2002/08/19/big/img_135 2161 | 2002/08/10/big/img_455 2162 | 2002/08/10/big/img_693 2163 | 2002/08/31/big/img_17967 2164 | 2002/08/28/big/img_19229 2165 | 2002/08/04/big/img_811 2166 | 2002/09/01/big/img_16225 2167 | 2003/01/16/big/img_428 2168 | 2002/09/02/big/img_15295 2169 | 2002/07/26/big/img_108 2170 | 2002/07/21/big/img_477 2171 | 2002/08/07/big/img_1354 2172 | 2002/08/23/big/img_246 2173 | 2002/08/16/big/img_652 2174 | 2002/07/27/big/img_553 2175 | 2002/07/31/big/img_346 2176 | 2002/08/04/big/img_537 2177 | 2002/08/08/big/img_498 2178 | 2002/08/29/big/img_18956 2179 | 2003/01/13/big/img_922 2180 | 2002/08/31/big/img_17425 2181 | 2002/07/26/big/img_438 2182 | 2002/08/19/big/img_185 2183 | 2003/01/16/big/img_33 2184 | 2002/08/10/big/img_252 2185 | 2002/07/29/big/img_598 2186 | 2002/08/27/big/img_19820 2187 | 2002/08/06/big/img_2664 2188 | 2002/08/20/big/img_705 2189 | 2003/01/14/big/img_816 2190 | 2002/08/03/big/img_552 2191 | 2002/07/25/big/img_561 2192 | 2002/07/25/big/img_934 2193 | 2002/08/01/big/img_1893 2194 | 2003/01/14/big/img_746 2195 | 2003/01/16/big/img_519 2196 | 2002/08/03/big/img_681 2197 | 2002/07/24/big/img_808 2198 | 2002/08/14/big/img_803 2199 | 2002/08/25/big/img_155 2200 | 2002/07/30/big/img_1107 2201 | 2002/08/29/big/img_18882 2202 | 2003/01/15/big/img_598 2203 | 2002/08/19/big/img_122 2204 | 2002/07/30/big/img_428 2205 | 2002/07/24/big/img_684 2206 | 2002/08/22/big/img_192 2207 | 2002/08/22/big/img_543 2208 | 2002/08/07/big/img_1318 2209 | 2002/08/18/big/img_25 2210 | 2002/07/26/big/img_583 2211 | 2002/07/20/big/img_464 2212 | 2002/08/19/big/img_664 2213 | 2002/08/24/big/img_861 2214 | 2002/09/01/big/img_16136 2215 | 2002/08/22/big/img_400 2216 | 2002/08/12/big/img_445 2217 | 2003/01/14/big/img_174 2218 | 2002/08/27/big/img_19677 2219 | 2002/08/31/big/img_17214 2220 | 2002/08/30/big/img_18175 2221 | 2003/01/17/big/img_402 2222 | 2002/08/06/big/img_2396 2223 | 2002/08/18/big/img_448 2224 | 2002/08/21/big/img_165 2225 | 2002/08/31/big/img_17609 2226 | 2003/01/01/big/img_151 2227 | 2002/08/26/big/img_372 2228 | 2002/09/02/big/img_15994 2229 | 2002/07/26/big/img_660 2230 | 2002/09/02/big/img_15197 2231 | 2002/07/29/big/img_258 2232 | 2002/08/30/big/img_18525 2233 | 2003/01/13/big/img_368 2234 | 2002/07/29/big/img_1538 2235 | 2002/07/21/big/img_787 2236 | 2002/08/18/big/img_152 2237 | 2002/08/06/big/img_2379 2238 | 2003/01/17/big/img_864 2239 | 2002/08/27/big/img_19998 2240 | 2002/08/01/big/img_1634 2241 | 2002/07/25/big/img_414 2242 | 2002/08/22/big/img_627 2243 | 2002/08/07/big/img_1669 2244 | 2002/08/16/big/img_1052 2245 | 2002/08/31/big/img_17796 2246 | 2002/08/18/big/img_199 2247 | 2002/09/02/big/img_15147 2248 | 2002/08/09/big/img_460 2249 | 2002/08/14/big/img_581 2250 | 2002/08/30/big/img_18286 2251 | 2002/07/26/big/img_337 2252 | 2002/08/18/big/img_589 2253 | 2003/01/14/big/img_866 2254 | 2002/07/20/big/img_624 2255 | 2002/08/01/big/img_1801 2256 | 2002/07/24/big/img_683 2257 | 2002/08/09/big/img_725 2258 | 2003/01/14/big/img_34 2259 | 2002/07/30/big/img_144 2260 | 2002/07/30/big/img_706 2261 | 2002/08/08/big/img_394 2262 | 2002/08/19/big/img_619 2263 | 2002/08/06/big/img_2703 2264 | 2002/08/29/big/img_19034 2265 | 2002/07/24/big/img_67 2266 | 2002/08/27/big/img_19841 2267 | 2002/08/19/big/img_427 2268 | 2003/01/14/big/img_333 2269 | 2002/09/01/big/img_16406 2270 | 2002/07/19/big/img_882 2271 | 2002/08/17/big/img_238 2272 | 2003/01/14/big/img_739 2273 | 2002/07/22/big/img_151 2274 | 2002/08/21/big/img_743 2275 | 2002/07/25/big/img_1048 2276 | 2002/07/30/big/img_395 2277 | 2003/01/13/big/img_584 2278 | 2002/08/13/big/img_742 2279 | 2002/08/13/big/img_1168 2280 | 2003/01/14/big/img_147 2281 | 2002/07/26/big/img_803 2282 | 2002/08/05/big/img_3298 2283 | 2002/08/07/big/img_1451 2284 | 2002/08/16/big/img_424 2285 | 2002/07/29/big/img_1069 2286 | 2002/09/01/big/img_16735 2287 | 2002/07/21/big/img_637 2288 | 2003/01/14/big/img_585 2289 | 2002/08/02/big/img_358 2290 | 2003/01/13/big/img_358 2291 | 2002/08/14/big/img_198 2292 | 2002/08/17/big/img_935 2293 | 2002/08/04/big/img_42 2294 | 2002/08/30/big/img_18245 2295 | 2002/07/25/big/img_158 2296 | 2002/08/22/big/img_744 2297 | 2002/08/06/big/img_2291 2298 | 2002/08/05/big/img_3044 2299 | 2002/07/30/big/img_272 2300 | 2002/08/23/big/img_641 2301 | 2002/07/24/big/img_797 2302 | 2002/07/30/big/img_392 2303 | 2003/01/14/big/img_447 2304 | 2002/07/31/big/img_898 2305 | 2002/08/06/big/img_2812 2306 | 2002/08/13/big/img_564 2307 | 2002/07/22/big/img_43 2308 | 2002/07/26/big/img_634 2309 | 2002/07/19/big/img_843 2310 | 2002/08/26/big/img_58 2311 | 2002/07/21/big/img_375 2312 | 2002/08/25/big/img_729 2313 | 2002/07/19/big/img_561 2314 | 2003/01/15/big/img_884 2315 | 2002/07/25/big/img_891 2316 | 2002/08/09/big/img_558 2317 | 2002/08/26/big/img_587 2318 | 2002/08/13/big/img_1146 2319 | 2002/09/02/big/img_15153 2320 | 2002/07/26/big/img_316 2321 | 2002/08/01/big/img_1940 2322 | 2002/08/26/big/img_90 2323 | 2003/01/13/big/img_347 2324 | 2002/07/25/big/img_520 2325 | 2002/08/29/big/img_18718 2326 | 2002/08/28/big/img_19219 2327 | 2002/08/13/big/img_375 2328 | 2002/07/20/big/img_719 2329 | 2002/08/31/big/img_17431 2330 | 2002/07/28/big/img_192 2331 | 2002/08/26/big/img_259 2332 | 2002/08/18/big/img_484 2333 | 2002/07/29/big/img_580 2334 | 2002/07/26/big/img_84 2335 | 2002/08/02/big/img_302 2336 | 2002/08/31/big/img_17007 2337 | 2003/01/15/big/img_543 2338 | 2002/09/01/big/img_16488 2339 | 2002/08/22/big/img_798 2340 | 2002/07/30/big/img_383 2341 | 2002/08/04/big/img_668 2342 | 2002/08/13/big/img_156 2343 | 2002/08/07/big/img_1353 2344 | 2002/07/25/big/img_281 2345 | 2003/01/14/big/img_587 2346 | 2003/01/15/big/img_524 2347 | 2002/08/19/big/img_726 2348 | 2002/08/21/big/img_709 2349 | 2002/08/26/big/img_465 2350 | 2002/07/31/big/img_658 2351 | 2002/08/28/big/img_19148 2352 | 2002/07/23/big/img_423 2353 | 2002/08/16/big/img_758 2354 | 2002/08/22/big/img_523 2355 | 2002/08/16/big/img_591 2356 | 2002/08/23/big/img_845 2357 | 2002/07/26/big/img_678 2358 | 2002/08/09/big/img_806 2359 | 2002/08/06/big/img_2369 2360 | 2002/07/29/big/img_457 2361 | 2002/07/19/big/img_278 2362 | 2002/08/30/big/img_18107 2363 | 2002/07/26/big/img_444 2364 | 2002/08/20/big/img_278 2365 | 2002/08/26/big/img_92 2366 | 2002/08/26/big/img_257 2367 | 2002/07/25/big/img_266 2368 | 2002/08/05/big/img_3829 2369 | 2002/07/26/big/img_757 2370 | 2002/07/29/big/img_1536 2371 | 2002/08/09/big/img_472 2372 | 2003/01/17/big/img_480 2373 | 2002/08/28/big/img_19355 2374 | 2002/07/26/big/img_97 2375 | 2002/08/06/big/img_2503 2376 | 2002/07/19/big/img_254 2377 | 2002/08/01/big/img_1470 2378 | 2002/08/21/big/img_42 2379 | 2002/08/20/big/img_217 2380 | 2002/08/06/big/img_2459 2381 | 2002/07/19/big/img_552 2382 | 2002/08/13/big/img_717 2383 | 2002/08/12/big/img_586 2384 | 2002/08/20/big/img_411 2385 | 2003/01/13/big/img_768 2386 | 2002/08/07/big/img_1747 2387 | 2002/08/15/big/img_385 2388 | 2002/08/01/big/img_1648 2389 | 2002/08/15/big/img_311 2390 | 2002/08/21/big/img_95 2391 | 2002/08/09/big/img_108 2392 | 2002/08/21/big/img_398 2393 | 2002/08/17/big/img_340 2394 | 2002/08/14/big/img_474 2395 | 2002/08/13/big/img_294 2396 | 2002/08/24/big/img_840 2397 | 2002/08/09/big/img_808 2398 | 2002/08/23/big/img_491 2399 | 2002/07/28/big/img_33 2400 | 2003/01/13/big/img_664 2401 | 2002/08/02/big/img_261 2402 | 2002/08/09/big/img_591 2403 | 2002/07/26/big/img_309 2404 | 2003/01/14/big/img_372 2405 | 2002/08/19/big/img_581 2406 | 2002/08/19/big/img_168 2407 | 2002/08/26/big/img_422 2408 | 2002/07/24/big/img_106 2409 | 2002/08/01/big/img_1936 2410 | 2002/08/05/big/img_3764 2411 | 2002/08/21/big/img_266 2412 | 2002/08/31/big/img_17968 2413 | 2002/08/01/big/img_1941 2414 | 2002/08/15/big/img_550 2415 | 2002/08/14/big/img_13 2416 | 2002/07/30/big/img_171 2417 | 2003/01/13/big/img_490 2418 | 2002/07/25/big/img_427 2419 | 2002/07/19/big/img_770 2420 | 2002/08/12/big/img_759 2421 | 2003/01/15/big/img_1360 2422 | 2002/08/05/big/img_3692 2423 | 2003/01/16/big/img_30 2424 | 2002/07/25/big/img_1026 2425 | 2002/07/22/big/img_288 2426 | 2002/08/29/big/img_18801 2427 | 2002/07/24/big/img_793 2428 | 2002/08/13/big/img_178 2429 | 2002/08/06/big/img_2322 2430 | 2003/01/14/big/img_560 2431 | 2002/08/18/big/img_408 2432 | 2003/01/16/big/img_915 2433 | 2003/01/16/big/img_679 2434 | 2002/08/07/big/img_1552 2435 | 2002/08/29/big/img_19050 2436 | 2002/08/01/big/img_2172 2437 | 2002/07/31/big/img_30 2438 | 2002/07/30/big/img_1019 2439 | 2002/07/30/big/img_587 2440 | 2003/01/13/big/img_773 2441 | 2002/07/30/big/img_410 2442 | 2002/07/28/big/img_65 2443 | 2002/08/05/big/img_3138 2444 | 2002/07/23/big/img_541 2445 | 2002/08/22/big/img_963 2446 | 2002/07/27/big/img_657 2447 | 2002/07/30/big/img_1051 2448 | 2003/01/16/big/img_150 2449 | 2002/07/31/big/img_519 2450 | 2002/08/01/big/img_1961 2451 | 2002/08/05/big/img_3752 2452 | 2002/07/23/big/img_631 2453 | 2003/01/14/big/img_237 2454 | 2002/07/28/big/img_21 2455 | 2002/07/22/big/img_813 2456 | 2002/08/05/big/img_3563 2457 | 2003/01/17/big/img_620 2458 | 2002/07/19/big/img_523 2459 | 2002/07/30/big/img_904 2460 | 2002/08/29/big/img_18642 2461 | 2002/08/11/big/img_492 2462 | 2002/08/01/big/img_2130 2463 | 2002/07/25/big/img_618 2464 | 2002/08/17/big/img_305 2465 | 2003/01/16/big/img_520 2466 | 2002/07/26/big/img_495 2467 | 2002/08/17/big/img_164 2468 | 2002/08/03/big/img_440 2469 | 2002/07/24/big/img_441 2470 | 2002/08/06/big/img_2146 2471 | 2002/08/11/big/img_558 2472 | 2002/08/02/big/img_545 2473 | 2002/08/31/big/img_18090 2474 | 2003/01/01/big/img_136 2475 | 2002/07/25/big/img_1099 2476 | 2003/01/13/big/img_728 2477 | 2003/01/16/big/img_197 2478 | 2002/07/26/big/img_651 2479 | 2002/08/11/big/img_676 2480 | 2003/01/15/big/img_10 2481 | 2002/08/21/big/img_250 2482 | 2002/08/14/big/img_325 2483 | 2002/08/04/big/img_390 2484 | 2002/07/24/big/img_554 2485 | 2003/01/16/big/img_333 2486 | 2002/07/31/big/img_922 2487 | 2002/09/02/big/img_15586 2488 | 2003/01/16/big/img_184 2489 | 2002/07/22/big/img_766 2490 | 2002/07/21/big/img_608 2491 | 2002/08/07/big/img_1578 2492 | 2002/08/17/big/img_961 2493 | 2002/07/27/big/img_324 2494 | 2002/08/05/big/img_3765 2495 | 2002/08/23/big/img_462 2496 | 2003/01/16/big/img_382 2497 | 2002/08/27/big/img_19838 2498 | 2002/08/01/big/img_1505 2499 | 2002/08/21/big/img_662 2500 | 2002/08/14/big/img_605 2501 | 2002/08/19/big/img_816 2502 | 2002/07/29/big/img_136 2503 | 2002/08/20/big/img_719 2504 | 2002/08/06/big/img_2826 2505 | 2002/08/10/big/img_630 2506 | 2003/01/17/big/img_973 2507 | 2002/08/14/big/img_116 2508 | 2002/08/02/big/img_666 2509 | 2002/08/21/big/img_710 2510 | 2002/08/05/big/img_55 2511 | 2002/07/31/big/img_229 2512 | 2002/08/01/big/img_1549 2513 | 2002/07/23/big/img_432 2514 | 2002/07/21/big/img_430 2515 | 2002/08/21/big/img_549 2516 | 2002/08/08/big/img_985 2517 | 2002/07/20/big/img_610 2518 | 2002/07/23/big/img_978 2519 | 2002/08/23/big/img_219 2520 | 2002/07/25/big/img_175 2521 | 2003/01/15/big/img_230 2522 | 2002/08/23/big/img_385 2523 | 2002/07/31/big/img_879 2524 | 2002/08/12/big/img_495 2525 | 2002/08/22/big/img_499 2526 | 2002/08/30/big/img_18322 2527 | 2002/08/15/big/img_795 2528 | 2002/08/13/big/img_835 2529 | 2003/01/17/big/img_930 2530 | 2002/07/30/big/img_873 2531 | 2002/08/11/big/img_257 2532 | 2002/07/31/big/img_593 2533 | 2002/08/21/big/img_916 2534 | 2003/01/13/big/img_814 2535 | 2002/07/25/big/img_722 2536 | 2002/08/16/big/img_379 2537 | 2002/07/31/big/img_497 2538 | 2002/07/22/big/img_602 2539 | 2002/08/21/big/img_642 2540 | 2002/08/21/big/img_614 2541 | 2002/08/23/big/img_482 2542 | 2002/07/29/big/img_603 2543 | 2002/08/13/big/img_705 2544 | 2002/07/23/big/img_833 2545 | 2003/01/14/big/img_511 2546 | 2002/07/24/big/img_376 2547 | 2002/08/17/big/img_1030 2548 | 2002/08/05/big/img_3576 2549 | 2002/08/16/big/img_540 2550 | 2002/07/22/big/img_630 2551 | 2002/08/10/big/img_180 2552 | 2002/08/14/big/img_905 2553 | 2002/08/29/big/img_18777 2554 | 2002/08/22/big/img_693 2555 | 2003/01/16/big/img_933 2556 | 2002/08/20/big/img_555 2557 | 2002/08/15/big/img_549 2558 | 2003/01/14/big/img_830 2559 | 2003/01/16/big/img_64 2560 | 2002/08/27/big/img_19670 2561 | 2002/08/22/big/img_729 2562 | 2002/07/27/big/img_981 2563 | 2002/08/09/big/img_458 2564 | 2003/01/17/big/img_884 2565 | 2002/07/25/big/img_639 2566 | 2002/08/31/big/img_18008 2567 | 2002/08/22/big/img_249 2568 | 2002/08/17/big/img_971 2569 | 2002/08/04/big/img_308 2570 | 2002/07/28/big/img_362 2571 | 2002/08/12/big/img_142 2572 | 2002/08/26/big/img_61 2573 | 2002/08/14/big/img_422 2574 | 2002/07/19/big/img_607 2575 | 2003/01/15/big/img_717 2576 | 2002/08/01/big/img_1475 2577 | 2002/08/29/big/img_19061 2578 | 2003/01/01/big/img_346 2579 | 2002/07/20/big/img_315 2580 | 2003/01/15/big/img_756 2581 | 2002/08/15/big/img_879 2582 | 2002/08/08/big/img_615 2583 | 2003/01/13/big/img_431 2584 | 2002/08/05/big/img_3233 2585 | 2002/08/24/big/img_526 2586 | 2003/01/13/big/img_717 2587 | 2002/09/01/big/img_16408 2588 | 2002/07/22/big/img_217 2589 | 2002/07/31/big/img_960 2590 | 2002/08/21/big/img_610 2591 | 2002/08/05/big/img_3753 2592 | 2002/08/03/big/img_151 2593 | 2002/08/21/big/img_267 2594 | 2002/08/01/big/img_2175 2595 | 2002/08/04/big/img_556 2596 | 2002/08/21/big/img_527 2597 | 2002/09/02/big/img_15800 2598 | 2002/07/27/big/img_156 2599 | 2002/07/20/big/img_590 2600 | 2002/08/15/big/img_700 2601 | 2002/08/08/big/img_444 2602 | 2002/07/25/big/img_94 2603 | 2002/07/24/big/img_778 2604 | 2002/08/14/big/img_694 2605 | 2002/07/20/big/img_666 2606 | 2002/08/02/big/img_200 2607 | 2002/08/02/big/img_578 2608 | 2003/01/17/big/img_332 2609 | 2002/09/01/big/img_16352 2610 | 2002/08/27/big/img_19668 2611 | 2002/07/23/big/img_823 2612 | 2002/08/13/big/img_431 2613 | 2003/01/16/big/img_463 2614 | 2002/08/27/big/img_19711 2615 | 2002/08/23/big/img_154 2616 | 2002/07/31/big/img_360 2617 | 2002/08/23/big/img_555 2618 | 2002/08/10/big/img_561 2619 | 2003/01/14/big/img_550 2620 | 2002/08/07/big/img_1370 2621 | 2002/07/30/big/img_1184 2622 | 2002/08/01/big/img_1445 2623 | 2002/08/23/big/img_22 2624 | 2002/07/30/big/img_606 2625 | 2003/01/17/big/img_271 2626 | 2002/08/31/big/img_17316 2627 | 2002/08/16/big/img_973 2628 | 2002/07/26/big/img_77 2629 | 2002/07/20/big/img_788 2630 | 2002/08/06/big/img_2426 2631 | 2002/08/07/big/img_1498 2632 | 2002/08/16/big/img_358 2633 | 2002/08/06/big/img_2851 2634 | 2002/08/12/big/img_359 2635 | 2002/08/01/big/img_1521 2636 | 2002/08/02/big/img_709 2637 | 2002/08/20/big/img_935 2638 | 2002/08/12/big/img_188 2639 | 2002/08/24/big/img_411 2640 | 2002/08/22/big/img_680 2641 | 2002/08/06/big/img_2480 2642 | 2002/07/20/big/img_627 2643 | 2002/07/30/big/img_214 2644 | 2002/07/25/big/img_354 2645 | 2002/08/02/big/img_636 2646 | 2003/01/15/big/img_661 2647 | 2002/08/07/big/img_1327 2648 | 2002/08/01/big/img_2108 2649 | 2002/08/31/big/img_17919 2650 | 2002/08/29/big/img_18768 2651 | 2002/08/05/big/img_3840 2652 | 2002/07/26/big/img_242 2653 | 2003/01/14/big/img_451 2654 | 2002/08/20/big/img_923 2655 | 2002/08/27/big/img_19908 2656 | 2002/08/16/big/img_282 2657 | 2002/08/19/big/img_440 2658 | 2003/01/01/big/img_230 2659 | 2002/08/08/big/img_212 2660 | 2002/07/20/big/img_443 2661 | 2002/08/25/big/img_635 2662 | 2003/01/13/big/img_1169 2663 | 2002/07/26/big/img_998 2664 | 2002/08/15/big/img_995 2665 | 2002/08/06/big/img_3002 2666 | 2002/07/29/big/img_460 2667 | 2003/01/14/big/img_925 2668 | 2002/07/23/big/img_539 2669 | 2002/08/16/big/img_694 2670 | 2003/01/13/big/img_459 2671 | 2002/07/23/big/img_249 2672 | 2002/08/20/big/img_539 2673 | 2002/08/04/big/img_186 2674 | 2002/08/26/big/img_264 2675 | 2002/07/22/big/img_704 2676 | 2002/08/25/big/img_277 2677 | 2002/08/22/big/img_988 2678 | 2002/07/29/big/img_504 2679 | 2002/08/05/big/img_3600 2680 | 2002/08/30/big/img_18380 2681 | 2003/01/14/big/img_937 2682 | 2002/08/21/big/img_254 2683 | 2002/08/10/big/img_130 2684 | 2002/08/20/big/img_339 2685 | 2003/01/14/big/img_428 2686 | 2002/08/20/big/img_889 2687 | 2002/08/31/big/img_17637 2688 | 2002/07/26/big/img_644 2689 | 2002/09/01/big/img_16776 2690 | 2002/08/06/big/img_2239 2691 | 2002/08/06/big/img_2646 2692 | 2003/01/13/big/img_491 2693 | 2002/08/10/big/img_579 2694 | 2002/08/21/big/img_713 2695 | 2002/08/22/big/img_482 2696 | 2002/07/22/big/img_167 2697 | 2002/07/24/big/img_539 2698 | 2002/08/14/big/img_721 2699 | 2002/07/25/big/img_389 2700 | 2002/09/01/big/img_16591 2701 | 2002/08/13/big/img_543 2702 | 2003/01/14/big/img_432 2703 | 2002/08/09/big/img_287 2704 | 2002/07/26/big/img_126 2705 | 2002/08/23/big/img_412 2706 | 2002/08/15/big/img_1034 2707 | 2002/08/28/big/img_19485 2708 | 2002/07/31/big/img_236 2709 | 2002/07/30/big/img_523 2710 | 2002/07/19/big/img_141 2711 | 2003/01/17/big/img_957 2712 | 2002/08/04/big/img_81 2713 | 2002/07/25/big/img_206 2714 | 2002/08/15/big/img_716 2715 | 2002/08/13/big/img_403 2716 | 2002/08/15/big/img_685 2717 | 2002/07/26/big/img_884 2718 | 2002/07/19/big/img_499 2719 | 2002/07/23/big/img_772 2720 | 2002/07/27/big/img_752 2721 | 2003/01/14/big/img_493 2722 | 2002/08/25/big/img_664 2723 | 2002/07/31/big/img_334 2724 | 2002/08/26/big/img_678 2725 | 2002/09/01/big/img_16541 2726 | 2003/01/14/big/img_347 2727 | 2002/07/23/big/img_187 2728 | 2002/07/30/big/img_1163 2729 | 2002/08/05/big/img_35 2730 | 2002/08/22/big/img_944 2731 | 2002/08/07/big/img_1239 2732 | 2002/07/29/big/img_1215 2733 | 2002/08/03/big/img_312 2734 | 2002/08/05/big/img_3523 2735 | 2002/07/29/big/img_218 2736 | 2002/08/13/big/img_672 2737 | 2002/08/16/big/img_205 2738 | 2002/08/17/big/img_594 2739 | 2002/07/29/big/img_1411 2740 | 2002/07/30/big/img_942 2741 | 2003/01/16/big/img_312 2742 | 2002/08/08/big/img_312 2743 | 2002/07/25/big/img_15 2744 | 2002/08/09/big/img_839 2745 | 2002/08/01/big/img_2069 2746 | 2002/08/31/big/img_17512 2747 | 2002/08/01/big/img_3 2748 | 2002/07/31/big/img_320 2749 | 2003/01/15/big/img_1265 2750 | 2002/08/14/big/img_563 2751 | 2002/07/31/big/img_167 2752 | 2002/08/20/big/img_374 2753 | 2002/08/13/big/img_406 2754 | 2002/08/08/big/img_625 2755 | 2002/08/02/big/img_314 2756 | 2002/08/27/big/img_19964 2757 | 2002/09/01/big/img_16670 2758 | 2002/07/31/big/img_599 2759 | 2002/08/29/big/img_18906 2760 | 2002/07/24/big/img_373 2761 | 2002/07/26/big/img_513 2762 | 2002/09/02/big/img_15497 2763 | 2002/08/19/big/img_117 2764 | 2003/01/01/big/img_158 2765 | 2002/08/24/big/img_178 2766 | 2003/01/13/big/img_935 2767 | 2002/08/13/big/img_609 2768 | 2002/08/30/big/img_18341 2769 | 2002/08/25/big/img_674 2770 | 2003/01/13/big/img_209 2771 | 2002/08/13/big/img_258 2772 | 2002/08/05/big/img_3543 2773 | 2002/08/07/big/img_1970 2774 | 2002/08/06/big/img_3004 2775 | 2003/01/17/big/img_487 2776 | 2002/08/24/big/img_873 2777 | 2002/08/29/big/img_18730 2778 | 2002/08/09/big/img_375 2779 | 2003/01/16/big/img_751 2780 | 2002/08/02/big/img_603 2781 | 2002/08/19/big/img_325 2782 | 2002/09/01/big/img_16420 2783 | 2002/08/05/big/img_3633 2784 | 2002/08/21/big/img_516 2785 | 2002/07/19/big/img_501 2786 | 2002/07/26/big/img_688 2787 | 2002/07/24/big/img_256 2788 | 2002/07/25/big/img_438 2789 | 2002/07/31/big/img_1017 2790 | 2002/08/22/big/img_512 2791 | 2002/07/21/big/img_543 2792 | 2002/08/08/big/img_223 2793 | 2002/08/19/big/img_189 2794 | 2002/08/12/big/img_630 2795 | 2002/07/30/big/img_958 2796 | 2002/07/28/big/img_208 2797 | 2002/08/31/big/img_17691 2798 | 2002/07/22/big/img_542 2799 | 2002/07/19/big/img_741 2800 | 2002/07/19/big/img_158 2801 | 2002/08/15/big/img_399 2802 | 2002/08/01/big/img_2159 2803 | 2002/08/14/big/img_455 2804 | 2002/08/17/big/img_1011 2805 | 2002/08/26/big/img_744 2806 | 2002/08/12/big/img_624 2807 | 2003/01/17/big/img_821 2808 | 2002/08/16/big/img_980 2809 | 2002/07/28/big/img_281 2810 | 2002/07/25/big/img_171 2811 | 2002/08/03/big/img_116 2812 | 2002/07/22/big/img_467 2813 | 2002/07/31/big/img_750 2814 | 2002/07/26/big/img_435 2815 | 2002/07/19/big/img_822 2816 | 2002/08/13/big/img_626 2817 | 2002/08/11/big/img_344 2818 | 2002/08/02/big/img_473 2819 | 2002/09/01/big/img_16817 2820 | 2002/08/01/big/img_1275 2821 | 2002/08/28/big/img_19270 2822 | 2002/07/23/big/img_607 2823 | 2002/08/09/big/img_316 2824 | 2002/07/29/big/img_626 2825 | 2002/07/24/big/img_824 2826 | 2002/07/22/big/img_342 2827 | 2002/08/08/big/img_794 2828 | 2002/08/07/big/img_1209 2829 | 2002/07/19/big/img_18 2830 | 2002/08/25/big/img_634 2831 | 2002/07/24/big/img_730 2832 | 2003/01/17/big/img_356 2833 | 2002/07/23/big/img_305 2834 | 2002/07/30/big/img_453 2835 | 2003/01/13/big/img_972 2836 | 2002/08/06/big/img_2610 2837 | 2002/08/29/big/img_18920 2838 | 2002/07/31/big/img_123 2839 | 2002/07/26/big/img_979 2840 | 2002/08/24/big/img_635 2841 | 2002/08/05/big/img_3704 2842 | 2002/08/07/big/img_1358 2843 | 2002/07/22/big/img_306 2844 | 2002/08/13/big/img_619 2845 | 2002/08/02/big/img_366 2846 | -------------------------------------------------------------------------------- /data/PASCAL/img_list.txt: -------------------------------------------------------------------------------- 1 | 2007_000272 2 | 2007_000664 3 | 2007_000807 4 | 2007_001558 5 | 2007_001583 6 | 2007_001627 7 | 2007_002079 8 | 2007_002262 9 | 2007_002344 10 | 2007_003091 11 | 2007_003226 12 | 2007_003329 13 | 2007_003581 14 | 2007_003745 15 | 2007_003747 16 | 2007_003831 17 | 2007_004000 18 | 2007_004049 19 | 2007_004092 20 | 2007_004133 21 | 2007_004197 22 | 2007_004238 23 | 2007_004397 24 | 2007_004517 25 | 2007_004713 26 | 2007_004770 27 | 2007_004831 28 | 2007_005019 29 | 2007_005310 30 | 2007_005405 31 | 2007_005450 32 | 2007_005527 33 | 2007_005657 34 | 2007_005691 35 | 2007_005695 36 | 2007_005748 37 | 2007_005896 38 | 2007_005969 39 | 2007_005971 40 | 2007_005972 41 | 2007_006163 42 | 2007_006240 43 | 2007_006282 44 | 2007_006442 45 | 2007_006559 46 | 2007_006614 47 | 2007_006744 48 | 2007_006786 49 | 2007_006808 50 | 2007_006809 51 | 2007_006856 52 | 2007_007031 53 | 2007_007080 54 | 2007_007083 55 | 2007_007119 56 | 2007_007151 57 | 2007_007161 58 | 2007_007277 59 | 2007_007330 60 | 2007_007420 61 | 2007_007438 62 | 2007_007582 63 | 2007_007595 64 | 2007_007606 65 | 2007_007618 66 | 2007_007763 67 | 2007_007769 68 | 2007_007871 69 | 2007_007877 70 | 2007_007892 71 | 2007_007910 72 | 2007_007917 73 | 2007_007940 74 | 2007_007955 75 | 2007_008013 76 | 2007_008211 77 | 2007_008321 78 | 2007_008396 79 | 2007_008446 80 | 2007_008559 81 | 2007_008567 82 | 2007_008647 83 | 2007_008664 84 | 2007_008690 85 | 2007_008816 86 | 2007_008921 87 | 2007_009040 88 | 2007_009153 89 | 2007_009253 90 | 2007_009391 91 | 2007_009402 92 | 2007_009425 93 | 2007_009578 94 | 2007_009579 95 | 2007_009610 96 | 2007_009612 97 | 2007_009653 98 | 2007_009736 99 | 2007_009783 100 | 2007_009910 101 | 2008_000210 102 | 2008_000216 103 | 2008_000263 104 | 2008_000280 105 | 2008_000317 106 | 2008_000325 107 | 2008_000331 108 | 2008_000355 109 | 2008_000407 110 | 2008_000438 111 | 2008_000451 112 | 2008_000528 113 | 2008_000568 114 | 2008_000569 115 | 2008_000574 116 | 2008_000610 117 | 2008_000611 118 | 2008_000616 119 | 2008_000618 120 | 2008_000624 121 | 2008_000637 122 | 2008_000642 123 | 2008_000662 124 | 2008_000700 125 | 2008_000701 126 | 2008_000715 127 | 2008_000720 128 | 2008_000728 129 | 2008_000730 130 | 2008_000733 131 | 2008_000735 132 | 2008_000737 133 | 2008_000740 134 | 2008_000745 135 | 2008_000778 136 | 2008_000780 137 | 2008_000822 138 | 2008_000825 139 | 2008_000925 140 | 2008_000927 141 | 2008_000946 142 | 2008_000983 143 | 2008_000992 144 | 2008_001003 145 | 2008_001063 146 | 2008_001074 147 | 2008_001076 148 | 2008_001090 149 | 2008_001094 150 | 2008_001095 151 | 2008_001215 152 | 2008_001255 153 | 2008_001273 154 | 2008_001397 155 | 2008_001429 156 | 2008_001487 157 | 2008_001491 158 | 2008_001504 159 | 2008_001534 160 | 2008_001540 161 | 2008_001561 162 | 2008_001598 163 | 2008_001602 164 | 2008_001607 165 | 2008_001619 166 | 2008_001646 167 | 2008_001657 168 | 2008_001668 169 | 2008_001671 170 | 2008_001726 171 | 2008_001731 172 | 2008_001745 173 | 2008_001748 174 | 2008_001754 175 | 2008_001763 176 | 2008_001767 177 | 2008_001778 178 | 2008_001802 179 | 2008_001840 180 | 2008_001847 181 | 2008_001874 182 | 2008_001901 183 | 2008_001907 184 | 2008_001909 185 | 2008_001919 186 | 2008_001976 187 | 2008_001984 188 | 2008_001995 189 | 2008_001996 190 | 2008_002006 191 | 2008_002017 192 | 2008_002035 193 | 2008_002052 194 | 2008_002078 195 | 2008_002097 196 | 2008_002145 197 | 2008_002169 198 | 2008_002176 199 | 2008_002183 200 | 2008_002247 201 | 2008_002251 202 | 2008_002259 203 | 2008_002260 204 | 2008_002277 205 | 2008_002319 206 | 2008_002346 207 | 2008_002351 208 | 2008_002355 209 | 2008_002470 210 | 2008_002520 211 | 2008_002537 212 | 2008_002538 213 | 2008_002576 214 | 2008_002596 215 | 2008_002627 216 | 2008_002633 217 | 2008_002651 218 | 2008_002658 219 | 2008_002664 220 | 2008_002677 221 | 2008_002729 222 | 2008_002756 223 | 2008_002803 224 | 2008_002809 225 | 2008_002827 226 | 2008_002829 227 | 2008_002851 228 | 2008_002853 229 | 2008_002855 230 | 2008_002867 231 | 2008_002908 232 | 2008_002910 233 | 2008_002924 234 | 2008_002949 235 | 2008_003002 236 | 2008_003007 237 | 2008_003012 238 | 2008_003044 239 | 2008_003080 240 | 2008_003096 241 | 2008_003126 242 | 2008_003190 243 | 2008_003220 244 | 2008_003257 245 | 2008_003279 246 | 2008_003284 247 | 2008_003332 248 | 2008_003342 249 | 2008_003365 250 | 2008_003419 251 | 2008_003424 252 | 2008_003438 253 | 2008_003446 254 | 2008_003460 255 | 2008_003483 256 | 2008_003505 257 | 2008_003531 258 | 2008_003593 259 | 2008_003601 260 | 2008_003603 261 | 2008_003610 262 | 2008_003616 263 | 2008_003632 264 | 2008_003671 265 | 2008_003696 266 | 2008_003721 267 | 2008_003736 268 | 2008_003754 269 | 2008_003765 270 | 2008_003766 271 | 2008_003773 272 | 2008_003836 273 | 2008_003861 274 | 2008_003871 275 | 2008_003874 276 | 2008_003880 277 | 2008_003884 278 | 2008_003933 279 | 2008_003960 280 | 2008_004018 281 | 2008_004065 282 | 2008_004076 283 | 2008_004095 284 | 2008_004135 285 | 2008_004137 286 | 2008_004263 287 | 2008_004341 288 | 2008_004370 289 | 2008_004379 290 | 2008_004392 291 | 2008_004440 292 | 2008_004456 293 | 2008_004517 294 | 2008_004521 295 | 2008_004534 296 | 2008_004567 297 | 2008_004569 298 | 2008_004604 299 | 2008_004657 300 | 2008_004954 301 | 2008_005098 302 | 2008_005490 303 | 2008_005701 304 | 2008_006971 305 | 2008_007387 306 | 2008_007982 307 | 2008_008122 308 | 2008_008251 309 | 2008_008335 310 | 2008_008742 311 | 2009_000043 312 | 2009_000044 313 | 2009_000061 314 | 2009_000072 315 | 2009_000179 316 | 2009_000183 317 | 2009_000272 318 | 2009_000301 319 | 2009_000322 320 | 2009_000337 321 | 2009_000436 322 | 2009_000456 323 | 2009_000470 324 | 2009_000606 325 | 2009_000706 326 | 2009_000781 327 | 2009_000815 328 | 2009_000827 329 | 2009_000833 330 | 2009_000865 331 | 2009_000936 332 | 2009_000942 333 | 2009_000962 334 | 2009_001073 335 | 2009_001084 336 | 2009_001254 337 | 2009_001256 338 | 2009_001330 339 | 2009_001389 340 | 2009_001454 341 | 2009_001479 342 | 2009_001521 343 | 2009_001578 344 | 2009_001580 345 | 2009_001602 346 | 2009_001617 347 | 2009_001641 348 | 2009_001740 349 | 2009_001841 350 | 2009_001876 351 | 2009_001909 352 | 2009_001979 353 | 2009_001983 354 | 2009_001994 355 | 2009_002013 356 | 2009_002160 357 | 2009_002241 358 | 2009_002242 359 | 2009_002261 360 | 2009_002321 361 | 2009_002349 362 | 2009_002407 363 | 2009_002489 364 | 2009_002492 365 | 2009_002514 366 | 2009_002580 367 | 2009_002587 368 | 2009_002607 369 | 2009_002690 370 | 2009_002721 371 | 2009_002873 372 | 2009_002918 373 | 2009_002922 374 | 2009_002976 375 | 2009_003000 376 | 2009_003026 377 | 2009_003064 378 | 2009_003220 379 | 2009_003275 380 | 2009_003290 381 | 2009_003490 382 | 2009_003496 383 | 2009_003540 384 | 2009_003563 385 | 2009_003594 386 | 2009_003630 387 | 2009_003641 388 | 2009_003662 389 | 2009_003683 390 | 2009_003751 391 | 2009_003829 392 | 2009_003872 393 | 2009_003874 394 | 2009_004004 395 | 2009_004063 396 | 2009_004071 397 | 2009_004110 398 | 2009_004113 399 | 2009_004205 400 | 2009_004221 401 | 2009_004251 402 | 2009_004256 403 | 2009_004326 404 | 2009_004393 405 | 2009_004405 406 | 2009_004410 407 | 2009_004525 408 | 2009_004531 409 | 2009_004587 410 | 2009_004622 411 | 2009_004697 412 | 2009_004761 413 | 2009_004806 414 | 2009_004809 415 | 2009_004865 416 | 2009_004899 417 | 2009_004995 418 | 2009_005045 419 | 2009_005166 420 | 2009_005297 421 | 2010_000041 422 | 2010_000120 423 | 2010_000204 424 | 2010_000474 425 | 2010_000476 426 | 2010_000597 427 | 2010_000617 428 | 2010_000733 429 | 2010_000775 430 | 2010_000778 431 | 2010_000993 432 | 2010_001008 433 | 2010_001236 434 | 2010_001278 435 | 2010_001379 436 | 2010_001397 437 | 2010_001438 438 | 2010_001482 439 | 2010_001739 440 | 2010_001870 441 | 2010_001878 442 | 2010_001917 443 | 2010_001935 444 | 2010_002096 445 | 2010_002100 446 | 2010_002122 447 | 2010_002154 448 | 2010_002188 449 | 2010_002201 450 | 2010_002282 451 | 2010_002380 452 | 2010_002403 453 | 2010_002597 454 | 2010_002675 455 | 2010_002717 456 | 2010_002769 457 | 2010_002853 458 | 2010_002914 459 | 2010_002981 460 | 2010_003003 461 | 2010_003111 462 | 2010_003112 463 | 2010_003185 464 | 2010_003213 465 | 2010_003250 466 | 2010_003326 467 | 2010_003414 468 | 2010_003431 469 | 2010_003510 470 | 2010_003618 471 | 2010_003620 472 | 2010_003626 473 | 2010_003649 474 | 2010_003755 475 | 2010_003831 476 | 2010_003927 477 | 2010_003949 478 | 2010_003955 479 | 2010_003964 480 | 2010_004031 481 | 2010_004272 482 | 2010_004280 483 | 2010_004282 484 | 2010_004400 485 | 2010_004418 486 | 2010_004424 487 | 2010_004622 488 | 2010_004698 489 | 2010_004708 490 | 2010_004818 491 | 2010_004887 492 | 2010_004940 493 | 2010_004972 494 | 2010_005127 495 | 2010_005132 496 | 2010_005141 497 | 2010_005148 498 | 2010_005156 499 | 2010_005303 500 | 2010_005319 501 | 2010_005403 502 | 2010_005405 503 | 2010_005489 504 | 2010_005539 505 | 2010_005541 506 | 2010_005631 507 | 2010_005773 508 | 2011_000004 509 | 2011_000023 510 | 2011_000024 511 | 2011_000055 512 | 2011_000073 513 | 2011_000075 514 | 2011_000080 515 | 2011_000093 516 | 2011_000100 517 | 2011_000113 518 | 2011_000136 519 | 2011_000139 520 | 2011_000140 521 | 2011_000144 522 | 2011_000148 523 | 2011_000151 524 | 2011_000153 525 | 2011_000155 526 | 2011_000160 527 | 2011_000168 528 | 2011_000187 529 | 2011_000189 530 | 2011_000190 531 | 2011_000207 532 | 2011_000223 533 | 2011_000237 534 | 2011_000242 535 | 2011_000256 536 | 2011_000260 537 | 2011_000264 538 | 2011_000272 539 | 2011_000280 540 | 2011_000287 541 | 2011_000318 542 | 2011_000327 543 | 2011_000360 544 | 2011_000363 545 | 2011_000368 546 | 2011_000372 547 | 2011_000393 548 | 2011_000395 549 | 2011_000415 550 | 2011_000433 551 | 2011_000443 552 | 2011_000460 553 | 2011_000467 554 | 2011_000486 555 | 2011_000497 556 | 2011_000507 557 | 2011_000516 558 | 2011_000517 559 | 2011_000522 560 | 2011_000533 561 | 2011_000535 562 | 2011_000539 563 | 2011_000545 564 | 2011_000547 565 | 2011_000553 566 | 2011_000561 567 | 2011_000564 568 | 2011_000570 569 | 2011_000580 570 | 2011_000583 571 | 2011_000590 572 | 2011_000593 573 | 2011_000611 574 | 2011_000613 575 | 2011_000614 576 | 2011_000623 577 | 2011_000625 578 | 2011_000635 579 | 2011_000644 580 | 2011_000645 581 | 2011_000647 582 | 2011_000648 583 | 2011_000649 584 | 2011_000674 585 | 2011_000678 586 | 2011_000680 587 | 2011_000696 588 | 2011_000700 589 | 2011_000715 590 | 2011_000716 591 | 2011_000717 592 | 2011_000719 593 | 2011_000720 594 | 2011_000732 595 | 2011_000761 596 | 2011_000779 597 | 2011_000787 598 | 2011_000792 599 | 2011_000797 600 | 2011_000798 601 | 2011_000803 602 | 2011_000812 603 | 2011_000818 604 | 2011_000832 605 | 2011_000842 606 | 2011_000861 607 | 2011_000862 608 | 2011_000865 609 | 2011_000871 610 | 2011_000876 611 | 2011_000877 612 | 2011_000878 613 | 2011_000904 614 | 2011_000921 615 | 2011_000928 616 | 2011_000935 617 | 2011_000936 618 | 2011_000942 619 | 2011_000945 620 | 2011_000946 621 | 2011_000949 622 | 2011_000955 623 | 2011_000959 624 | 2011_000972 625 | 2011_001003 626 | 2011_001018 627 | 2011_001038 628 | 2011_001043 629 | 2011_001051 630 | 2011_001067 631 | 2011_001083 632 | 2011_001095 633 | 2011_001108 634 | 2011_001109 635 | 2011_001122 636 | 2011_001142 637 | 2011_001143 638 | 2011_001170 639 | 2011_001199 640 | 2011_001205 641 | 2011_001206 642 | 2011_001210 643 | 2011_001212 644 | 2011_001222 645 | 2011_001225 646 | 2011_001235 647 | 2011_001239 648 | 2011_001243 649 | 2011_001250 650 | 2011_001268 651 | 2011_001269 652 | 2011_001278 653 | 2011_001298 654 | 2011_001300 655 | 2011_001307 656 | 2011_001308 657 | 2011_001331 658 | 2011_001347 659 | 2011_001353 660 | 2011_001362 661 | 2011_001378 662 | 2011_001380 663 | 2011_001385 664 | 2011_001391 665 | 2011_001409 666 | 2011_001429 667 | 2011_001436 668 | 2011_001458 669 | 2011_001462 670 | 2011_001470 671 | 2011_001473 672 | 2011_001481 673 | 2011_001494 674 | 2011_001502 675 | 2011_001511 676 | 2011_001520 677 | 2011_001522 678 | 2011_001562 679 | 2011_001563 680 | 2011_001570 681 | 2011_001579 682 | 2011_001581 683 | 2011_001583 684 | 2011_001590 685 | 2011_001598 686 | 2011_001610 687 | 2011_001615 688 | 2011_001627 689 | 2011_001645 690 | 2011_001659 691 | 2011_001670 692 | 2011_001685 693 | 2011_001687 694 | 2011_001701 695 | 2011_001718 696 | 2011_001731 697 | 2011_001756 698 | 2011_001763 699 | 2011_001767 700 | 2011_001780 701 | 2011_001792 702 | 2011_001803 703 | 2011_001821 704 | 2011_001839 705 | 2011_001861 706 | 2011_001878 707 | 2011_001894 708 | 2011_001903 709 | 2011_001912 710 | 2011_001921 711 | 2011_001943 712 | 2011_001955 713 | 2011_001958 714 | 2011_001976 715 | 2011_001979 716 | 2011_001994 717 | 2011_002024 718 | 2011_002025 719 | 2011_002026 720 | 2011_002030 721 | 2011_002051 722 | 2011_002052 723 | 2011_002054 724 | 2011_002058 725 | 2011_002072 726 | 2011_002078 727 | 2011_002101 728 | 2011_002122 729 | 2011_002129 730 | 2011_002130 731 | 2011_002133 732 | 2011_002168 733 | 2011_002171 734 | 2011_002190 735 | 2011_002191 736 | 2011_002196 737 | 2011_002202 738 | 2011_002203 739 | 2011_002207 740 | 2011_002212 741 | 2011_002217 742 | 2011_002225 743 | 2011_002226 744 | 2011_002275 745 | 2011_002277 746 | 2011_002290 747 | 2011_002320 748 | 2011_002321 749 | 2011_002351 750 | 2011_002353 751 | 2011_002360 752 | 2011_002363 753 | 2011_002372 754 | 2011_002376 755 | 2011_002428 756 | 2011_002431 757 | 2011_002432 758 | 2011_002446 759 | 2011_002472 760 | 2011_002478 761 | 2011_002506 762 | 2011_002517 763 | 2011_002521 764 | 2011_002527 765 | 2011_002550 766 | 2011_002569 767 | 2011_002577 768 | 2011_002580 769 | 2011_002581 770 | 2011_002586 771 | 2011_002591 772 | 2011_002603 773 | 2011_002619 774 | 2011_002626 775 | 2011_002645 776 | 2011_002651 777 | 2011_002666 778 | 2011_002668 779 | 2011_002670 780 | 2011_002671 781 | 2011_002679 782 | 2011_002683 783 | 2011_002684 784 | 2011_002690 785 | 2011_002698 786 | 2011_002701 787 | 2011_002708 788 | 2011_002712 789 | 2011_002723 790 | 2011_002732 791 | 2011_002744 792 | 2011_002745 793 | 2011_002755 794 | 2011_002757 795 | 2011_002778 796 | 2011_002785 797 | 2011_002787 798 | 2011_002789 799 | 2011_002793 800 | 2011_002794 801 | 2011_002797 802 | 2011_002822 803 | 2011_002837 804 | 2011_002848 805 | 2011_002853 806 | 2011_002857 807 | 2011_002858 808 | 2011_002861 809 | 2011_002877 810 | 2011_002902 811 | 2011_002904 812 | 2011_002915 813 | 2011_002918 814 | 2011_002931 815 | 2011_002946 816 | 2011_002957 817 | 2011_002972 818 | 2011_002981 819 | 2011_002996 820 | 2011_003006 821 | 2011_003022 822 | 2011_003032 823 | 2011_003037 824 | 2011_003042 825 | 2011_003069 826 | 2011_003075 827 | 2011_003082 828 | 2011_003094 829 | 2011_003099 830 | 2011_003116 831 | 2011_003118 832 | 2011_003136 833 | 2011_003143 834 | 2011_003144 835 | 2011_003165 836 | 2011_003172 837 | 2011_003173 838 | 2011_003174 839 | 2011_003186 840 | 2011_003190 841 | 2011_003200 842 | 2011_003206 843 | 2011_003214 844 | 2011_003217 845 | 2011_003229 846 | 2011_003237 847 | 2011_003252 848 | 2011_003258 849 | 2011_003270 850 | 2011_003272 851 | 2011_003273 852 | 853 | -------------------------------------------------------------------------------- /data/__init__.py: -------------------------------------------------------------------------------- 1 | from .wider_voc import VOCDetection, AnnotationTransform, detection_collate 2 | from .data_augment import * 3 | from .config import * 4 | -------------------------------------------------------------------------------- /data/config.py: -------------------------------------------------------------------------------- 1 | # config.py 2 | 3 | cfg = { 4 | 'name': 'FaceBoxes', 5 | #'min_dim': 1024, 6 | #'feature_maps': [[32, 32], [16, 16], [8, 8]], 7 | # 'aspect_ratios': [[1], [1], [1]], 8 | 'min_sizes': [[32, 64, 128], [256], [512]], 9 | 'steps': [32, 64, 128], 10 | 'variance': [0.1, 0.2], 11 | 'clip': False, 12 | 'loc_weight': 2.0, 13 | 'gpu_train': True 14 | } 15 | -------------------------------------------------------------------------------- /data/data_augment.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | import random 4 | from utils.box_utils import matrix_iof 5 | 6 | 7 | def _crop(image, boxes, labels, img_dim): 8 | height, width, _ = image.shape 9 | pad_image_flag = True 10 | 11 | for _ in range(250): 12 | if random.uniform(0, 1) <= 0.2: 13 | scale = 1 14 | else: 15 | scale = random.uniform(0.3, 1.) 16 | short_side = min(width, height) 17 | w = int(scale * short_side) 18 | h = w 19 | 20 | if width == w: 21 | l = 0 22 | else: 23 | l = random.randrange(width - w) 24 | if height == h: 25 | t = 0 26 | else: 27 | t = random.randrange(height - h) 28 | roi = np.array((l, t, l + w, t + h)) 29 | 30 | value = matrix_iof(boxes, roi[np.newaxis]) 31 | flag = (value >= 1) 32 | if not flag.any(): 33 | continue 34 | 35 | centers = (boxes[:, :2] + boxes[:, 2:]) / 2 36 | mask_a = np.logical_and(roi[:2] < centers, centers < roi[2:]).all(axis=1) 37 | boxes_t = boxes[mask_a].copy() 38 | labels_t = labels[mask_a].copy() 39 | 40 | if boxes_t.shape[0] == 0: 41 | continue 42 | 43 | image_t = image[roi[1]:roi[3], roi[0]:roi[2]] 44 | 45 | boxes_t[:, :2] = np.maximum(boxes_t[:, :2], roi[:2]) 46 | boxes_t[:, :2] -= roi[:2] 47 | boxes_t[:, 2:] = np.minimum(boxes_t[:, 2:], roi[2:]) 48 | boxes_t[:, 2:] -= roi[:2] 49 | 50 | # make sure that the cropped image contains at least one face > 16 pixel at training image scale 51 | b_w_t = (boxes_t[:, 2] - boxes_t[:, 0] + 1) / w * img_dim 52 | b_h_t = (boxes_t[:, 3] - boxes_t[:, 1] + 1) / h * img_dim 53 | mask_b = np.minimum(b_w_t, b_h_t) > 16.0 54 | boxes_t = boxes_t[mask_b] 55 | labels_t = labels_t[mask_b] 56 | 57 | if boxes_t.shape[0] == 0: 58 | continue 59 | 60 | pad_image_flag = False 61 | 62 | return image_t, boxes_t, labels_t, pad_image_flag 63 | return image, boxes, labels, pad_image_flag 64 | 65 | 66 | def _distort(image): 67 | 68 | def _convert(image, alpha=1, beta=0): 69 | tmp = image.astype(float) * alpha + beta 70 | tmp[tmp < 0] = 0 71 | tmp[tmp > 255] = 255 72 | image[:] = tmp 73 | 74 | image = image.copy() 75 | 76 | if random.randrange(2): 77 | 78 | #brightness distortion 79 | if random.randrange(2): 80 | _convert(image, beta=random.uniform(-32, 32)) 81 | 82 | #contrast distortion 83 | if random.randrange(2): 84 | _convert(image, alpha=random.uniform(0.5, 1.5)) 85 | 86 | image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) 87 | 88 | #saturation distortion 89 | if random.randrange(2): 90 | _convert(image[:, :, 1], alpha=random.uniform(0.5, 1.5)) 91 | 92 | #hue distortion 93 | if random.randrange(2): 94 | tmp = image[:, :, 0].astype(int) + random.randint(-18, 18) 95 | tmp %= 180 96 | image[:, :, 0] = tmp 97 | 98 | image = cv2.cvtColor(image, cv2.COLOR_HSV2BGR) 99 | 100 | else: 101 | 102 | #brightness distortion 103 | if random.randrange(2): 104 | _convert(image, beta=random.uniform(-32, 32)) 105 | 106 | image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) 107 | 108 | #saturation distortion 109 | if random.randrange(2): 110 | _convert(image[:, :, 1], alpha=random.uniform(0.5, 1.5)) 111 | 112 | #hue distortion 113 | if random.randrange(2): 114 | tmp = image[:, :, 0].astype(int) + random.randint(-18, 18) 115 | tmp %= 180 116 | image[:, :, 0] = tmp 117 | 118 | image = cv2.cvtColor(image, cv2.COLOR_HSV2BGR) 119 | 120 | #contrast distortion 121 | if random.randrange(2): 122 | _convert(image, alpha=random.uniform(0.5, 1.5)) 123 | 124 | return image 125 | 126 | 127 | def _expand(image, boxes, fill, p): 128 | if random.randrange(2): 129 | return image, boxes 130 | 131 | height, width, depth = image.shape 132 | 133 | scale = random.uniform(1, p) 134 | w = int(scale * width) 135 | h = int(scale * height) 136 | 137 | left = random.randint(0, w - width) 138 | top = random.randint(0, h - height) 139 | 140 | boxes_t = boxes.copy() 141 | boxes_t[:, :2] += (left, top) 142 | boxes_t[:, 2:] += (left, top) 143 | expand_image = np.empty( 144 | (h, w, depth), 145 | dtype=image.dtype) 146 | expand_image[:, :] = fill 147 | expand_image[top:top + height, left:left + width] = image 148 | image = expand_image 149 | 150 | return image, boxes_t 151 | 152 | 153 | def _mirror(image, boxes): 154 | _, width, _ = image.shape 155 | if random.randrange(2): 156 | image = image[:, ::-1] 157 | boxes = boxes.copy() 158 | boxes[:, 0::2] = width - boxes[:, 2::-2] 159 | return image, boxes 160 | 161 | 162 | def _pad_to_square(image, rgb_mean, pad_image_flag): 163 | if not pad_image_flag: 164 | return image 165 | height, width, _ = image.shape 166 | long_side = max(width, height) 167 | image_t = np.empty((long_side, long_side, 3), dtype=image.dtype) 168 | image_t[:, :] = rgb_mean 169 | image_t[0:0 + height, 0:0 + width] = image 170 | return image_t 171 | 172 | 173 | def _resize_subtract_mean(image, insize, rgb_mean): 174 | interp_methods = [cv2.INTER_LINEAR, cv2.INTER_CUBIC, cv2.INTER_AREA, cv2.INTER_NEAREST, cv2.INTER_LANCZOS4] 175 | interp_method = interp_methods[random.randrange(5)] 176 | image = cv2.resize(image, (insize, insize), interpolation=interp_method) 177 | image = image.astype(np.float32) 178 | image -= rgb_mean 179 | return image.transpose(2, 0, 1) 180 | 181 | 182 | class preproc(object): 183 | 184 | def __init__(self, img_dim, rgb_means): 185 | self.img_dim = img_dim 186 | self.rgb_means = rgb_means 187 | 188 | def __call__(self, image, targets): 189 | assert targets.shape[0] > 0, "this image does not have gt" 190 | 191 | boxes = targets[:, :-1].copy() 192 | labels = targets[:, -1].copy() 193 | 194 | #image_t = _distort(image) 195 | #image_t, boxes_t = _expand(image_t, boxes, self.cfg['rgb_mean'], self.cfg['max_expand_ratio']) 196 | #image_t, boxes_t, labels_t = _crop(image_t, boxes, labels, self.img_dim, self.rgb_means) 197 | image_t, boxes_t, labels_t, pad_image_flag = _crop(image, boxes, labels, self.img_dim) 198 | image_t = _distort(image_t) 199 | image_t = _pad_to_square(image_t,self.rgb_means, pad_image_flag) 200 | image_t, boxes_t = _mirror(image_t, boxes_t) 201 | height, width, _ = image_t.shape 202 | image_t = _resize_subtract_mean(image_t, self.img_dim, self.rgb_means) 203 | boxes_t[:, 0::2] /= width 204 | boxes_t[:, 1::2] /= height 205 | 206 | labels_t = np.expand_dims(labels_t, 1) 207 | targets_t = np.hstack((boxes_t, labels_t)) 208 | 209 | return image_t, targets_t 210 | -------------------------------------------------------------------------------- /data/wider_voc.py: -------------------------------------------------------------------------------- 1 | import os 2 | import os.path 3 | import sys 4 | import torch 5 | import torch.utils.data as data 6 | import cv2 7 | import numpy as np 8 | if sys.version_info[0] == 2: 9 | import xml.etree.cElementTree as ET 10 | else: 11 | import xml.etree.ElementTree as ET 12 | 13 | 14 | WIDER_CLASSES = ( '__background__', 'face') 15 | 16 | 17 | class AnnotationTransform(object): 18 | 19 | """Transforms a VOC annotation into a Tensor of bbox coords and label index 20 | Initilized with a dictionary lookup of classnames to indexes 21 | 22 | Arguments: 23 | class_to_ind (dict, optional): dictionary lookup of classnames -> indexes 24 | (default: alphabetic indexing of VOC's 20 classes) 25 | keep_difficult (bool, optional): keep difficult instances or not 26 | (default: False) 27 | height (int): height 28 | width (int): width 29 | """ 30 | 31 | def __init__(self, class_to_ind=None, keep_difficult=True): 32 | self.class_to_ind = class_to_ind or dict( 33 | zip(WIDER_CLASSES, range(len(WIDER_CLASSES)))) 34 | self.keep_difficult = keep_difficult 35 | 36 | def __call__(self, target): 37 | """ 38 | Arguments: 39 | target (annotation) : the target annotation to be made usable 40 | will be an ET.Element 41 | Returns: 42 | a list containing lists of bounding boxes [bbox coords, class name] 43 | """ 44 | res = np.empty((0, 5)) 45 | for obj in target.iter('object'): 46 | difficult = int(obj.find('difficult').text) == 1 47 | if not self.keep_difficult and difficult: 48 | continue 49 | name = obj.find('name').text.lower().strip() 50 | bbox = obj.find('bndbox') 51 | 52 | pts = ['xmin', 'ymin', 'xmax', 'ymax'] 53 | bndbox = [] 54 | for i, pt in enumerate(pts): 55 | cur_pt = int(bbox.find(pt).text) 56 | bndbox.append(cur_pt) 57 | label_idx = self.class_to_ind[name] 58 | bndbox.append(label_idx) 59 | res = np.vstack((res, bndbox)) # [xmin, ymin, xmax, ymax, label_ind] 60 | return res 61 | 62 | 63 | class VOCDetection(data.Dataset): 64 | 65 | """VOC Detection Dataset Object 66 | 67 | input is image, target is annotation 68 | 69 | Arguments: 70 | root (string): filepath to WIDER folder 71 | target_transform (callable, optional): transformation to perform on the 72 | target `annotation` 73 | (eg: take in caption string, return tensor of word indices) 74 | """ 75 | 76 | def __init__(self, root, preproc=None, target_transform=None): 77 | self.root = root 78 | self.preproc = preproc 79 | self.target_transform = target_transform 80 | self._annopath = os.path.join(self.root, 'annotations', '%s') 81 | self._imgpath = os.path.join(self.root, 'images', '%s') 82 | self.ids = list() 83 | with open(os.path.join(self.root, 'img_list.txt'), 'r') as f: 84 | self.ids = [tuple(line.split()) for line in f] 85 | 86 | def __getitem__(self, index): 87 | img_id = self.ids[index] 88 | target = ET.parse(self._annopath % img_id[1]).getroot() 89 | img = cv2.imread(self._imgpath % img_id[0], cv2.IMREAD_COLOR) 90 | height, width, _ = img.shape 91 | 92 | if self.target_transform is not None: 93 | target = self.target_transform(target) 94 | 95 | if self.preproc is not None: 96 | img, target = self.preproc(img, target) 97 | 98 | return torch.from_numpy(img), target 99 | 100 | def __len__(self): 101 | return len(self.ids) 102 | 103 | 104 | def detection_collate(batch): 105 | """Custom collate fn for dealing with batches of images that have a different 106 | number of associated object annotations (bounding boxes). 107 | 108 | Arguments: 109 | batch: (tuple) A tuple of tensor images and lists of annotations 110 | 111 | Return: 112 | A tuple containing: 113 | 1) (tensor) batch of images stacked on their 0 dim 114 | 2) (list of tensors) annotations for a given image are stacked on 0 dim 115 | """ 116 | targets = [] 117 | imgs = [] 118 | for _, sample in enumerate(batch): 119 | for _, tup in enumerate(sample): 120 | if torch.is_tensor(tup): 121 | imgs.append(tup) 122 | elif isinstance(tup, type(np.empty(0))): 123 | annos = torch.from_numpy(tup).float() 124 | targets.append(annos) 125 | 126 | return (torch.stack(imgs, 0), targets) 127 | -------------------------------------------------------------------------------- /layers/__init__.py: -------------------------------------------------------------------------------- 1 | from .functions import * 2 | from .modules import * 3 | -------------------------------------------------------------------------------- /layers/functions/prior_box.py: -------------------------------------------------------------------------------- 1 | import torch 2 | from itertools import product as product 3 | import numpy as np 4 | from math import ceil 5 | 6 | 7 | class PriorBox(object): 8 | def __init__(self, cfg, image_size=None, phase='train'): 9 | super(PriorBox, self).__init__() 10 | #self.aspect_ratios = cfg['aspect_ratios'] 11 | self.min_sizes = cfg['min_sizes'] 12 | self.steps = cfg['steps'] 13 | self.clip = cfg['clip'] 14 | self.image_size = image_size 15 | self.feature_maps = [[ceil(self.image_size[0]/step), ceil(self.image_size[1]/step)] for step in self.steps] 16 | 17 | def forward(self): 18 | anchors = [] 19 | for k, f in enumerate(self.feature_maps): 20 | min_sizes = self.min_sizes[k] 21 | for i, j in product(range(f[0]), range(f[1])): 22 | for min_size in min_sizes: 23 | s_kx = min_size / self.image_size[1] 24 | s_ky = min_size / self.image_size[0] 25 | if min_size == 32: 26 | dense_cx = [x*self.steps[k]/self.image_size[1] for x in [j+0, j+0.25, j+0.5, j+0.75]] 27 | dense_cy = [y*self.steps[k]/self.image_size[0] for y in [i+0, i+0.25, i+0.5, i+0.75]] 28 | for cy, cx in product(dense_cy, dense_cx): 29 | anchors += [cx, cy, s_kx, s_ky] 30 | elif min_size == 64: 31 | dense_cx = [x*self.steps[k]/self.image_size[1] for x in [j+0, j+0.5]] 32 | dense_cy = [y*self.steps[k]/self.image_size[0] for y in [i+0, i+0.5]] 33 | for cy, cx in product(dense_cy, dense_cx): 34 | anchors += [cx, cy, s_kx, s_ky] 35 | else: 36 | cx = (j + 0.5) * self.steps[k] / self.image_size[1] 37 | cy = (i + 0.5) * self.steps[k] / self.image_size[0] 38 | anchors += [cx, cy, s_kx, s_ky] 39 | # back to torch land 40 | output = torch.Tensor(anchors).view(-1, 4) 41 | if self.clip: 42 | output.clamp_(max=1, min=0) 43 | return output 44 | -------------------------------------------------------------------------------- /layers/modules/__init__.py: -------------------------------------------------------------------------------- 1 | from .multibox_loss import MultiBoxLoss 2 | 3 | __all__ = ['MultiBoxLoss'] 4 | -------------------------------------------------------------------------------- /layers/modules/multibox_loss.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | import torch.nn.functional as F 4 | from torch.autograd import Variable 5 | from utils.box_utils import match, log_sum_exp 6 | from data import cfg 7 | GPU = cfg['gpu_train'] 8 | 9 | class MultiBoxLoss(nn.Module): 10 | """SSD Weighted Loss Function 11 | Compute Targets: 12 | 1) Produce Confidence Target Indices by matching ground truth boxes 13 | with (default) 'priorboxes' that have jaccard index > threshold parameter 14 | (default threshold: 0.5). 15 | 2) Produce localization target by 'encoding' variance into offsets of ground 16 | truth boxes and their matched 'priorboxes'. 17 | 3) Hard negative mining to filter the excessive number of negative examples 18 | that comes with using a large number of default bounding boxes. 19 | (default negative:positive ratio 3:1) 20 | Objective Loss: 21 | L(x,c,l,g) = (Lconf(x, c) + αLloc(x,l,g)) / N 22 | Where, Lconf is the CrossEntropy Loss and Lloc is the SmoothL1 Loss 23 | weighted by α which is set to 1 by cross val. 24 | Args: 25 | c: class confidences, 26 | l: predicted boxes, 27 | g: ground truth boxes 28 | N: number of matched default boxes 29 | See: https://arxiv.org/pdf/1512.02325.pdf for more details. 30 | """ 31 | 32 | def __init__(self, num_classes, overlap_thresh, prior_for_matching, bkg_label, neg_mining, neg_pos, neg_overlap, encode_target): 33 | super(MultiBoxLoss, self).__init__() 34 | self.num_classes = num_classes 35 | self.threshold = overlap_thresh 36 | self.background_label = bkg_label 37 | self.encode_target = encode_target 38 | self.use_prior_for_matching = prior_for_matching 39 | self.do_neg_mining = neg_mining 40 | self.negpos_ratio = neg_pos 41 | self.neg_overlap = neg_overlap 42 | self.variance = [0.1, 0.2] 43 | 44 | def forward(self, predictions, priors, targets): 45 | """Multibox Loss 46 | Args: 47 | predictions (tuple): A tuple containing loc preds, conf preds, 48 | and prior boxes from SSD net. 49 | conf shape: torch.size(batch_size,num_priors,num_classes) 50 | loc shape: torch.size(batch_size,num_priors,4) 51 | priors shape: torch.size(num_priors,4) 52 | 53 | ground_truth (tensor): Ground truth boxes and labels for a batch, 54 | shape: [batch_size,num_objs,5] (last idx is the label). 55 | """ 56 | 57 | loc_data, conf_data = predictions 58 | priors = priors 59 | num = loc_data.size(0) 60 | num_priors = (priors.size(0)) 61 | 62 | # match priors (default boxes) and ground truth boxes 63 | loc_t = torch.Tensor(num, num_priors, 4) 64 | conf_t = torch.LongTensor(num, num_priors) 65 | for idx in range(num): 66 | truths = targets[idx][:, :-1].data 67 | labels = targets[idx][:, -1].data 68 | defaults = priors.data 69 | match(self.threshold, truths, defaults, self.variance, labels, loc_t, conf_t, idx) 70 | if GPU: 71 | loc_t = loc_t.cuda() 72 | conf_t = conf_t.cuda() 73 | 74 | pos = conf_t > 0 75 | 76 | # Localization Loss (Smooth L1) 77 | # Shape: [batch,num_priors,4] 78 | pos_idx = pos.unsqueeze(pos.dim()).expand_as(loc_data) 79 | loc_p = loc_data[pos_idx].view(-1, 4) 80 | loc_t = loc_t[pos_idx].view(-1, 4) 81 | loss_l = F.smooth_l1_loss(loc_p, loc_t, reduction='sum') 82 | 83 | # Compute max conf across batch for hard negative mining 84 | batch_conf = conf_data.view(-1, self.num_classes) 85 | loss_c = log_sum_exp(batch_conf) - batch_conf.gather(1, conf_t.view(-1, 1)) 86 | 87 | # Hard Negative Mining 88 | loss_c[pos.view(-1, 1)] = 0 # filter out pos boxes for now 89 | loss_c = loss_c.view(num, -1) 90 | _, loss_idx = loss_c.sort(1, descending=True) 91 | _, idx_rank = loss_idx.sort(1) 92 | num_pos = pos.long().sum(1, keepdim=True) 93 | num_neg = torch.clamp(self.negpos_ratio*num_pos, max=pos.size(1)-1) 94 | neg = idx_rank < num_neg.expand_as(idx_rank) 95 | 96 | # Confidence Loss Including Positive and Negative Examples 97 | pos_idx = pos.unsqueeze(2).expand_as(conf_data) 98 | neg_idx = neg.unsqueeze(2).expand_as(conf_data) 99 | conf_p = conf_data[(pos_idx+neg_idx).gt(0)].view(-1,self.num_classes) 100 | targets_weighted = conf_t[(pos+neg).gt(0)] 101 | loss_c = F.cross_entropy(conf_p, targets_weighted, reduction='sum') 102 | 103 | # Sum of losses: L(x,c,l,g) = (Lconf(x, c) + αLloc(x,l,g)) / N 104 | N = max(num_pos.data.sum().float(), 1) 105 | loss_l /= N 106 | loss_c /= N 107 | 108 | return loss_l, loss_c 109 | -------------------------------------------------------------------------------- /make.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | cd ./utils/ 3 | 4 | CUDA_PATH=/usr/local/cuda/ 5 | 6 | python3 build.py build_ext --inplace 7 | 8 | cd .. 9 | -------------------------------------------------------------------------------- /models/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zisianw/FaceBoxes.PyTorch/22efc6a35ce21b53b66ffc8c7a01c293e503df7a/models/__init__.py -------------------------------------------------------------------------------- /models/faceboxes.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | import torch.nn.functional as F 4 | 5 | 6 | class BasicConv2d(nn.Module): 7 | 8 | def __init__(self, in_channels, out_channels, **kwargs): 9 | super(BasicConv2d, self).__init__() 10 | self.conv = nn.Conv2d(in_channels, out_channels, bias=False, **kwargs) 11 | self.bn = nn.BatchNorm2d(out_channels, eps=1e-5) 12 | 13 | def forward(self, x): 14 | x = self.conv(x) 15 | x = self.bn(x) 16 | return F.relu(x, inplace=True) 17 | 18 | 19 | class Inception(nn.Module): 20 | 21 | def __init__(self): 22 | super(Inception, self).__init__() 23 | self.branch1x1 = BasicConv2d(128, 32, kernel_size=1, padding=0) 24 | self.branch1x1_2 = BasicConv2d(128, 32, kernel_size=1, padding=0) 25 | self.branch3x3_reduce = BasicConv2d(128, 24, kernel_size=1, padding=0) 26 | self.branch3x3 = BasicConv2d(24, 32, kernel_size=3, padding=1) 27 | self.branch3x3_reduce_2 = BasicConv2d(128, 24, kernel_size=1, padding=0) 28 | self.branch3x3_2 = BasicConv2d(24, 32, kernel_size=3, padding=1) 29 | self.branch3x3_3 = BasicConv2d(32, 32, kernel_size=3, padding=1) 30 | 31 | def forward(self, x): 32 | branch1x1 = self.branch1x1(x) 33 | 34 | branch1x1_pool = F.avg_pool2d(x, kernel_size=3, stride=1, padding=1) 35 | branch1x1_2 = self.branch1x1_2(branch1x1_pool) 36 | 37 | branch3x3_reduce = self.branch3x3_reduce(x) 38 | branch3x3 = self.branch3x3(branch3x3_reduce) 39 | 40 | branch3x3_reduce_2 = self.branch3x3_reduce_2(x) 41 | branch3x3_2 = self.branch3x3_2(branch3x3_reduce_2) 42 | branch3x3_3 = self.branch3x3_3(branch3x3_2) 43 | 44 | outputs = [branch1x1, branch1x1_2, branch3x3, branch3x3_3] 45 | return torch.cat(outputs, 1) 46 | 47 | 48 | class CRelu(nn.Module): 49 | 50 | def __init__(self, in_channels, out_channels, **kwargs): 51 | super(CRelu, self).__init__() 52 | self.conv = nn.Conv2d(in_channels, out_channels, bias=False, **kwargs) 53 | self.bn = nn.BatchNorm2d(out_channels, eps=1e-5) 54 | 55 | def forward(self, x): 56 | x = self.conv(x) 57 | x = self.bn(x) 58 | x = torch.cat([x, -x], 1) 59 | x = F.relu(x, inplace=True) 60 | return x 61 | 62 | 63 | class FaceBoxes(nn.Module): 64 | 65 | def __init__(self, phase, size, num_classes): 66 | super(FaceBoxes, self).__init__() 67 | self.phase = phase 68 | self.num_classes = num_classes 69 | self.size = size 70 | 71 | self.conv1 = CRelu(3, 24, kernel_size=7, stride=4, padding=3) 72 | self.conv2 = CRelu(48, 64, kernel_size=5, stride=2, padding=2) 73 | 74 | self.inception1 = Inception() 75 | self.inception2 = Inception() 76 | self.inception3 = Inception() 77 | 78 | self.conv3_1 = BasicConv2d(128, 128, kernel_size=1, stride=1, padding=0) 79 | self.conv3_2 = BasicConv2d(128, 256, kernel_size=3, stride=2, padding=1) 80 | 81 | self.conv4_1 = BasicConv2d(256, 128, kernel_size=1, stride=1, padding=0) 82 | self.conv4_2 = BasicConv2d(128, 256, kernel_size=3, stride=2, padding=1) 83 | 84 | self.loc, self.conf = self.multibox(self.num_classes) 85 | 86 | if self.phase == 'test': 87 | self.softmax = nn.Softmax(dim=-1) 88 | 89 | if self.phase == 'train': 90 | for m in self.modules(): 91 | if isinstance(m, nn.Conv2d): 92 | if m.bias is not None: 93 | nn.init.xavier_normal_(m.weight.data) 94 | m.bias.data.fill_(0.02) 95 | else: 96 | m.weight.data.normal_(0, 0.01) 97 | elif isinstance(m, nn.BatchNorm2d): 98 | m.weight.data.fill_(1) 99 | m.bias.data.zero_() 100 | 101 | def multibox(self, num_classes): 102 | loc_layers = [] 103 | conf_layers = [] 104 | loc_layers += [nn.Conv2d(128, 21 * 4, kernel_size=3, padding=1)] 105 | conf_layers += [nn.Conv2d(128, 21 * num_classes, kernel_size=3, padding=1)] 106 | loc_layers += [nn.Conv2d(256, 1 * 4, kernel_size=3, padding=1)] 107 | conf_layers += [nn.Conv2d(256, 1 * num_classes, kernel_size=3, padding=1)] 108 | loc_layers += [nn.Conv2d(256, 1 * 4, kernel_size=3, padding=1)] 109 | conf_layers += [nn.Conv2d(256, 1 * num_classes, kernel_size=3, padding=1)] 110 | return nn.Sequential(*loc_layers), nn.Sequential(*conf_layers) 111 | 112 | def forward(self, x): 113 | 114 | detection_sources = list() 115 | loc = list() 116 | conf = list() 117 | 118 | x = self.conv1(x) 119 | x = F.max_pool2d(x, kernel_size=3, stride=2, padding=1) 120 | x = self.conv2(x) 121 | x = F.max_pool2d(x, kernel_size=3, stride=2, padding=1) 122 | x = self.inception1(x) 123 | x = self.inception2(x) 124 | x = self.inception3(x) 125 | detection_sources.append(x) 126 | 127 | x = self.conv3_1(x) 128 | x = self.conv3_2(x) 129 | detection_sources.append(x) 130 | 131 | x = self.conv4_1(x) 132 | x = self.conv4_2(x) 133 | detection_sources.append(x) 134 | 135 | for (x, l, c) in zip(detection_sources, self.loc, self.conf): 136 | loc.append(l(x).permute(0, 2, 3, 1).contiguous()) 137 | conf.append(c(x).permute(0, 2, 3, 1).contiguous()) 138 | 139 | loc = torch.cat([o.view(o.size(0), -1) for o in loc], 1) 140 | conf = torch.cat([o.view(o.size(0), -1) for o in conf], 1) 141 | 142 | if self.phase == "test": 143 | output = (loc.view(loc.size(0), -1, 4), 144 | self.softmax(conf.view(conf.size(0), -1, self.num_classes))) 145 | else: 146 | output = (loc.view(loc.size(0), -1, 4), 147 | conf.view(conf.size(0), -1, self.num_classes)) 148 | 149 | return output 150 | -------------------------------------------------------------------------------- /test.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import os 3 | import argparse 4 | import torch 5 | import torch.backends.cudnn as cudnn 6 | import numpy as np 7 | from data import cfg 8 | from layers.functions.prior_box import PriorBox 9 | from utils.nms_wrapper import nms 10 | #from utils.nms.py_cpu_nms import py_cpu_nms 11 | import cv2 12 | from models.faceboxes import FaceBoxes 13 | from utils.box_utils import decode 14 | from utils.timer import Timer 15 | 16 | parser = argparse.ArgumentParser(description='FaceBoxes') 17 | 18 | parser.add_argument('-m', '--trained_model', default='weights/FaceBoxes.pth', 19 | type=str, help='Trained state_dict file path to open') 20 | parser.add_argument('--save_folder', default='eval/', type=str, help='Dir to save results') 21 | parser.add_argument('--cpu', action="store_true", default=False, help='Use cpu inference') 22 | parser.add_argument('--dataset', default='PASCAL', type=str, choices=['AFW', 'PASCAL', 'FDDB'], help='dataset') 23 | parser.add_argument('--confidence_threshold', default=0.05, type=float, help='confidence_threshold') 24 | parser.add_argument('--top_k', default=5000, type=int, help='top_k') 25 | parser.add_argument('--nms_threshold', default=0.3, type=float, help='nms_threshold') 26 | parser.add_argument('--keep_top_k', default=750, type=int, help='keep_top_k') 27 | parser.add_argument('-s', '--show_image', action="store_true", default=False, help='show detection results') 28 | parser.add_argument('--vis_thres', default=0.5, type=float, help='visualization_threshold') 29 | args = parser.parse_args() 30 | 31 | 32 | def check_keys(model, pretrained_state_dict): 33 | ckpt_keys = set(pretrained_state_dict.keys()) 34 | model_keys = set(model.state_dict().keys()) 35 | used_pretrained_keys = model_keys & ckpt_keys 36 | unused_pretrained_keys = ckpt_keys - model_keys 37 | missing_keys = model_keys - ckpt_keys 38 | print('Missing keys:{}'.format(len(missing_keys))) 39 | print('Unused checkpoint keys:{}'.format(len(unused_pretrained_keys))) 40 | print('Used keys:{}'.format(len(used_pretrained_keys))) 41 | assert len(used_pretrained_keys) > 0, 'load NONE from pretrained checkpoint' 42 | return True 43 | 44 | 45 | def remove_prefix(state_dict, prefix): 46 | ''' Old style model is stored with all names of parameters sharing common prefix 'module.' ''' 47 | print('remove prefix \'{}\''.format(prefix)) 48 | f = lambda x: x.split(prefix, 1)[-1] if x.startswith(prefix) else x 49 | return {f(key): value for key, value in state_dict.items()} 50 | 51 | 52 | def load_model(model, pretrained_path, load_to_cpu): 53 | print('Loading pretrained model from {}'.format(pretrained_path)) 54 | if load_to_cpu: 55 | pretrained_dict = torch.load(pretrained_path, map_location=lambda storage, loc: storage) 56 | else: 57 | device = torch.cuda.current_device() 58 | pretrained_dict = torch.load(pretrained_path, map_location=lambda storage, loc: storage.cuda(device)) 59 | if "state_dict" in pretrained_dict.keys(): 60 | pretrained_dict = remove_prefix(pretrained_dict['state_dict'], 'module.') 61 | else: 62 | pretrained_dict = remove_prefix(pretrained_dict, 'module.') 63 | check_keys(model, pretrained_dict) 64 | model.load_state_dict(pretrained_dict, strict=False) 65 | return model 66 | 67 | 68 | if __name__ == '__main__': 69 | torch.set_grad_enabled(False) 70 | # net and model 71 | net = FaceBoxes(phase='test', size=None, num_classes=2) # initialize detector 72 | net = load_model(net, args.trained_model, args.cpu) 73 | net.eval() 74 | print('Finished loading model!') 75 | print(net) 76 | cudnn.benchmark = True 77 | device = torch.device("cpu" if args.cpu else "cuda") 78 | net = net.to(device) 79 | 80 | 81 | # save file 82 | if not os.path.exists(args.save_folder): 83 | os.makedirs(args.save_folder) 84 | fw = open(os.path.join(args.save_folder, args.dataset + '_dets.txt'), 'w') 85 | 86 | # testing dataset 87 | testset_folder = os.path.join('data', args.dataset, 'images/') 88 | testset_list = os.path.join('data', args.dataset, 'img_list.txt') 89 | with open(testset_list, 'r') as fr: 90 | test_dataset = fr.read().split() 91 | num_images = len(test_dataset) 92 | 93 | # testing scale 94 | if args.dataset == "FDDB": 95 | resize = 3 96 | elif args.dataset == "PASCAL": 97 | resize = 2.5 98 | elif args.dataset == "AFW": 99 | resize = 1 100 | 101 | _t = {'forward_pass': Timer(), 'misc': Timer()} 102 | 103 | # testing begin 104 | for i, img_name in enumerate(test_dataset): 105 | image_path = testset_folder + img_name + '.jpg' 106 | img_raw = cv2.imread(image_path, cv2.IMREAD_COLOR) 107 | img = np.float32(img_raw) 108 | if resize != 1: 109 | img = cv2.resize(img, None, None, fx=resize, fy=resize, interpolation=cv2.INTER_LINEAR) 110 | im_height, im_width, _ = img.shape 111 | scale = torch.Tensor([img.shape[1], img.shape[0], img.shape[1], img.shape[0]]) 112 | img -= (104, 117, 123) 113 | img = img.transpose(2, 0, 1) 114 | img = torch.from_numpy(img).unsqueeze(0) 115 | img = img.to(device) 116 | scale = scale.to(device) 117 | 118 | _t['forward_pass'].tic() 119 | loc, conf = net(img) # forward pass 120 | _t['forward_pass'].toc() 121 | _t['misc'].tic() 122 | priorbox = PriorBox(cfg, image_size=(im_height, im_width)) 123 | priors = priorbox.forward() 124 | priors = priors.to(device) 125 | prior_data = priors.data 126 | boxes = decode(loc.data.squeeze(0), prior_data, cfg['variance']) 127 | boxes = boxes * scale / resize 128 | boxes = boxes.cpu().numpy() 129 | scores = conf.squeeze(0).data.cpu().numpy()[:, 1] 130 | 131 | # ignore low scores 132 | inds = np.where(scores > args.confidence_threshold)[0] 133 | boxes = boxes[inds] 134 | scores = scores[inds] 135 | 136 | # keep top-K before NMS 137 | order = scores.argsort()[::-1][:args.top_k] 138 | boxes = boxes[order] 139 | scores = scores[order] 140 | 141 | # do NMS 142 | dets = np.hstack((boxes, scores[:, np.newaxis])).astype(np.float32, copy=False) 143 | #keep = py_cpu_nms(dets, args.nms_threshold) 144 | keep = nms(dets, args.nms_threshold,force_cpu=args.cpu) 145 | dets = dets[keep, :] 146 | 147 | # keep top-K faster NMS 148 | dets = dets[:args.keep_top_k, :] 149 | _t['misc'].toc() 150 | 151 | # save dets 152 | if args.dataset == "FDDB": 153 | fw.write('{:s}\n'.format(img_name)) 154 | fw.write('{:.1f}\n'.format(dets.shape[0])) 155 | for k in range(dets.shape[0]): 156 | xmin = dets[k, 0] 157 | ymin = dets[k, 1] 158 | xmax = dets[k, 2] 159 | ymax = dets[k, 3] 160 | score = dets[k, 4] 161 | w = xmax - xmin + 1 162 | h = ymax - ymin + 1 163 | fw.write('{:.3f} {:.3f} {:.3f} {:.3f} {:.10f}\n'.format(xmin, ymin, w, h, score)) 164 | else: 165 | for k in range(dets.shape[0]): 166 | xmin = dets[k, 0] 167 | ymin = dets[k, 1] 168 | xmax = dets[k, 2] 169 | ymax = dets[k, 3] 170 | ymin += 0.2 * (ymax - ymin + 1) 171 | score = dets[k, 4] 172 | fw.write('{:s} {:.3f} {:.1f} {:.1f} {:.1f} {:.1f}\n'.format(img_name, score, xmin, ymin, xmax, ymax)) 173 | print('im_detect: {:d}/{:d} forward_pass_time: {:.4f}s misc: {:.4f}s'.format(i + 1, num_images, _t['forward_pass'].average_time, _t['misc'].average_time)) 174 | 175 | # show image 176 | if args.show_image: 177 | for b in dets: 178 | if b[4] < args.vis_thres: 179 | continue 180 | text = "{:.4f}".format(b[4]) 181 | b = list(map(int, b)) 182 | cv2.rectangle(img_raw, (b[0], b[1]), (b[2], b[3]), (0, 0, 255), 2) 183 | cx = b[0] 184 | cy = b[1] + 12 185 | cv2.putText(img_raw, text, (cx, cy), 186 | cv2.FONT_HERSHEY_DUPLEX, 0.5, (255, 255, 255)) 187 | cv2.imshow('res', img_raw) 188 | cv2.waitKey(0) 189 | 190 | fw.close() 191 | -------------------------------------------------------------------------------- /train.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import os 3 | import torch 4 | import torch.optim as optim 5 | import torch.backends.cudnn as cudnn 6 | import argparse 7 | import torch.utils.data as data 8 | from data import AnnotationTransform, VOCDetection, detection_collate, preproc, cfg 9 | from layers.modules import MultiBoxLoss 10 | from layers.functions.prior_box import PriorBox 11 | import time 12 | import datetime 13 | import math 14 | from models.faceboxes import FaceBoxes 15 | 16 | parser = argparse.ArgumentParser(description='FaceBoxes Training') 17 | parser.add_argument('--training_dataset', default='./data/WIDER_FACE', help='Training dataset directory') 18 | parser.add_argument('-b', '--batch_size', default=32, type=int, help='Batch size for training') 19 | parser.add_argument('--num_workers', default=8, type=int, help='Number of workers used in dataloading') 20 | parser.add_argument('--ngpu', default=2, type=int, help='gpus') 21 | parser.add_argument('--lr', '--learning-rate', default=1e-3, type=float, help='initial learning rate') 22 | parser.add_argument('--momentum', default=0.9, type=float, help='momentum') 23 | parser.add_argument('--resume_net', default=None, help='resume net for retraining') 24 | parser.add_argument('--resume_epoch', default=0, type=int, help='resume iter for retraining') 25 | parser.add_argument('-max', '--max_epoch', default=300, type=int, help='max epoch for retraining') 26 | parser.add_argument('--weight_decay', default=5e-4, type=float, help='Weight decay for SGD') 27 | parser.add_argument('--gamma', default=0.1, type=float, help='Gamma update for SGD') 28 | parser.add_argument('--save_folder', default='./weights/', help='Location to save checkpoint models') 29 | args = parser.parse_args() 30 | 31 | if not os.path.exists(args.save_folder): 32 | os.mkdir(args.save_folder) 33 | 34 | img_dim = 1024 # only 1024 is supported 35 | rgb_mean = (104, 117, 123) # bgr order 36 | num_classes = 2 37 | num_gpu = args.ngpu 38 | num_workers = args.num_workers 39 | batch_size = args.batch_size 40 | momentum = args.momentum 41 | weight_decay = args.weight_decay 42 | initial_lr = args.lr 43 | gamma = args.gamma 44 | max_epoch = args.max_epoch 45 | training_dataset = args.training_dataset 46 | save_folder = args.save_folder 47 | gpu_train = cfg['gpu_train'] 48 | 49 | net = FaceBoxes('train', img_dim, num_classes) 50 | print("Printing net...") 51 | print(net) 52 | 53 | if args.resume_net is not None: 54 | print('Loading resume network...') 55 | state_dict = torch.load(args.resume_net) 56 | # create new OrderedDict that does not contain `module.` 57 | from collections import OrderedDict 58 | new_state_dict = OrderedDict() 59 | for k, v in state_dict.items(): 60 | head = k[:7] 61 | if head == 'module.': 62 | name = k[7:] # remove `module.` 63 | else: 64 | name = k 65 | new_state_dict[name] = v 66 | net.load_state_dict(new_state_dict) 67 | 68 | if num_gpu > 1 and gpu_train: 69 | net = torch.nn.DataParallel(net, device_ids=list(range(num_gpu))) 70 | 71 | device = torch.device('cuda:0' if gpu_train else 'cpu') 72 | cudnn.benchmark = True 73 | net = net.to(device) 74 | 75 | optimizer = optim.SGD(net.parameters(), lr=initial_lr, momentum=momentum, weight_decay=weight_decay) 76 | criterion = MultiBoxLoss(num_classes, 0.35, True, 0, True, 7, 0.35, False) 77 | 78 | priorbox = PriorBox(cfg, image_size=(img_dim, img_dim)) 79 | with torch.no_grad(): 80 | priors = priorbox.forward() 81 | priors = priors.to(device) 82 | 83 | 84 | def train(): 85 | net.train() 86 | epoch = 0 + args.resume_epoch 87 | print('Loading Dataset...') 88 | 89 | dataset = VOCDetection(training_dataset, preproc(img_dim, rgb_mean), AnnotationTransform()) 90 | 91 | epoch_size = math.ceil(len(dataset) / batch_size) 92 | max_iter = max_epoch * epoch_size 93 | 94 | stepvalues = (200 * epoch_size, 250 * epoch_size) 95 | step_index = 0 96 | 97 | if args.resume_epoch > 0: 98 | start_iter = args.resume_epoch * epoch_size 99 | else: 100 | start_iter = 0 101 | 102 | for iteration in range(start_iter, max_iter): 103 | if iteration % epoch_size == 0: 104 | # create batch iterator 105 | batch_iterator = iter(data.DataLoader(dataset, batch_size, shuffle=True, num_workers=num_workers, collate_fn=detection_collate)) 106 | if (epoch % 10 == 0 and epoch > 0) or (epoch % 5 == 0 and epoch > 200): 107 | torch.save(net.state_dict(), save_folder + 'FaceBoxes_epoch_' + str(epoch) + '.pth') 108 | epoch += 1 109 | 110 | load_t0 = time.time() 111 | if iteration in stepvalues: 112 | step_index += 1 113 | lr = adjust_learning_rate(optimizer, gamma, epoch, step_index, iteration, epoch_size) 114 | 115 | # load train data 116 | images, targets = next(batch_iterator) 117 | images = images.to(device) 118 | targets = [anno.to(device) for anno in targets] 119 | 120 | # forward 121 | out = net(images) 122 | 123 | # backprop 124 | optimizer.zero_grad() 125 | loss_l, loss_c = criterion(out, priors, targets) 126 | loss = cfg['loc_weight'] * loss_l + loss_c 127 | loss.backward() 128 | optimizer.step() 129 | load_t1 = time.time() 130 | batch_time = load_t1 - load_t0 131 | eta = int(batch_time * (max_iter - iteration)) 132 | print('Epoch:{}/{} || Epochiter: {}/{} || Iter: {}/{} || L: {:.4f} C: {:.4f} || LR: {:.8f} || Batchtime: {:.4f} s || ETA: {}'.format(epoch, max_epoch, (iteration % epoch_size) + 1, epoch_size, iteration + 1, max_iter, loss_l.item(), loss_c.item(), lr, batch_time, str(datetime.timedelta(seconds=eta)))) 133 | 134 | torch.save(net.state_dict(), save_folder + 'Final_FaceBoxes.pth') 135 | 136 | 137 | def adjust_learning_rate(optimizer, gamma, epoch, step_index, iteration, epoch_size): 138 | """Sets the learning rate 139 | # Adapted from PyTorch Imagenet example: 140 | # https://github.com/pytorch/examples/blob/master/imagenet/main.py 141 | """ 142 | warmup_epoch = -1 143 | if epoch <= warmup_epoch: 144 | lr = 1e-6 + (initial_lr-1e-6) * iteration / (epoch_size * warmup_epoch) 145 | else: 146 | lr = initial_lr * (gamma ** (step_index)) 147 | for param_group in optimizer.param_groups: 148 | param_group['lr'] = lr 149 | return lr 150 | 151 | if __name__ == '__main__': 152 | train() 153 | -------------------------------------------------------------------------------- /utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zisianw/FaceBoxes.PyTorch/22efc6a35ce21b53b66ffc8c7a01c293e503df7a/utils/__init__.py -------------------------------------------------------------------------------- /utils/box_utils.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import numpy as np 3 | 4 | 5 | def point_form(boxes): 6 | """ Convert prior_boxes to (xmin, ymin, xmax, ymax) 7 | representation for comparison to point form ground truth data. 8 | Args: 9 | boxes: (tensor) center-size default boxes from priorbox layers. 10 | Return: 11 | boxes: (tensor) Converted xmin, ymin, xmax, ymax form of boxes. 12 | """ 13 | return torch.cat((boxes[:, :2] - boxes[:, 2:]/2, # xmin, ymin 14 | boxes[:, :2] + boxes[:, 2:]/2), 1) # xmax, ymax 15 | 16 | 17 | def center_size(boxes): 18 | """ Convert prior_boxes to (cx, cy, w, h) 19 | representation for comparison to center-size form ground truth data. 20 | Args: 21 | boxes: (tensor) point_form boxes 22 | Return: 23 | boxes: (tensor) Converted xmin, ymin, xmax, ymax form of boxes. 24 | """ 25 | return torch.cat((boxes[:, 2:] + boxes[:, :2])/2, # cx, cy 26 | boxes[:, 2:] - boxes[:, :2], 1) # w, h 27 | 28 | 29 | def intersect(box_a, box_b): 30 | """ We resize both tensors to [A,B,2] without new malloc: 31 | [A,2] -> [A,1,2] -> [A,B,2] 32 | [B,2] -> [1,B,2] -> [A,B,2] 33 | Then we compute the area of intersect between box_a and box_b. 34 | Args: 35 | box_a: (tensor) bounding boxes, Shape: [A,4]. 36 | box_b: (tensor) bounding boxes, Shape: [B,4]. 37 | Return: 38 | (tensor) intersection area, Shape: [A,B]. 39 | """ 40 | A = box_a.size(0) 41 | B = box_b.size(0) 42 | max_xy = torch.min(box_a[:, 2:].unsqueeze(1).expand(A, B, 2), 43 | box_b[:, 2:].unsqueeze(0).expand(A, B, 2)) 44 | min_xy = torch.max(box_a[:, :2].unsqueeze(1).expand(A, B, 2), 45 | box_b[:, :2].unsqueeze(0).expand(A, B, 2)) 46 | inter = torch.clamp((max_xy - min_xy), min=0) 47 | return inter[:, :, 0] * inter[:, :, 1] 48 | 49 | 50 | def jaccard(box_a, box_b): 51 | """Compute the jaccard overlap of two sets of boxes. The jaccard overlap 52 | is simply the intersection over union of two boxes. Here we operate on 53 | ground truth boxes and default boxes. 54 | E.g.: 55 | A ∩ B / A ∪ B = A ∩ B / (area(A) + area(B) - A ∩ B) 56 | Args: 57 | box_a: (tensor) Ground truth bounding boxes, Shape: [num_objects,4] 58 | box_b: (tensor) Prior boxes from priorbox layers, Shape: [num_priors,4] 59 | Return: 60 | jaccard overlap: (tensor) Shape: [box_a.size(0), box_b.size(0)] 61 | """ 62 | inter = intersect(box_a, box_b) 63 | area_a = ((box_a[:, 2]-box_a[:, 0]) * 64 | (box_a[:, 3]-box_a[:, 1])).unsqueeze(1).expand_as(inter) # [A,B] 65 | area_b = ((box_b[:, 2]-box_b[:, 0]) * 66 | (box_b[:, 3]-box_b[:, 1])).unsqueeze(0).expand_as(inter) # [A,B] 67 | union = area_a + area_b - inter 68 | return inter / union # [A,B] 69 | 70 | 71 | def matrix_iou(a, b): 72 | """ 73 | return iou of a and b, numpy version for data augenmentation 74 | """ 75 | lt = np.maximum(a[:, np.newaxis, :2], b[:, :2]) 76 | rb = np.minimum(a[:, np.newaxis, 2:], b[:, 2:]) 77 | 78 | area_i = np.prod(rb - lt, axis=2) * (lt < rb).all(axis=2) 79 | area_a = np.prod(a[:, 2:] - a[:, :2], axis=1) 80 | area_b = np.prod(b[:, 2:] - b[:, :2], axis=1) 81 | return area_i / (area_a[:, np.newaxis] + area_b - area_i) 82 | 83 | 84 | def matrix_iof(a, b): 85 | """ 86 | return iof of a and b, numpy version for data augenmentation 87 | """ 88 | lt = np.maximum(a[:, np.newaxis, :2], b[:, :2]) 89 | rb = np.minimum(a[:, np.newaxis, 2:], b[:, 2:]) 90 | 91 | area_i = np.prod(rb - lt, axis=2) * (lt < rb).all(axis=2) 92 | area_a = np.prod(a[:, 2:] - a[:, :2], axis=1) 93 | return area_i / np.maximum(area_a[:, np.newaxis], 1) 94 | 95 | 96 | def match(threshold, truths, priors, variances, labels, loc_t, conf_t, idx): 97 | """Match each prior box with the ground truth box of the highest jaccard 98 | overlap, encode the bounding boxes, then return the matched indices 99 | corresponding to both confidence and location preds. 100 | Args: 101 | threshold: (float) The overlap threshold used when mathing boxes. 102 | truths: (tensor) Ground truth boxes, Shape: [num_obj, num_priors]. 103 | priors: (tensor) Prior boxes from priorbox layers, Shape: [n_priors,4]. 104 | variances: (tensor) Variances corresponding to each prior coord, 105 | Shape: [num_priors, 4]. 106 | labels: (tensor) All the class labels for the image, Shape: [num_obj]. 107 | loc_t: (tensor) Tensor to be filled w/ endcoded location targets. 108 | conf_t: (tensor) Tensor to be filled w/ matched indices for conf preds. 109 | idx: (int) current batch index 110 | Return: 111 | The matched indices corresponding to 1)location and 2)confidence preds. 112 | """ 113 | # jaccard index 114 | overlaps = jaccard( 115 | truths, 116 | point_form(priors) 117 | ) 118 | # (Bipartite Matching) 119 | # [1,num_objects] best prior for each ground truth 120 | best_prior_overlap, best_prior_idx = overlaps.max(1, keepdim=True) 121 | 122 | # ignore hard gt 123 | valid_gt_idx = best_prior_overlap[:, 0] >= 0.2 124 | best_prior_idx_filter = best_prior_idx[valid_gt_idx, :] 125 | if best_prior_idx_filter.shape[0] <= 0: 126 | loc_t[idx] = 0 127 | conf_t[idx] = 0 128 | return 129 | 130 | # [1,num_priors] best ground truth for each prior 131 | best_truth_overlap, best_truth_idx = overlaps.max(0, keepdim=True) 132 | best_truth_idx.squeeze_(0) 133 | best_truth_overlap.squeeze_(0) 134 | best_prior_idx.squeeze_(1) 135 | best_prior_idx_filter.squeeze_(1) 136 | best_prior_overlap.squeeze_(1) 137 | best_truth_overlap.index_fill_(0, best_prior_idx_filter, 2) # ensure best prior 138 | # TODO refactor: index best_prior_idx with long tensor 139 | # ensure every gt matches with its prior of max overlap 140 | for j in range(best_prior_idx.size(0)): 141 | best_truth_idx[best_prior_idx[j]] = j 142 | matches = truths[best_truth_idx] # Shape: [num_priors,4] 143 | conf = labels[best_truth_idx] # Shape: [num_priors] 144 | conf[best_truth_overlap < threshold] = 0 # label as background 145 | loc = encode(matches, priors, variances) 146 | loc_t[idx] = loc # [num_priors,4] encoded offsets to learn 147 | conf_t[idx] = conf # [num_priors] top class label for each prior 148 | 149 | 150 | def encode(matched, priors, variances): 151 | """Encode the variances from the priorbox layers into the ground truth boxes 152 | we have matched (based on jaccard overlap) with the prior boxes. 153 | Args: 154 | matched: (tensor) Coords of ground truth for each prior in point-form 155 | Shape: [num_priors, 4]. 156 | priors: (tensor) Prior boxes in center-offset form 157 | Shape: [num_priors,4]. 158 | variances: (list[float]) Variances of priorboxes 159 | Return: 160 | encoded boxes (tensor), Shape: [num_priors, 4] 161 | """ 162 | 163 | # dist b/t match center and prior's center 164 | g_cxcy = (matched[:, :2] + matched[:, 2:])/2 - priors[:, :2] 165 | # encode variance 166 | g_cxcy /= (variances[0] * priors[:, 2:]) 167 | # match wh / prior wh 168 | g_wh = (matched[:, 2:] - matched[:, :2]) / priors[:, 2:] 169 | g_wh = torch.log(g_wh) / variances[1] 170 | # return target for smooth_l1_loss 171 | return torch.cat([g_cxcy, g_wh], 1) # [num_priors,4] 172 | 173 | 174 | # Adapted from https://github.com/Hakuyume/chainer-ssd 175 | def decode(loc, priors, variances): 176 | """Decode locations from predictions using priors to undo 177 | the encoding we did for offset regression at train time. 178 | Args: 179 | loc (tensor): location predictions for loc layers, 180 | Shape: [num_priors,4] 181 | priors (tensor): Prior boxes in center-offset form. 182 | Shape: [num_priors,4]. 183 | variances: (list[float]) Variances of priorboxes 184 | Return: 185 | decoded bounding box predictions 186 | """ 187 | 188 | boxes = torch.cat(( 189 | priors[:, :2] + loc[:, :2] * variances[0] * priors[:, 2:], 190 | priors[:, 2:] * torch.exp(loc[:, 2:] * variances[1])), 1) 191 | boxes[:, :2] -= boxes[:, 2:] / 2 192 | boxes[:, 2:] += boxes[:, :2] 193 | return boxes 194 | 195 | 196 | def log_sum_exp(x): 197 | """Utility function for computing log_sum_exp while determining 198 | This will be used to determine unaveraged confidence loss across 199 | all examples in a batch. 200 | Args: 201 | x (Variable(tensor)): conf_preds from conf layers 202 | """ 203 | x_max = x.data.max() 204 | return torch.log(torch.sum(torch.exp(x-x_max), 1, keepdim=True)) + x_max 205 | 206 | 207 | # Original author: Francisco Massa: 208 | # https://github.com/fmassa/object-detection.torch 209 | # Ported to PyTorch by Max deGroot (02/01/2017) 210 | def nms(boxes, scores, overlap=0.5, top_k=200): 211 | """Apply non-maximum suppression at test time to avoid detecting too many 212 | overlapping bounding boxes for a given object. 213 | Args: 214 | boxes: (tensor) The location preds for the img, Shape: [num_priors,4]. 215 | scores: (tensor) The class predscores for the img, Shape:[num_priors]. 216 | overlap: (float) The overlap thresh for suppressing unnecessary boxes. 217 | top_k: (int) The Maximum number of box preds to consider. 218 | Return: 219 | The indices of the kept boxes with respect to num_priors. 220 | """ 221 | 222 | keep = torch.Tensor(scores.size(0)).fill_(0).long() 223 | if boxes.numel() == 0: 224 | return keep 225 | x1 = boxes[:, 0] 226 | y1 = boxes[:, 1] 227 | x2 = boxes[:, 2] 228 | y2 = boxes[:, 3] 229 | area = torch.mul(x2 - x1, y2 - y1) 230 | v, idx = scores.sort(0) # sort in ascending order 231 | # I = I[v >= 0.01] 232 | idx = idx[-top_k:] # indices of the top-k largest vals 233 | xx1 = boxes.new() 234 | yy1 = boxes.new() 235 | xx2 = boxes.new() 236 | yy2 = boxes.new() 237 | w = boxes.new() 238 | h = boxes.new() 239 | 240 | # keep = torch.Tensor() 241 | count = 0 242 | while idx.numel() > 0: 243 | i = idx[-1] # index of current largest val 244 | # keep.append(i) 245 | keep[count] = i 246 | count += 1 247 | if idx.size(0) == 1: 248 | break 249 | idx = idx[:-1] # remove kept element from view 250 | # load bboxes of next highest vals 251 | torch.index_select(x1, 0, idx, out=xx1) 252 | torch.index_select(y1, 0, idx, out=yy1) 253 | torch.index_select(x2, 0, idx, out=xx2) 254 | torch.index_select(y2, 0, idx, out=yy2) 255 | # store element-wise max with next highest score 256 | xx1 = torch.clamp(xx1, min=x1[i]) 257 | yy1 = torch.clamp(yy1, min=y1[i]) 258 | xx2 = torch.clamp(xx2, max=x2[i]) 259 | yy2 = torch.clamp(yy2, max=y2[i]) 260 | w.resize_as_(xx2) 261 | h.resize_as_(yy2) 262 | w = xx2 - xx1 263 | h = yy2 - yy1 264 | # check sizes of xx1 and xx2.. after each iteration 265 | w = torch.clamp(w, min=0.0) 266 | h = torch.clamp(h, min=0.0) 267 | inter = w*h 268 | # IoU = i / (area(a) + area(b) - i) 269 | rem_areas = torch.index_select(area, 0, idx) # load remaining areas) 270 | union = (rem_areas - inter) + area[i] 271 | IoU = inter/union # store result in iou 272 | # keep only elements with an IoU <= overlap 273 | idx = idx[IoU.le(overlap)] 274 | return keep, count 275 | 276 | 277 | -------------------------------------------------------------------------------- /utils/build.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------------------- 2 | # Fast R-CNN 3 | # Copyright (c) 2015 Microsoft 4 | # Licensed under The MIT License [see LICENSE for details] 5 | # Written by Ross Girshick 6 | # -------------------------------------------------------- 7 | 8 | import os 9 | from os.path import join as pjoin 10 | import numpy as np 11 | from distutils.core import setup 12 | from distutils.extension import Extension 13 | from Cython.Distutils import build_ext 14 | 15 | 16 | def find_in_path(name, path): 17 | "Find a file in a search path" 18 | # adapted fom http://code.activestate.com/recipes/52224-find-a-file-given-a-search-path/ 19 | for dir in path.split(os.pathsep): 20 | binpath = pjoin(dir, name) 21 | if os.path.exists(binpath): 22 | return os.path.abspath(binpath) 23 | return None 24 | 25 | 26 | def locate_cuda(): 27 | """Locate the CUDA environment on the system 28 | 29 | Returns a dict with keys 'home', 'nvcc', 'include', and 'lib64' 30 | and values giving the absolute path to each directory. 31 | 32 | Starts by looking for the CUDAHOME env variable. If not found, everything 33 | is based on finding 'nvcc' in the PATH. 34 | """ 35 | 36 | # first check if the CUDAHOME env variable is in use 37 | if 'CUDAHOME' in os.environ: 38 | home = os.environ['CUDAHOME'] 39 | nvcc = pjoin(home, 'bin', 'nvcc') 40 | else: 41 | # otherwise, search the PATH for NVCC 42 | default_path = pjoin(os.sep, 'usr', 'local', 'cuda', 'bin') 43 | nvcc = find_in_path('nvcc', os.environ['PATH'] + os.pathsep + default_path) 44 | if nvcc is None: 45 | raise EnvironmentError('The nvcc binary could not be ' 46 | 'located in your $PATH. Either add it to your path, or set $CUDAHOME') 47 | home = os.path.dirname(os.path.dirname(nvcc)) 48 | 49 | cudaconfig = {'home': home, 'nvcc': nvcc, 50 | 'include': pjoin(home, 'include'), 51 | 'lib64': pjoin(home, 'lib64')} 52 | for k, v in cudaconfig.items(): 53 | if not os.path.exists(v): 54 | raise EnvironmentError('The CUDA %s path could not be located in %s' % (k, v)) 55 | 56 | return cudaconfig 57 | 58 | 59 | CUDA = locate_cuda() 60 | 61 | # Obtain the numpy include directory. This logic works across numpy versions. 62 | try: 63 | numpy_include = np.get_include() 64 | except AttributeError: 65 | numpy_include = np.get_numpy_include() 66 | 67 | 68 | def customize_compiler_for_nvcc(self): 69 | """inject deep into distutils to customize how the dispatch 70 | to gcc/nvcc works. 71 | 72 | If you subclass UnixCCompiler, it's not trivial to get your subclass 73 | injected in, and still have the right customizations (i.e. 74 | distutils.sysconfig.customize_compiler) run on it. So instead of going 75 | the OO route, I have this. Note, it's kindof like a wierd functional 76 | subclassing going on.""" 77 | 78 | # tell the compiler it can processes .cu 79 | self.src_extensions.append('.cu') 80 | 81 | # save references to the default compiler_so and _comple methods 82 | default_compiler_so = self.compiler_so 83 | super = self._compile 84 | 85 | # now redefine the _compile method. This gets executed for each 86 | # object but distutils doesn't have the ability to change compilers 87 | # based on source extension: we add it. 88 | def _compile(obj, src, ext, cc_args, extra_postargs, pp_opts): 89 | print(extra_postargs) 90 | if os.path.splitext(src)[1] == '.cu': 91 | # use the cuda for .cu files 92 | self.set_executable('compiler_so', CUDA['nvcc']) 93 | # use only a subset of the extra_postargs, which are 1-1 translated 94 | # from the extra_compile_args in the Extension class 95 | postargs = extra_postargs['nvcc'] 96 | else: 97 | postargs = extra_postargs['gcc'] 98 | 99 | super(obj, src, ext, cc_args, postargs, pp_opts) 100 | # reset the default compiler_so, which we might have changed for cuda 101 | self.compiler_so = default_compiler_so 102 | 103 | # inject our redefined _compile method into the class 104 | self._compile = _compile 105 | 106 | 107 | # run the customize_compiler 108 | class custom_build_ext(build_ext): 109 | def build_extensions(self): 110 | customize_compiler_for_nvcc(self.compiler) 111 | build_ext.build_extensions(self) 112 | 113 | 114 | ext_modules = [ 115 | Extension( 116 | "nms.cpu_nms", 117 | ["nms/cpu_nms.pyx"], 118 | extra_compile_args={'gcc': ["-Wno-cpp", "-Wno-unused-function"]}, 119 | include_dirs=[numpy_include] 120 | ), 121 | Extension('nms.gpu_nms', 122 | ['nms/nms_kernel.cu', 'nms/gpu_nms.pyx'], 123 | library_dirs=[CUDA['lib64']], 124 | libraries=['cudart'], 125 | language='c++', 126 | runtime_library_dirs=[CUDA['lib64']], 127 | # this syntax is specific to this build system 128 | # we're only going to use certain compiler args with nvcc and not with gcc 129 | # the implementation of this trick is in customize_compiler() below 130 | extra_compile_args={'gcc': ["-Wno-unused-function"], 131 | 'nvcc': ['-arch=sm_52', 132 | '--ptxas-options=-v', 133 | '-c', 134 | '--compiler-options', 135 | "'-fPIC'"]}, 136 | include_dirs=[numpy_include, CUDA['include']] 137 | ), 138 | ] 139 | 140 | setup( 141 | name='mot_utils', 142 | ext_modules=ext_modules, 143 | # inject our custom trigger 144 | cmdclass={'build_ext': custom_build_ext}, 145 | ) 146 | -------------------------------------------------------------------------------- /utils/nms/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zisianw/FaceBoxes.PyTorch/22efc6a35ce21b53b66ffc8c7a01c293e503df7a/utils/nms/__init__.py -------------------------------------------------------------------------------- /utils/nms/cpu_nms.pyx: -------------------------------------------------------------------------------- 1 | # -------------------------------------------------------- 2 | # Fast R-CNN 3 | # Copyright (c) 2015 Microsoft 4 | # Licensed under The MIT License [see LICENSE for details] 5 | # Written by Ross Girshick 6 | # -------------------------------------------------------- 7 | 8 | import numpy as np 9 | cimport numpy as np 10 | 11 | cdef inline np.float32_t max(np.float32_t a, np.float32_t b): 12 | return a if a >= b else b 13 | 14 | cdef inline np.float32_t min(np.float32_t a, np.float32_t b): 15 | return a if a <= b else b 16 | 17 | def cpu_nms(np.ndarray[np.float32_t, ndim=2] dets, np.float thresh): 18 | cdef np.ndarray[np.float32_t, ndim=1] x1 = dets[:, 0] 19 | cdef np.ndarray[np.float32_t, ndim=1] y1 = dets[:, 1] 20 | cdef np.ndarray[np.float32_t, ndim=1] x2 = dets[:, 2] 21 | cdef np.ndarray[np.float32_t, ndim=1] y2 = dets[:, 3] 22 | cdef np.ndarray[np.float32_t, ndim=1] scores = dets[:, 4] 23 | 24 | cdef np.ndarray[np.float32_t, ndim=1] areas = (x2 - x1 + 1) * (y2 - y1 + 1) 25 | cdef np.ndarray[np.int_t, ndim=1] order = scores.argsort()[::-1] 26 | 27 | cdef int ndets = dets.shape[0] 28 | cdef np.ndarray[np.int_t, ndim=1] suppressed = \ 29 | np.zeros((ndets), dtype=np.int) 30 | 31 | # nominal indices 32 | cdef int _i, _j 33 | # sorted indices 34 | cdef int i, j 35 | # temp variables for box i's (the box currently under consideration) 36 | cdef np.float32_t ix1, iy1, ix2, iy2, iarea 37 | # variables for computing overlap with box j (lower scoring box) 38 | cdef np.float32_t xx1, yy1, xx2, yy2 39 | cdef np.float32_t w, h 40 | cdef np.float32_t inter, ovr 41 | 42 | keep = [] 43 | for _i in range(ndets): 44 | i = order[_i] 45 | if suppressed[i] == 1: 46 | continue 47 | keep.append(i) 48 | ix1 = x1[i] 49 | iy1 = y1[i] 50 | ix2 = x2[i] 51 | iy2 = y2[i] 52 | iarea = areas[i] 53 | for _j in range(_i + 1, ndets): 54 | j = order[_j] 55 | if suppressed[j] == 1: 56 | continue 57 | xx1 = max(ix1, x1[j]) 58 | yy1 = max(iy1, y1[j]) 59 | xx2 = min(ix2, x2[j]) 60 | yy2 = min(iy2, y2[j]) 61 | w = max(0.0, xx2 - xx1 + 1) 62 | h = max(0.0, yy2 - yy1 + 1) 63 | inter = w * h 64 | ovr = inter / (iarea + areas[j] - inter) 65 | if ovr >= thresh: 66 | suppressed[j] = 1 67 | 68 | return keep 69 | 70 | def cpu_soft_nms(np.ndarray[float, ndim=2] boxes, float sigma=0.5, float Nt=0.3, float threshold=0.001, unsigned int method=0): 71 | cdef unsigned int N = boxes.shape[0] 72 | cdef float iw, ih, box_area 73 | cdef float ua 74 | cdef int pos = 0 75 | cdef float maxscore = 0 76 | cdef int maxpos = 0 77 | cdef float x1,x2,y1,y2,tx1,tx2,ty1,ty2,ts,area,weight,ov 78 | 79 | for i in range(N): 80 | maxscore = boxes[i, 4] 81 | maxpos = i 82 | 83 | tx1 = boxes[i,0] 84 | ty1 = boxes[i,1] 85 | tx2 = boxes[i,2] 86 | ty2 = boxes[i,3] 87 | ts = boxes[i,4] 88 | 89 | pos = i + 1 90 | # get max box 91 | while pos < N: 92 | if maxscore < boxes[pos, 4]: 93 | maxscore = boxes[pos, 4] 94 | maxpos = pos 95 | pos = pos + 1 96 | 97 | # add max box as a detection 98 | boxes[i,0] = boxes[maxpos,0] 99 | boxes[i,1] = boxes[maxpos,1] 100 | boxes[i,2] = boxes[maxpos,2] 101 | boxes[i,3] = boxes[maxpos,3] 102 | boxes[i,4] = boxes[maxpos,4] 103 | 104 | # swap ith box with position of max box 105 | boxes[maxpos,0] = tx1 106 | boxes[maxpos,1] = ty1 107 | boxes[maxpos,2] = tx2 108 | boxes[maxpos,3] = ty2 109 | boxes[maxpos,4] = ts 110 | 111 | tx1 = boxes[i,0] 112 | ty1 = boxes[i,1] 113 | tx2 = boxes[i,2] 114 | ty2 = boxes[i,3] 115 | ts = boxes[i,4] 116 | 117 | pos = i + 1 118 | # NMS iterations, note that N changes if detection boxes fall below threshold 119 | while pos < N: 120 | x1 = boxes[pos, 0] 121 | y1 = boxes[pos, 1] 122 | x2 = boxes[pos, 2] 123 | y2 = boxes[pos, 3] 124 | s = boxes[pos, 4] 125 | 126 | area = (x2 - x1 + 1) * (y2 - y1 + 1) 127 | iw = (min(tx2, x2) - max(tx1, x1) + 1) 128 | if iw > 0: 129 | ih = (min(ty2, y2) - max(ty1, y1) + 1) 130 | if ih > 0: 131 | ua = float((tx2 - tx1 + 1) * (ty2 - ty1 + 1) + area - iw * ih) 132 | ov = iw * ih / ua #iou between max box and detection box 133 | 134 | if method == 1: # linear 135 | if ov > Nt: 136 | weight = 1 - ov 137 | else: 138 | weight = 1 139 | elif method == 2: # gaussian 140 | weight = np.exp(-(ov * ov)/sigma) 141 | else: # original NMS 142 | if ov > Nt: 143 | weight = 0 144 | else: 145 | weight = 1 146 | 147 | boxes[pos, 4] = weight*boxes[pos, 4] 148 | 149 | # if box score falls below threshold, discard the box by swapping with last box 150 | # update N 151 | if boxes[pos, 4] < threshold: 152 | boxes[pos,0] = boxes[N-1, 0] 153 | boxes[pos,1] = boxes[N-1, 1] 154 | boxes[pos,2] = boxes[N-1, 2] 155 | boxes[pos,3] = boxes[N-1, 3] 156 | boxes[pos,4] = boxes[N-1, 4] 157 | N = N - 1 158 | pos = pos - 1 159 | 160 | pos = pos + 1 161 | 162 | keep = [i for i in range(N)] 163 | return keep 164 | -------------------------------------------------------------------------------- /utils/nms/gpu_nms.hpp: -------------------------------------------------------------------------------- 1 | void _nms(int* keep_out, int* num_out, const float* boxes_host, int boxes_num, 2 | int boxes_dim, float nms_overlap_thresh, int device_id); 3 | -------------------------------------------------------------------------------- /utils/nms/gpu_nms.pyx: -------------------------------------------------------------------------------- 1 | # -------------------------------------------------------- 2 | # Faster R-CNN 3 | # Copyright (c) 2015 Microsoft 4 | # Licensed under The MIT License [see LICENSE for details] 5 | # Written by Ross Girshick 6 | # -------------------------------------------------------- 7 | 8 | import numpy as np 9 | cimport numpy as np 10 | 11 | assert sizeof(int) == sizeof(np.int32_t) 12 | 13 | cdef extern from "gpu_nms.hpp": 14 | void _nms(np.int32_t*, int*, np.float32_t*, int, int, float, int) 15 | 16 | def gpu_nms(np.ndarray[np.float32_t, ndim=2] dets, np.float thresh, 17 | np.int32_t device_id=0): 18 | cdef int boxes_num = dets.shape[0] 19 | cdef int boxes_dim = dets.shape[1] 20 | cdef int num_out 21 | cdef np.ndarray[np.int32_t, ndim=1] \ 22 | keep = np.zeros(boxes_num, dtype=np.int32) 23 | cdef np.ndarray[np.float32_t, ndim=1] \ 24 | scores = dets[:, 4] 25 | cdef np.ndarray[np.int_t, ndim=1] \ 26 | order = scores.argsort()[::-1] 27 | cdef np.ndarray[np.float32_t, ndim=2] \ 28 | sorted_dets = dets[order, :] 29 | _nms(&keep[0], &num_out, &sorted_dets[0, 0], boxes_num, boxes_dim, thresh, device_id) 30 | keep = keep[:num_out] 31 | return list(order[keep]) 32 | -------------------------------------------------------------------------------- /utils/nms/nms_kernel.cu: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Faster R-CNN 3 | // Copyright (c) 2015 Microsoft 4 | // Licensed under The MIT License [see fast-rcnn/LICENSE for details] 5 | // Written by Shaoqing Ren 6 | // ------------------------------------------------------------------ 7 | 8 | #include "gpu_nms.hpp" 9 | #include 10 | #include 11 | 12 | #define CUDA_CHECK(condition) \ 13 | /* Code block avoids redefinition of cudaError_t error */ \ 14 | do { \ 15 | cudaError_t error = condition; \ 16 | if (error != cudaSuccess) { \ 17 | std::cout << cudaGetErrorString(error) << std::endl; \ 18 | } \ 19 | } while (0) 20 | 21 | #define DIVUP(m,n) ((m) / (n) + ((m) % (n) > 0)) 22 | int const threadsPerBlock = sizeof(unsigned long long) * 8; 23 | 24 | __device__ inline float devIoU(float const * const a, float const * const b) { 25 | float left = max(a[0], b[0]), right = min(a[2], b[2]); 26 | float top = max(a[1], b[1]), bottom = min(a[3], b[3]); 27 | float width = max(right - left + 1, 0.f), height = max(bottom - top + 1, 0.f); 28 | float interS = width * height; 29 | float Sa = (a[2] - a[0] + 1) * (a[3] - a[1] + 1); 30 | float Sb = (b[2] - b[0] + 1) * (b[3] - b[1] + 1); 31 | return interS / (Sa + Sb - interS); 32 | } 33 | 34 | __global__ void nms_kernel(const int n_boxes, const float nms_overlap_thresh, 35 | const float *dev_boxes, unsigned long long *dev_mask) { 36 | const int row_start = blockIdx.y; 37 | const int col_start = blockIdx.x; 38 | 39 | // if (row_start > col_start) return; 40 | 41 | const int row_size = 42 | min(n_boxes - row_start * threadsPerBlock, threadsPerBlock); 43 | const int col_size = 44 | min(n_boxes - col_start * threadsPerBlock, threadsPerBlock); 45 | 46 | __shared__ float block_boxes[threadsPerBlock * 5]; 47 | if (threadIdx.x < col_size) { 48 | block_boxes[threadIdx.x * 5 + 0] = 49 | dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 5 + 0]; 50 | block_boxes[threadIdx.x * 5 + 1] = 51 | dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 5 + 1]; 52 | block_boxes[threadIdx.x * 5 + 2] = 53 | dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 5 + 2]; 54 | block_boxes[threadIdx.x * 5 + 3] = 55 | dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 5 + 3]; 56 | block_boxes[threadIdx.x * 5 + 4] = 57 | dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 5 + 4]; 58 | } 59 | __syncthreads(); 60 | 61 | if (threadIdx.x < row_size) { 62 | const int cur_box_idx = threadsPerBlock * row_start + threadIdx.x; 63 | const float *cur_box = dev_boxes + cur_box_idx * 5; 64 | int i = 0; 65 | unsigned long long t = 0; 66 | int start = 0; 67 | if (row_start == col_start) { 68 | start = threadIdx.x + 1; 69 | } 70 | for (i = start; i < col_size; i++) { 71 | if (devIoU(cur_box, block_boxes + i * 5) > nms_overlap_thresh) { 72 | t |= 1ULL << i; 73 | } 74 | } 75 | const int col_blocks = DIVUP(n_boxes, threadsPerBlock); 76 | dev_mask[cur_box_idx * col_blocks + col_start] = t; 77 | } 78 | } 79 | 80 | void _set_device(int device_id) { 81 | int current_device; 82 | CUDA_CHECK(cudaGetDevice(¤t_device)); 83 | if (current_device == device_id) { 84 | return; 85 | } 86 | // The call to cudaSetDevice must come before any calls to Get, which 87 | // may perform initialization using the GPU. 88 | CUDA_CHECK(cudaSetDevice(device_id)); 89 | } 90 | 91 | void _nms(int* keep_out, int* num_out, const float* boxes_host, int boxes_num, 92 | int boxes_dim, float nms_overlap_thresh, int device_id) { 93 | _set_device(device_id); 94 | 95 | float* boxes_dev = NULL; 96 | unsigned long long* mask_dev = NULL; 97 | 98 | const int col_blocks = DIVUP(boxes_num, threadsPerBlock); 99 | 100 | CUDA_CHECK(cudaMalloc(&boxes_dev, 101 | boxes_num * boxes_dim * sizeof(float))); 102 | CUDA_CHECK(cudaMemcpy(boxes_dev, 103 | boxes_host, 104 | boxes_num * boxes_dim * sizeof(float), 105 | cudaMemcpyHostToDevice)); 106 | 107 | CUDA_CHECK(cudaMalloc(&mask_dev, 108 | boxes_num * col_blocks * sizeof(unsigned long long))); 109 | 110 | dim3 blocks(DIVUP(boxes_num, threadsPerBlock), 111 | DIVUP(boxes_num, threadsPerBlock)); 112 | dim3 threads(threadsPerBlock); 113 | nms_kernel<<>>(boxes_num, 114 | nms_overlap_thresh, 115 | boxes_dev, 116 | mask_dev); 117 | 118 | std::vector mask_host(boxes_num * col_blocks); 119 | CUDA_CHECK(cudaMemcpy(&mask_host[0], 120 | mask_dev, 121 | sizeof(unsigned long long) * boxes_num * col_blocks, 122 | cudaMemcpyDeviceToHost)); 123 | 124 | std::vector remv(col_blocks); 125 | memset(&remv[0], 0, sizeof(unsigned long long) * col_blocks); 126 | 127 | int num_to_keep = 0; 128 | for (int i = 0; i < boxes_num; i++) { 129 | int nblock = i / threadsPerBlock; 130 | int inblock = i % threadsPerBlock; 131 | 132 | if (!(remv[nblock] & (1ULL << inblock))) { 133 | keep_out[num_to_keep++] = i; 134 | unsigned long long *p = &mask_host[0] + i * col_blocks; 135 | for (int j = nblock; j < col_blocks; j++) { 136 | remv[j] |= p[j]; 137 | } 138 | } 139 | } 140 | *num_out = num_to_keep; 141 | 142 | CUDA_CHECK(cudaFree(boxes_dev)); 143 | CUDA_CHECK(cudaFree(mask_dev)); 144 | } 145 | -------------------------------------------------------------------------------- /utils/nms/py_cpu_nms.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------------------- 2 | # Fast R-CNN 3 | # Copyright (c) 2015 Microsoft 4 | # Licensed under The MIT License [see LICENSE for details] 5 | # Written by Ross Girshick 6 | # -------------------------------------------------------- 7 | 8 | import numpy as np 9 | 10 | def py_cpu_nms(dets, thresh): 11 | """Pure Python NMS baseline.""" 12 | x1 = dets[:, 0] 13 | y1 = dets[:, 1] 14 | x2 = dets[:, 2] 15 | y2 = dets[:, 3] 16 | scores = dets[:, 4] 17 | 18 | areas = (x2 - x1 + 1) * (y2 - y1 + 1) 19 | order = scores.argsort()[::-1] 20 | 21 | keep = [] 22 | while order.size > 0: 23 | i = order[0] 24 | keep.append(i) 25 | xx1 = np.maximum(x1[i], x1[order[1:]]) 26 | yy1 = np.maximum(y1[i], y1[order[1:]]) 27 | xx2 = np.minimum(x2[i], x2[order[1:]]) 28 | yy2 = np.minimum(y2[i], y2[order[1:]]) 29 | 30 | w = np.maximum(0.0, xx2 - xx1 + 1) 31 | h = np.maximum(0.0, yy2 - yy1 + 1) 32 | inter = w * h 33 | ovr = inter / (areas[i] + areas[order[1:]] - inter) 34 | 35 | inds = np.where(ovr <= thresh)[0] 36 | order = order[inds + 1] 37 | 38 | return keep 39 | -------------------------------------------------------------------------------- /utils/nms_wrapper.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------------------- 2 | # Fast R-CNN 3 | # Copyright (c) 2015 Microsoft 4 | # Licensed under The MIT License [see LICENSE for details] 5 | # Written by Ross Girshick 6 | # -------------------------------------------------------- 7 | 8 | from .nms.cpu_nms import cpu_nms, cpu_soft_nms 9 | from .nms.gpu_nms import gpu_nms 10 | 11 | 12 | # def nms(dets, thresh, force_cpu=False): 13 | # """Dispatch to either CPU or GPU NMS implementations.""" 14 | # 15 | # if dets.shape[0] == 0: 16 | # return [] 17 | # if cfg.USE_GPU_NMS and not force_cpu: 18 | # return gpu_nms(dets, thresh, device_id=cfg.GPU_ID) 19 | # else: 20 | # return cpu_nms(dets, thresh) 21 | 22 | 23 | def nms(dets, thresh, force_cpu=False): 24 | """Dispatch to either CPU or GPU NMS implementations.""" 25 | 26 | if dets.shape[0] == 0: 27 | return [] 28 | if force_cpu: 29 | #return cpu_soft_nms(dets, thresh, method = 0) 30 | return cpu_nms(dets, thresh) 31 | return gpu_nms(dets, thresh) 32 | -------------------------------------------------------------------------------- /utils/timer.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------------------- 2 | # Fast R-CNN 3 | # Copyright (c) 2015 Microsoft 4 | # Licensed under The MIT License [see LICENSE for details] 5 | # Written by Ross Girshick 6 | # -------------------------------------------------------- 7 | 8 | import time 9 | 10 | 11 | class Timer(object): 12 | """A simple timer.""" 13 | def __init__(self): 14 | self.total_time = 0. 15 | self.calls = 0 16 | self.start_time = 0. 17 | self.diff = 0. 18 | self.average_time = 0. 19 | 20 | def tic(self): 21 | # using time.time instead of time.clock because time time.clock 22 | # does not normalize for multithreading 23 | self.start_time = time.time() 24 | 25 | def toc(self, average=True): 26 | self.diff = time.time() - self.start_time 27 | self.total_time += self.diff 28 | self.calls += 1 29 | self.average_time = self.total_time / self.calls 30 | if average: 31 | return self.average_time 32 | else: 33 | return self.diff 34 | 35 | def clear(self): 36 | self.total_time = 0. 37 | self.calls = 0 38 | self.start_time = 0. 39 | self.diff = 0. 40 | self.average_time = 0. 41 | --------------------------------------------------------------------------------