Commit 7e0b0e35 authored by Your Name's avatar Your Name
Browse files

提交RetinaFace推理示例

parent 5ba3127f
Pipeline #282 failed with stages
in 0 seconds
# RetinaFace_MIGraphX # RetinaFace
构建RetinaFace推理示例 ## 模型介绍
\ No newline at end of file
RetinaFace是一个经典的人脸检测模型(https://arxiv.org/abs/1905.00641),采用了SSD架构。
## 模型结构
RetinaFace模型 有几个主要特点:
- 采用 FPN 特征金字塔提取多尺度特征;
- 引入 SSH 算法的 Context Modeling;
- 多任务训练,提供额外的监督信息。
## 推理
### 环境配置
[光源](https://www.sourcefind.cn/#/image/dcu/custom)可拉取用于推理的docker镜像,RetinaFace 模型推理推荐的镜像如下:
```
docker pull image.sourcefind.cn:5000/dcu/admin/base/custom:ort_dcu_1.14.0_migraphx2.5.2_dtk22.10.1
```
[光合开发者社区](https://cancon.hpccube.com:65024/4/main/)可下载MIGraphX安装包,python依赖安装:
```
pip install -r requirements.txt
```
安装DTK版的Pytorch和torchvision,下载地址:https://cancon.hpccube.com:65024/4/main/pytorch,https://cancon.hpccube.com:65024/4/main/vision
### 运行示例
RetinaFace模型的推理示例程序是RetinaFace_infer_migraphx.py,使用如下命令运行该推理示例:
```
python RetinaFace_infer_migraphx.py
```
程序运行结束会在当前目录生成RetinaFace检测结果图像。
<img src="./curve/Result.jpg" alt="Result" style="zoom: 50%;" />
## 历史版本
​ https://developer.hpccube.com/codes/modelzoo/retinaface_migraphx
## 参考
​ https://github.com/biubug6/Pytorch_Retinaface
from __future__ import print_function
import os
import argparse
import torch
import torch.backends.cudnn as cudnn
import numpy as np
from data import cfg_mnet, cfg_re50
from layers.functions.prior_box import PriorBox
from utils.nms.py_cpu_nms import py_cpu_nms
import cv2
from utils.box_utils import decode, decode_landm
import time
import migraphx
parser = argparse.ArgumentParser(description='Retinaface')
parser.add_argument('-m', '--trained_model', default='./weights/mobilenet0.25_Final.pth',
type=str, help='Trained state_dict file path to open')
parser.add_argument('--network', default='mobile0.25', help='Backbone network mobile0.25 or resnet50')
parser.add_argument('--cpu', action="store_true", default=False, help='Use cpu inference')
parser.add_argument('--confidence_threshold', default=0.85, type=float, help='confidence_threshold')
parser.add_argument('--top_k', default=5000, type=int, help='top_k')
parser.add_argument('--nms_threshold', default=0.4, type=float, help='nms_threshold')
parser.add_argument('--keep_top_k', default=750, type=int, help='keep_top_k')
parser.add_argument('-s', '--save_image', action="store_true", default=True, help='show detection results')
parser.add_argument('--vis_thres', default=0.6, type=float, help='visualization_threshold')
args = parser.parse_args()
def migraphx_run(model,cpu,data_tensor):
# 将输入的tensor数据转换为numpy
if cpu:
data_numpy=data_tensor.cpu().numpy()
device = torch.device("cpu")
else:
data_numpy=data_tensor.detach().cpu().numpy()
device = torch.device("cuda")
img_data = np.zeros(data_numpy.shape).astype("float32")
for i in range(data_numpy.shape[0]):
img_data[i, :, :, :] = data_numpy[i, :, :, :]
# 执行推理
result = model.run({model.get_parameter_names()[0]: migraphx.argument(img_data)})
# 将结果转换为tensor
result0=torch.from_numpy(np.array(result[0], copy=False)).to(device)
result1=torch.from_numpy(np.array(result[1], copy=False)).to(device)
result2=torch.from_numpy(np.array(result[2], copy=False)).to(device)
return (result0,result1,result2)
if __name__ == '__main__':
# 加载模型
cfg = None
if args.network == "mobile0.25":
cfg = cfg_mnet
elif args.network == "resnet50":
cfg = cfg_re50
device = torch.device("cpu" if args.cpu else "cuda")
model = migraphx.parse_onnx("./FaceDetector.onnx")
inputName=model.get_parameter_names()[0]
inputShape=model.get_parameter_shapes()[inputName].lens()
print("inputName:{0} \ninputShape:{1}".format(inputName,inputShape))
# FP16
# migraphx.quantize_fp16(model)
# 编译
model.compile(t=migraphx.get_target("gpu"),device_id=0) # device_id: 设置GPU设备,默认为0号设备
resize = 1
# testing begin
for i in range(100):
# resize到onnx模型输入大小
image_path = "./curve/test.jpg"
img_raw = cv2.imread(image_path, cv2.IMREAD_COLOR)
img_raw = cv2.resize(img_raw, (640,640))
img = np.float32(img_raw)
im_height, im_width, _ = img.shape
scale = torch.Tensor([img.shape[1], img.shape[0], img.shape[1], img.shape[0]])
img -= (104, 117, 123)
img = img.transpose(2, 0, 1)
img = torch.from_numpy(img).unsqueeze(0)
img = img.to(device)
scale = scale.to(device)
tic = time.time()
loc, conf, landms = migraphx_run(model,args.cpu,img) # forward pass
print('net forward time: {:.4f}'.format(time.time() - tic))
priorbox = PriorBox(cfg, image_size=(im_height, im_width))
priors = priorbox.forward()
priors = priors.to(device)
prior_data = priors.data
boxes = decode(loc.data.squeeze(0), prior_data, cfg['variance'])
boxes = boxes * scale / resize
boxes = boxes.cpu().numpy()
scores = conf.squeeze(0).data.cpu().numpy()[:, 1]
landms = decode_landm(landms.data.squeeze(0), prior_data, cfg['variance'])
scale1 = torch.Tensor([img.shape[3], img.shape[2], img.shape[3], img.shape[2],
img.shape[3], img.shape[2], img.shape[3], img.shape[2],
img.shape[3], img.shape[2]])
scale1 = scale1.to(device)
landms = landms * scale1 / resize
landms = landms.cpu().numpy()
# ignore low scores
inds = np.where(scores > args.confidence_threshold)[0]
boxes = boxes[inds]
landms = landms[inds]
scores = scores[inds]
# keep top-K before NMS
order = scores.argsort()[::-1][:args.top_k]
boxes = boxes[order]
landms = landms[order]
scores = scores[order]
# do NMS
dets = np.hstack((boxes, scores[:, np.newaxis])).astype(np.float32, copy=False)
keep = py_cpu_nms(dets, args.nms_threshold)
# keep = nms(dets, args.nms_threshold,force_cpu=args.cpu)
dets = dets[keep, :]
landms = landms[keep]
# keep top-K faster NMS
dets = dets[:args.keep_top_k, :]
landms = landms[:args.keep_top_k, :]
dets = np.concatenate((dets, landms), axis=1)
# show image
if args.save_image:
for b in dets:
if b[4] < args.vis_thres:
continue
text = "{:.4f}".format(b[4])
b = list(map(int, b))
cv2.rectangle(img_raw, (b[0], b[1]), (b[2], b[3]), (0, 0, 255), 2)
cx = b[0]
cy = b[1] + 12
cv2.putText(img_raw, text, (cx, cy),
cv2.FONT_HERSHEY_DUPLEX, 0.5, (255, 255, 255))
# landms
cv2.circle(img_raw, (b[5], b[6]), 1, (0, 0, 255), 4)
cv2.circle(img_raw, (b[7], b[8]), 1, (0, 255, 255), 4)
cv2.circle(img_raw, (b[9], b[10]), 1, (255, 0, 255), 4)
cv2.circle(img_raw, (b[11], b[12]), 1, (0, 255, 0), 4)
cv2.circle(img_raw, (b[13], b[14]), 1, (255, 0, 0), 4)
# save image
name = "test.jpg"
cv2.imwrite(name, img_raw)
from __future__ import print_function
import os
import argparse
import torch
import torch.backends.cudnn as cudnn
import numpy as np
from data import cfg_mnet, cfg_re50
from layers.functions.prior_box import PriorBox
from utils.nms.py_cpu_nms import py_cpu_nms
import cv2
from models.retinaface import RetinaFace
from utils.box_utils import decode, decode_landm
from utils.timer import Timer
parser = argparse.ArgumentParser(description='Test')
parser.add_argument('-m', '--trained_model', default='./weights/mobilenet0.25_Final.pth',
type=str, help='Trained state_dict file path to open')
parser.add_argument('--network', default='mobile0.25', help='Backbone network mobile0.25 or resnet50')
parser.add_argument('--long_side', default=640, help='when origin_size is false, long_side is scaled size(320 or 640 for long side)')
parser.add_argument('--cpu', action="store_true", default=True, help='Use cpu inference')
args = parser.parse_args()
def check_keys(model, pretrained_state_dict):
ckpt_keys = set(pretrained_state_dict.keys())
model_keys = set(model.state_dict().keys())
used_pretrained_keys = model_keys & ckpt_keys
unused_pretrained_keys = ckpt_keys - model_keys
missing_keys = model_keys - ckpt_keys
print('Missing keys:{}'.format(len(missing_keys)))
print('Unused checkpoint keys:{}'.format(len(unused_pretrained_keys)))
print('Used keys:{}'.format(len(used_pretrained_keys)))
assert len(used_pretrained_keys) > 0, 'load NONE from pretrained checkpoint'
return True
def remove_prefix(state_dict, prefix):
''' Old style model is stored with all names of parameters sharing common prefix 'module.' '''
print('remove prefix \'{}\''.format(prefix))
f = lambda x: x.split(prefix, 1)[-1] if x.startswith(prefix) else x
return {f(key): value for key, value in state_dict.items()}
def load_model(model, pretrained_path, load_to_cpu):
print('Loading pretrained model from {}'.format(pretrained_path))
if load_to_cpu:
pretrained_dict = torch.load(pretrained_path, map_location=lambda storage, loc: storage)
else:
device = torch.cuda.current_device()
pretrained_dict = torch.load(pretrained_path, map_location=lambda storage, loc: storage.cuda(device))
if "state_dict" in pretrained_dict.keys():
pretrained_dict = remove_prefix(pretrained_dict['state_dict'], 'module.')
else:
pretrained_dict = remove_prefix(pretrained_dict, 'module.')
check_keys(model, pretrained_dict)
model.load_state_dict(pretrained_dict, strict=False)
return model
if __name__ == '__main__':
torch.set_grad_enabled(False)
cfg = None
if args.network == "mobile0.25":
cfg = cfg_mnet
elif args.network == "resnet50":
cfg = cfg_re50
# net and model
net = RetinaFace(cfg=cfg, phase = 'test')
net = load_model(net, args.trained_model, args.cpu)
net.eval()
print('Finished loading model!')
print(net)
device = torch.device("cpu" if args.cpu else "cuda")
net = net.to(device)
# ------------------------ export -----------------------------
output_onnx = 'FaceDetector.onnx'
print("==> Exporting model to ONNX format at '{}'".format(output_onnx))
input_names = ["input0"]
output_names = ["output0"]
inputs = torch.randn(1, 3, args.long_side, args.long_side).to(device)
torch_out = torch.onnx._export(net, inputs, output_onnx, export_params=True, verbose=False,
input_names=input_names, output_names=output_names)
2002/08/11/big/img_591
2002/08/26/big/img_265
2002/07/19/big/img_423
2002/08/24/big/img_490
2002/08/31/big/img_17676
2002/07/31/big/img_228
2002/07/24/big/img_402
2002/08/04/big/img_769
2002/07/19/big/img_581
2002/08/13/big/img_723
2002/08/12/big/img_821
2003/01/17/big/img_610
2002/08/13/big/img_1116
2002/08/28/big/img_19238
2002/08/21/big/img_660
2002/08/14/big/img_607
2002/08/05/big/img_3708
2002/08/19/big/img_511
2002/08/07/big/img_1316
2002/07/25/big/img_1047
2002/07/23/big/img_474
2002/07/27/big/img_970
2002/09/02/big/img_15752
2002/09/01/big/img_16378
2002/09/01/big/img_16189
2002/08/26/big/img_276
2002/07/24/big/img_518
2002/08/14/big/img_1027
2002/08/24/big/img_733
2002/08/15/big/img_249
2003/01/15/big/img_1371
2002/08/07/big/img_1348
2003/01/01/big/img_331
2002/08/23/big/img_536
2002/07/30/big/img_224
2002/08/10/big/img_763
2002/08/21/big/img_293
2002/08/15/big/img_1211
2002/08/15/big/img_1194
2003/01/15/big/img_390
2002/08/06/big/img_2893
2002/08/17/big/img_691
2002/08/07/big/img_1695
2002/08/16/big/img_829
2002/07/25/big/img_201
2002/08/23/big/img_36
2003/01/15/big/img_763
2003/01/15/big/img_637
2002/08/22/big/img_592
2002/07/25/big/img_817
2003/01/15/big/img_1219
2002/08/05/big/img_3508
2002/08/15/big/img_1108
2002/07/19/big/img_488
2003/01/16/big/img_704
2003/01/13/big/img_1087
2002/08/10/big/img_670
2002/07/24/big/img_104
2002/08/27/big/img_19823
2002/09/01/big/img_16229
2003/01/13/big/img_846
2002/08/04/big/img_412
2002/07/22/big/img_554
2002/08/12/big/img_331
2002/08/02/big/img_533
2002/08/12/big/img_259
2002/08/18/big/img_328
2003/01/14/big/img_630
2002/08/05/big/img_3541
2002/08/06/big/img_2390
2002/08/20/big/img_150
2002/08/02/big/img_1231
2002/08/16/big/img_710
2002/08/19/big/img_591
2002/07/22/big/img_725
2002/07/24/big/img_820
2003/01/13/big/img_568
2002/08/22/big/img_853
2002/08/09/big/img_648
2002/08/23/big/img_528
2003/01/14/big/img_888
2002/08/30/big/img_18201
2002/08/13/big/img_965
2003/01/14/big/img_660
2002/07/19/big/img_517
2003/01/14/big/img_406
2002/08/30/big/img_18433
2002/08/07/big/img_1630
2002/08/06/big/img_2717
2002/08/21/big/img_470
2002/07/23/big/img_633
2002/08/20/big/img_915
2002/08/16/big/img_893
2002/07/29/big/img_644
2002/08/15/big/img_529
2002/08/16/big/img_668
2002/08/07/big/img_1871
2002/07/25/big/img_192
2002/07/31/big/img_961
2002/08/19/big/img_738
2002/07/31/big/img_382
2002/08/19/big/img_298
2003/01/17/big/img_608
2002/08/21/big/img_514
2002/07/23/big/img_183
2003/01/17/big/img_536
2002/07/24/big/img_478
2002/08/06/big/img_2997
2002/09/02/big/img_15380
2002/08/07/big/img_1153
2002/07/31/big/img_967
2002/07/31/big/img_711
2002/08/26/big/img_664
2003/01/01/big/img_326
2002/08/24/big/img_775
2002/08/08/big/img_961
2002/08/16/big/img_77
2002/08/12/big/img_296
2002/07/22/big/img_905
2003/01/13/big/img_284
2002/08/13/big/img_887
2002/08/24/big/img_849
2002/07/30/big/img_345
2002/08/18/big/img_419
2002/08/01/big/img_1347
2002/08/05/big/img_3670
2002/07/21/big/img_479
2002/08/08/big/img_913
2002/09/02/big/img_15828
2002/08/30/big/img_18194
2002/08/08/big/img_471
2002/08/22/big/img_734
2002/08/09/big/img_586
2002/08/09/big/img_454
2002/07/29/big/img_47
2002/07/19/big/img_381
2002/07/29/big/img_733
2002/08/20/big/img_327
2002/07/21/big/img_96
2002/08/06/big/img_2680
2002/07/25/big/img_919
2002/07/21/big/img_158
2002/07/22/big/img_801
2002/07/22/big/img_567
2002/07/24/big/img_804
2002/07/24/big/img_690
2003/01/15/big/img_576
2002/08/14/big/img_335
2003/01/13/big/img_390
2002/08/11/big/img_258
2002/07/23/big/img_917
2002/08/15/big/img_525
2003/01/15/big/img_505
2002/07/30/big/img_886
2003/01/16/big/img_640
2003/01/14/big/img_642
2003/01/17/big/img_844
2002/08/04/big/img_571
2002/08/29/big/img_18702
2003/01/15/big/img_240
2002/07/29/big/img_553
2002/08/10/big/img_354
2002/08/18/big/img_17
2003/01/15/big/img_782
2002/07/27/big/img_382
2002/08/14/big/img_970
2003/01/16/big/img_70
2003/01/16/big/img_625
2002/08/18/big/img_341
2002/08/26/big/img_188
2002/08/09/big/img_405
2002/08/02/big/img_37
2002/08/13/big/img_748
2002/07/22/big/img_399
2002/07/25/big/img_844
2002/08/12/big/img_340
2003/01/13/big/img_815
2002/08/26/big/img_5
2002/08/10/big/img_158
2002/08/18/big/img_95
2002/07/29/big/img_1297
2003/01/13/big/img_508
2002/09/01/big/img_16680
2003/01/16/big/img_338
2002/08/13/big/img_517
2002/07/22/big/img_626
2002/08/06/big/img_3024
2002/07/26/big/img_499
2003/01/13/big/img_387
2002/08/31/big/img_18025
2002/08/13/big/img_520
2003/01/16/big/img_576
2002/07/26/big/img_121
2002/08/25/big/img_703
2002/08/26/big/img_615
2002/08/17/big/img_434
2002/08/02/big/img_677
2002/08/18/big/img_276
2002/08/05/big/img_3672
2002/07/26/big/img_700
2002/07/31/big/img_277
2003/01/14/big/img_220
2002/08/23/big/img_232
2002/08/31/big/img_17422
2002/07/22/big/img_508
2002/08/13/big/img_681
2003/01/15/big/img_638
2002/08/30/big/img_18408
2003/01/14/big/img_533
2003/01/17/big/img_12
2002/08/28/big/img_19388
2002/08/08/big/img_133
2002/07/26/big/img_885
2002/08/19/big/img_387
2002/08/27/big/img_19976
2002/08/26/big/img_118
2002/08/28/big/img_19146
2002/08/05/big/img_3259
2002/08/15/big/img_536
2002/07/22/big/img_279
2002/07/22/big/img_9
2002/08/13/big/img_301
2002/08/15/big/img_974
2002/08/06/big/img_2355
2002/08/01/big/img_1526
2002/08/03/big/img_417
2002/08/04/big/img_407
2002/08/15/big/img_1029
2002/07/29/big/img_700
2002/08/01/big/img_1463
2002/08/31/big/img_17365
2002/07/28/big/img_223
2002/07/19/big/img_827
2002/07/27/big/img_531
2002/07/19/big/img_845
2002/08/20/big/img_382
2002/07/31/big/img_268
2002/08/27/big/img_19705
2002/08/02/big/img_830
2002/08/23/big/img_250
2002/07/20/big/img_777
2002/08/21/big/img_879
2002/08/26/big/img_20146
2002/08/23/big/img_789
2002/08/06/big/img_2683
2002/08/25/big/img_576
2002/08/09/big/img_498
2002/08/08/big/img_384
2002/08/26/big/img_592
2002/07/29/big/img_1470
2002/08/21/big/img_452
2002/08/30/big/img_18395
2002/08/15/big/img_215
2002/07/21/big/img_643
2002/07/22/big/img_209
2003/01/17/big/img_346
2002/08/25/big/img_658
2002/08/21/big/img_221
2002/08/14/big/img_60
2003/01/17/big/img_885
2003/01/16/big/img_482
2002/08/19/big/img_593
2002/08/08/big/img_233
2002/07/30/big/img_458
2002/07/23/big/img_384
2003/01/15/big/img_670
2003/01/15/big/img_267
2002/08/26/big/img_540
2002/07/29/big/img_552
2002/07/30/big/img_997
2003/01/17/big/img_377
2002/08/21/big/img_265
2002/08/09/big/img_561
2002/07/31/big/img_945
2002/09/02/big/img_15252
2002/08/11/big/img_276
2002/07/22/big/img_491
2002/07/26/big/img_517
2002/08/14/big/img_726
2002/08/08/big/img_46
2002/08/28/big/img_19458
2002/08/06/big/img_2935
2002/07/29/big/img_1392
2002/08/13/big/img_776
2002/08/24/big/img_616
2002/08/14/big/img_1065
2002/07/29/big/img_889
2002/08/18/big/img_188
2002/08/07/big/img_1453
2002/08/02/big/img_760
2002/07/28/big/img_416
2002/08/07/big/img_1393
2002/08/26/big/img_292
2002/08/26/big/img_301
2003/01/13/big/img_195
2002/07/26/big/img_532
2002/08/20/big/img_550
2002/08/05/big/img_3658
2002/08/26/big/img_738
2002/09/02/big/img_15750
2003/01/17/big/img_451
2002/07/23/big/img_339
2002/08/16/big/img_637
2002/08/14/big/img_748
2002/08/06/big/img_2739
2002/07/25/big/img_482
2002/08/19/big/img_191
2002/08/26/big/img_537
2003/01/15/big/img_716
2003/01/15/big/img_767
2002/08/02/big/img_452
2002/08/08/big/img_1011
2002/08/10/big/img_144
2003/01/14/big/img_122
2002/07/24/big/img_586
2002/07/24/big/img_762
2002/08/20/big/img_369
2002/07/30/big/img_146
2002/08/23/big/img_396
2003/01/15/big/img_200
2002/08/15/big/img_1183
2003/01/14/big/img_698
2002/08/09/big/img_792
2002/08/06/big/img_2347
2002/07/31/big/img_911
2002/08/26/big/img_722
2002/08/23/big/img_621
2002/08/05/big/img_3790
2003/01/13/big/img_633
2002/08/09/big/img_224
2002/07/24/big/img_454
2002/07/21/big/img_202
2002/08/02/big/img_630
2002/08/30/big/img_18315
2002/07/19/big/img_491
2002/09/01/big/img_16456
2002/08/09/big/img_242
2002/07/25/big/img_595
2002/07/22/big/img_522
2002/08/01/big/img_1593
2002/07/29/big/img_336
2002/08/15/big/img_448
2002/08/28/big/img_19281
2002/07/29/big/img_342
2002/08/12/big/img_78
2003/01/14/big/img_525
2002/07/28/big/img_147
2002/08/11/big/img_353
2002/08/22/big/img_513
2002/08/04/big/img_721
2002/08/17/big/img_247
2003/01/14/big/img_891
2002/08/20/big/img_853
2002/07/19/big/img_414
2002/08/01/big/img_1530
2003/01/14/big/img_924
2002/08/22/big/img_468
2002/08/18/big/img_354
2002/08/30/big/img_18193
2002/08/23/big/img_492
2002/08/15/big/img_871
2002/08/12/big/img_494
2002/08/06/big/img_2470
2002/07/23/big/img_923
2002/08/26/big/img_155
2002/08/08/big/img_669
2002/07/23/big/img_404
2002/08/28/big/img_19421
2002/08/29/big/img_18993
2002/08/25/big/img_416
2003/01/17/big/img_434
2002/07/29/big/img_1370
2002/07/28/big/img_483
2002/08/11/big/img_50
2002/08/10/big/img_404
2002/09/02/big/img_15057
2003/01/14/big/img_911
2002/09/01/big/img_16697
2003/01/16/big/img_665
2002/09/01/big/img_16708
2002/08/22/big/img_612
2002/08/28/big/img_19471
2002/08/02/big/img_198
2003/01/16/big/img_527
2002/08/22/big/img_209
2002/08/30/big/img_18205
2003/01/14/big/img_114
2003/01/14/big/img_1028
2003/01/16/big/img_894
2003/01/14/big/img_837
2002/07/30/big/img_9
2002/08/06/big/img_2821
2002/08/04/big/img_85
2003/01/13/big/img_884
2002/07/22/big/img_570
2002/08/07/big/img_1773
2002/07/26/big/img_208
2003/01/17/big/img_946
2002/07/19/big/img_930
2003/01/01/big/img_698
2003/01/17/big/img_612
2002/07/19/big/img_372
2002/07/30/big/img_721
2003/01/14/big/img_649
2002/08/19/big/img_4
2002/07/25/big/img_1024
2003/01/15/big/img_601
2002/08/30/big/img_18470
2002/07/22/big/img_29
2002/08/07/big/img_1686
2002/07/20/big/img_294
2002/08/14/big/img_800
2002/08/19/big/img_353
2002/08/19/big/img_350
2002/08/05/big/img_3392
2002/08/09/big/img_622
2003/01/15/big/img_236
2002/08/11/big/img_643
2002/08/05/big/img_3458
2002/08/12/big/img_413
2002/08/22/big/img_415
2002/08/13/big/img_635
2002/08/07/big/img_1198
2002/08/04/big/img_873
2002/08/12/big/img_407
2003/01/15/big/img_346
2002/08/02/big/img_275
2002/08/17/big/img_997
2002/08/21/big/img_958
2002/08/20/big/img_579
2002/07/29/big/img_142
2003/01/14/big/img_1115
2002/08/16/big/img_365
2002/07/29/big/img_1414
2002/08/17/big/img_489
2002/08/13/big/img_1010
2002/07/31/big/img_276
2002/07/25/big/img_1000
2002/08/23/big/img_524
2002/08/28/big/img_19147
2003/01/13/big/img_433
2002/08/20/big/img_205
2003/01/01/big/img_458
2002/07/29/big/img_1449
2003/01/16/big/img_696
2002/08/28/big/img_19296
2002/08/29/big/img_18688
2002/08/21/big/img_767
2002/08/20/big/img_532
2002/08/26/big/img_187
2002/07/26/big/img_183
2002/07/27/big/img_890
2003/01/13/big/img_576
2002/07/30/big/img_15
2002/07/31/big/img_889
2002/08/31/big/img_17759
2003/01/14/big/img_1114
2002/07/19/big/img_445
2002/08/03/big/img_593
2002/07/24/big/img_750
2002/07/30/big/img_133
2002/08/25/big/img_671
2002/07/20/big/img_351
2002/08/31/big/img_17276
2002/08/05/big/img_3231
2002/09/02/big/img_15882
2002/08/14/big/img_115
2002/08/02/big/img_1148
2002/07/25/big/img_936
2002/07/31/big/img_639
2002/08/04/big/img_427
2002/08/22/big/img_843
2003/01/17/big/img_17
2003/01/13/big/img_690
2002/08/13/big/img_472
2002/08/09/big/img_425
2002/08/05/big/img_3450
2003/01/17/big/img_439
2002/08/13/big/img_539
2002/07/28/big/img_35
2002/08/16/big/img_241
2002/08/06/big/img_2898
2003/01/16/big/img_429
2002/08/05/big/img_3817
2002/08/27/big/img_19919
2002/07/19/big/img_422
2002/08/15/big/img_560
2002/07/23/big/img_750
2002/07/30/big/img_353
2002/08/05/big/img_43
2002/08/23/big/img_305
2002/08/01/big/img_2137
2002/08/30/big/img_18097
2002/08/01/big/img_1389
2002/08/02/big/img_308
2003/01/14/big/img_652
2002/08/01/big/img_1798
2003/01/14/big/img_732
2003/01/16/big/img_294
2002/08/26/big/img_213
2002/07/24/big/img_842
2003/01/13/big/img_630
2003/01/13/big/img_634
2002/08/06/big/img_2285
2002/08/01/big/img_2162
2002/08/30/big/img_18134
2002/08/02/big/img_1045
2002/08/01/big/img_2143
2002/07/25/big/img_135
2002/07/20/big/img_645
2002/08/05/big/img_3666
2002/08/14/big/img_523
2002/08/04/big/img_425
2003/01/14/big/img_137
2003/01/01/big/img_176
2002/08/15/big/img_505
2002/08/24/big/img_386
2002/08/05/big/img_3187
2002/08/15/big/img_419
2003/01/13/big/img_520
2002/08/04/big/img_444
2002/08/26/big/img_483
2002/08/05/big/img_3449
2002/08/30/big/img_18409
2002/08/28/big/img_19455
2002/08/27/big/img_20090
2002/07/23/big/img_625
2002/08/24/big/img_205
2002/08/08/big/img_938
2003/01/13/big/img_527
2002/08/07/big/img_1712
2002/07/24/big/img_801
2002/08/09/big/img_579
2003/01/14/big/img_41
2003/01/15/big/img_1130
2002/07/21/big/img_672
2002/08/07/big/img_1590
2003/01/01/big/img_532
2002/08/02/big/img_529
2002/08/05/big/img_3591
2002/08/23/big/img_5
2003/01/14/big/img_882
2002/08/28/big/img_19234
2002/07/24/big/img_398
2003/01/14/big/img_592
2002/08/22/big/img_548
2002/08/12/big/img_761
2003/01/16/big/img_497
2002/08/18/big/img_133
2002/08/08/big/img_874
2002/07/19/big/img_247
2002/08/15/big/img_170
2002/08/27/big/img_19679
2002/08/20/big/img_246
2002/08/24/big/img_358
2002/07/29/big/img_599
2002/08/01/big/img_1555
2002/07/30/big/img_491
2002/07/30/big/img_371
2003/01/16/big/img_682
2002/07/25/big/img_619
2003/01/15/big/img_587
2002/08/02/big/img_1212
2002/08/01/big/img_2152
2002/07/25/big/img_668
2003/01/16/big/img_574
2002/08/28/big/img_19464
2002/08/11/big/img_536
2002/07/24/big/img_201
2002/08/05/big/img_3488
2002/07/25/big/img_887
2002/07/22/big/img_789
2002/07/30/big/img_432
2002/08/16/big/img_166
2002/09/01/big/img_16333
2002/07/26/big/img_1010
2002/07/21/big/img_793
2002/07/22/big/img_720
2002/07/31/big/img_337
2002/07/27/big/img_185
2002/08/23/big/img_440
2002/07/31/big/img_801
2002/07/25/big/img_478
2003/01/14/big/img_171
2002/08/07/big/img_1054
2002/09/02/big/img_15659
2002/07/29/big/img_1348
2002/08/09/big/img_337
2002/08/26/big/img_684
2002/07/31/big/img_537
2002/08/15/big/img_808
2003/01/13/big/img_740
2002/08/07/big/img_1667
2002/08/03/big/img_404
2002/08/06/big/img_2520
2002/07/19/big/img_230
2002/07/19/big/img_356
2003/01/16/big/img_627
2002/08/04/big/img_474
2002/07/29/big/img_833
2002/07/25/big/img_176
2002/08/01/big/img_1684
2002/08/21/big/img_643
2002/08/27/big/img_19673
2002/08/02/big/img_838
2002/08/06/big/img_2378
2003/01/15/big/img_48
2002/07/30/big/img_470
2002/08/15/big/img_963
2002/08/24/big/img_444
2002/08/16/big/img_662
2002/08/15/big/img_1209
2002/07/24/big/img_25
2002/08/06/big/img_2740
2002/07/29/big/img_996
2002/08/31/big/img_18074
2002/08/04/big/img_343
2003/01/17/big/img_509
2003/01/13/big/img_726
2002/08/07/big/img_1466
2002/07/26/big/img_307
2002/08/10/big/img_598
2002/08/13/big/img_890
2002/08/14/big/img_997
2002/07/19/big/img_392
2002/08/02/big/img_475
2002/08/29/big/img_19038
2002/07/29/big/img_538
2002/07/29/big/img_502
2002/08/02/big/img_364
2002/08/31/big/img_17353
2002/08/08/big/img_539
2002/08/01/big/img_1449
2002/07/22/big/img_363
2002/08/02/big/img_90
2002/09/01/big/img_16867
2002/08/05/big/img_3371
2002/07/30/big/img_342
2002/08/07/big/img_1363
2002/08/22/big/img_790
2003/01/15/big/img_404
2002/08/05/big/img_3447
2002/09/01/big/img_16167
2003/01/13/big/img_840
2002/08/22/big/img_1001
2002/08/09/big/img_431
2002/07/27/big/img_618
2002/07/31/big/img_741
2002/07/30/big/img_964
2002/07/25/big/img_86
2002/07/29/big/img_275
2002/08/21/big/img_921
2002/07/26/big/img_892
2002/08/21/big/img_663
2003/01/13/big/img_567
2003/01/14/big/img_719
2002/07/28/big/img_251
2003/01/15/big/img_1123
2002/07/29/big/img_260
2002/08/24/big/img_337
2002/08/01/big/img_1914
2002/08/13/big/img_373
2003/01/15/big/img_589
2002/08/13/big/img_906
2002/07/26/big/img_270
2002/08/26/big/img_313
2002/08/25/big/img_694
2003/01/01/big/img_327
2002/07/23/big/img_261
2002/08/26/big/img_642
2002/07/29/big/img_918
2002/07/23/big/img_455
2002/07/24/big/img_612
2002/07/23/big/img_534
2002/07/19/big/img_534
2002/07/19/big/img_726
2002/08/01/big/img_2146
2002/08/02/big/img_543
2003/01/16/big/img_777
2002/07/30/big/img_484
2002/08/13/big/img_1161
2002/07/21/big/img_390
2002/08/06/big/img_2288
2002/08/21/big/img_677
2002/08/13/big/img_747
2002/08/15/big/img_1248
2002/07/31/big/img_416
2002/09/02/big/img_15259
2002/08/16/big/img_781
2002/08/24/big/img_754
2002/07/24/big/img_803
2002/08/20/big/img_609
2002/08/28/big/img_19571
2002/09/01/big/img_16140
2002/08/26/big/img_769
2002/07/20/big/img_588
2002/08/02/big/img_898
2002/07/21/big/img_466
2002/08/14/big/img_1046
2002/07/25/big/img_212
2002/08/26/big/img_353
2002/08/19/big/img_810
2002/08/31/big/img_17824
2002/08/12/big/img_631
2002/07/19/big/img_828
2002/07/24/big/img_130
2002/08/25/big/img_580
2002/07/31/big/img_699
2002/07/23/big/img_808
2002/07/31/big/img_377
2003/01/16/big/img_570
2002/09/01/big/img_16254
2002/07/21/big/img_471
2002/08/01/big/img_1548
2002/08/18/big/img_252
2002/08/19/big/img_576
2002/08/20/big/img_464
2002/07/27/big/img_735
2002/08/21/big/img_589
2003/01/15/big/img_1192
2002/08/09/big/img_302
2002/07/31/big/img_594
2002/08/23/big/img_19
2002/08/29/big/img_18819
2002/08/19/big/img_293
2002/07/30/big/img_331
2002/08/23/big/img_607
2002/07/30/big/img_363
2002/08/16/big/img_766
2003/01/13/big/img_481
2002/08/06/big/img_2515
2002/09/02/big/img_15913
2002/09/02/big/img_15827
2002/09/02/big/img_15053
2002/08/07/big/img_1576
2002/07/23/big/img_268
2002/08/21/big/img_152
2003/01/15/big/img_578
2002/07/21/big/img_589
2002/07/20/big/img_548
2002/08/27/big/img_19693
2002/08/31/big/img_17252
2002/07/31/big/img_138
2002/07/23/big/img_372
2002/08/16/big/img_695
2002/07/27/big/img_287
2002/08/15/big/img_315
2002/08/10/big/img_361
2002/07/29/big/img_899
2002/08/13/big/img_771
2002/08/21/big/img_92
2003/01/15/big/img_425
2003/01/16/big/img_450
2002/09/01/big/img_16942
2002/08/02/big/img_51
2002/09/02/big/img_15379
2002/08/24/big/img_147
2002/08/30/big/img_18122
2002/07/26/big/img_950
2002/08/07/big/img_1400
2002/08/17/big/img_468
2002/08/15/big/img_470
2002/07/30/big/img_318
2002/07/22/big/img_644
2002/08/27/big/img_19732
2002/07/23/big/img_601
2002/08/26/big/img_398
2002/08/21/big/img_428
2002/08/06/big/img_2119
2002/08/29/big/img_19103
2003/01/14/big/img_933
2002/08/11/big/img_674
2002/08/28/big/img_19420
2002/08/03/big/img_418
2002/08/17/big/img_312
2002/07/25/big/img_1044
2003/01/17/big/img_671
2002/08/30/big/img_18297
2002/07/25/big/img_755
2002/07/23/big/img_471
2002/08/21/big/img_39
2002/07/26/big/img_699
2003/01/14/big/img_33
2002/07/31/big/img_411
2002/08/16/big/img_645
2003/01/17/big/img_116
2002/09/02/big/img_15903
2002/08/20/big/img_120
2002/08/22/big/img_176
2002/07/29/big/img_1316
2002/08/27/big/img_19914
2002/07/22/big/img_719
2002/08/28/big/img_19239
2003/01/13/big/img_385
2002/08/08/big/img_525
2002/07/19/big/img_782
2002/08/13/big/img_843
2002/07/30/big/img_107
2002/08/11/big/img_752
2002/07/29/big/img_383
2002/08/26/big/img_249
2002/08/29/big/img_18860
2002/07/30/big/img_70
2002/07/26/big/img_194
2002/08/15/big/img_530
2002/08/08/big/img_816
2002/07/31/big/img_286
2003/01/13/big/img_294
2002/07/31/big/img_251
2002/07/24/big/img_13
2002/08/31/big/img_17938
2002/07/22/big/img_642
2003/01/14/big/img_728
2002/08/18/big/img_47
2002/08/22/big/img_306
2002/08/20/big/img_348
2002/08/15/big/img_764
2002/08/08/big/img_163
2002/07/23/big/img_531
2002/07/23/big/img_467
2003/01/16/big/img_743
2003/01/13/big/img_535
2002/08/02/big/img_523
2002/08/22/big/img_120
2002/08/11/big/img_496
2002/08/29/big/img_19075
2002/08/08/big/img_465
2002/08/09/big/img_790
2002/08/19/big/img_588
2002/08/23/big/img_407
2003/01/17/big/img_435
2002/08/24/big/img_398
2002/08/27/big/img_19899
2003/01/15/big/img_335
2002/08/13/big/img_493
2002/09/02/big/img_15460
2002/07/31/big/img_470
2002/08/05/big/img_3550
2002/07/28/big/img_123
2002/08/01/big/img_1498
2002/08/04/big/img_504
2003/01/17/big/img_427
2002/08/27/big/img_19708
2002/07/27/big/img_861
2002/07/25/big/img_685
2002/07/31/big/img_207
2003/01/14/big/img_745
2002/08/31/big/img_17756
2002/08/24/big/img_288
2002/08/18/big/img_181
2002/08/10/big/img_520
2002/08/25/big/img_705
2002/08/23/big/img_226
2002/08/04/big/img_727
2002/07/24/big/img_625
2002/08/28/big/img_19157
2002/08/23/big/img_586
2002/07/31/big/img_232
2003/01/13/big/img_240
2003/01/14/big/img_321
2003/01/15/big/img_533
2002/07/23/big/img_480
2002/07/24/big/img_371
2002/08/21/big/img_702
2002/08/31/big/img_17075
2002/09/02/big/img_15278
2002/07/29/big/img_246
2003/01/15/big/img_829
2003/01/15/big/img_1213
2003/01/16/big/img_441
2002/08/14/big/img_921
2002/07/23/big/img_425
2002/08/15/big/img_296
2002/07/19/big/img_135
2002/07/26/big/img_402
2003/01/17/big/img_88
2002/08/20/big/img_872
2002/08/13/big/img_1110
2003/01/16/big/img_1040
2002/07/23/big/img_9
2002/08/13/big/img_700
2002/08/16/big/img_371
2002/08/27/big/img_19966
2003/01/17/big/img_391
2002/08/18/big/img_426
2002/08/01/big/img_1618
2002/07/21/big/img_754
2003/01/14/big/img_1101
2003/01/16/big/img_1022
2002/07/22/big/img_275
2002/08/24/big/img_86
2002/08/17/big/img_582
2003/01/15/big/img_765
2003/01/17/big/img_449
2002/07/28/big/img_265
2003/01/13/big/img_552
2002/07/28/big/img_115
2003/01/16/big/img_56
2002/08/02/big/img_1232
2003/01/17/big/img_925
2002/07/22/big/img_445
2002/07/25/big/img_957
2002/07/20/big/img_589
2002/08/31/big/img_17107
2002/07/29/big/img_483
2002/08/14/big/img_1063
2002/08/07/big/img_1545
2002/08/14/big/img_680
2002/09/01/big/img_16694
2002/08/14/big/img_257
2002/08/11/big/img_726
2002/07/26/big/img_681
2002/07/25/big/img_481
2003/01/14/big/img_737
2002/08/28/big/img_19480
2003/01/16/big/img_362
2002/08/27/big/img_19865
2003/01/01/big/img_547
2002/09/02/big/img_15074
2002/08/01/big/img_1453
2002/08/22/big/img_594
2002/08/28/big/img_19263
2002/08/13/big/img_478
2002/07/29/big/img_1358
2003/01/14/big/img_1022
2002/08/16/big/img_450
2002/08/02/big/img_159
2002/07/26/big/img_781
2003/01/13/big/img_601
2002/08/20/big/img_407
2002/08/15/big/img_468
2002/08/31/big/img_17902
2002/08/16/big/img_81
2002/07/25/big/img_987
2002/07/25/big/img_500
2002/08/02/big/img_31
2002/08/18/big/img_538
2002/08/08/big/img_54
2002/07/23/big/img_686
2002/07/24/big/img_836
2003/01/17/big/img_734
2002/08/16/big/img_1055
2003/01/16/big/img_521
2002/07/25/big/img_612
2002/08/22/big/img_778
2002/08/03/big/img_251
2002/08/12/big/img_436
2002/08/23/big/img_705
2002/07/28/big/img_243
2002/07/25/big/img_1029
2002/08/20/big/img_287
2002/08/29/big/img_18739
2002/08/05/big/img_3272
2002/07/27/big/img_214
2003/01/14/big/img_5
2002/08/01/big/img_1380
2002/08/29/big/img_19097
2002/07/30/big/img_486
2002/08/29/big/img_18707
2002/08/10/big/img_559
2002/08/15/big/img_365
2002/08/09/big/img_525
2002/08/10/big/img_689
2002/07/25/big/img_502
2002/08/03/big/img_667
2002/08/10/big/img_855
2002/08/10/big/img_706
2002/08/18/big/img_603
2003/01/16/big/img_1055
2002/08/31/big/img_17890
2002/08/15/big/img_761
2003/01/15/big/img_489
2002/08/26/big/img_351
2002/08/01/big/img_1772
2002/08/31/big/img_17729
2002/07/25/big/img_609
2003/01/13/big/img_539
2002/07/27/big/img_686
2002/07/31/big/img_311
2002/08/22/big/img_799
2003/01/16/big/img_936
2002/08/31/big/img_17813
2002/08/04/big/img_862
2002/08/09/big/img_332
2002/07/20/big/img_148
2002/08/12/big/img_426
2002/07/24/big/img_69
2002/07/27/big/img_685
2002/08/02/big/img_480
2002/08/26/big/img_154
2002/07/24/big/img_598
2002/08/01/big/img_1881
2002/08/20/big/img_667
2003/01/14/big/img_495
2002/07/21/big/img_744
2002/07/30/big/img_150
2002/07/23/big/img_924
2002/08/08/big/img_272
2002/07/23/big/img_310
2002/07/25/big/img_1011
2002/09/02/big/img_15725
2002/07/19/big/img_814
2002/08/20/big/img_936
2002/07/25/big/img_85
2002/08/24/big/img_662
2002/08/09/big/img_495
2003/01/15/big/img_196
2002/08/16/big/img_707
2002/08/28/big/img_19370
2002/08/06/big/img_2366
2002/08/06/big/img_3012
2002/08/01/big/img_1452
2002/07/31/big/img_742
2002/07/27/big/img_914
2003/01/13/big/img_290
2002/07/31/big/img_288
2002/08/02/big/img_171
2002/08/22/big/img_191
2002/07/27/big/img_1066
2002/08/12/big/img_383
2003/01/17/big/img_1018
2002/08/01/big/img_1785
2002/08/11/big/img_390
2002/08/27/big/img_20037
2002/08/12/big/img_38
2003/01/15/big/img_103
2002/08/26/big/img_31
2002/08/18/big/img_660
2002/07/22/big/img_694
2002/08/15/big/img_24
2002/07/27/big/img_1077
2002/08/01/big/img_1943
2002/07/22/big/img_292
2002/09/01/big/img_16857
2002/07/22/big/img_892
2003/01/14/big/img_46
2002/08/09/big/img_469
2002/08/09/big/img_414
2003/01/16/big/img_40
2002/08/28/big/img_19231
2002/07/27/big/img_978
2002/07/23/big/img_475
2002/07/25/big/img_92
2002/08/09/big/img_799
2002/07/25/big/img_491
2002/08/03/big/img_654
2003/01/15/big/img_687
2002/08/11/big/img_478
2002/08/07/big/img_1664
2002/08/20/big/img_362
2002/08/01/big/img_1298
2003/01/13/big/img_500
2002/08/06/big/img_2896
2002/08/30/big/img_18529
2002/08/16/big/img_1020
2002/07/29/big/img_892
2002/08/29/big/img_18726
2002/07/21/big/img_453
2002/08/17/big/img_437
2002/07/19/big/img_665
2002/07/22/big/img_440
2002/07/19/big/img_582
2002/07/21/big/img_233
2003/01/01/big/img_82
2002/07/25/big/img_341
2002/07/29/big/img_864
2002/08/02/big/img_276
2002/08/29/big/img_18654
2002/07/27/big/img_1024
2002/08/19/big/img_373
2003/01/15/big/img_241
2002/07/25/big/img_84
2002/08/13/big/img_834
2002/08/10/big/img_511
2002/08/01/big/img_1627
2002/08/08/big/img_607
2002/08/06/big/img_2083
2002/08/01/big/img_1486
2002/08/08/big/img_700
2002/08/01/big/img_1954
2002/08/21/big/img_54
2002/07/30/big/img_847
2002/08/28/big/img_19169
2002/07/21/big/img_549
2002/08/03/big/img_693
2002/07/31/big/img_1002
2003/01/14/big/img_1035
2003/01/16/big/img_622
2002/07/30/big/img_1201
2002/08/10/big/img_444
2002/07/31/big/img_374
2002/08/21/big/img_301
2002/08/13/big/img_1095
2003/01/13/big/img_288
2002/07/25/big/img_232
2003/01/13/big/img_967
2002/08/26/big/img_360
2002/08/05/big/img_67
2002/08/29/big/img_18969
2002/07/28/big/img_16
2002/08/16/big/img_515
2002/07/20/big/img_708
2002/08/18/big/img_178
2003/01/15/big/img_509
2002/07/25/big/img_430
2002/08/21/big/img_738
2002/08/16/big/img_886
2002/09/02/big/img_15605
2002/09/01/big/img_16242
2002/08/24/big/img_711
2002/07/25/big/img_90
2002/08/09/big/img_491
2002/07/30/big/img_534
2003/01/13/big/img_474
2002/08/25/big/img_510
2002/08/15/big/img_555
2002/08/02/big/img_775
2002/07/23/big/img_975
2002/08/19/big/img_229
2003/01/17/big/img_860
2003/01/02/big/img_10
2002/07/23/big/img_542
2002/08/06/big/img_2535
2002/07/22/big/img_37
2002/08/06/big/img_2342
2002/08/25/big/img_515
2002/08/25/big/img_336
2002/08/18/big/img_837
2002/08/21/big/img_616
2003/01/17/big/img_24
2002/07/26/big/img_936
2002/08/14/big/img_896
2002/07/29/big/img_465
2002/07/31/big/img_543
2002/08/01/big/img_1411
2002/08/02/big/img_423
2002/08/21/big/img_44
2002/07/31/big/img_11
2003/01/15/big/img_628
2003/01/15/big/img_605
2002/07/30/big/img_571
2002/07/23/big/img_428
2002/08/15/big/img_942
2002/07/26/big/img_531
2003/01/16/big/img_59
2002/08/02/big/img_410
2002/07/31/big/img_230
2002/08/19/big/img_806
2003/01/14/big/img_462
2002/08/16/big/img_370
2002/08/13/big/img_380
2002/08/16/big/img_932
2002/07/19/big/img_393
2002/08/20/big/img_764
2002/08/15/big/img_616
2002/07/26/big/img_267
2002/07/27/big/img_1069
2002/08/14/big/img_1041
2003/01/13/big/img_594
2002/09/01/big/img_16845
2002/08/09/big/img_229
2003/01/16/big/img_639
2002/08/19/big/img_398
2002/08/18/big/img_978
2002/08/24/big/img_296
2002/07/29/big/img_415
2002/07/30/big/img_923
2002/08/18/big/img_575
2002/08/22/big/img_182
2002/07/25/big/img_806
2002/07/22/big/img_49
2002/07/29/big/img_989
2003/01/17/big/img_789
2003/01/15/big/img_503
2002/09/01/big/img_16062
2003/01/17/big/img_794
2002/08/15/big/img_564
2003/01/15/big/img_222
2002/08/01/big/img_1656
2003/01/13/big/img_432
2002/07/19/big/img_426
2002/08/17/big/img_244
2002/08/13/big/img_805
2002/09/02/big/img_15067
2002/08/11/big/img_58
2002/08/22/big/img_636
2002/07/22/big/img_416
2002/08/13/big/img_836
2002/08/26/big/img_363
2002/07/30/big/img_917
2003/01/14/big/img_206
2002/08/12/big/img_311
2002/08/31/big/img_17623
2002/07/29/big/img_661
2003/01/13/big/img_417
2002/08/02/big/img_463
2002/08/02/big/img_669
2002/08/26/big/img_670
2002/08/02/big/img_375
2002/07/19/big/img_209
2002/08/08/big/img_115
2002/08/21/big/img_399
2002/08/20/big/img_911
2002/08/07/big/img_1212
2002/08/20/big/img_578
2002/08/22/big/img_554
2002/08/21/big/img_484
2002/07/25/big/img_450
2002/08/03/big/img_542
2002/08/15/big/img_561
2002/07/23/big/img_360
2002/08/30/big/img_18137
2002/07/25/big/img_250
2002/08/03/big/img_647
2002/08/20/big/img_375
2002/08/14/big/img_387
2002/09/01/big/img_16990
2002/08/28/big/img_19341
2003/01/15/big/img_239
2002/08/20/big/img_528
2002/08/12/big/img_130
2002/09/02/big/img_15108
2003/01/15/big/img_372
2002/08/16/big/img_678
2002/08/04/big/img_623
2002/07/23/big/img_477
2002/08/28/big/img_19590
2003/01/17/big/img_978
2002/09/01/big/img_16692
2002/07/20/big/img_109
2002/08/06/big/img_2660
2003/01/14/big/img_464
2002/08/09/big/img_618
2002/07/22/big/img_722
2002/08/25/big/img_419
2002/08/03/big/img_314
2002/08/25/big/img_40
2002/07/27/big/img_430
2002/08/10/big/img_569
2002/08/23/big/img_398
2002/07/23/big/img_893
2002/08/16/big/img_261
2002/08/06/big/img_2668
2002/07/22/big/img_835
2002/09/02/big/img_15093
2003/01/16/big/img_65
2002/08/21/big/img_448
2003/01/14/big/img_351
2003/01/17/big/img_133
2002/07/28/big/img_493
2003/01/15/big/img_640
2002/09/01/big/img_16880
2002/08/15/big/img_350
2002/08/20/big/img_624
2002/08/25/big/img_604
2002/08/06/big/img_2200
2002/08/23/big/img_290
2002/08/13/big/img_1152
2003/01/14/big/img_251
2002/08/02/big/img_538
2002/08/22/big/img_613
2003/01/13/big/img_351
2002/08/18/big/img_368
2002/07/23/big/img_392
2002/07/25/big/img_198
2002/07/25/big/img_418
2002/08/26/big/img_614
2002/07/23/big/img_405
2003/01/14/big/img_445
2002/07/25/big/img_326
2002/08/10/big/img_734
2003/01/14/big/img_530
2002/08/08/big/img_561
2002/08/29/big/img_18990
2002/08/10/big/img_576
2002/07/29/big/img_1494
2002/07/19/big/img_198
2002/08/10/big/img_562
2002/07/22/big/img_901
2003/01/14/big/img_37
2002/09/02/big/img_15629
2003/01/14/big/img_58
2002/08/01/big/img_1364
2002/07/27/big/img_636
2003/01/13/big/img_241
2002/09/01/big/img_16988
2003/01/13/big/img_560
2002/08/09/big/img_533
2002/07/31/big/img_249
2003/01/17/big/img_1007
2002/07/21/big/img_64
2003/01/13/big/img_537
2003/01/15/big/img_606
2002/08/18/big/img_651
2002/08/24/big/img_405
2002/07/26/big/img_837
2002/08/09/big/img_562
2002/08/01/big/img_1983
2002/08/03/big/img_514
2002/07/29/big/img_314
2002/08/12/big/img_493
2003/01/14/big/img_121
2003/01/14/big/img_479
2002/08/04/big/img_410
2002/07/22/big/img_607
2003/01/17/big/img_417
2002/07/20/big/img_547
2002/08/13/big/img_396
2002/08/31/big/img_17538
2002/08/13/big/img_187
2002/08/12/big/img_328
2003/01/14/big/img_569
2002/07/27/big/img_1081
2002/08/14/big/img_504
2002/08/23/big/img_785
2002/07/26/big/img_339
2002/08/07/big/img_1156
2002/08/07/big/img_1456
2002/08/23/big/img_378
2002/08/27/big/img_19719
2002/07/31/big/img_39
2002/07/31/big/img_883
2003/01/14/big/img_676
2002/07/29/big/img_214
2002/07/26/big/img_669
2002/07/25/big/img_202
2002/08/08/big/img_259
2003/01/17/big/img_943
2003/01/15/big/img_512
2002/08/05/big/img_3295
2002/08/27/big/img_19685
2002/08/08/big/img_277
2002/08/30/big/img_18154
2002/07/22/big/img_663
2002/08/29/big/img_18914
2002/07/31/big/img_908
2002/08/27/big/img_19926
2003/01/13/big/img_791
2003/01/15/big/img_827
2002/08/18/big/img_878
2002/08/14/big/img_670
2002/07/20/big/img_182
2002/08/15/big/img_291
2002/08/06/big/img_2600
2002/07/23/big/img_587
2002/08/14/big/img_577
2003/01/15/big/img_585
2002/07/30/big/img_310
2002/08/03/big/img_658
2002/08/10/big/img_157
2002/08/19/big/img_811
2002/07/29/big/img_1318
2002/08/04/big/img_104
2002/07/30/big/img_332
2002/07/24/big/img_789
2002/07/29/big/img_516
2002/07/23/big/img_843
2002/08/01/big/img_1528
2002/08/13/big/img_798
2002/08/07/big/img_1729
2002/08/28/big/img_19448
2003/01/16/big/img_95
2002/08/12/big/img_473
2002/07/27/big/img_269
2003/01/16/big/img_621
2002/07/29/big/img_772
2002/07/24/big/img_171
2002/07/19/big/img_429
2002/08/07/big/img_1933
2002/08/27/big/img_19629
2002/08/05/big/img_3688
2002/08/07/big/img_1691
2002/07/23/big/img_600
2002/07/29/big/img_666
2002/08/25/big/img_566
2002/08/06/big/img_2659
2002/08/29/big/img_18929
2002/08/16/big/img_407
2002/08/18/big/img_774
2002/08/19/big/img_249
2002/08/06/big/img_2427
2002/08/29/big/img_18899
2002/08/01/big/img_1818
2002/07/31/big/img_108
2002/07/29/big/img_500
2002/08/11/big/img_115
2002/07/19/big/img_521
2002/08/02/big/img_1163
2002/07/22/big/img_62
2002/08/13/big/img_466
2002/08/21/big/img_956
2002/08/23/big/img_602
2002/08/20/big/img_858
2002/07/25/big/img_690
2002/07/19/big/img_130
2002/08/04/big/img_874
2002/07/26/big/img_489
2002/07/22/big/img_548
2002/08/10/big/img_191
2002/07/25/big/img_1051
2002/08/18/big/img_473
2002/08/12/big/img_755
2002/08/18/big/img_413
2002/08/08/big/img_1044
2002/08/17/big/img_680
2002/08/26/big/img_235
2002/08/20/big/img_330
2002/08/22/big/img_344
2002/08/09/big/img_593
2002/07/31/big/img_1006
2002/08/14/big/img_337
2002/08/16/big/img_728
2002/07/24/big/img_834
2002/08/04/big/img_552
2002/09/02/big/img_15213
2002/07/25/big/img_725
2002/08/30/big/img_18290
2003/01/01/big/img_475
2002/07/27/big/img_1083
2002/08/29/big/img_18955
2002/08/31/big/img_17232
2002/08/08/big/img_480
2002/08/01/big/img_1311
2002/07/30/big/img_745
2002/08/03/big/img_649
2002/08/12/big/img_193
2002/07/29/big/img_228
2002/07/25/big/img_836
2002/08/20/big/img_400
2002/07/30/big/img_507
2002/09/02/big/img_15072
2002/07/26/big/img_658
2002/07/28/big/img_503
2002/08/05/big/img_3814
2002/08/24/big/img_745
2003/01/13/big/img_817
2002/08/08/big/img_579
2002/07/22/big/img_251
2003/01/13/big/img_689
2002/07/25/big/img_407
2002/08/13/big/img_1050
2002/08/14/big/img_733
2002/07/24/big/img_82
2003/01/17/big/img_288
2003/01/15/big/img_475
2002/08/14/big/img_620
2002/08/21/big/img_167
2002/07/19/big/img_300
2002/07/26/big/img_219
2002/08/01/big/img_1468
2002/07/23/big/img_260
2002/08/09/big/img_555
2002/07/19/big/img_160
2002/08/02/big/img_1060
2003/01/14/big/img_149
2002/08/15/big/img_346
2002/08/24/big/img_597
2002/08/22/big/img_502
2002/08/30/big/img_18228
2002/07/21/big/img_766
2003/01/15/big/img_841
2002/07/24/big/img_516
2002/08/02/big/img_265
2002/08/15/big/img_1243
2003/01/15/big/img_223
2002/08/04/big/img_236
2002/07/22/big/img_309
2002/07/20/big/img_656
2002/07/31/big/img_412
2002/09/01/big/img_16462
2003/01/16/big/img_431
2002/07/22/big/img_793
2002/08/15/big/img_877
2002/07/26/big/img_282
2002/07/25/big/img_529
2002/08/24/big/img_613
2003/01/17/big/img_700
2002/08/06/big/img_2526
2002/08/24/big/img_394
2002/08/21/big/img_521
2002/08/25/big/img_560
2002/07/29/big/img_966
2002/07/25/big/img_448
2003/01/13/big/img_782
2002/08/21/big/img_296
2002/09/01/big/img_16755
2002/08/05/big/img_3552
2002/09/02/big/img_15823
2003/01/14/big/img_193
2002/07/21/big/img_159
2002/08/02/big/img_564
2002/08/16/big/img_300
2002/07/19/big/img_269
2002/08/13/big/img_676
2002/07/28/big/img_57
2002/08/05/big/img_3318
2002/07/31/big/img_218
2002/08/21/big/img_898
2002/07/29/big/img_109
2002/07/19/big/img_854
2002/08/23/big/img_311
2002/08/14/big/img_318
2002/07/25/big/img_523
2002/07/21/big/img_678
2003/01/17/big/img_690
2002/08/28/big/img_19503
2002/08/18/big/img_251
2002/08/22/big/img_672
2002/08/20/big/img_663
2002/08/02/big/img_148
2002/09/02/big/img_15580
2002/07/25/big/img_778
2002/08/14/big/img_565
2002/08/12/big/img_374
2002/08/13/big/img_1018
2002/08/20/big/img_474
2002/08/25/big/img_33
2002/08/02/big/img_1190
2002/08/08/big/img_864
2002/08/14/big/img_1071
2002/08/30/big/img_18103
2002/08/18/big/img_533
2003/01/16/big/img_650
2002/07/25/big/img_108
2002/07/26/big/img_81
2002/07/27/big/img_543
2002/07/29/big/img_521
2003/01/13/big/img_434
2002/08/26/big/img_674
2002/08/06/big/img_2932
2002/08/07/big/img_1262
2003/01/15/big/img_201
2003/01/16/big/img_673
2002/09/02/big/img_15988
2002/07/29/big/img_1306
2003/01/14/big/img_1072
2002/08/30/big/img_18232
2002/08/05/big/img_3711
2002/07/23/big/img_775
2002/08/01/big/img_16
2003/01/16/big/img_630
2002/08/22/big/img_695
2002/08/14/big/img_51
2002/08/14/big/img_782
2002/08/24/big/img_742
2003/01/14/big/img_512
2003/01/15/big/img_1183
2003/01/15/big/img_714
2002/08/01/big/img_2078
2002/07/31/big/img_682
2002/09/02/big/img_15687
2002/07/26/big/img_518
2002/08/27/big/img_19676
2002/09/02/big/img_15969
2002/08/02/big/img_931
2002/08/25/big/img_508
2002/08/29/big/img_18616
2002/07/22/big/img_839
2002/07/28/big/img_313
2003/01/14/big/img_155
2002/08/02/big/img_1105
2002/08/09/big/img_53
2002/08/16/big/img_469
2002/08/15/big/img_502
2002/08/20/big/img_575
2002/07/25/big/img_138
2003/01/16/big/img_579
2002/07/19/big/img_352
2003/01/14/big/img_762
2003/01/01/big/img_588
2002/08/02/big/img_981
2002/08/21/big/img_447
2002/09/01/big/img_16151
2003/01/14/big/img_769
2002/08/23/big/img_461
2002/08/17/big/img_240
2002/09/02/big/img_15220
2002/07/19/big/img_408
2002/09/02/big/img_15496
2002/07/29/big/img_758
2002/08/28/big/img_19392
2002/08/06/big/img_2723
2002/08/31/big/img_17752
2002/08/23/big/img_469
2002/08/13/big/img_515
2002/09/02/big/img_15551
2002/08/03/big/img_462
2002/07/24/big/img_613
2002/07/22/big/img_61
2002/08/08/big/img_171
2002/08/21/big/img_177
2003/01/14/big/img_105
2002/08/02/big/img_1017
2002/08/22/big/img_106
2002/07/27/big/img_542
2002/07/21/big/img_665
2002/07/23/big/img_595
2002/08/04/big/img_657
2002/08/29/big/img_19002
2003/01/15/big/img_550
2002/08/14/big/img_662
2002/07/20/big/img_425
2002/08/30/big/img_18528
2002/07/26/big/img_611
2002/07/22/big/img_849
2002/08/07/big/img_1655
2002/08/21/big/img_638
2003/01/17/big/img_732
2003/01/01/big/img_496
2002/08/18/big/img_713
2002/08/08/big/img_109
2002/07/27/big/img_1008
2002/07/20/big/img_559
2002/08/16/big/img_699
2002/08/31/big/img_17702
2002/07/31/big/img_1013
2002/08/01/big/img_2027
2002/08/02/big/img_1001
2002/08/03/big/img_210
2002/08/01/big/img_2087
2003/01/14/big/img_199
2002/07/29/big/img_48
2002/07/19/big/img_727
2002/08/09/big/img_249
2002/08/04/big/img_632
2002/08/22/big/img_620
2003/01/01/big/img_457
2002/08/05/big/img_3223
2002/07/27/big/img_240
2002/07/25/big/img_797
2002/08/13/big/img_430
2002/07/25/big/img_615
2002/08/12/big/img_28
2002/07/30/big/img_220
2002/07/24/big/img_89
2002/08/21/big/img_357
2002/08/09/big/img_590
2003/01/13/big/img_525
2002/08/17/big/img_818
2003/01/02/big/img_7
2002/07/26/big/img_636
2003/01/13/big/img_1122
2002/07/23/big/img_810
2002/08/20/big/img_888
2002/07/27/big/img_3
2002/08/15/big/img_451
2002/09/02/big/img_15787
2002/07/31/big/img_281
2002/08/05/big/img_3274
2002/08/07/big/img_1254
2002/07/31/big/img_27
2002/08/01/big/img_1366
2002/07/30/big/img_182
2002/08/27/big/img_19690
2002/07/29/big/img_68
2002/08/23/big/img_754
2002/07/30/big/img_540
2002/08/27/big/img_20063
2002/08/14/big/img_471
2002/08/02/big/img_615
2002/07/30/big/img_186
2002/08/25/big/img_150
2002/07/27/big/img_626
2002/07/20/big/img_225
2003/01/15/big/img_1252
2002/07/19/big/img_367
2003/01/15/big/img_582
2002/08/09/big/img_572
2002/08/08/big/img_428
2003/01/15/big/img_639
2002/08/28/big/img_19245
2002/07/24/big/img_321
2002/08/02/big/img_662
2002/08/08/big/img_1033
2003/01/17/big/img_867
2002/07/22/big/img_652
2003/01/14/big/img_224
2002/08/18/big/img_49
2002/07/26/big/img_46
2002/08/31/big/img_18021
2002/07/25/big/img_151
2002/08/23/big/img_540
2002/08/25/big/img_693
2002/07/23/big/img_340
2002/07/28/big/img_117
2002/09/02/big/img_15768
2002/08/26/big/img_562
2002/07/24/big/img_480
2003/01/15/big/img_341
2002/08/10/big/img_783
2002/08/20/big/img_132
2003/01/14/big/img_370
2002/07/20/big/img_720
2002/08/03/big/img_144
2002/08/20/big/img_538
2002/08/01/big/img_1745
2002/08/11/big/img_683
2002/08/03/big/img_328
2002/08/10/big/img_793
2002/08/14/big/img_689
2002/08/02/big/img_162
2003/01/17/big/img_411
2002/07/31/big/img_361
2002/08/15/big/img_289
2002/08/08/big/img_254
2002/08/15/big/img_996
2002/08/20/big/img_785
2002/07/24/big/img_511
2002/08/06/big/img_2614
2002/08/29/big/img_18733
2002/08/17/big/img_78
2002/07/30/big/img_378
2002/08/31/big/img_17947
2002/08/26/big/img_88
2002/07/30/big/img_558
2002/08/02/big/img_67
2003/01/14/big/img_325
2002/07/29/big/img_1357
2002/07/19/big/img_391
2002/07/30/big/img_307
2003/01/13/big/img_219
2002/07/24/big/img_807
2002/08/23/big/img_543
2002/08/29/big/img_18620
2002/07/22/big/img_769
2002/08/26/big/img_503
2002/07/30/big/img_78
2002/08/14/big/img_1036
2002/08/09/big/img_58
2002/07/24/big/img_616
2002/08/02/big/img_464
2002/07/26/big/img_576
2002/07/22/big/img_273
2003/01/16/big/img_470
2002/07/29/big/img_329
2002/07/30/big/img_1086
2002/07/31/big/img_353
2002/09/02/big/img_15275
2003/01/17/big/img_555
2002/08/26/big/img_212
2002/08/01/big/img_1692
2003/01/15/big/img_600
2002/07/29/big/img_825
2002/08/08/big/img_68
2002/08/10/big/img_719
2002/07/31/big/img_636
2002/07/29/big/img_325
2002/07/21/big/img_515
2002/07/22/big/img_705
2003/01/13/big/img_818
2002/08/09/big/img_486
2002/08/22/big/img_141
2002/07/22/big/img_303
2002/08/09/big/img_393
2002/07/29/big/img_963
2002/08/02/big/img_1215
2002/08/19/big/img_674
2002/08/12/big/img_690
2002/08/21/big/img_637
2002/08/21/big/img_841
2002/08/24/big/img_71
2002/07/25/big/img_596
2002/07/24/big/img_864
2002/08/18/big/img_293
2003/01/14/big/img_657
2002/08/15/big/img_411
2002/08/16/big/img_348
2002/08/05/big/img_3157
2002/07/20/big/img_663
2003/01/13/big/img_654
2003/01/16/big/img_433
2002/08/30/big/img_18200
2002/08/12/big/img_226
2003/01/16/big/img_491
2002/08/08/big/img_666
2002/07/19/big/img_576
2003/01/15/big/img_776
2003/01/16/big/img_899
2002/07/19/big/img_397
2002/08/14/big/img_44
2003/01/15/big/img_762
2002/08/02/big/img_982
2002/09/02/big/img_15234
2002/08/17/big/img_556
2002/08/21/big/img_410
2002/08/21/big/img_386
2002/07/19/big/img_690
2002/08/05/big/img_3052
2002/08/14/big/img_219
2002/08/16/big/img_273
2003/01/15/big/img_752
2002/08/08/big/img_184
2002/07/31/big/img_743
2002/08/23/big/img_338
2003/01/14/big/img_1055
2002/08/05/big/img_3405
2003/01/15/big/img_17
2002/08/03/big/img_141
2002/08/14/big/img_549
2002/07/27/big/img_1034
2002/07/31/big/img_932
2002/08/30/big/img_18487
2002/09/02/big/img_15814
2002/08/01/big/img_2086
2002/09/01/big/img_16535
2002/07/22/big/img_500
2003/01/13/big/img_400
2002/08/25/big/img_607
2002/08/30/big/img_18384
2003/01/14/big/img_951
2002/08/13/big/img_1150
2002/08/08/big/img_1022
2002/08/10/big/img_428
2002/08/28/big/img_19242
2002/08/05/big/img_3098
2002/07/23/big/img_400
2002/08/26/big/img_365
2002/07/20/big/img_318
2002/08/13/big/img_740
2003/01/16/big/img_37
2002/08/26/big/img_274
2002/08/02/big/img_205
2002/08/21/big/img_695
2002/08/06/big/img_2289
2002/08/20/big/img_794
2002/08/18/big/img_438
2002/08/07/big/img_1380
2002/08/02/big/img_737
2002/08/07/big/img_1651
2002/08/15/big/img_1238
2002/08/01/big/img_1681
2002/08/06/big/img_3017
2002/07/23/big/img_706
2002/07/31/big/img_392
2002/08/09/big/img_539
2002/07/29/big/img_835
2002/08/26/big/img_723
2002/08/28/big/img_19235
2003/01/16/big/img_353
2002/08/10/big/img_150
2002/08/29/big/img_19025
2002/08/21/big/img_310
2002/08/10/big/img_823
2002/07/26/big/img_981
2002/08/11/big/img_288
2002/08/19/big/img_534
2002/08/21/big/img_300
2002/07/31/big/img_49
2002/07/30/big/img_469
2002/08/28/big/img_19197
2002/08/25/big/img_205
2002/08/10/big/img_390
2002/08/23/big/img_291
2002/08/26/big/img_230
2002/08/18/big/img_76
2002/07/23/big/img_409
2002/08/14/big/img_1053
2003/01/14/big/img_291
2002/08/10/big/img_503
2002/08/27/big/img_19928
2002/08/03/big/img_563
2002/08/17/big/img_250
2002/08/06/big/img_2381
2002/08/17/big/img_948
2002/08/06/big/img_2710
2002/07/22/big/img_696
2002/07/31/big/img_670
2002/08/12/big/img_594
2002/07/29/big/img_624
2003/01/17/big/img_934
2002/08/03/big/img_584
2002/08/22/big/img_1003
2002/08/05/big/img_3396
2003/01/13/big/img_570
2002/08/02/big/img_219
2002/09/02/big/img_15774
2002/08/16/big/img_818
2002/08/23/big/img_402
2003/01/14/big/img_552
2002/07/29/big/img_71
2002/08/05/big/img_3592
2002/08/16/big/img_80
2002/07/27/big/img_672
2003/01/13/big/img_470
2003/01/16/big/img_702
2002/09/01/big/img_16130
2002/08/08/big/img_240
2002/09/01/big/img_16338
2002/07/26/big/img_312
2003/01/14/big/img_538
2002/07/20/big/img_695
2002/08/30/big/img_18098
2002/08/25/big/img_259
2002/08/16/big/img_1042
2002/08/09/big/img_837
2002/08/31/big/img_17760
2002/07/31/big/img_14
2002/08/09/big/img_361
2003/01/16/big/img_107
2002/08/14/big/img_124
2002/07/19/big/img_463
2003/01/15/big/img_275
2002/07/25/big/img_1151
2002/07/29/big/img_1501
2002/08/27/big/img_19889
2002/08/29/big/img_18603
2003/01/17/big/img_601
2002/08/25/big/img_355
2002/08/08/big/img_297
2002/08/20/big/img_290
2002/07/31/big/img_195
2003/01/01/big/img_336
2002/08/18/big/img_369
2002/07/25/big/img_621
2002/08/11/big/img_508
2003/01/14/big/img_458
2003/01/15/big/img_795
2002/08/12/big/img_498
2002/08/01/big/img_1734
2002/08/02/big/img_246
2002/08/16/big/img_565
2002/08/11/big/img_475
2002/08/22/big/img_408
2002/07/28/big/img_78
2002/07/21/big/img_81
2003/01/14/big/img_697
2002/08/14/big/img_661
2002/08/15/big/img_507
2002/08/19/big/img_55
2002/07/22/big/img_152
2003/01/14/big/img_470
2002/08/03/big/img_379
2002/08/22/big/img_506
2003/01/16/big/img_966
2002/08/18/big/img_698
2002/08/24/big/img_528
2002/08/23/big/img_10
2002/08/01/big/img_1655
2002/08/22/big/img_953
2002/07/19/big/img_630
2002/07/22/big/img_889
2002/08/16/big/img_351
2003/01/16/big/img_83
2002/07/19/big/img_805
2002/08/14/big/img_704
2002/07/19/big/img_389
2002/08/31/big/img_17765
2002/07/29/big/img_606
2003/01/17/big/img_939
2002/09/02/big/img_15081
2002/08/21/big/img_181
2002/07/29/big/img_1321
2002/07/21/big/img_497
2002/07/20/big/img_539
2002/08/24/big/img_119
2002/08/01/big/img_1281
2002/07/26/big/img_207
2002/07/26/big/img_432
2002/07/27/big/img_1006
2002/08/05/big/img_3087
2002/08/14/big/img_252
2002/08/14/big/img_798
2002/07/24/big/img_538
2002/09/02/big/img_15507
2002/08/08/big/img_901
2003/01/14/big/img_557
2002/08/07/big/img_1819
2002/08/04/big/img_470
2002/08/01/big/img_1504
2002/08/16/big/img_1070
2002/08/16/big/img_372
2002/08/23/big/img_416
2002/08/30/big/img_18208
2002/08/01/big/img_2043
2002/07/22/big/img_385
2002/08/22/big/img_466
2002/08/21/big/img_869
2002/08/28/big/img_19429
2002/08/02/big/img_770
2002/07/23/big/img_433
2003/01/14/big/img_13
2002/07/27/big/img_953
2002/09/02/big/img_15728
2002/08/01/big/img_1361
2002/08/29/big/img_18897
2002/08/26/big/img_534
2002/08/11/big/img_121
2002/08/26/big/img_20130
2002/07/31/big/img_363
2002/08/13/big/img_978
2002/07/25/big/img_835
2002/08/02/big/img_906
2003/01/14/big/img_548
2002/07/30/big/img_80
2002/07/26/big/img_982
2003/01/16/big/img_99
2002/08/19/big/img_362
2002/08/24/big/img_376
2002/08/07/big/img_1264
2002/07/27/big/img_938
2003/01/17/big/img_535
2002/07/26/big/img_457
2002/08/08/big/img_848
2003/01/15/big/img_859
2003/01/15/big/img_622
2002/07/30/big/img_403
2002/07/29/big/img_217
2002/07/26/big/img_891
2002/07/24/big/img_70
2002/08/25/big/img_619
2002/08/05/big/img_3375
2002/08/01/big/img_2160
2002/08/06/big/img_2227
2003/01/14/big/img_117
2002/08/14/big/img_227
2002/08/13/big/img_565
2002/08/19/big/img_625
2002/08/03/big/img_812
2002/07/24/big/img_41
2002/08/16/big/img_235
2002/07/29/big/img_759
2002/07/21/big/img_433
2002/07/29/big/img_190
2003/01/16/big/img_435
2003/01/13/big/img_708
2002/07/30/big/img_57
2002/08/22/big/img_162
2003/01/01/big/img_558
2003/01/15/big/img_604
2002/08/16/big/img_935
2002/08/20/big/img_394
2002/07/28/big/img_465
2002/09/02/big/img_15534
2002/08/16/big/img_87
2002/07/22/big/img_469
2002/08/12/big/img_245
2003/01/13/big/img_236
2002/08/06/big/img_2736
2002/08/03/big/img_348
2003/01/14/big/img_218
2002/07/26/big/img_232
2003/01/15/big/img_244
2002/07/25/big/img_1121
2002/08/01/big/img_1484
2002/07/26/big/img_541
2002/08/07/big/img_1244
2002/07/31/big/img_3
2002/08/30/big/img_18437
2002/08/29/big/img_19094
2002/08/01/big/img_1355
2002/08/19/big/img_338
2002/07/19/big/img_255
2002/07/21/big/img_76
2002/08/25/big/img_199
2002/08/12/big/img_740
2002/07/30/big/img_852
2002/08/15/big/img_599
2002/08/23/big/img_254
2002/08/19/big/img_125
2002/07/24/big/img_2
2002/08/04/big/img_145
2002/08/05/big/img_3137
2002/07/28/big/img_463
2003/01/14/big/img_801
2002/07/23/big/img_366
2002/08/26/big/img_600
2002/08/26/big/img_649
2002/09/02/big/img_15849
2002/07/26/big/img_248
2003/01/13/big/img_200
2002/08/07/big/img_1794
2002/08/31/big/img_17270
2002/08/23/big/img_608
2003/01/13/big/img_837
2002/08/23/big/img_581
2002/08/20/big/img_754
2002/08/18/big/img_183
2002/08/20/big/img_328
2002/07/22/big/img_494
2002/07/29/big/img_399
2002/08/28/big/img_19284
2002/08/08/big/img_566
2002/07/25/big/img_376
2002/07/23/big/img_138
2002/07/25/big/img_435
2002/08/17/big/img_685
2002/07/19/big/img_90
2002/07/20/big/img_716
2002/08/31/big/img_17458
2002/08/26/big/img_461
2002/07/25/big/img_355
2002/08/06/big/img_2152
2002/07/27/big/img_932
2002/07/23/big/img_232
2002/08/08/big/img_1020
2002/07/31/big/img_366
2002/08/06/big/img_2667
2002/08/21/big/img_465
2002/08/15/big/img_305
2002/08/02/big/img_247
2002/07/28/big/img_46
2002/08/27/big/img_19922
2002/08/23/big/img_643
2003/01/13/big/img_624
2002/08/23/big/img_625
2002/08/05/big/img_3787
2003/01/13/big/img_627
2002/09/01/big/img_16381
2002/08/05/big/img_3668
2002/07/21/big/img_535
2002/08/27/big/img_19680
2002/07/22/big/img_413
2002/07/29/big/img_481
2003/01/15/big/img_496
2002/07/23/big/img_701
2002/08/29/big/img_18670
2002/07/28/big/img_319
2003/01/14/big/img_517
2002/07/26/big/img_256
2003/01/16/big/img_593
2002/07/30/big/img_956
2002/07/30/big/img_667
2002/07/25/big/img_100
2002/08/11/big/img_570
2002/07/26/big/img_745
2002/08/04/big/img_834
2002/08/25/big/img_521
2002/08/01/big/img_2148
2002/09/02/big/img_15183
2002/08/22/big/img_514
2002/08/23/big/img_477
2002/07/23/big/img_336
2002/07/26/big/img_481
2002/08/20/big/img_409
2002/07/23/big/img_918
2002/08/09/big/img_474
2002/08/02/big/img_929
2002/08/31/big/img_17932
2002/08/19/big/img_161
2002/08/09/big/img_667
2002/07/31/big/img_805
2002/09/02/big/img_15678
2002/08/31/big/img_17509
2002/08/29/big/img_18998
2002/07/23/big/img_301
2002/08/07/big/img_1612
2002/08/06/big/img_2472
2002/07/23/big/img_466
2002/08/27/big/img_19634
2003/01/16/big/img_16
2002/08/14/big/img_193
2002/08/21/big/img_340
2002/08/27/big/img_19799
2002/08/01/big/img_1345
2002/08/07/big/img_1448
2002/08/11/big/img_324
2003/01/16/big/img_754
2002/08/13/big/img_418
2003/01/16/big/img_544
2002/08/19/big/img_135
2002/08/10/big/img_455
2002/08/10/big/img_693
2002/08/31/big/img_17967
2002/08/28/big/img_19229
2002/08/04/big/img_811
2002/09/01/big/img_16225
2003/01/16/big/img_428
2002/09/02/big/img_15295
2002/07/26/big/img_108
2002/07/21/big/img_477
2002/08/07/big/img_1354
2002/08/23/big/img_246
2002/08/16/big/img_652
2002/07/27/big/img_553
2002/07/31/big/img_346
2002/08/04/big/img_537
2002/08/08/big/img_498
2002/08/29/big/img_18956
2003/01/13/big/img_922
2002/08/31/big/img_17425
2002/07/26/big/img_438
2002/08/19/big/img_185
2003/01/16/big/img_33
2002/08/10/big/img_252
2002/07/29/big/img_598
2002/08/27/big/img_19820
2002/08/06/big/img_2664
2002/08/20/big/img_705
2003/01/14/big/img_816
2002/08/03/big/img_552
2002/07/25/big/img_561
2002/07/25/big/img_934
2002/08/01/big/img_1893
2003/01/14/big/img_746
2003/01/16/big/img_519
2002/08/03/big/img_681
2002/07/24/big/img_808
2002/08/14/big/img_803
2002/08/25/big/img_155
2002/07/30/big/img_1107
2002/08/29/big/img_18882
2003/01/15/big/img_598
2002/08/19/big/img_122
2002/07/30/big/img_428
2002/07/24/big/img_684
2002/08/22/big/img_192
2002/08/22/big/img_543
2002/08/07/big/img_1318
2002/08/18/big/img_25
2002/07/26/big/img_583
2002/07/20/big/img_464
2002/08/19/big/img_664
2002/08/24/big/img_861
2002/09/01/big/img_16136
2002/08/22/big/img_400
2002/08/12/big/img_445
2003/01/14/big/img_174
2002/08/27/big/img_19677
2002/08/31/big/img_17214
2002/08/30/big/img_18175
2003/01/17/big/img_402
2002/08/06/big/img_2396
2002/08/18/big/img_448
2002/08/21/big/img_165
2002/08/31/big/img_17609
2003/01/01/big/img_151
2002/08/26/big/img_372
2002/09/02/big/img_15994
2002/07/26/big/img_660
2002/09/02/big/img_15197
2002/07/29/big/img_258
2002/08/30/big/img_18525
2003/01/13/big/img_368
2002/07/29/big/img_1538
2002/07/21/big/img_787
2002/08/18/big/img_152
2002/08/06/big/img_2379
2003/01/17/big/img_864
2002/08/27/big/img_19998
2002/08/01/big/img_1634
2002/07/25/big/img_414
2002/08/22/big/img_627
2002/08/07/big/img_1669
2002/08/16/big/img_1052
2002/08/31/big/img_17796
2002/08/18/big/img_199
2002/09/02/big/img_15147
2002/08/09/big/img_460
2002/08/14/big/img_581
2002/08/30/big/img_18286
2002/07/26/big/img_337
2002/08/18/big/img_589
2003/01/14/big/img_866
2002/07/20/big/img_624
2002/08/01/big/img_1801
2002/07/24/big/img_683
2002/08/09/big/img_725
2003/01/14/big/img_34
2002/07/30/big/img_144
2002/07/30/big/img_706
2002/08/08/big/img_394
2002/08/19/big/img_619
2002/08/06/big/img_2703
2002/08/29/big/img_19034
2002/07/24/big/img_67
2002/08/27/big/img_19841
2002/08/19/big/img_427
2003/01/14/big/img_333
2002/09/01/big/img_16406
2002/07/19/big/img_882
2002/08/17/big/img_238
2003/01/14/big/img_739
2002/07/22/big/img_151
2002/08/21/big/img_743
2002/07/25/big/img_1048
2002/07/30/big/img_395
2003/01/13/big/img_584
2002/08/13/big/img_742
2002/08/13/big/img_1168
2003/01/14/big/img_147
2002/07/26/big/img_803
2002/08/05/big/img_3298
2002/08/07/big/img_1451
2002/08/16/big/img_424
2002/07/29/big/img_1069
2002/09/01/big/img_16735
2002/07/21/big/img_637
2003/01/14/big/img_585
2002/08/02/big/img_358
2003/01/13/big/img_358
2002/08/14/big/img_198
2002/08/17/big/img_935
2002/08/04/big/img_42
2002/08/30/big/img_18245
2002/07/25/big/img_158
2002/08/22/big/img_744
2002/08/06/big/img_2291
2002/08/05/big/img_3044
2002/07/30/big/img_272
2002/08/23/big/img_641
2002/07/24/big/img_797
2002/07/30/big/img_392
2003/01/14/big/img_447
2002/07/31/big/img_898
2002/08/06/big/img_2812
2002/08/13/big/img_564
2002/07/22/big/img_43
2002/07/26/big/img_634
2002/07/19/big/img_843
2002/08/26/big/img_58
2002/07/21/big/img_375
2002/08/25/big/img_729
2002/07/19/big/img_561
2003/01/15/big/img_884
2002/07/25/big/img_891
2002/08/09/big/img_558
2002/08/26/big/img_587
2002/08/13/big/img_1146
2002/09/02/big/img_15153
2002/07/26/big/img_316
2002/08/01/big/img_1940
2002/08/26/big/img_90
2003/01/13/big/img_347
2002/07/25/big/img_520
2002/08/29/big/img_18718
2002/08/28/big/img_19219
2002/08/13/big/img_375
2002/07/20/big/img_719
2002/08/31/big/img_17431
2002/07/28/big/img_192
2002/08/26/big/img_259
2002/08/18/big/img_484
2002/07/29/big/img_580
2002/07/26/big/img_84
2002/08/02/big/img_302
2002/08/31/big/img_17007
2003/01/15/big/img_543
2002/09/01/big/img_16488
2002/08/22/big/img_798
2002/07/30/big/img_383
2002/08/04/big/img_668
2002/08/13/big/img_156
2002/08/07/big/img_1353
2002/07/25/big/img_281
2003/01/14/big/img_587
2003/01/15/big/img_524
2002/08/19/big/img_726
2002/08/21/big/img_709
2002/08/26/big/img_465
2002/07/31/big/img_658
2002/08/28/big/img_19148
2002/07/23/big/img_423
2002/08/16/big/img_758
2002/08/22/big/img_523
2002/08/16/big/img_591
2002/08/23/big/img_845
2002/07/26/big/img_678
2002/08/09/big/img_806
2002/08/06/big/img_2369
2002/07/29/big/img_457
2002/07/19/big/img_278
2002/08/30/big/img_18107
2002/07/26/big/img_444
2002/08/20/big/img_278
2002/08/26/big/img_92
2002/08/26/big/img_257
2002/07/25/big/img_266
2002/08/05/big/img_3829
2002/07/26/big/img_757
2002/07/29/big/img_1536
2002/08/09/big/img_472
2003/01/17/big/img_480
2002/08/28/big/img_19355
2002/07/26/big/img_97
2002/08/06/big/img_2503
2002/07/19/big/img_254
2002/08/01/big/img_1470
2002/08/21/big/img_42
2002/08/20/big/img_217
2002/08/06/big/img_2459
2002/07/19/big/img_552
2002/08/13/big/img_717
2002/08/12/big/img_586
2002/08/20/big/img_411
2003/01/13/big/img_768
2002/08/07/big/img_1747
2002/08/15/big/img_385
2002/08/01/big/img_1648
2002/08/15/big/img_311
2002/08/21/big/img_95
2002/08/09/big/img_108
2002/08/21/big/img_398
2002/08/17/big/img_340
2002/08/14/big/img_474
2002/08/13/big/img_294
2002/08/24/big/img_840
2002/08/09/big/img_808
2002/08/23/big/img_491
2002/07/28/big/img_33
2003/01/13/big/img_664
2002/08/02/big/img_261
2002/08/09/big/img_591
2002/07/26/big/img_309
2003/01/14/big/img_372
2002/08/19/big/img_581
2002/08/19/big/img_168
2002/08/26/big/img_422
2002/07/24/big/img_106
2002/08/01/big/img_1936
2002/08/05/big/img_3764
2002/08/21/big/img_266
2002/08/31/big/img_17968
2002/08/01/big/img_1941
2002/08/15/big/img_550
2002/08/14/big/img_13
2002/07/30/big/img_171
2003/01/13/big/img_490
2002/07/25/big/img_427
2002/07/19/big/img_770
2002/08/12/big/img_759
2003/01/15/big/img_1360
2002/08/05/big/img_3692
2003/01/16/big/img_30
2002/07/25/big/img_1026
2002/07/22/big/img_288
2002/08/29/big/img_18801
2002/07/24/big/img_793
2002/08/13/big/img_178
2002/08/06/big/img_2322
2003/01/14/big/img_560
2002/08/18/big/img_408
2003/01/16/big/img_915
2003/01/16/big/img_679
2002/08/07/big/img_1552
2002/08/29/big/img_19050
2002/08/01/big/img_2172
2002/07/31/big/img_30
2002/07/30/big/img_1019
2002/07/30/big/img_587
2003/01/13/big/img_773
2002/07/30/big/img_410
2002/07/28/big/img_65
2002/08/05/big/img_3138
2002/07/23/big/img_541
2002/08/22/big/img_963
2002/07/27/big/img_657
2002/07/30/big/img_1051
2003/01/16/big/img_150
2002/07/31/big/img_519
2002/08/01/big/img_1961
2002/08/05/big/img_3752
2002/07/23/big/img_631
2003/01/14/big/img_237
2002/07/28/big/img_21
2002/07/22/big/img_813
2002/08/05/big/img_3563
2003/01/17/big/img_620
2002/07/19/big/img_523
2002/07/30/big/img_904
2002/08/29/big/img_18642
2002/08/11/big/img_492
2002/08/01/big/img_2130
2002/07/25/big/img_618
2002/08/17/big/img_305
2003/01/16/big/img_520
2002/07/26/big/img_495
2002/08/17/big/img_164
2002/08/03/big/img_440
2002/07/24/big/img_441
2002/08/06/big/img_2146
2002/08/11/big/img_558
2002/08/02/big/img_545
2002/08/31/big/img_18090
2003/01/01/big/img_136
2002/07/25/big/img_1099
2003/01/13/big/img_728
2003/01/16/big/img_197
2002/07/26/big/img_651
2002/08/11/big/img_676
2003/01/15/big/img_10
2002/08/21/big/img_250
2002/08/14/big/img_325
2002/08/04/big/img_390
2002/07/24/big/img_554
2003/01/16/big/img_333
2002/07/31/big/img_922
2002/09/02/big/img_15586
2003/01/16/big/img_184
2002/07/22/big/img_766
2002/07/21/big/img_608
2002/08/07/big/img_1578
2002/08/17/big/img_961
2002/07/27/big/img_324
2002/08/05/big/img_3765
2002/08/23/big/img_462
2003/01/16/big/img_382
2002/08/27/big/img_19838
2002/08/01/big/img_1505
2002/08/21/big/img_662
2002/08/14/big/img_605
2002/08/19/big/img_816
2002/07/29/big/img_136
2002/08/20/big/img_719
2002/08/06/big/img_2826
2002/08/10/big/img_630
2003/01/17/big/img_973
2002/08/14/big/img_116
2002/08/02/big/img_666
2002/08/21/big/img_710
2002/08/05/big/img_55
2002/07/31/big/img_229
2002/08/01/big/img_1549
2002/07/23/big/img_432
2002/07/21/big/img_430
2002/08/21/big/img_549
2002/08/08/big/img_985
2002/07/20/big/img_610
2002/07/23/big/img_978
2002/08/23/big/img_219
2002/07/25/big/img_175
2003/01/15/big/img_230
2002/08/23/big/img_385
2002/07/31/big/img_879
2002/08/12/big/img_495
2002/08/22/big/img_499
2002/08/30/big/img_18322
2002/08/15/big/img_795
2002/08/13/big/img_835
2003/01/17/big/img_930
2002/07/30/big/img_873
2002/08/11/big/img_257
2002/07/31/big/img_593
2002/08/21/big/img_916
2003/01/13/big/img_814
2002/07/25/big/img_722
2002/08/16/big/img_379
2002/07/31/big/img_497
2002/07/22/big/img_602
2002/08/21/big/img_642
2002/08/21/big/img_614
2002/08/23/big/img_482
2002/07/29/big/img_603
2002/08/13/big/img_705
2002/07/23/big/img_833
2003/01/14/big/img_511
2002/07/24/big/img_376
2002/08/17/big/img_1030
2002/08/05/big/img_3576
2002/08/16/big/img_540
2002/07/22/big/img_630
2002/08/10/big/img_180
2002/08/14/big/img_905
2002/08/29/big/img_18777
2002/08/22/big/img_693
2003/01/16/big/img_933
2002/08/20/big/img_555
2002/08/15/big/img_549
2003/01/14/big/img_830
2003/01/16/big/img_64
2002/08/27/big/img_19670
2002/08/22/big/img_729
2002/07/27/big/img_981
2002/08/09/big/img_458
2003/01/17/big/img_884
2002/07/25/big/img_639
2002/08/31/big/img_18008
2002/08/22/big/img_249
2002/08/17/big/img_971
2002/08/04/big/img_308
2002/07/28/big/img_362
2002/08/12/big/img_142
2002/08/26/big/img_61
2002/08/14/big/img_422
2002/07/19/big/img_607
2003/01/15/big/img_717
2002/08/01/big/img_1475
2002/08/29/big/img_19061
2003/01/01/big/img_346
2002/07/20/big/img_315
2003/01/15/big/img_756
2002/08/15/big/img_879
2002/08/08/big/img_615
2003/01/13/big/img_431
2002/08/05/big/img_3233
2002/08/24/big/img_526
2003/01/13/big/img_717
2002/09/01/big/img_16408
2002/07/22/big/img_217
2002/07/31/big/img_960
2002/08/21/big/img_610
2002/08/05/big/img_3753
2002/08/03/big/img_151
2002/08/21/big/img_267
2002/08/01/big/img_2175
2002/08/04/big/img_556
2002/08/21/big/img_527
2002/09/02/big/img_15800
2002/07/27/big/img_156
2002/07/20/big/img_590
2002/08/15/big/img_700
2002/08/08/big/img_444
2002/07/25/big/img_94
2002/07/24/big/img_778
2002/08/14/big/img_694
2002/07/20/big/img_666
2002/08/02/big/img_200
2002/08/02/big/img_578
2003/01/17/big/img_332
2002/09/01/big/img_16352
2002/08/27/big/img_19668
2002/07/23/big/img_823
2002/08/13/big/img_431
2003/01/16/big/img_463
2002/08/27/big/img_19711
2002/08/23/big/img_154
2002/07/31/big/img_360
2002/08/23/big/img_555
2002/08/10/big/img_561
2003/01/14/big/img_550
2002/08/07/big/img_1370
2002/07/30/big/img_1184
2002/08/01/big/img_1445
2002/08/23/big/img_22
2002/07/30/big/img_606
2003/01/17/big/img_271
2002/08/31/big/img_17316
2002/08/16/big/img_973
2002/07/26/big/img_77
2002/07/20/big/img_788
2002/08/06/big/img_2426
2002/08/07/big/img_1498
2002/08/16/big/img_358
2002/08/06/big/img_2851
2002/08/12/big/img_359
2002/08/01/big/img_1521
2002/08/02/big/img_709
2002/08/20/big/img_935
2002/08/12/big/img_188
2002/08/24/big/img_411
2002/08/22/big/img_680
2002/08/06/big/img_2480
2002/07/20/big/img_627
2002/07/30/big/img_214
2002/07/25/big/img_354
2002/08/02/big/img_636
2003/01/15/big/img_661
2002/08/07/big/img_1327
2002/08/01/big/img_2108
2002/08/31/big/img_17919
2002/08/29/big/img_18768
2002/08/05/big/img_3840
2002/07/26/big/img_242
2003/01/14/big/img_451
2002/08/20/big/img_923
2002/08/27/big/img_19908
2002/08/16/big/img_282
2002/08/19/big/img_440
2003/01/01/big/img_230
2002/08/08/big/img_212
2002/07/20/big/img_443
2002/08/25/big/img_635
2003/01/13/big/img_1169
2002/07/26/big/img_998
2002/08/15/big/img_995
2002/08/06/big/img_3002
2002/07/29/big/img_460
2003/01/14/big/img_925
2002/07/23/big/img_539
2002/08/16/big/img_694
2003/01/13/big/img_459
2002/07/23/big/img_249
2002/08/20/big/img_539
2002/08/04/big/img_186
2002/08/26/big/img_264
2002/07/22/big/img_704
2002/08/25/big/img_277
2002/08/22/big/img_988
2002/07/29/big/img_504
2002/08/05/big/img_3600
2002/08/30/big/img_18380
2003/01/14/big/img_937
2002/08/21/big/img_254
2002/08/10/big/img_130
2002/08/20/big/img_339
2003/01/14/big/img_428
2002/08/20/big/img_889
2002/08/31/big/img_17637
2002/07/26/big/img_644
2002/09/01/big/img_16776
2002/08/06/big/img_2239
2002/08/06/big/img_2646
2003/01/13/big/img_491
2002/08/10/big/img_579
2002/08/21/big/img_713
2002/08/22/big/img_482
2002/07/22/big/img_167
2002/07/24/big/img_539
2002/08/14/big/img_721
2002/07/25/big/img_389
2002/09/01/big/img_16591
2002/08/13/big/img_543
2003/01/14/big/img_432
2002/08/09/big/img_287
2002/07/26/big/img_126
2002/08/23/big/img_412
2002/08/15/big/img_1034
2002/08/28/big/img_19485
2002/07/31/big/img_236
2002/07/30/big/img_523
2002/07/19/big/img_141
2003/01/17/big/img_957
2002/08/04/big/img_81
2002/07/25/big/img_206
2002/08/15/big/img_716
2002/08/13/big/img_403
2002/08/15/big/img_685
2002/07/26/big/img_884
2002/07/19/big/img_499
2002/07/23/big/img_772
2002/07/27/big/img_752
2003/01/14/big/img_493
2002/08/25/big/img_664
2002/07/31/big/img_334
2002/08/26/big/img_678
2002/09/01/big/img_16541
2003/01/14/big/img_347
2002/07/23/big/img_187
2002/07/30/big/img_1163
2002/08/05/big/img_35
2002/08/22/big/img_944
2002/08/07/big/img_1239
2002/07/29/big/img_1215
2002/08/03/big/img_312
2002/08/05/big/img_3523
2002/07/29/big/img_218
2002/08/13/big/img_672
2002/08/16/big/img_205
2002/08/17/big/img_594
2002/07/29/big/img_1411
2002/07/30/big/img_942
2003/01/16/big/img_312
2002/08/08/big/img_312
2002/07/25/big/img_15
2002/08/09/big/img_839
2002/08/01/big/img_2069
2002/08/31/big/img_17512
2002/08/01/big/img_3
2002/07/31/big/img_320
2003/01/15/big/img_1265
2002/08/14/big/img_563
2002/07/31/big/img_167
2002/08/20/big/img_374
2002/08/13/big/img_406
2002/08/08/big/img_625
2002/08/02/big/img_314
2002/08/27/big/img_19964
2002/09/01/big/img_16670
2002/07/31/big/img_599
2002/08/29/big/img_18906
2002/07/24/big/img_373
2002/07/26/big/img_513
2002/09/02/big/img_15497
2002/08/19/big/img_117
2003/01/01/big/img_158
2002/08/24/big/img_178
2003/01/13/big/img_935
2002/08/13/big/img_609
2002/08/30/big/img_18341
2002/08/25/big/img_674
2003/01/13/big/img_209
2002/08/13/big/img_258
2002/08/05/big/img_3543
2002/08/07/big/img_1970
2002/08/06/big/img_3004
2003/01/17/big/img_487
2002/08/24/big/img_873
2002/08/29/big/img_18730
2002/08/09/big/img_375
2003/01/16/big/img_751
2002/08/02/big/img_603
2002/08/19/big/img_325
2002/09/01/big/img_16420
2002/08/05/big/img_3633
2002/08/21/big/img_516
2002/07/19/big/img_501
2002/07/26/big/img_688
2002/07/24/big/img_256
2002/07/25/big/img_438
2002/07/31/big/img_1017
2002/08/22/big/img_512
2002/07/21/big/img_543
2002/08/08/big/img_223
2002/08/19/big/img_189
2002/08/12/big/img_630
2002/07/30/big/img_958
2002/07/28/big/img_208
2002/08/31/big/img_17691
2002/07/22/big/img_542
2002/07/19/big/img_741
2002/07/19/big/img_158
2002/08/15/big/img_399
2002/08/01/big/img_2159
2002/08/14/big/img_455
2002/08/17/big/img_1011
2002/08/26/big/img_744
2002/08/12/big/img_624
2003/01/17/big/img_821
2002/08/16/big/img_980
2002/07/28/big/img_281
2002/07/25/big/img_171
2002/08/03/big/img_116
2002/07/22/big/img_467
2002/07/31/big/img_750
2002/07/26/big/img_435
2002/07/19/big/img_822
2002/08/13/big/img_626
2002/08/11/big/img_344
2002/08/02/big/img_473
2002/09/01/big/img_16817
2002/08/01/big/img_1275
2002/08/28/big/img_19270
2002/07/23/big/img_607
2002/08/09/big/img_316
2002/07/29/big/img_626
2002/07/24/big/img_824
2002/07/22/big/img_342
2002/08/08/big/img_794
2002/08/07/big/img_1209
2002/07/19/big/img_18
2002/08/25/big/img_634
2002/07/24/big/img_730
2003/01/17/big/img_356
2002/07/23/big/img_305
2002/07/30/big/img_453
2003/01/13/big/img_972
2002/08/06/big/img_2610
2002/08/29/big/img_18920
2002/07/31/big/img_123
2002/07/26/big/img_979
2002/08/24/big/img_635
2002/08/05/big/img_3704
2002/08/07/big/img_1358
2002/07/22/big/img_306
2002/08/13/big/img_619
2002/08/02/big/img_366
from .wider_face import WiderFaceDetection, detection_collate
from .data_augment import *
from .config import *
# config.py
cfg_mnet = {
'name': 'mobilenet0.25',
'min_sizes': [[16, 32], [64, 128], [256, 512]],
'steps': [8, 16, 32],
'variance': [0.1, 0.2],
'clip': False,
'loc_weight': 2.0,
'gpu_train': True,
'batch_size': 32,
'ngpu': 1,
'epoch': 250,
'decay1': 190,
'decay2': 220,
'image_size': 640,
'pretrain': False,
'return_layers': {'stage1': 1, 'stage2': 2, 'stage3': 3},
'in_channel': 32,
'out_channel': 64
}
cfg_re50 = {
'name': 'Resnet50',
'min_sizes': [[16, 32], [64, 128], [256, 512]],
'steps': [8, 16, 32],
'variance': [0.1, 0.2],
'clip': False,
'loc_weight': 2.0,
'gpu_train': True,
'batch_size': 24,
'ngpu': 4,
'epoch': 100,
'decay1': 70,
'decay2': 90,
'image_size': 840,
'pretrain': True,
'return_layers': {'layer2': 1, 'layer3': 2, 'layer4': 3},
'in_channel': 256,
'out_channel': 256
}
import cv2
import numpy as np
import random
from utils.box_utils import matrix_iof
def _crop(image, boxes, labels, landm, img_dim):
height, width, _ = image.shape
pad_image_flag = True
for _ in range(250):
"""
if random.uniform(0, 1) <= 0.2:
scale = 1.0
else:
scale = random.uniform(0.3, 1.0)
"""
PRE_SCALES = [0.3, 0.45, 0.6, 0.8, 1.0]
scale = random.choice(PRE_SCALES)
short_side = min(width, height)
w = int(scale * short_side)
h = w
if width == w:
l = 0
else:
l = random.randrange(width - w)
if height == h:
t = 0
else:
t = random.randrange(height - h)
roi = np.array((l, t, l + w, t + h))
value = matrix_iof(boxes, roi[np.newaxis])
flag = (value >= 1)
if not flag.any():
continue
centers = (boxes[:, :2] + boxes[:, 2:]) / 2
mask_a = np.logical_and(roi[:2] < centers, centers < roi[2:]).all(axis=1)
boxes_t = boxes[mask_a].copy()
labels_t = labels[mask_a].copy()
landms_t = landm[mask_a].copy()
landms_t = landms_t.reshape([-1, 5, 2])
if boxes_t.shape[0] == 0:
continue
image_t = image[roi[1]:roi[3], roi[0]:roi[2]]
boxes_t[:, :2] = np.maximum(boxes_t[:, :2], roi[:2])
boxes_t[:, :2] -= roi[:2]
boxes_t[:, 2:] = np.minimum(boxes_t[:, 2:], roi[2:])
boxes_t[:, 2:] -= roi[:2]
# landm
landms_t[:, :, :2] = landms_t[:, :, :2] - roi[:2]
landms_t[:, :, :2] = np.maximum(landms_t[:, :, :2], np.array([0, 0]))
landms_t[:, :, :2] = np.minimum(landms_t[:, :, :2], roi[2:] - roi[:2])
landms_t = landms_t.reshape([-1, 10])
# make sure that the cropped image contains at least one face > 16 pixel at training image scale
b_w_t = (boxes_t[:, 2] - boxes_t[:, 0] + 1) / w * img_dim
b_h_t = (boxes_t[:, 3] - boxes_t[:, 1] + 1) / h * img_dim
mask_b = np.minimum(b_w_t, b_h_t) > 0.0
boxes_t = boxes_t[mask_b]
labels_t = labels_t[mask_b]
landms_t = landms_t[mask_b]
if boxes_t.shape[0] == 0:
continue
pad_image_flag = False
return image_t, boxes_t, labels_t, landms_t, pad_image_flag
return image, boxes, labels, landm, pad_image_flag
def _distort(image):
def _convert(image, alpha=1, beta=0):
tmp = image.astype(float) * alpha + beta
tmp[tmp < 0] = 0
tmp[tmp > 255] = 255
image[:] = tmp
image = image.copy()
if random.randrange(2):
#brightness distortion
if random.randrange(2):
_convert(image, beta=random.uniform(-32, 32))
#contrast distortion
if random.randrange(2):
_convert(image, alpha=random.uniform(0.5, 1.5))
image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
#saturation distortion
if random.randrange(2):
_convert(image[:, :, 1], alpha=random.uniform(0.5, 1.5))
#hue distortion
if random.randrange(2):
tmp = image[:, :, 0].astype(int) + random.randint(-18, 18)
tmp %= 180
image[:, :, 0] = tmp
image = cv2.cvtColor(image, cv2.COLOR_HSV2BGR)
else:
#brightness distortion
if random.randrange(2):
_convert(image, beta=random.uniform(-32, 32))
image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
#saturation distortion
if random.randrange(2):
_convert(image[:, :, 1], alpha=random.uniform(0.5, 1.5))
#hue distortion
if random.randrange(2):
tmp = image[:, :, 0].astype(int) + random.randint(-18, 18)
tmp %= 180
image[:, :, 0] = tmp
image = cv2.cvtColor(image, cv2.COLOR_HSV2BGR)
#contrast distortion
if random.randrange(2):
_convert(image, alpha=random.uniform(0.5, 1.5))
return image
def _expand(image, boxes, fill, p):
if random.randrange(2):
return image, boxes
height, width, depth = image.shape
scale = random.uniform(1, p)
w = int(scale * width)
h = int(scale * height)
left = random.randint(0, w - width)
top = random.randint(0, h - height)
boxes_t = boxes.copy()
boxes_t[:, :2] += (left, top)
boxes_t[:, 2:] += (left, top)
expand_image = np.empty(
(h, w, depth),
dtype=image.dtype)
expand_image[:, :] = fill
expand_image[top:top + height, left:left + width] = image
image = expand_image
return image, boxes_t
def _mirror(image, boxes, landms):
_, width, _ = image.shape
if random.randrange(2):
image = image[:, ::-1]
boxes = boxes.copy()
boxes[:, 0::2] = width - boxes[:, 2::-2]
# landm
landms = landms.copy()
landms = landms.reshape([-1, 5, 2])
landms[:, :, 0] = width - landms[:, :, 0]
tmp = landms[:, 1, :].copy()
landms[:, 1, :] = landms[:, 0, :]
landms[:, 0, :] = tmp
tmp1 = landms[:, 4, :].copy()
landms[:, 4, :] = landms[:, 3, :]
landms[:, 3, :] = tmp1
landms = landms.reshape([-1, 10])
return image, boxes, landms
def _pad_to_square(image, rgb_mean, pad_image_flag):
if not pad_image_flag:
return image
height, width, _ = image.shape
long_side = max(width, height)
image_t = np.empty((long_side, long_side, 3), dtype=image.dtype)
image_t[:, :] = rgb_mean
image_t[0:0 + height, 0:0 + width] = image
return image_t
def _resize_subtract_mean(image, insize, rgb_mean):
interp_methods = [cv2.INTER_LINEAR, cv2.INTER_CUBIC, cv2.INTER_AREA, cv2.INTER_NEAREST, cv2.INTER_LANCZOS4]
interp_method = interp_methods[random.randrange(5)]
image = cv2.resize(image, (insize, insize), interpolation=interp_method)
image = image.astype(np.float32)
image -= rgb_mean
return image.transpose(2, 0, 1)
class preproc(object):
def __init__(self, img_dim, rgb_means):
self.img_dim = img_dim
self.rgb_means = rgb_means
def __call__(self, image, targets):
assert targets.shape[0] > 0, "this image does not have gt"
boxes = targets[:, :4].copy()
labels = targets[:, -1].copy()
landm = targets[:, 4:-1].copy()
image_t, boxes_t, labels_t, landm_t, pad_image_flag = _crop(image, boxes, labels, landm, self.img_dim)
image_t = _distort(image_t)
image_t = _pad_to_square(image_t,self.rgb_means, pad_image_flag)
image_t, boxes_t, landm_t = _mirror(image_t, boxes_t, landm_t)
height, width, _ = image_t.shape
image_t = _resize_subtract_mean(image_t, self.img_dim, self.rgb_means)
boxes_t[:, 0::2] /= width
boxes_t[:, 1::2] /= height
landm_t[:, 0::2] /= width
landm_t[:, 1::2] /= height
labels_t = np.expand_dims(labels_t, 1)
targets_t = np.hstack((boxes_t, landm_t, labels_t))
return image_t, targets_t
import os
import os.path
import sys
import torch
import torch.utils.data as data
import cv2
import numpy as np
class WiderFaceDetection(data.Dataset):
def __init__(self, txt_path, preproc=None):
self.preproc = preproc
self.imgs_path = []
self.words = []
f = open(txt_path,'r')
lines = f.readlines()
isFirst = True
labels = []
for line in lines:
line = line.rstrip()
if line.startswith('#'):
if isFirst is True:
isFirst = False
else:
labels_copy = labels.copy()
self.words.append(labels_copy)
labels.clear()
path = line[2:]
path = txt_path.replace('label.txt','images/') + path
self.imgs_path.append(path)
else:
line = line.split(' ')
label = [float(x) for x in line]
labels.append(label)
self.words.append(labels)
def __len__(self):
return len(self.imgs_path)
def __getitem__(self, index):
img = cv2.imread(self.imgs_path[index])
height, width, _ = img.shape
labels = self.words[index]
annotations = np.zeros((0, 15))
if len(labels) == 0:
return annotations
for idx, label in enumerate(labels):
annotation = np.zeros((1, 15))
# bbox
annotation[0, 0] = label[0] # x1
annotation[0, 1] = label[1] # y1
annotation[0, 2] = label[0] + label[2] # x2
annotation[0, 3] = label[1] + label[3] # y2
# landmarks
annotation[0, 4] = label[4] # l0_x
annotation[0, 5] = label[5] # l0_y
annotation[0, 6] = label[7] # l1_x
annotation[0, 7] = label[8] # l1_y
annotation[0, 8] = label[10] # l2_x
annotation[0, 9] = label[11] # l2_y
annotation[0, 10] = label[13] # l3_x
annotation[0, 11] = label[14] # l3_y
annotation[0, 12] = label[16] # l4_x
annotation[0, 13] = label[17] # l4_y
if (annotation[0, 4]<0):
annotation[0, 14] = -1
else:
annotation[0, 14] = 1
annotations = np.append(annotations, annotation, axis=0)
target = np.array(annotations)
if self.preproc is not None:
img, target = self.preproc(img, target)
return torch.from_numpy(img), target
def detection_collate(batch):
"""Custom collate fn for dealing with batches of images that have a different
number of associated object annotations (bounding boxes).
Arguments:
batch: (tuple) A tuple of tensor images and lists of annotations
Return:
A tuple containing:
1) (tensor) batch of images stacked on their 0 dim
2) (list of tensors) annotations for a given image are stacked on 0 dim
"""
targets = []
imgs = []
for _, sample in enumerate(batch):
for _, tup in enumerate(sample):
if torch.is_tensor(tup):
imgs.append(tup)
elif isinstance(tup, type(np.empty(0))):
annos = torch.from_numpy(tup).float()
targets.append(annos)
return (torch.stack(imgs, 0), targets)
from .functions import *
from .modules import *
import torch
from itertools import product as product
import numpy as np
from math import ceil
class PriorBox(object):
def __init__(self, cfg, image_size=None, phase='train'):
super(PriorBox, self).__init__()
self.min_sizes = cfg['min_sizes']
self.steps = cfg['steps']
self.clip = cfg['clip']
self.image_size = image_size
self.feature_maps = [[ceil(self.image_size[0]/step), ceil(self.image_size[1]/step)] for step in self.steps]
self.name = "s"
def forward(self):
anchors = []
for k, f in enumerate(self.feature_maps):
min_sizes = self.min_sizes[k]
for i, j in product(range(f[0]), range(f[1])):
for min_size in min_sizes:
s_kx = min_size / self.image_size[1]
s_ky = min_size / self.image_size[0]
dense_cx = [x * self.steps[k] / self.image_size[1] for x in [j + 0.5]]
dense_cy = [y * self.steps[k] / self.image_size[0] for y in [i + 0.5]]
for cy, cx in product(dense_cy, dense_cx):
anchors += [cx, cy, s_kx, s_ky]
# back to torch land
output = torch.Tensor(anchors).view(-1, 4)
if self.clip:
output.clamp_(max=1, min=0)
return output
from .multibox_loss import MultiBoxLoss
__all__ = ['MultiBoxLoss']
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.autograd import Variable
from utils.box_utils import match, log_sum_exp
from data import cfg_mnet
GPU = cfg_mnet['gpu_train']
class MultiBoxLoss(nn.Module):
"""SSD Weighted Loss Function
Compute Targets:
1) Produce Confidence Target Indices by matching ground truth boxes
with (default) 'priorboxes' that have jaccard index > threshold parameter
(default threshold: 0.5).
2) Produce localization target by 'encoding' variance into offsets of ground
truth boxes and their matched 'priorboxes'.
3) Hard negative mining to filter the excessive number of negative examples
that comes with using a large number of default bounding boxes.
(default negative:positive ratio 3:1)
Objective Loss:
L(x,c,l,g) = (Lconf(x, c) + αLloc(x,l,g)) / N
Where, Lconf is the CrossEntropy Loss and Lloc is the SmoothL1 Loss
weighted by α which is set to 1 by cross val.
Args:
c: class confidences,
l: predicted boxes,
g: ground truth boxes
N: number of matched default boxes
See: https://arxiv.org/pdf/1512.02325.pdf for more details.
"""
def __init__(self, num_classes, overlap_thresh, prior_for_matching, bkg_label, neg_mining, neg_pos, neg_overlap, encode_target):
super(MultiBoxLoss, self).__init__()
self.num_classes = num_classes
self.threshold = overlap_thresh
self.background_label = bkg_label
self.encode_target = encode_target
self.use_prior_for_matching = prior_for_matching
self.do_neg_mining = neg_mining
self.negpos_ratio = neg_pos
self.neg_overlap = neg_overlap
self.variance = [0.1, 0.2]
def forward(self, predictions, priors, targets):
"""Multibox Loss
Args:
predictions (tuple): A tuple containing loc preds, conf preds,
and prior boxes from SSD net.
conf shape: torch.size(batch_size,num_priors,num_classes)
loc shape: torch.size(batch_size,num_priors,4)
priors shape: torch.size(num_priors,4)
ground_truth (tensor): Ground truth boxes and labels for a batch,
shape: [batch_size,num_objs,5] (last idx is the label).
"""
loc_data, conf_data, landm_data = predictions
priors = priors
num = loc_data.size(0)
num_priors = (priors.size(0))
# match priors (default boxes) and ground truth boxes
loc_t = torch.Tensor(num, num_priors, 4)
landm_t = torch.Tensor(num, num_priors, 10)
conf_t = torch.LongTensor(num, num_priors)
for idx in range(num):
truths = targets[idx][:, :4].data
labels = targets[idx][:, -1].data
landms = targets[idx][:, 4:14].data
defaults = priors.data
match(self.threshold, truths, defaults, self.variance, labels, landms, loc_t, conf_t, landm_t, idx)
if GPU:
loc_t = loc_t.cuda()
conf_t = conf_t.cuda()
landm_t = landm_t.cuda()
zeros = torch.tensor(0).cuda()
# landm Loss (Smooth L1)
# Shape: [batch,num_priors,10]
pos1 = conf_t > zeros
num_pos_landm = pos1.long().sum(1, keepdim=True)
N1 = max(num_pos_landm.data.sum().float(), 1)
pos_idx1 = pos1.unsqueeze(pos1.dim()).expand_as(landm_data)
landm_p = landm_data[pos_idx1].view(-1, 10)
landm_t = landm_t[pos_idx1].view(-1, 10)
loss_landm = F.smooth_l1_loss(landm_p, landm_t, reduction='sum')
pos = conf_t != zeros
conf_t[pos] = 1
# Localization Loss (Smooth L1)
# Shape: [batch,num_priors,4]
pos_idx = pos.unsqueeze(pos.dim()).expand_as(loc_data)
loc_p = loc_data[pos_idx].view(-1, 4)
loc_t = loc_t[pos_idx].view(-1, 4)
loss_l = F.smooth_l1_loss(loc_p, loc_t, reduction='sum')
# Compute max conf across batch for hard negative mining
batch_conf = conf_data.view(-1, self.num_classes)
loss_c = log_sum_exp(batch_conf) - batch_conf.gather(1, conf_t.view(-1, 1))
# Hard Negative Mining
loss_c[pos.view(-1, 1)] = 0 # filter out pos boxes for now
loss_c = loss_c.view(num, -1)
_, loss_idx = loss_c.sort(1, descending=True)
_, idx_rank = loss_idx.sort(1)
num_pos = pos.long().sum(1, keepdim=True)
num_neg = torch.clamp(self.negpos_ratio*num_pos, max=pos.size(1)-1)
neg = idx_rank < num_neg.expand_as(idx_rank)
# Confidence Loss Including Positive and Negative Examples
pos_idx = pos.unsqueeze(2).expand_as(conf_data)
neg_idx = neg.unsqueeze(2).expand_as(conf_data)
conf_p = conf_data[(pos_idx+neg_idx).gt(0)].view(-1,self.num_classes)
targets_weighted = conf_t[(pos+neg).gt(0)]
loss_c = F.cross_entropy(conf_p, targets_weighted, reduction='sum')
# Sum of losses: L(x,c,l,g) = (Lconf(x, c) + αLloc(x,l,g)) / N
N = max(num_pos.data.sum().float(), 1)
loss_l /= N
loss_c /= N
loss_landm /= N1
return loss_l, loss_c, loss_landm
import time
import torch
import torch.nn as nn
import torchvision.models._utils as _utils
import torchvision.models as models
import torch.nn.functional as F
from torch.autograd import Variable
def conv_bn(inp, oup, stride = 1, leaky = 0):
return nn.Sequential(
nn.Conv2d(inp, oup, 3, stride, 1, bias=False),
nn.BatchNorm2d(oup),
nn.LeakyReLU(negative_slope=leaky, inplace=True)
)
def conv_bn_no_relu(inp, oup, stride):
return nn.Sequential(
nn.Conv2d(inp, oup, 3, stride, 1, bias=False),
nn.BatchNorm2d(oup),
)
def conv_bn1X1(inp, oup, stride, leaky=0):
return nn.Sequential(
nn.Conv2d(inp, oup, 1, stride, padding=0, bias=False),
nn.BatchNorm2d(oup),
nn.LeakyReLU(negative_slope=leaky, inplace=True)
)
def conv_dw(inp, oup, stride, leaky=0.1):
return nn.Sequential(
nn.Conv2d(inp, inp, 3, stride, 1, groups=inp, bias=False),
nn.BatchNorm2d(inp),
nn.LeakyReLU(negative_slope= leaky,inplace=True),
nn.Conv2d(inp, oup, 1, 1, 0, bias=False),
nn.BatchNorm2d(oup),
nn.LeakyReLU(negative_slope= leaky,inplace=True),
)
class SSH(nn.Module):
def __init__(self, in_channel, out_channel):
super(SSH, self).__init__()
assert out_channel % 4 == 0
leaky = 0
if (out_channel <= 64):
leaky = 0.1
self.conv3X3 = conv_bn_no_relu(in_channel, out_channel//2, stride=1)
self.conv5X5_1 = conv_bn(in_channel, out_channel//4, stride=1, leaky = leaky)
self.conv5X5_2 = conv_bn_no_relu(out_channel//4, out_channel//4, stride=1)
self.conv7X7_2 = conv_bn(out_channel//4, out_channel//4, stride=1, leaky = leaky)
self.conv7x7_3 = conv_bn_no_relu(out_channel//4, out_channel//4, stride=1)
def forward(self, input):
conv3X3 = self.conv3X3(input)
conv5X5_1 = self.conv5X5_1(input)
conv5X5 = self.conv5X5_2(conv5X5_1)
conv7X7_2 = self.conv7X7_2(conv5X5_1)
conv7X7 = self.conv7x7_3(conv7X7_2)
out = torch.cat([conv3X3, conv5X5, conv7X7], dim=1)
out = F.relu(out)
return out
class FPN(nn.Module):
def __init__(self,in_channels_list,out_channels):
super(FPN,self).__init__()
leaky = 0
if (out_channels <= 64):
leaky = 0.1
self.output1 = conv_bn1X1(in_channels_list[0], out_channels, stride = 1, leaky = leaky)
self.output2 = conv_bn1X1(in_channels_list[1], out_channels, stride = 1, leaky = leaky)
self.output3 = conv_bn1X1(in_channels_list[2], out_channels, stride = 1, leaky = leaky)
self.merge1 = conv_bn(out_channels, out_channels, leaky = leaky)
self.merge2 = conv_bn(out_channels, out_channels, leaky = leaky)
def forward(self, input):
# names = list(input.keys())
input = list(input.values())
output1 = self.output1(input[0])
output2 = self.output2(input[1])
output3 = self.output3(input[2])
up3 = F.interpolate(output3, size=[output2.size(2), output2.size(3)], mode="nearest")
output2 = output2 + up3
output2 = self.merge2(output2)
up2 = F.interpolate(output2, size=[output1.size(2), output1.size(3)], mode="nearest")
output1 = output1 + up2
output1 = self.merge1(output1)
out = [output1, output2, output3]
return out
class MobileNetV1(nn.Module):
def __init__(self):
super(MobileNetV1, self).__init__()
self.stage1 = nn.Sequential(
conv_bn(3, 8, 2, leaky = 0.1), # 3
conv_dw(8, 16, 1), # 7
conv_dw(16, 32, 2), # 11
conv_dw(32, 32, 1), # 19
conv_dw(32, 64, 2), # 27
conv_dw(64, 64, 1), # 43
)
self.stage2 = nn.Sequential(
conv_dw(64, 128, 2), # 43 + 16 = 59
conv_dw(128, 128, 1), # 59 + 32 = 91
conv_dw(128, 128, 1), # 91 + 32 = 123
conv_dw(128, 128, 1), # 123 + 32 = 155
conv_dw(128, 128, 1), # 155 + 32 = 187
conv_dw(128, 128, 1), # 187 + 32 = 219
)
self.stage3 = nn.Sequential(
conv_dw(128, 256, 2), # 219 +3 2 = 241
conv_dw(256, 256, 1), # 241 + 64 = 301
)
self.avg = nn.AdaptiveAvgPool2d((1,1))
self.fc = nn.Linear(256, 1000)
def forward(self, x):
x = self.stage1(x)
x = self.stage2(x)
x = self.stage3(x)
x = self.avg(x)
# x = self.model(x)
x = x.view(-1, 256)
x = self.fc(x)
return x
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment