├── centernet
├── __init__.py
├── config.py
├── loss.py
├── utils.py
├── fpn_loss.py
├── module.py
└── resnet_fpn.py
├── .idea
├── encodings.xml
├── vcs.xml
├── misc.xml
├── modules.xml
└── CenterNet-FPN.iml
├── README.md
├── data_produce.py
├── sample_train.py
├── image.py
├── dataset.py
├── test.py
├── fpn_dataset.py
├── test.txt
└── 2007trainval.txt
/centernet/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/centernet/config.py:
--------------------------------------------------------------------------------
1 | cfg = {
2 | 'pre_model' : None,
3 | 'start_iter' : 0,
4 | 'batch' : 4,
5 | 'input_w' : 384,
6 | 'input_h' : 384,
7 | 'output_w' : 96,
8 | 'output_h' : 96,
9 | 'num_class' : 20,
10 | '2007_dir' : '/data/bitahub/VOC2007/JPEGImages/',
11 | '2012_dir' : '/data/bitahub/VOC2012/JPEGImages/'
12 | }
--------------------------------------------------------------------------------
/.idea/CenterNet-FPN.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CenterNet-FPN
2 | This is an implementation of multi-scale CenterNet based on FPN. The results are verified on VOC2007.
3 |
4 | Here I do not use DCNv2 and deconvolution. The feature fusion method follows a standard FPN. The model
5 | is testd on VOC2007. Single-scale model only utilizes feature C2 to predict. Multi-scale model utilizes
6 | C2, C3, C4 to predict. In addition, I adopt the training trick in SNIP and Trident Networks. Objects of
7 | different scales are assigned to C2, C3 and C4 respectively.
8 |
9 |
10 | | Model | resolution | AP |
11 | | -------- | :-------: | :----: |
12 | | resnet18-dcn | 384 | 72.6 |
13 | | resnet101-dcn | 384 | 77.1 |
14 | | resnet18-fpn-c2 | 384 | 72.46 |
15 | | resnet18-fpn-multi | 384 | 74.97 |
16 | | resnet101-fpn-multi | 384 | 79.16 |
17 |
18 |
--------------------------------------------------------------------------------
/data_produce.py:
--------------------------------------------------------------------------------
1 | import xml.etree.ElementTree as ET
2 | import random
3 |
4 | classes = ['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog',
5 | 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor']
6 |
7 |
8 | def get_bbox(file):
9 | tree = ET.parse(file)
10 | root = tree.getroot()
11 |
12 | size = root.find('size')
13 | w = int(size.find('width').text)
14 | h = int(size.find('height').text)
15 |
16 | bbox = []
17 |
18 | for obj in root.iter('object'):
19 | difficult = obj.find('difficult').text
20 | cls = obj.find('name').text
21 | if cls not in classes or int(difficult)==1:
22 | continue
23 | cls = classes.index(cls)
24 | xmlbox = obj.find('bndbox')
25 | xmin = float(xmlbox.find('xmin').text)
26 | xmax = float(xmlbox.find('xmax').text)
27 | ymin = float(xmlbox.find('ymin').text)
28 | ymax = float(xmlbox.find('ymax').text)
29 | bbox.append([xmin,ymin,xmax,ymax,cls])
30 |
31 | return bbox
32 |
33 |
34 | def voc_produce():
35 | anns_2007 = '/data/bitahub/VOC2007/Annotations/'
36 | anns_2012 = '/data/bitahub/VOC2012/Annotations/'
37 |
38 | train_2007 = '2007trainval.txt'
39 | train_2012 = '2012trainval.txt'
40 | test_txt = 'test.txt'
41 |
42 | with open(train_2007) as f:
43 | files_2007 = f.readlines()
44 | files_2007 = [file.strip() for file in files_2007]
45 |
46 | with open(train_2012) as f:
47 | files_2012 = f.readlines()
48 | files_2012 = [file.strip() for file in files_2012]
49 |
50 | with open(test_txt) as f:
51 | test_files = f.readlines()
52 | test_files = [file.strip() for file in test_files]
53 |
54 | train_2007_detections = {}
55 | train_2012_detections = {}
56 | test_detections = {}
57 |
58 | for img in files_2007:
59 | bbox = get_bbox(anns_2007 + img + '.xml')
60 | train_2007_detections[img] = bbox
61 |
62 | for img in files_2012:
63 | bbox = get_bbox(anns_2012 + img + '.xml')
64 | train_2012_detections[img] = bbox
65 |
66 | for img in test_files:
67 | bbox = get_bbox(anns_2007 + img + '.xml')
68 | test_detections[img] = bbox
69 |
70 | train_2007_detections.update(train_2012_detections)
71 |
72 | return train_2007_detections, test_detections
73 |
74 |
75 | if __name__ == '__main__':
76 | voc_produce()
77 |
--------------------------------------------------------------------------------
/centernet/loss.py:
--------------------------------------------------------------------------------
1 | import torch
2 | import torch.nn as nn
3 |
4 | residual = torch.tensor(1e-4)
5 |
6 |
7 | class Loss(nn.Module):
8 |
9 | def __init__(self, center_weight=1.0, size_weight=0.1, off_weight=1.0):
10 | super(Loss, self).__init__()
11 | self.center_weight = center_weight
12 | self.size_weight = size_weight
13 | self.off_weight = off_weight
14 |
15 | self.focal_loss = refined_focal_loss
16 | self.regre_loss = regre_loss
17 |
18 | def forward(self, pred, gt):
19 | center_heats = pred[0]
20 | obj_size = pred[1]
21 |
22 | gt_center_heats = gt[0]
23 | gt_obj_size = gt[1]
24 | gt_pos = gt[2]
25 | gt_obj_mask = gt[3]
26 |
27 | batch = len(center_heats)
28 | # refined focal loss
29 | focal_loss = 0
30 | center_heats = torch.clamp(center_heats, min=1e-4, max=1-1e-4)
31 |
32 | focal_loss += self.focal_loss(center_heats, gt_center_heats)
33 | focal_loss = self.center_weight * focal_loss
34 |
35 | # size loss
36 | size_loss = 0
37 |
38 | size_loss += self.regre_loss(obj_size, gt_obj_size, gt_pos, gt_obj_mask)
39 | size_loss = self.size_weight * size_loss
40 |
41 | print('focal loss: ' + str(focal_loss))
42 | print('size loss: ' + str(size_loss))
43 |
44 | loss = (focal_loss + size_loss) / batch
45 |
46 | return loss.unsqueeze(0)
47 |
48 |
49 | def refined_focal_loss(pred, gt, alpha=2, beta=4):
50 | loss = 0
51 | batch = gt.size()[0]
52 |
53 | for i in range(batch):
54 | pos_inds = gt[i].eq(1)
55 | neg_inds = gt[i].lt(1)
56 |
57 | pos_pred = pred[i][pos_inds]
58 | pos_loss = torch.pow(1-pos_pred, alpha) * torch.log(pos_pred)
59 |
60 | neg_weight = torch.pow(1 - gt[i][neg_inds], beta)
61 | neg_pred = pred[i][neg_inds]
62 | neg_loss = neg_weight * torch.pow(neg_pred, alpha) * torch.log(1 - neg_pred)
63 |
64 | pos_loss = pos_loss.sum()
65 | neg_loss = neg_loss.sum()
66 | num_pos = pos_inds.float().sum()
67 |
68 | if pos_pred.nelement() == 0:
69 | loss = loss - neg_loss
70 | else:
71 | loss = loss - (pos_loss + neg_loss) / num_pos
72 |
73 | return loss
74 |
75 |
76 | def regre_loss(pred, gt, pos, mask):
77 | loss = 0
78 |
79 | batch = gt.size()[0]
80 | pos = pos.gt(0)
81 | pos_inds = pos.expand(batch, 4, 96, 96)
82 |
83 | obj_num = mask.float().sum()
84 |
85 | x = pred[pos_inds]
86 | gt_x = gt[pos_inds]
87 |
88 | x_loss = nn.functional.smooth_l1_loss(x, gt_x, size_average=False)
89 |
90 | loss += x_loss / (obj_num + residual)
91 |
92 | return loss
93 |
94 |
--------------------------------------------------------------------------------
/centernet/utils.py:
--------------------------------------------------------------------------------
1 | import numpy as np
2 | import torch
3 | import torch.nn as nn
4 | import math
5 |
6 |
7 | def draw_center(heatmap, center, obj_size, ratio=0.8):
8 | x, y = center
9 | height, width = obj_size
10 |
11 | w_range = math.floor(width * ratio / 2)
12 | h_range = math.floor(height * ratio / 2)
13 |
14 | ness = np.ones((h_range+1, w_range+1), dtype=np.float32)
15 | for i in range(h_range+1):
16 | for j in range(w_range+1):
17 | l = (width / 2) - w_range + j
18 | r = (width / 2) + w_range - j
19 | t = (height / 2) - h_range + i
20 | b = (height / 2) + h_range - i
21 |
22 | ness[i, j] = np.sqrt((l/r) * (t/b))
23 |
24 | origin_heatmap = heatmap[y-h_range:y+h_range+1, x-w_range:x+w_range+1]
25 | mask_heatmap = np.zeros((2*h_range+1, 2*w_range+1), dtype=np.float32)
26 |
27 | mask_heatmap[0:h_range+1, 0:w_range+1] = ness
28 | mask_heatmap[h_range:2*h_range+1, 0:w_range+1] = ness[::-1, :]
29 | mask_heatmap[0:h_range+1, w_range:2*w_range+1] = ness[:, ::-1]
30 | mask_heatmap[h_range:2*h_range+1, w_range:2*w_range+1] = ness[::-1, ::-1]
31 | '''
32 | mask_heatmap[y-h_range:y+1, x-w_range:x+1] = ness
33 | mask_heatmap[y:y+h_range+1, x-w_range:x+1] = ness[::-1, :]
34 | mask_heatmap[y-h_range:y+1, x:x+w_range+1] = ness[:, ::-1]
35 | mask_heatmap[y:y+h_range+1, x:x+w_range+1] = ness[::-1, ::-1]
36 | '''
37 | np.maximum(origin_heatmap, mask_heatmap, out=origin_heatmap)
38 |
39 |
40 | def gaussian2D(shape, sigma=1):
41 | m, n = [(ss - 1.) / 2. for ss in shape]
42 | y, x = np.ogrid[-m:m + 1, -n:n + 1]
43 |
44 | h = np.exp(-(x * x + y * y) / (2 * sigma * sigma))
45 | h[h < np.finfo(h.dtype).eps * h.max()] = 0
46 | return h
47 |
48 |
49 | def draw_gaussian(heatmap, center, radius, k=1):
50 | diameter = 2 * radius + 1
51 | gaussian = gaussian2D((diameter, diameter), sigma=diameter / 6)
52 |
53 | x, y = center
54 |
55 | height, width = heatmap.shape[0:2]
56 |
57 | left, right = min(x, radius), min(width - x, radius + 1)
58 | top, bottom = min(y, radius), min(height - y, radius + 1)
59 |
60 | masked_heatmap = heatmap[y - top:y + bottom, x - left:x + right]
61 | masked_gaussian = gaussian[radius - top:radius + bottom, radius - left:radius + right]
62 | np.maximum(masked_heatmap, masked_gaussian * k, out=masked_heatmap)
63 |
64 |
65 | def gaussian_radius(det_size, min_overlap):
66 | height, width = det_size
67 |
68 | a1 = 1
69 | b1 = (height + width)
70 | c1 = width * height * (1 - min_overlap) / (1 + min_overlap)
71 | sq1 = np.sqrt(b1 ** 2 - 4 * a1 * c1)
72 | r1 = (b1 - sq1) / (2 * a1)
73 |
74 | '''
75 | a2 = 4
76 | b2 = 2 * (height + width)
77 | c2 = (1 - min_overlap) * width * height
78 | sq2 = np.sqrt(b2 ** 2 - 4 * a2 * c2)
79 | r2 = (b2 - sq2) / (2 * a2)
80 |
81 | a3 = 4 * min_overlap
82 | b3 = -2 * min_overlap * (height + width)
83 | c3 = (min_overlap - 1) * width * height
84 | sq3 = np.sqrt(b3 ** 2 - 4 * a3 * c3)
85 | r3 = (b3 + sq3) / (2 * a3)
86 |
87 | return min(r1, r2, r3)
88 | '''
89 | return r1
90 |
91 |
92 | def _nms(heat, kernel=1):
93 | pad = (kernel - 1) // 2
94 | hmax = nn.functional.max_pool2d(heat, (kernel, kernel), stride=1, padding=pad)
95 | keep = (hmax == heat).float()
96 | return heat * keep
97 |
98 |
99 | def _topk(scores, K=20):
100 | batch, cat, height, width = scores.size()
101 |
102 | topk_scores, topk_inds = torch.topk(scores.view(batch, -1), K)
103 |
104 | topk_clses = (topk_inds / (height * width)).int()
105 |
106 | topk_inds = topk_inds % (height * width)
107 | topk_ys = (topk_inds / width).int().float()
108 | topk_xs = (topk_inds % width).int().float()
109 | return topk_scores, topk_clses, topk_ys, topk_xs
110 |
111 |
--------------------------------------------------------------------------------
/centernet/fpn_loss.py:
--------------------------------------------------------------------------------
1 | import torch
2 | import torch.nn as nn
3 |
4 | residual = torch.tensor(1e-4)
5 |
6 |
7 | class Loss(nn.Module):
8 |
9 | def __init__(self, center_weight=1.0, size_weight=0.1, off_weight=1.0):
10 | super(Loss, self).__init__()
11 | self.center_weight = center_weight
12 | self.size_weight = size_weight
13 | self.off_weight = off_weight
14 |
15 | self.focal_loss = refined_focal_loss
16 | self.regre_loss = regre_loss
17 |
18 | def forward(self, pred, gt):
19 | # 96*96
20 | heats_P2 = pred[0]
21 | obj_size_P2 = pred[1]
22 |
23 | # 48*48
24 | heats_P3 = pred[2]
25 | obj_size_P3 = pred[3]
26 |
27 | # 24*24
28 | heats_P4 = pred[4]
29 | obj_size_P4 = pred[5]
30 |
31 | center_heats_P2, gt_obj_size_P2, center_pos_P2 = gt[0:3]
32 | center_heats_P3, gt_obj_size_P3, center_pos_P3 = gt[3:6]
33 | center_heats_P4, gt_obj_size_P4, center_pos_P4 = gt[6:9]
34 |
35 | batch = len(heats_P2)
36 | # refined focal loss
37 | focal_loss_1 = 0
38 | focal_loss_2 = 0
39 | focal_loss_3 = 0
40 |
41 | heats_P2 = torch.clamp(heats_P2, min=1e-4, max=1-1e-4)
42 | heats_P3 = torch.clamp(heats_P3, min=1e-4, max=1-1e-4)
43 | heats_P4 = torch.clamp(heats_P4, min=1e-4, max=1-1e-4)
44 |
45 | focal_loss_1 += self.focal_loss(heats_P2, center_heats_P2) * self.center_weight
46 | focal_loss_2 += self.focal_loss(heats_P3, center_heats_P3) * self.center_weight
47 | focal_loss_3 += self.focal_loss(heats_P4, center_heats_P4) * self.center_weight
48 |
49 | focal_loss = focal_loss_1 + focal_loss_2 + focal_loss_3
50 | # size loss
51 | size_loss_1 = 0
52 | size_loss_2 = 0
53 | size_loss_3 = 0
54 |
55 | size_loss_1 += self.regre_loss(obj_size_P2, gt_obj_size_P2, center_pos_P2) * self.size_weight
56 | size_loss_2 += self.regre_loss(obj_size_P3, gt_obj_size_P3, center_pos_P3) * self.size_weight
57 | size_loss_3 += self.regre_loss(obj_size_P4, gt_obj_size_P4, center_pos_P4) * self.size_weight
58 |
59 | size_loss = size_loss_1 + size_loss_2 + size_loss_3
60 |
61 | print('focal loss: ' + str(focal_loss))
62 | print('size loss: ' + str(size_loss))
63 |
64 | loss = (focal_loss + size_loss) / batch
65 |
66 | return loss.unsqueeze(0)
67 |
68 |
69 | def refined_focal_loss(pred, gt, alpha=2, beta=4):
70 | loss = 0
71 | batch = gt.size()[0]
72 |
73 | for i in range(batch):
74 | pos_inds = gt[i].eq(1)
75 | neg_inds = gt[i].lt(1)
76 |
77 | pos_pred = pred[i][pos_inds]
78 | pos_loss = torch.pow(1-pos_pred, alpha) * torch.log(pos_pred)
79 |
80 | neg_weight = torch.pow(1 - gt[i][neg_inds], beta)
81 | neg_pred = pred[i][neg_inds]
82 | neg_loss = neg_weight * torch.pow(neg_pred, alpha) * torch.log(1 - neg_pred)
83 |
84 | pos_loss = pos_loss.sum()
85 | neg_loss = neg_loss.sum()
86 | num_pos = pos_inds.float().sum()
87 |
88 | if pos_pred.nelement() == 0:
89 | loss = loss - neg_loss
90 | else:
91 | loss = loss - (pos_loss + neg_loss) / num_pos
92 |
93 | return loss
94 |
95 |
96 | def regre_loss(pred, gt, pos):
97 | loss = 0
98 |
99 | batch = gt.size()[0]
100 | height, width = gt.size()[2:4]
101 |
102 | pos = pos.gt(0)
103 |
104 | pos_inds = pos.expand(batch, 4, height, width)
105 |
106 | x = pred[pos_inds]
107 | gt_x = gt[pos_inds]
108 |
109 | x_loss = nn.functional.smooth_l1_loss(x, gt_x, size_average=False)
110 |
111 | obj_num = len(x) / 4
112 |
113 | if obj_num == 0:
114 | loss = 0
115 | else:
116 | loss += x_loss / (obj_num + residual)
117 |
118 | return loss
119 |
120 |
--------------------------------------------------------------------------------
/sample_train.py:
--------------------------------------------------------------------------------
1 | import torch
2 | import torch.nn as nn
3 | import torchvision.transforms as transforms
4 | from torch.utils.data import DataLoader
5 | from tensorboardX import SummaryWriter
6 | import numpy as np
7 |
8 | from centernet.resnet_fpn import resnet18
9 | from centernet.fpn_loss import Loss
10 | from centernet.config import cfg
11 | from data_produce import voc_produce
12 | from fpn_dataset import VOC_data
13 | import warnings
14 |
15 | warnings.filterwarnings('ignore')
16 |
17 | device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
18 |
19 |
20 | if __name__ == '__main__':
21 | img_dir = 'dataset/VOCdevkit/VOC2007/JPEGImages/'
22 |
23 | transform = transforms.Compose([
24 | transforms.ToTensor()
25 | ])
26 |
27 | trains, tests = voc_produce()
28 |
29 | trainset = VOC_data(trains, img_dir)
30 | trainloader = DataLoader(trainset, batch_size=64, shuffle=True, num_workers=16, pin_memory=True)
31 | testset = VOC_data(tests, img_dir, test_flag=True)
32 | testloader = DataLoader(testset, batch_size=64, shuffle=True, num_workers=16, pin_memory=True)
33 |
34 | net = resnet18(20, pretrained=False)
35 | net.load_state_dict(torch.load('/model/DavidJia/resnet/resnet18-5c106cde.pth'), strict=False)
36 |
37 | if torch.cuda.device_count() > 1:
38 | print('using ', torch.cuda.device_count(), 'GPUs!')
39 | net = nn.DataParallel(net)
40 | else:
41 | print('using single GPU')
42 |
43 | pre_model = cfg['pre_model']
44 | if pre_model != None:
45 | net.module.load_state_dict(torch.load(pre_model))
46 | start_iter = cfg['start_iter']
47 | else:
48 | start_iter = 0
49 |
50 | writer = SummaryWriter('/output/logs')
51 |
52 | net.to(device)
53 | net.train()
54 |
55 | loss = Loss(center_weight=1.0, size_weight=0.1, off_weight=1.0)
56 | optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, net.parameters()), lr=0.00025)
57 |
58 | train_loss = 0
59 | test_loss = 0
60 | for epoch in range(start_iter, 70):
61 | print('num of epoch: ' + str(epoch))
62 |
63 | if epoch == 45:
64 | for p in optimizer.param_groups:
65 | p['lr'] *= 0.1
66 |
67 | if epoch == 60:
68 | for p in optimizer.param_groups:
69 | p['lr'] *= 0.1
70 |
71 | for i, data in enumerate(trainloader):
72 | optimizer.zero_grad()
73 | length = len(trainloader)
74 | inputs, labels = data
75 | inputs = inputs.to(device)
76 | labels = [y.to(device) for y in labels]
77 |
78 | center_heats, obj_size = net(inputs)
79 | preds = [center_heats, obj_size]
80 |
81 | all_loss = loss(preds, labels)
82 | all_loss = all_loss.mean()
83 | all_loss.backward()
84 |
85 | optimizer.step()
86 | print("training step {}: ".format(i), all_loss.item())
87 |
88 | train_loss += all_loss.item()
89 | if (i + 1) % 15 == 0:
90 | writer.add_scalar('training loss',
91 | train_loss / 15,
92 | i + epoch * length)
93 | train_loss = 0
94 |
95 | if epoch > 40:
96 | torch.save(net.module.state_dict(), '/output/{}_params.pkl'.format(epoch))
97 |
98 | net.eval()
99 | with torch.no_grad():
100 | test_num = 0
101 | for data in testloader:
102 | test_num += 1
103 |
104 | inputs, labels = data
105 | inputs = inputs.to(device)
106 | labels = [y.to(device) for y in labels]
107 |
108 | center_heats, obj_size = net(inputs)
109 | preds = [center_heats, obj_size]
110 |
111 | all_loss = loss(preds, labels)
112 | all_loss = all_loss.mean()
113 | test_loss += all_loss.item()
114 |
115 | writer.add_scalar('test loss', test_loss / test_num, epoch)
116 | test_loss = 0
117 | net.train()
118 |
--------------------------------------------------------------------------------
/image.py:
--------------------------------------------------------------------------------
1 | import cv2
2 | import numpy as np
3 | import random
4 |
5 |
6 | def grayscale(image):
7 | return cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
8 |
9 |
10 | def normalize_(image, mean, std):
11 | image -= mean
12 | image /= std
13 |
14 |
15 | def lighting_(data_rng, image, alphastd, eigval, eigvec):
16 | alpha = data_rng.normal(scale=alphastd, size=(3, ))
17 | image += np.dot(eigvec, eigval * alpha)
18 |
19 |
20 | def blend_(alpha, image1, image2):
21 | image1 *= alpha
22 | image2 *= (1 - alpha)
23 | image1 += image2
24 |
25 |
26 | def saturation_(data_rng, image, gs, gs_mean, var):
27 | alpha = 1. + data_rng.uniform(low=-var, high=var)
28 | blend_(alpha, image, gs[:, :, None])
29 |
30 |
31 | def brightness_(data_rng, image, gs, gs_mean, var):
32 | alpha = 1. + data_rng.uniform(low=-var, high=var)
33 | image *= alpha
34 |
35 |
36 | def contrast_(data_rng, image, gs, gs_mean, var):
37 | alpha = 1. + data_rng.uniform(low=-var, high=var)
38 | blend_(alpha, image, gs_mean)
39 |
40 |
41 | def color_jittering_(data_rng, image):
42 | functions = [brightness_, contrast_, saturation_]
43 | random.shuffle(functions)
44 |
45 | gs = grayscale(image)
46 | gs_mean = gs.mean()
47 | for f in functions:
48 | f(data_rng, image, gs, gs_mean, 0.4)
49 |
50 |
51 | def crop_image(image, center, size):
52 | cty, ctx = center
53 | height, width = size
54 | im_height, im_width = image.shape[0:2]
55 | cropped_image = np.zeros((height, width, 3), dtype=image.dtype)
56 |
57 | x0, x1 = max(0, ctx - width // 2), min(ctx + width // 2, im_width)
58 | y0, y1 = max(0, cty - height // 2), min(cty + height // 2, im_height)
59 |
60 | left, right = ctx - x0, x1 - ctx
61 | top, bottom = cty - y0, y1 - cty
62 |
63 | cropped_cty, cropped_ctx = height // 2, width // 2
64 | y_slice = slice(cropped_cty - top, cropped_cty + bottom)
65 | x_slice = slice(cropped_ctx - left, cropped_ctx + right)
66 | cropped_image[y_slice, x_slice, :] = image[y0:y1, x0:x1, :]
67 |
68 | border = np.array([
69 | cropped_cty - top,
70 | cropped_cty + bottom,
71 | cropped_ctx - left,
72 | cropped_ctx + right
73 | ], dtype=np.float32)
74 |
75 | offset = np.array([
76 | cty - height // 2,
77 | ctx - width // 2
78 | ])
79 |
80 | return cropped_image, border, offset
81 |
82 |
83 | def _get_border(border, size):
84 | i = 1
85 | while size - border // i <= border // i:
86 | i *= 2
87 | return border // i
88 |
89 |
90 | def random_crop(image, detections, random_scales, view_size, border=64):
91 | view_height, view_width = view_size
92 | image_height, image_width = image.shape[0:2]
93 |
94 | scale = np.random.choice(random_scales)
95 | height = int(view_height * scale)
96 | width = int(view_width * scale)
97 |
98 | cropped_image = np.zeros((height, width, 3), dtype=image.dtype)
99 |
100 | w_border = _get_border(border, image_width)
101 | h_border = _get_border(border, image_height)
102 |
103 | ctx = np.random.randint(low=w_border, high=image_width - w_border)
104 | cty = np.random.randint(low=h_border, high=image_height - h_border)
105 |
106 | x0, x1 = max(ctx - width // 2, 0), min(ctx + width // 2, image_width)
107 | y0, y1 = max(cty - height // 2, 0), min(cty + height // 2, image_height)
108 |
109 | left_w, right_w = ctx - x0, x1 - ctx
110 | top_h, bottom_h = cty - y0, y1 - cty
111 |
112 | # crop image
113 | cropped_ctx, cropped_cty = width // 2, height // 2
114 | x_slice = slice(cropped_ctx - left_w, cropped_ctx + right_w)
115 | y_slice = slice(cropped_cty - top_h, cropped_cty + bottom_h)
116 | cropped_image[y_slice, x_slice, :] = image[y0:y1, x0:x1, :]
117 |
118 | # crop detections
119 | cropped_detections = detections.copy()
120 | cropped_detections[:, 0:4:2] -= x0
121 | cropped_detections[:, 1:4:2] -= y0
122 | cropped_detections[:, 0:4:2] += cropped_ctx - left_w
123 | cropped_detections[:, 1:4:2] += cropped_cty - top_h
124 |
125 | return cropped_image, cropped_detections
126 |
127 |
128 | def _full_image_crop(image, detections):
129 | detections = detections.copy()
130 | height, width = image.shape[0:2]
131 |
132 | max_hw = max(height, width)
133 | center = [height // 2, width // 2]
134 | size = [max_hw, max_hw]
135 |
136 | image, border, offset = crop_image(image, center, size)
137 | detections[:, 0:4:2] += border[2]
138 | detections[:, 1:4:2] += border[0]
139 | return image, detections
140 |
141 |
142 | def _resize_image(image, detections, size):
143 | detections = detections.copy()
144 | height, width = image.shape[0:2]
145 | new_height, new_width = size
146 |
147 | image = cv2.resize(image, (new_width, new_height))
148 |
149 | height_ratio = new_height / height
150 | width_ratio = new_width / width
151 | detections[:, 0:4:2] *= width_ratio
152 | detections[:, 1:4:2] *= height_ratio
153 | return image, detections
154 |
155 |
156 | def _clip_detections(image, detections):
157 | detections = detections.copy()
158 | height, width = image.shape[0:2]
159 |
160 | detections[:, 0:4:2] = np.clip(detections[:, 0:4:2], 0, width - 1)
161 | detections[:, 1:4:2] = np.clip(detections[:, 1:4:2], 0, height - 1)
162 | keep_inds = ((detections[:, 2] - detections[:, 0]) > 0) & \
163 | ((detections[:, 3] - detections[:, 1]) > 0)
164 | detections = detections[keep_inds]
165 | return detections
166 |
167 |
--------------------------------------------------------------------------------
/dataset.py:
--------------------------------------------------------------------------------
1 | import torch
2 | from torch.utils.data import Dataset, DataLoader
3 | import numpy as np
4 | import cv2
5 | import math
6 |
7 | from centernet.utils import draw_gaussian, gaussian_radius, draw_center
8 | from centernet.config import cfg
9 | from image import random_crop, _resize_image, _clip_detections, color_jittering_, lighting_, normalize_
10 |
11 |
12 | class VOC_data(Dataset):
13 |
14 | def __init__(self, img_dict, data_dir, img_size=(384, 384), transform=None, label_transform=None,
15 | num_class=20, output_size=(96, 96), gaussian_flag=True, test_flag=False):
16 | self.img_label = img_dict
17 | self.img_names = list(img_dict.keys())
18 | self.img_dir = data_dir
19 | self.img_size = img_size
20 | self.transform = transform
21 | self.label_transform = label_transform
22 | self.num_class = num_class
23 | self.output_size = output_size
24 | self.gaussian_flag = gaussian_flag
25 | self.test_flag = test_flag
26 |
27 | self._data_rng = np.random.RandomState(123)
28 | self.mean = np.array([0.485, 0.456, 0.406], dtype=np.float32).reshape(1, 1, 3)
29 | self.std = np.array([0.229, 0.224, 0.225], dtype=np.float32).reshape(1, 1, 3)
30 | self.eig_val = np.array([0.2141788, 0.01817699, 0.00341571], dtype=np.float32)
31 | self.eig_vec = np.array([
32 | [-0.58752847, -0.69563484, 0.41340352],
33 | [-0.5832747, 0.00994535, -0.81221408],
34 | [-0.56089297, 0.71832671, 0.41158938]
35 | ], dtype=np.float32)
36 |
37 | # return image and its label
38 | def __getitem__(self, index):
39 | img_name = self.img_names[index]
40 | detection = np.array(self.img_label[img_name])
41 | image = cv2.imread(cfg['2012_dir'] + img_name + '.jpg')
42 | if image is None:
43 | image = cv2.imread(cfg['2007_dir'] + img_name + '.jpg')
44 |
45 | if self.test_flag is False:
46 | ######### data augmentation #############
47 | if np.random.uniform() > 0.5:
48 | image, detection = random_crop(image, detection, [1], [384, 384], border=96)
49 | image, detection = _resize_image(image, detection, [384, 384])
50 | detection = _clip_detections(image, detection)
51 | else:
52 | image, detection = _resize_image(image, detection, [384, 384])
53 |
54 | # image, detection = _resize_image(image, detection, [384, 384])
55 | # flipping an image randomly
56 | if np.random.uniform() > 0.5:
57 | image[:] = image[:, ::-1, :]
58 | width = image.shape[1]
59 | detection[:, [0, 2]] = width - detection[:, [2, 0]] - 1
60 |
61 | image = image.astype(np.float32) / 255.
62 | color_jittering_(self._data_rng, image)
63 | lighting_(self._data_rng, image, 0.1, self.eig_val, self.eig_vec)
64 | normalize_(image, self.mean, self.std)
65 | image = image.transpose((2, 0, 1))
66 | ######### data augmentation #############
67 | else:
68 | image, detection = _resize_image(image, detection, [384, 384])
69 | image = image.astype(np.float32) / 255.
70 | normalize_(image, self.mean, self.std)
71 | image = image.transpose((2, 0, 1))
72 |
73 | center_heats = np.zeros((self.num_class, self.output_size[0], self.output_size[1]), dtype=np.float32)
74 | obj_size = np.zeros((4, self.output_size[0], self.output_size[1]), dtype=np.float32)
75 | center_pos = np.zeros((1, self.output_size[0], self.output_size[1]), dtype=np.float32)
76 |
77 | h_ratio = self.output_size[0] / self.img_size[0]
78 | w_ratio = self.output_size[1] / self.img_size[1]
79 |
80 | obj_num = 0
81 | for i, object in enumerate(detection):
82 | obj_num += 1
83 | category = int(object[-1])
84 |
85 | center_x = (object[0] + object[2]) / 2
86 | center_y = (object[1] + object[3]) / 2
87 | obj_w = object[2] - object[0]
88 | obj_h = object[3] - object[1]
89 | # 映射在特征图的位置
90 | map_center_x = center_x * w_ratio
91 | map_center_y = center_y * h_ratio
92 | obj_w = obj_w * w_ratio
93 | obj_h = obj_h * h_ratio
94 | # 向下取整
95 | center_x = int(map_center_x)
96 | center_y = int(map_center_y)
97 |
98 | obj_size[:, center_y, center_x] = [obj_w, obj_h,
99 | map_center_x - center_x,
100 | map_center_y - center_y]
101 | center_pos[:, center_y, center_x] = obj_num
102 |
103 | radius = gaussian_radius((math.ceil(obj_h), math.ceil(obj_w)), 0.3)
104 | radius = max(0, int(radius))
105 | draw_gaussian(center_heats[category], [center_x, center_y], radius)
106 |
107 | obj_num = np.array(obj_num, dtype=np.int64)
108 |
109 | if self.transform is not None:
110 | image = self.transform(image)
111 | else:
112 | image = torch.from_numpy(image)
113 |
114 | if self.label_transform is not None:
115 | obj_size = self.label_transform(obj_size)
116 | center_pos = self.label_transform(center_pos)
117 | obj_num = self.label_transform(obj_num)
118 | else:
119 | center_heats = torch.from_numpy(center_heats)
120 | obj_size = torch.from_numpy(obj_size)
121 | center_pos = torch.from_numpy(center_pos)
122 | obj_num = torch.from_numpy(obj_num)
123 |
124 | return image, [center_heats, obj_size, center_pos, obj_num]
125 |
126 | def __len__(self):
127 | return len(self.img_names)
128 |
129 |
130 | class test_data(Dataset):
131 | def __init__(self, img_dict, data_dir, img_size=(384, 384), if_flip_test=True):
132 | self.img_label = img_dict
133 | self.img_names = list(img_dict.keys())
134 | self.img_dir = data_dir
135 | self.img_size = img_size
136 | self.flip_flag = if_flip_test
137 | self.mean = np.array([0.485, 0.456, 0.406], dtype=np.float32).reshape(1, 1, 3)
138 | self.std = np.array([0.229, 0.224, 0.225], dtype=np.float32).reshape(1, 1, 3)
139 |
140 | def __getitem__(self, index):
141 | img_name = self.img_names[index]
142 | detection = np.array(self.img_label[img_name])
143 | image = cv2.imread(self.img_dir + img_name + '.jpg')
144 | # image = cv2.imread(cfg['2012_dir'] + img_name + '.jpg')
145 | # if image is None:
146 | # image = cv2.imread(cfg['2007_dir'] + img_name + '.jpg')
147 |
148 | image, detection = _resize_image(image, detection, [384, 384])
149 | image = image.astype(np.float32) / 255.
150 | normalize_(image, self.mean, self.std)
151 | image = image.transpose((2, 0, 1))
152 |
153 | if self.flip_flag:
154 | #image = np.concatenate((image, image[:, :, ::-1]), axis=0)
155 | flip_image = image[:, :, ::-1].copy()
156 | flip_image = torch.from_numpy(flip_image)
157 |
158 | image = torch.from_numpy(image)
159 |
160 | if self.flip_flag:
161 | return image, flip_image, img_name
162 | else:
163 | return image, img_name
164 |
165 | def __len__(self):
166 | return len(self.img_names)
167 |
--------------------------------------------------------------------------------
/test.py:
--------------------------------------------------------------------------------
1 | import torch
2 | import torchvision.transforms as transforms
3 | from torch.utils.data import DataLoader
4 | import cv2
5 | import numpy as np
6 |
7 | from data_produce import classes, voc_produce
8 | from dataset import VOC_data, test_data
9 | from centernet.resnet_fpn import resnet18
10 | from centernet.utils import _nms, _topk
11 | import time
12 |
13 | device = torch.device('cuda:0')
14 |
15 | img_dir = 'dataset/VOCdevkit/VOC2007/JPEGImages/'
16 |
17 | transform = transforms.Compose([
18 | transforms.ToTensor()
19 | ])
20 |
21 | trains, tests = voc_produce()
22 |
23 | trainset = VOC_data(trains, img_dir, transform=transform, test_flag=True)
24 | trainloader = DataLoader(trainset, batch_size=1, shuffle=True, num_workers=4, pin_memory=True)
25 |
26 | testset = test_data(tests, img_dir, if_flip_test=True)
27 | testloader = DataLoader(testset, batch_size=2, shuffle=True, num_workers=4, pin_memory=True)
28 |
29 | mean = np.array([0.485, 0.456, 0.406], dtype=np.float32).reshape(1, 1, 3)
30 | std = np.array([0.229, 0.224, 0.225], dtype=np.float32).reshape(1, 1, 3)
31 |
32 |
33 | def flip_heatmap(tensor):
34 | flip_tensor = tensor.detach().cpu().numpy()
35 | flip_tensor = flip_tensor[:, :, :, ::-1].copy()
36 | flip_tensor = torch.from_numpy(flip_tensor)
37 | flip_tensor = flip_tensor.to(device)
38 |
39 | return flip_tensor
40 |
41 |
42 | if __name__ == '__main__':
43 | #inference('test/004819.jpg')
44 |
45 | net = resnet18(20)
46 | net.load_state_dict(torch.load('fpn_models/resnet.pkl'))
47 |
48 | net.to(device)
49 | net.eval()
50 |
51 | img_num = 0
52 | for i, data in enumerate(testloader):
53 | images, flip_images, img_names = data
54 | images = images.to(device)
55 | flip_images = flip_images.to(device)
56 |
57 | outs = net(images)
58 | flip_outs = net(flip_images)
59 |
60 | batch = len(outs[0])
61 |
62 | center_heat_1 = torch.clamp(outs[0], min=1e-4, max=1 - 1e-4)
63 | center_heat_2 = torch.clamp(outs[2], min=1e-4, max=1 - 1e-4)
64 | center_heat_3 = torch.clamp(outs[4], min=1e-4, max=1 - 1e-4)
65 |
66 | flip_center_heat_1 = torch.clamp(flip_outs[0], min=1e-4, max=1 - 1e-4)
67 | flip_center_heat_2 = torch.clamp(flip_outs[2], min=1e-4, max=1 - 1e-4)
68 | flip_center_heat_3 = torch.clamp(flip_outs[4], min=1e-4, max=1 - 1e-4)
69 |
70 | flip_center_1 = flip_heatmap(flip_center_heat_1)
71 | flip_center_2 = flip_heatmap(flip_center_heat_2)
72 | flip_center_3 = flip_heatmap(flip_center_heat_3)
73 |
74 | flip_size_1 = flip_heatmap(flip_outs[1])
75 | flip_size_2 = flip_heatmap(flip_outs[3])
76 | flip_size_3 = flip_heatmap(flip_outs[5])
77 |
78 | center_heat_1 = (center_heat_1 + flip_center_1) / 2
79 | center_heat_2 = (center_heat_2 + flip_center_2) / 2
80 | center_heat_3 = (center_heat_3 + flip_center_3) / 2
81 |
82 | flip_obj_size_1 = (outs[1] + flip_size_1) / 2
83 | flip_obj_size_2 = (outs[3] + flip_size_2) / 2
84 | flip_obj_size_3 = (outs[5] + flip_size_3) / 2
85 |
86 | center_heat_1 = _nms(center_heat_1, kernel=3)
87 | center_heat_2 = _nms(center_heat_2, kernel=3)
88 | center_heat_3 = _nms(center_heat_3, kernel=3)
89 |
90 | center_heats = [center_heat_1, center_heat_2, center_heat_3]
91 | obj_size = [flip_obj_size_1, flip_obj_size_2, flip_obj_size_3]
92 |
93 | for i in range(batch):
94 | img_name = img_names[i]
95 | print(img_name)
96 | out_file = open('dataset/detections/%s.txt' % (img_name), 'w')
97 | for j, center_heat in enumerate(center_heats):
98 | obj_scores, obj_clses, obj_ys, obj_xs = _topk(center_heat, K=100)
99 |
100 | scale = 2**j
101 | _obj_size = obj_size[j]
102 | for obj_num in range(15):
103 | confidence = float(obj_scores[i, obj_num])
104 | center_x = int(obj_xs[i, obj_num])
105 | center_y = int(obj_ys[i, obj_num])
106 |
107 | category = obj_clses[i, obj_num]
108 | x_offset, y_offset = _obj_size[i, 2:4, center_y, center_x]
109 | width, height = _obj_size[i, 0:2, center_y, center_x]
110 |
111 | tlx = int((center_x + x_offset - width / 2) * 8 * scale)
112 | tly = int((center_y + y_offset - height / 2) * 8 * scale)
113 | brx = int((center_x + x_offset + width / 2) * 8 * scale)
114 | bry = int((center_y + y_offset + height / 2) * 8 * scale)
115 |
116 | box = [tlx, tly, brx, bry]
117 |
118 | out_file.write(classes[category] + " " + str(confidence) + " " + " ".join([str(a) for a in box]) + '\n')
119 |
120 | print('the number is: ' + str(img_num))
121 | img_num += 2
122 |
123 | print('done with the detection')
124 |
125 | '''
126 | net = Net()
127 | net.load_state_dict(torch.load('models/69_499_params.pkl'))
128 |
129 | net.to(device)
130 | net.eval()
131 |
132 | img_num = 0
133 | for i, data in enumerate(testloader):
134 | inputs, labels, img_names = data
135 | inputs = inputs.to(device)
136 | labels = [y.to(device) for y in labels]
137 |
138 | center_heat_1, center_heat_2, center_heat_3, offsets, obj_size = net(inputs)
139 |
140 | center_heat_1 = torch.clamp(torch.sigmoid(center_heat_1), min=1e-4, max=1 - 1e-4)
141 | center_heat_2 = torch.clamp(torch.sigmoid(center_heat_2), min=1e-4, max=1 - 1e-4)
142 | center_heat_3 = torch.clamp(torch.sigmoid(center_heat_3), min=1e-4, max=1 - 1e-4)
143 |
144 | center_heat_1 = _nms(center_heat_1, kernel=3)
145 | center_heat_2 = _nms(center_heat_2, kernel=3)
146 | center_heat_3 = _nms(center_heat_3, kernel=3)
147 |
148 | obj_scores = {}
149 | obj_clses = {}
150 | obj_ys = {}
151 | obj_xs = {}
152 |
153 | obj_scores[1], obj_clses[1], obj_ys[1], obj_xs[1] = _topk(center_heat_1, K=30)
154 | obj_scores[2], obj_clses[2], obj_ys[2], obj_xs[2] = _topk(center_heat_2, K=30)
155 | obj_scores[3], obj_clses[3], obj_ys[3], obj_xs[3] = _topk(center_heat_3, K=30)
156 |
157 | batch = len(center_heat_1)
158 |
159 | for i in range(batch):
160 | img_name = img_names[i]
161 | print(img_name)
162 | out_file = open('dataset/detections/%s.txt' % (img_name), 'w')
163 | for num in range(3):
164 | for obj_num in range(30):
165 | if obj_scores[num + 1][i, obj_num] > 0.1:
166 | confidence = float(obj_scores[num + 1][i, obj_num])
167 | center_x = int(obj_xs[num + 1][i, obj_num])
168 | center_y = int(obj_ys[num + 1][i, obj_num])
169 |
170 | category = obj_clses[num + 1][i, obj_num]
171 | x_offset, y_offset = offsets[i, :, center_y, center_x]
172 | width, height = obj_size[i, :, center_y, center_x]
173 |
174 | tlx = int((center_x + x_offset - width / 2) * 4)
175 | tly = int((center_y + y_offset - height / 2) * 4)
176 | brx = int((center_x + x_offset + width / 2) * 4)
177 | bry = int((center_y + y_offset + height / 2) * 4)
178 |
179 | box = [tlx, tly, brx, bry]
180 |
181 | out_file.write(classes[category] + " " + str(confidence) + " " + " ".join([str(a) for a in box]) + '\n')
182 | else:
183 | break
184 |
185 | print('the number is: ' + str(img_num))
186 | img_num += 2
187 |
188 | print('done with the detection')
189 | '''
190 |
--------------------------------------------------------------------------------
/centernet/module.py:
--------------------------------------------------------------------------------
1 | import torch.nn as nn
2 |
3 | BN_MOMENTUM = 0.1
4 |
5 |
6 | def conv3x3(in_planes, out_planes, stride=1):
7 | """3x3 convolution with padding"""
8 | return nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride,
9 | padding=1, bias=False)
10 |
11 |
12 | class BasicBlock(nn.Module):
13 | expansion = 1
14 |
15 | def __init__(self, inplanes, planes, stride=1, downsample=None):
16 | super(BasicBlock, self).__init__()
17 | self.conv1 = conv3x3(inplanes, planes, stride)
18 | self.bn1 = nn.BatchNorm2d(planes, momentum=BN_MOMENTUM)
19 | self.relu = nn.ReLU(inplace=True)
20 | self.conv2 = conv3x3(planes, planes)
21 | self.bn2 = nn.BatchNorm2d(planes, momentum=BN_MOMENTUM)
22 | self.downsample = downsample
23 | self.stride = stride
24 |
25 | def forward(self, x):
26 | residual = x
27 |
28 | out = self.conv1(x)
29 | out = self.bn1(out)
30 | out = self.relu(out)
31 |
32 | out = self.conv2(out)
33 | out = self.bn2(out)
34 |
35 | if self.downsample is not None:
36 | residual = self.downsample(x)
37 |
38 | out += residual
39 | out = self.relu(out)
40 |
41 | return out
42 |
43 |
44 | class Bottleneck(nn.Module):
45 | expansion = 4
46 |
47 | def __init__(self, inplanes, planes, stride=1, downsample=None):
48 | super(Bottleneck, self).__init__()
49 | self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=1, bias=False)
50 | self.bn1 = nn.BatchNorm2d(planes, momentum=BN_MOMENTUM)
51 | self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, stride=stride,
52 | padding=1, bias=False)
53 | self.bn2 = nn.BatchNorm2d(planes, momentum=BN_MOMENTUM)
54 | self.conv3 = nn.Conv2d(planes, planes * self.expansion, kernel_size=1,
55 | bias=False)
56 | self.bn3 = nn.BatchNorm2d(planes * self.expansion,
57 | momentum=BN_MOMENTUM)
58 | self.relu = nn.ReLU(inplace=True)
59 | self.downsample = downsample
60 | self.stride = stride
61 |
62 | def forward(self, x):
63 | residual = x
64 |
65 | out = self.conv1(x)
66 | out = self.bn1(out)
67 | out = self.relu(out)
68 |
69 | out = self.conv2(out)
70 | out = self.bn2(out)
71 | out = self.relu(out)
72 |
73 | out = self.conv3(out)
74 | out = self.bn3(out)
75 |
76 | if self.downsample is not None:
77 | residual = self.downsample(x)
78 |
79 | out += residual
80 | out = self.relu(out)
81 |
82 | return out
83 |
84 |
85 | #conv+bn+relu
86 | #conv+relu
87 | class convolution(nn.Module):
88 |
89 | def __init__(self, kernel, inp_dim, out_dim, stride=1, with_bn=True):
90 | super(convolution, self).__init__()
91 |
92 | pad = (kernel - 1) // 2
93 | self.conv = nn.Conv2d(inp_dim, out_dim, (kernel, kernel), padding=(pad, pad), stride=(stride, stride), bias=not with_bn)
94 | self.bn = nn.BatchNorm2d(out_dim) if with_bn else nn.Sequential()
95 | self.relu = nn.ReLU(inplace=True)
96 |
97 | def forward(self, x):
98 | conv = self.conv(x)
99 | bn = self.bn(conv)
100 | relu = self.relu(bn)
101 | return relu
102 |
103 |
104 | class gn_conv(nn.Module):
105 |
106 | def __init__(self, kernel, inp_dim, out_dim, stride=1, with_gn=True):
107 | super(gn_conv, self).__init__()
108 |
109 | pad = (kernel - 1) // 2
110 | self.conv = nn.Conv2d(inp_dim, out_dim, (kernel, kernel), padding=(pad, pad), stride=(stride, stride), bias=True)
111 | self.gn = nn.GroupNorm(num_channels=out_dim, num_groups=32) if with_gn else nn.Sequential()
112 | self.relu = nn.ReLU(inplace=True)
113 |
114 | def forward(self, x):
115 | conv = self.conv(x)
116 | gn = self.gn(conv)
117 | relu = self.relu(gn)
118 | return relu
119 |
120 |
121 | class residual(nn.Module):
122 | def __init__(self, k, inp_dim, out_dim, stride=1, with_bn=True):
123 | super(residual, self).__init__()
124 |
125 | self.conv1 = nn.Conv2d(inp_dim, out_dim, (3, 3), padding=(1, 1), stride=(stride, stride), bias=False)
126 | self.bn1 = nn.BatchNorm2d(out_dim)
127 | self.relu1 = nn.ReLU(inplace=True)
128 |
129 | self.conv2 = nn.Conv2d(out_dim, out_dim, (3, 3), padding=(1, 1), bias=False)
130 | self.bn2 = nn.BatchNorm2d(out_dim)
131 |
132 | self.skip = nn.Sequential(
133 | nn.Conv2d(inp_dim, out_dim, (1, 1), stride=(stride, stride), bias=False),
134 | nn.BatchNorm2d(out_dim)
135 | ) if stride != 1 or inp_dim != out_dim else nn.Sequential()
136 | self.relu = nn.ReLU(inplace=True)
137 |
138 | def forward(self, x):
139 | conv1 = self.conv1(x)
140 | bn1 = self.bn1(conv1)
141 | relu1 = self.relu1(bn1)
142 |
143 | conv2 = self.conv2(relu1)
144 | bn2 = self.bn2(conv2)
145 |
146 | skip = self.skip(x)
147 | return self.relu(bn2 + skip)
148 |
149 |
150 | def make_layer(k, inp_dim, out_dim, modules, layer=convolution, **kwargs):
151 | layers = [layer(k, inp_dim, out_dim, **kwargs)]
152 | for _ in range(1, modules):
153 | layers.append(layer(k, out_dim, out_dim, **kwargs))
154 | return nn.Sequential(*layers)
155 |
156 |
157 | def make_layer_revr(k, inp_dim, out_dim, modules, layer=convolution, **kwargs):
158 | layers = []
159 | for _ in range(modules - 1):
160 | layers.append(layer(k, inp_dim, inp_dim, **kwargs))
161 | layers.append(layer(k, inp_dim, out_dim, **kwargs))
162 | return nn.Sequential(*layers)
163 |
164 |
165 | def make_pool_layer(dim):
166 | return nn.MaxPool2d(kernel_size=2, stride=2)
167 |
168 |
169 | def make_unpool_layer(dim):
170 | return nn.Upsample(scale_factor=2)
171 |
172 |
173 | class MergeUp(nn.Module):
174 | def forward(self, up1, up2):
175 | return up1 + up2
176 |
177 |
178 | def make_merge_layer(dim):
179 | return MergeUp()
180 |
181 |
182 | class Hourglass(nn.Module):
183 |
184 | def __init__(
185 | self, n, dims, modules, layer=residual,
186 | make_up_layer=make_layer, make_low_layer=make_layer,
187 | make_hg_layer=make_layer, make_hg_layer_revr=make_layer_revr,
188 | make_pool_layer=make_pool_layer, make_unpool_layer=make_unpool_layer,
189 | make_merge_layer=make_merge_layer, **kwargs
190 | ):
191 | super(Hourglass, self).__init__()
192 |
193 | self.n = n # 5
194 |
195 | curr_mod = modules[0] # 2
196 | next_mod = modules[1] # 2
197 |
198 | curr_dim = dims[0] # 256
199 | next_dim = dims[1] # 256
200 |
201 | self.up1 = make_up_layer(
202 | 3, curr_dim, curr_dim, curr_mod,
203 | layer=layer, **kwargs
204 | )
205 | self.max1 = make_pool_layer(curr_dim)
206 | self.low1 = make_hg_layer(
207 | 3, curr_dim, next_dim, curr_mod,
208 | layer=layer, **kwargs
209 | )
210 | self.low2 = Hourglass(
211 | n - 1, dims[1:], modules[1:], layer=layer,
212 | make_up_layer=make_up_layer,
213 | make_low_layer=make_low_layer,
214 | make_hg_layer=make_hg_layer,
215 | make_hg_layer_revr=make_hg_layer_revr,
216 | make_pool_layer=make_pool_layer,
217 | make_unpool_layer=make_unpool_layer,
218 | make_merge_layer=make_merge_layer,
219 | **kwargs
220 | ) if self.n > 1 else \
221 | make_low_layer(
222 | 3, next_dim, next_dim, next_mod,
223 | layer=layer, **kwargs
224 | )
225 | self.low3 = make_hg_layer_revr(
226 | 3, next_dim, curr_dim, curr_mod,
227 | layer=layer, **kwargs
228 | )
229 | self.up2 = make_unpool_layer(curr_dim)
230 |
231 | self.merge = make_merge_layer(curr_dim)
232 |
233 | def forward(self, x):
234 | up1 = self.up1(x)
235 | max1 = self.max1(x)
236 | low1 = self.low1(max1)
237 | low2 = self.low2(low1)
238 | low3 = self.low3(low2)
239 | up2 = self.up2(low3)
240 | return self.merge(up1, up2)
241 |
242 |
243 | def out_conv_layer(cnv_dim, curr_dim, out_dim):
244 |
245 | return nn.Sequential(
246 | convolution(3, cnv_dim, curr_dim, with_bn=False),
247 | nn.Conv2d(curr_dim, out_dim, (1, 1))
248 | )
249 |
250 | def bn_out_conv_layer(cnv_dim, curr_dim, out_dim):
251 |
252 | return nn.Sequential(
253 | convolution(3, cnv_dim, curr_dim),
254 | nn.Conv2d(curr_dim, out_dim, (1, 1))
255 | )
256 |
--------------------------------------------------------------------------------
/fpn_dataset.py:
--------------------------------------------------------------------------------
1 | import torch
2 | from torch.utils.data import Dataset, DataLoader
3 | import numpy as np
4 | import cv2
5 | import math
6 |
7 | from centernet.utils import draw_gaussian, gaussian_radius, draw_center
8 | from centernet.config import cfg
9 | from image import random_crop, _resize_image, _clip_detections, color_jittering_, lighting_, normalize_
10 |
11 |
12 | class VOC_data(Dataset):
13 |
14 | def __init__(self, img_dict, data_dir, img_size=(384, 384), transform=None, label_transform=None,
15 | num_class=20, output_size=(96, 96), gaussian_flag=True, test_flag=False):
16 | self.img_label = img_dict
17 | self.img_names = list(img_dict.keys())
18 | self.img_dir = data_dir
19 | self.img_size = img_size
20 | self.transform = transform
21 | self.label_transform = label_transform
22 | self.num_class = num_class
23 | self.output_size = output_size
24 | self.gaussian_flag = gaussian_flag
25 | self.test_flag = test_flag
26 |
27 | self._data_rng = np.random.RandomState(123)
28 | self.mean = np.array([0.485, 0.456, 0.406], dtype=np.float32).reshape(1, 1, 3)
29 | self.std = np.array([0.229, 0.224, 0.225], dtype=np.float32).reshape(1, 1, 3)
30 | self.eig_val = np.array([0.2141788, 0.01817699, 0.00341571], dtype=np.float32)
31 | self.eig_vec = np.array([
32 | [-0.58752847, -0.69563484, 0.41340352],
33 | [-0.5832747, 0.00994535, -0.81221408],
34 | [-0.56089297, 0.71832671, 0.41158938]
35 | ], dtype=np.float32)
36 |
37 | # return image and its label
38 | def __getitem__(self, index):
39 | img_name = self.img_names[index]
40 | detection = np.array(self.img_label[img_name])
41 | image = cv2.imread(cfg['2012_dir'] + img_name + '.jpg')
42 | if image is None:
43 | image = cv2.imread(cfg['2007_dir'] + img_name + '.jpg')
44 |
45 | if self.test_flag is False:
46 | ######### data augmentation #############
47 | if np.random.uniform() > 0.5:
48 | image, detection = random_crop(image, detection, [1], [384, 384], border=96)
49 | image, detection = _resize_image(image, detection, [384, 384])
50 | detection = _clip_detections(image, detection)
51 | else:
52 | image, detection = _resize_image(image, detection, [384, 384])
53 |
54 | # image, detection = _resize_image(image, detection, [384, 384])
55 | # flipping an image randomly
56 | if np.random.uniform() > 0.5:
57 | image[:] = image[:, ::-1, :]
58 | width = image.shape[1]
59 | detection[:, [0, 2]] = width - detection[:, [2, 0]] - 1
60 |
61 | image = image.astype(np.float32) / 255.
62 | color_jittering_(self._data_rng, image)
63 | lighting_(self._data_rng, image, 0.1, self.eig_val, self.eig_vec)
64 | normalize_(image, self.mean, self.std)
65 | image = image.transpose((2, 0, 1))
66 | ######### data augmentation #############
67 | else:
68 | image, detection = _resize_image(image, detection, [384, 384])
69 | image = image.astype(np.float32) / 255.
70 | normalize_(image, self.mean, self.std)
71 | image = image.transpose((2, 0, 1))
72 |
73 | center_heats_P2 = np.zeros((self.num_class, self.output_size[0], self.output_size[1]), dtype=np.float32)
74 | obj_size_P2 = np.zeros((4, self.output_size[0], self.output_size[1]), dtype=np.float32)
75 | center_pos_P2 = np.zeros((1, self.output_size[0], self.output_size[1]), dtype=np.float32)
76 |
77 | center_heats_P3 = np.zeros((self.num_class, self.output_size[0]//2, self.output_size[1]//2), dtype=np.float32)
78 | obj_size_P3 = np.zeros((4, self.output_size[0]//2, self.output_size[1]//2), dtype=np.float32)
79 | center_pos_P3 = np.zeros((1, self.output_size[0]//2, self.output_size[1]//2), dtype=np.float32)
80 |
81 | center_heats_P4 = np.zeros((self.num_class, self.output_size[0]//4, self.output_size[1]//4), dtype=np.float32)
82 | obj_size_P4 = np.zeros((4, self.output_size[0]//4, self.output_size[1]//4), dtype=np.float32)
83 | center_pos_P4 = np.zeros((1, self.output_size[0]//4, self.output_size[1]//4), dtype=np.float32)
84 |
85 | h_ratio_P2 = self.output_size[0] / self.img_size[0]
86 | w_ratio_P2 = self.output_size[1] / self.img_size[1]
87 |
88 | h_ratio_P3 = h_ratio_P2 / 2
89 | w_ratio_P3 = w_ratio_P2 / 2
90 |
91 | h_ratio_P4 = h_ratio_P2 / 4
92 | w_ratio_P4 = w_ratio_P2 / 4
93 |
94 | for i, object in enumerate(detection):
95 | category = int(object[-1])
96 |
97 | center_x = (object[0] + object[2]) / 2
98 | center_y = (object[1] + object[3]) / 2
99 | obj_w = object[2] - object[0]
100 | obj_h = object[3] - object[1]
101 |
102 | scale = math.sqrt(obj_w*obj_h)
103 |
104 | if scale < 64:
105 | map_center_x = center_x * w_ratio_P2
106 | map_center_y = center_y * h_ratio_P2
107 | obj_w = obj_w * w_ratio_P2
108 | obj_h = obj_h * h_ratio_P2
109 | # 向下取整
110 | center_x = int(map_center_x)
111 | center_y = int(map_center_y)
112 |
113 | obj_size_P2[:, center_y, center_x] = [obj_w, obj_h,
114 | map_center_x - center_x,
115 | map_center_y - center_y]
116 | center_pos_P2[:, center_y, center_x] = 1
117 |
118 | radius = gaussian_radius((math.ceil(obj_h), math.ceil(obj_w)), 0.3)
119 | radius = max(0, int(radius))
120 | draw_gaussian(center_heats_P2[category], [center_x, center_y], radius)
121 |
122 | elif scale >= 64 and scale < 128:
123 | map_center_x = center_x * w_ratio_P3
124 | map_center_y = center_y * h_ratio_P3
125 | obj_w = obj_w * w_ratio_P3
126 | obj_h = obj_h * h_ratio_P3
127 | # 向下取整
128 | center_x = int(map_center_x)
129 | center_y = int(map_center_y)
130 |
131 | obj_size_P3[:, center_y, center_x] = [obj_w, obj_h,
132 | map_center_x - center_x,
133 | map_center_y - center_y]
134 | center_pos_P3[:, center_y, center_x] = 1
135 |
136 | radius = gaussian_radius((math.ceil(obj_h), math.ceil(obj_w)), 0.3)
137 | radius = max(0, int(radius))
138 | draw_gaussian(center_heats_P3[category], [center_x, center_y], radius)
139 |
140 | else:
141 | map_center_x = center_x * w_ratio_P4
142 | map_center_y = center_y * h_ratio_P4
143 | obj_w = obj_w * w_ratio_P4
144 | obj_h = obj_h * h_ratio_P4
145 | # 向下取整
146 | center_x = int(map_center_x)
147 | center_y = int(map_center_y)
148 |
149 | obj_size_P4[:, center_y, center_x] = [obj_w, obj_h,
150 | map_center_x - center_x,
151 | map_center_y - center_y]
152 | center_pos_P4[:, center_y, center_x] = 1
153 |
154 | radius = gaussian_radius((math.ceil(obj_h), math.ceil(obj_w)), 0.3)
155 | radius = max(0, int(radius))
156 | draw_gaussian(center_heats_P4[category], [center_x, center_y], radius)
157 |
158 | if self.transform is not None:
159 | image = self.transform(image)
160 | else:
161 | image = torch.from_numpy(image)
162 |
163 | if self.label_transform is not None:
164 | center_heats_P2 = self.label_transform(center_heats_P2)
165 | obj_size_P2 = self.label_transform(obj_size_P2)
166 | center_pos_P2 = self.label_transform(center_pos_P2)
167 | else:
168 | center_heats_P2 = torch.from_numpy(center_heats_P2)
169 | obj_size_P2 = torch.from_numpy(obj_size_P2)
170 | center_pos_P2 = torch.from_numpy(center_pos_P2)
171 |
172 | center_heats_P3 = torch.from_numpy(center_heats_P3)
173 | obj_size_P3 = torch.from_numpy(obj_size_P3)
174 | center_pos_P3 = torch.from_numpy(center_pos_P3)
175 |
176 | center_heats_P4 = torch.from_numpy(center_heats_P4)
177 | obj_size_P4 = torch.from_numpy(obj_size_P4)
178 | center_pos_P4 = torch.from_numpy(center_pos_P4)
179 |
180 | return image, [center_heats_P2, obj_size_P2, center_pos_P2,
181 | center_heats_P3, obj_size_P3, center_pos_P3,
182 | center_heats_P4, obj_size_P4, center_pos_P4]
183 |
184 | def __len__(self):
185 | return len(self.img_names)
186 |
--------------------------------------------------------------------------------
/test.txt:
--------------------------------------------------------------------------------
1 | 000001
2 | 000002
3 | 000003
4 | 000004
5 | 000006
6 | 000008
7 | 000010
8 | 000011
9 | 000013
10 | 000014
11 | 000015
12 | 000018
13 | 000022
14 | 000025
15 | 000027
16 | 000028
17 | 000029
18 | 000031
19 | 000037
20 | 000038
21 | 000040
22 | 000043
23 | 000045
24 | 000049
25 | 000053
26 | 000054
27 | 000055
28 | 000056
29 | 000057
30 | 000058
31 | 000059
32 | 000062
33 | 000067
34 | 000068
35 | 000069
36 | 000070
37 | 000071
38 | 000074
39 | 000075
40 | 000076
41 | 000079
42 | 000080
43 | 000082
44 | 000084
45 | 000085
46 | 000086
47 | 000087
48 | 000088
49 | 000090
50 | 000092
51 | 000094
52 | 000096
53 | 000097
54 | 000098
55 | 000100
56 | 000103
57 | 000105
58 | 000106
59 | 000108
60 | 000111
61 | 000114
62 | 000115
63 | 000116
64 | 000119
65 | 000124
66 | 000126
67 | 000127
68 | 000128
69 | 000135
70 | 000136
71 | 000137
72 | 000139
73 | 000144
74 | 000145
75 | 000148
76 | 000149
77 | 000151
78 | 000152
79 | 000155
80 | 000157
81 | 000160
82 | 000166
83 | 000167
84 | 000168
85 | 000172
86 | 000175
87 | 000176
88 | 000178
89 | 000179
90 | 000181
91 | 000182
92 | 000183
93 | 000185
94 | 000186
95 | 000188
96 | 000191
97 | 000195
98 | 000196
99 | 000197
100 | 000199
101 | 000201
102 | 000202
103 | 000204
104 | 000205
105 | 000206
106 | 000212
107 | 000213
108 | 000216
109 | 000217
110 | 000223
111 | 000226
112 | 000227
113 | 000230
114 | 000231
115 | 000234
116 | 000237
117 | 000238
118 | 000239
119 | 000240
120 | 000243
121 | 000247
122 | 000248
123 | 000252
124 | 000253
125 | 000254
126 | 000255
127 | 000258
128 | 000260
129 | 000261
130 | 000264
131 | 000265
132 | 000267
133 | 000271
134 | 000272
135 | 000273
136 | 000274
137 | 000277
138 | 000279
139 | 000280
140 | 000281
141 | 000283
142 | 000284
143 | 000286
144 | 000287
145 | 000290
146 | 000291
147 | 000292
148 | 000293
149 | 000295
150 | 000297
151 | 000299
152 | 000300
153 | 000301
154 | 000309
155 | 000310
156 | 000313
157 | 000314
158 | 000315
159 | 000316
160 | 000319
161 | 000324
162 | 000326
163 | 000327
164 | 000330
165 | 000333
166 | 000335
167 | 000339
168 | 000341
169 | 000342
170 | 000345
171 | 000346
172 | 000348
173 | 000350
174 | 000351
175 | 000353
176 | 000356
177 | 000357
178 | 000358
179 | 000360
180 | 000361
181 | 000362
182 | 000364
183 | 000365
184 | 000366
185 | 000368
186 | 000369
187 | 000371
188 | 000375
189 | 000376
190 | 000377
191 | 000378
192 | 000383
193 | 000384
194 | 000385
195 | 000386
196 | 000388
197 | 000389
198 | 000390
199 | 000392
200 | 000393
201 | 000397
202 | 000398
203 | 000399
204 | 000401
205 | 000402
206 | 000405
207 | 000409
208 | 000410
209 | 000412
210 | 000413
211 | 000414
212 | 000415
213 | 000418
214 | 000421
215 | 000422
216 | 000423
217 | 000425
218 | 000426
219 | 000429
220 | 000432
221 | 000434
222 | 000436
223 | 000437
224 | 000440
225 | 000441
226 | 000442
227 | 000444
228 | 000445
229 | 000447
230 | 000449
231 | 000451
232 | 000452
233 | 000453
234 | 000455
235 | 000456
236 | 000457
237 | 000458
238 | 000465
239 | 000466
240 | 000467
241 | 000471
242 | 000472
243 | 000473
244 | 000475
245 | 000478
246 | 000479
247 | 000481
248 | 000485
249 | 000487
250 | 000488
251 | 000490
252 | 000493
253 | 000495
254 | 000497
255 | 000502
256 | 000504
257 | 000505
258 | 000506
259 | 000507
260 | 000510
261 | 000511
262 | 000512
263 | 000517
264 | 000521
265 | 000527
266 | 000529
267 | 000532
268 | 000533
269 | 000534
270 | 000536
271 | 000538
272 | 000539
273 | 000542
274 | 000546
275 | 000547
276 | 000548
277 | 000551
278 | 000553
279 | 000556
280 | 000557
281 | 000558
282 | 000560
283 | 000561
284 | 000562
285 | 000566
286 | 000567
287 | 000568
288 | 000569
289 | 000570
290 | 000571
291 | 000572
292 | 000573
293 | 000574
294 | 000575
295 | 000576
296 | 000578
297 | 000580
298 | 000584
299 | 000585
300 | 000586
301 | 000587
302 | 000593
303 | 000594
304 | 000595
305 | 000596
306 | 000600
307 | 000602
308 | 000603
309 | 000604
310 | 000606
311 | 000607
312 | 000611
313 | 000614
314 | 000615
315 | 000616
316 | 000617
317 | 000618
318 | 000621
319 | 000623
320 | 000624
321 | 000627
322 | 000629
323 | 000630
324 | 000631
325 | 000634
326 | 000636
327 | 000638
328 | 000639
329 | 000640
330 | 000641
331 | 000642
332 | 000643
333 | 000644
334 | 000646
335 | 000649
336 | 000650
337 | 000651
338 | 000652
339 | 000655
340 | 000658
341 | 000659
342 | 000662
343 | 000664
344 | 000665
345 | 000666
346 | 000668
347 | 000669
348 | 000670
349 | 000673
350 | 000674
351 | 000678
352 | 000679
353 | 000681
354 | 000683
355 | 000687
356 | 000691
357 | 000692
358 | 000693
359 | 000696
360 | 000697
361 | 000698
362 | 000701
363 | 000703
364 | 000704
365 | 000706
366 | 000708
367 | 000715
368 | 000716
369 | 000718
370 | 000719
371 | 000721
372 | 000722
373 | 000723
374 | 000724
375 | 000725
376 | 000727
377 | 000732
378 | 000734
379 | 000735
380 | 000736
381 | 000737
382 | 000741
383 | 000743
384 | 000744
385 | 000745
386 | 000747
387 | 000749
388 | 000751
389 | 000757
390 | 000758
391 | 000759
392 | 000762
393 | 000765
394 | 000766
395 | 000769
396 | 000773
397 | 000775
398 | 000778
399 | 000779
400 | 000781
401 | 000783
402 | 000784
403 | 000785
404 | 000788
405 | 000789
406 | 000790
407 | 000792
408 | 000795
409 | 000798
410 | 000801
411 | 000803
412 | 000807
413 | 000809
414 | 000811
415 | 000813
416 | 000817
417 | 000819
418 | 000821
419 | 000824
420 | 000825
421 | 000833
422 | 000835
423 | 000836
424 | 000837
425 | 000838
426 | 000839
427 | 000840
428 | 000841
429 | 000844
430 | 000846
431 | 000852
432 | 000853
433 | 000856
434 | 000858
435 | 000861
436 | 000864
437 | 000866
438 | 000869
439 | 000870
440 | 000873
441 | 000875
442 | 000877
443 | 000881
444 | 000883
445 | 000884
446 | 000886
447 | 000890
448 | 000891
449 | 000893
450 | 000894
451 | 000897
452 | 000901
453 | 000905
454 | 000907
455 | 000909
456 | 000910
457 | 000913
458 | 000914
459 | 000916
460 | 000922
461 | 000924
462 | 000925
463 | 000927
464 | 000928
465 | 000930
466 | 000932
467 | 000933
468 | 000938
469 | 000939
470 | 000940
471 | 000941
472 | 000942
473 | 000944
474 | 000945
475 | 000952
476 | 000953
477 | 000955
478 | 000956
479 | 000957
480 | 000959
481 | 000960
482 | 000961
483 | 000963
484 | 000968
485 | 000969
486 | 000970
487 | 000974
488 | 000975
489 | 000976
490 | 000978
491 | 000979
492 | 000981
493 | 000983
494 | 000984
495 | 000985
496 | 000986
497 | 000988
498 | 000990
499 | 000992
500 | 000994
501 | 000995
502 | 000998
503 | 001000
504 | 001003
505 | 001005
506 | 001006
507 | 001007
508 | 001013
509 | 001016
510 | 001019
511 | 001020
512 | 001021
513 | 001022
514 | 001023
515 | 001025
516 | 001026
517 | 001029
518 | 001030
519 | 001031
520 | 001032
521 | 001033
522 | 001034
523 | 001035
524 | 001037
525 | 001038
526 | 001039
527 | 001040
528 | 001044
529 | 001046
530 | 001047
531 | 001048
532 | 001049
533 | 001051
534 | 001054
535 | 001055
536 | 001058
537 | 001059
538 | 001063
539 | 001065
540 | 001067
541 | 001070
542 | 001075
543 | 001076
544 | 001080
545 | 001081
546 | 001085
547 | 001086
548 | 001087
549 | 001088
550 | 001089
551 | 001090
552 | 001094
553 | 001095
554 | 001096
555 | 001098
556 | 001099
557 | 001100
558 | 001103
559 | 001105
560 | 001108
561 | 001111
562 | 001114
563 | 001115
564 | 001116
565 | 001117
566 | 001118
567 | 001120
568 | 001122
569 | 001123
570 | 001126
571 | 001128
572 | 001131
573 | 001132
574 | 001133
575 | 001134
576 | 001135
577 | 001138
578 | 001139
579 | 001141
580 | 001146
581 | 001150
582 | 001153
583 | 001155
584 | 001157
585 | 001159
586 | 001162
587 | 001163
588 | 001165
589 | 001167
590 | 001169
591 | 001173
592 | 001177
593 | 001178
594 | 001179
595 | 001180
596 | 001181
597 | 001183
598 | 001188
599 | 001189
600 | 001190
601 | 001193
602 | 001195
603 | 001196
604 | 001197
605 | 001198
606 | 001202
607 | 001208
608 | 001210
609 | 001213
610 | 001216
611 | 001217
612 | 001218
613 | 001219
614 | 001220
615 | 001222
616 | 001223
617 | 001227
618 | 001228
619 | 001232
620 | 001235
621 | 001238
622 | 001242
623 | 001243
624 | 001244
625 | 001245
626 | 001246
627 | 001249
628 | 001251
629 | 001252
630 | 001253
631 | 001255
632 | 001256
633 | 001257
634 | 001261
635 | 001262
636 | 001264
637 | 001267
638 | 001271
639 | 001275
640 | 001276
641 | 001278
642 | 001280
643 | 001282
644 | 001283
645 | 001285
646 | 001291
647 | 001295
648 | 001296
649 | 001297
650 | 001300
651 | 001301
652 | 001302
653 | 001303
654 | 001305
655 | 001306
656 | 001307
657 | 001308
658 | 001313
659 | 001317
660 | 001318
661 | 001319
662 | 001320
663 | 001321
664 | 001322
665 | 001328
666 | 001329
667 | 001331
668 | 001335
669 | 001336
670 | 001338
671 | 001339
672 | 001340
673 | 001342
674 | 001344
675 | 001347
676 | 001349
677 | 001351
678 | 001353
679 | 001354
680 | 001355
681 | 001356
682 | 001357
683 | 001358
684 | 001359
685 | 001363
686 | 001366
687 | 001367
688 | 001368
689 | 001369
690 | 001370
691 | 001372
692 | 001373
693 | 001374
694 | 001376
695 | 001377
696 | 001379
697 | 001380
698 | 001381
699 | 001382
700 | 001389
701 | 001391
702 | 001392
703 | 001394
704 | 001396
705 | 001398
706 | 001399
707 | 001401
708 | 001403
709 | 001407
710 | 001410
711 | 001411
712 | 001412
713 | 001415
714 | 001416
715 | 001417
716 | 001419
717 | 001422
718 | 001423
719 | 001424
720 | 001425
721 | 001428
722 | 001429
723 | 001431
724 | 001433
725 | 001435
726 | 001437
727 | 001438
728 | 001440
729 | 001446
730 | 001447
731 | 001448
732 | 001449
733 | 001452
734 | 001454
735 | 001456
736 | 001458
737 | 001459
738 | 001461
739 | 001462
740 | 001469
741 | 001471
742 | 001473
743 | 001474
744 | 001476
745 | 001477
746 | 001478
747 | 001482
748 | 001487
749 | 001489
750 | 001491
751 | 001495
752 | 001496
753 | 001500
754 | 001502
755 | 001503
756 | 001505
757 | 001506
758 | 001507
759 | 001508
760 | 001511
761 | 001513
762 | 001516
763 | 001518
764 | 001519
765 | 001520
766 | 001525
767 | 001527
768 | 001530
769 | 001533
770 | 001534
771 | 001535
772 | 001538
773 | 001540
774 | 001542
775 | 001546
776 | 001547
777 | 001549
778 | 001550
779 | 001551
780 | 001552
781 | 001558
782 | 001560
783 | 001562
784 | 001564
785 | 001566
786 | 001567
787 | 001568
788 | 001569
789 | 001570
790 | 001572
791 | 001573
792 | 001574
793 | 001575
794 | 001578
795 | 001581
796 | 001583
797 | 001584
798 | 005196
799 | 005197
800 | 005198
801 | 005200
802 | 005201
803 | 005204
804 | 005205
805 | 005206
806 | 005207
807 | 005211
808 | 005213
809 | 005216
810 | 005218
811 | 005221
812 | 005225
813 | 005226
814 | 005227
815 | 005228
816 | 005232
817 | 005233
818 | 005234
819 | 005235
820 | 005237
821 | 005238
822 | 005240
823 | 005241
824 | 005243
825 | 005247
826 | 005249
827 | 005250
828 | 009952
829 | 009953
830 | 009956
831 | 009957
832 | 009960
833 | 009962
834 | 009963
--------------------------------------------------------------------------------
/centernet/resnet_fpn.py:
--------------------------------------------------------------------------------
1 | import torch.nn as nn
2 | import torch
3 | import math
4 | import torch.utils.model_zoo as model_zoo
5 | from torchvision.ops import nms
6 | from .module import BasicBlock, Bottleneck
7 |
8 | model_urls = {
9 | 'resnet18': 'https://download.pytorch.org/models/resnet18-5c106cde.pth',
10 | 'resnet34': 'https://download.pytorch.org/models/resnet34-333f7ec4.pth',
11 | 'resnet50': 'https://download.pytorch.org/models/resnet50-19c8e357.pth',
12 | 'resnet101': 'https://download.pytorch.org/models/resnet101-5d3b4d8f.pth',
13 | 'resnet152': 'https://download.pytorch.org/models/resnet152-b121ed2d.pth',
14 | }
15 |
16 |
17 | class PyramidFeatures(nn.Module):
18 | def __init__(self, C2_size, C3_size, C4_size, C5_size, feature_size=256):
19 | super(PyramidFeatures, self).__init__()
20 |
21 | # upsample C5 to get P5 from the FPN paper
22 | self.P5_1 = nn.Conv2d(C5_size, feature_size, kernel_size=1, stride=1, padding=0)
23 | self.P5_upsampled = nn.Upsample(scale_factor=2, mode='nearest')
24 | self.P5_2 = nn.Conv2d(feature_size, feature_size, kernel_size=3, stride=1, padding=1)
25 |
26 | # add P5 elementwise to C4
27 | self.P4_1 = nn.Conv2d(C4_size, feature_size, kernel_size=1, stride=1, padding=0)
28 | self.P4_upsampled = nn.Upsample(scale_factor=2, mode='nearest')
29 | self.P4_2 = nn.Conv2d(feature_size, feature_size, kernel_size=3, stride=1, padding=1)
30 |
31 | # add P4 elementwise to C3
32 | self.P3_1 = nn.Conv2d(C3_size, feature_size, kernel_size=1, stride=1, padding=0)
33 | self.P3_upsampled = nn.Upsample(scale_factor=2, mode='nearest')
34 | self.P3_2 = nn.Conv2d(feature_size, feature_size, kernel_size=3, stride=1, padding=1)
35 |
36 | # add P3 elementwise to C2
37 | self.P2_1 = nn.Conv2d(C2_size, feature_size, kernel_size=1, stride=1, padding=0)
38 | self.P2_2 = nn.Conv2d(feature_size, feature_size, kernel_size=3, stride=1, padding=1)
39 |
40 | # "P6 is obtained via a 3x3 stride-2 conv on C5"
41 | self.P6 = nn.Conv2d(C5_size, feature_size, kernel_size=3, stride=2, padding=1)
42 |
43 | # "P7 is computed by applying ReLU followed by a 3x3 stride-2 conv on P6"
44 | self.P7_1 = nn.ReLU()
45 | self.P7_2 = nn.Conv2d(feature_size, feature_size, kernel_size=3, stride=2, padding=1)
46 |
47 | def forward(self, inputs):
48 | C2, C3, C4, C5 = inputs
49 |
50 | P5_x = self.P5_1(C5)
51 | P5_upsampled_x = self.P5_upsampled(P5_x)
52 | P5_x = self.P5_2(P5_x)
53 |
54 | P4_x = self.P4_1(C4)
55 | P4_x = P5_upsampled_x + P4_x
56 | P4_upsampled_x = self.P4_upsampled(P4_x)
57 | P4_x = self.P4_2(P4_x)
58 |
59 | P3_x = self.P3_1(C3)
60 | P3_x = P3_x + P4_upsampled_x
61 | P3_upsampled_x = self.P3_upsampled(P3_x)
62 | P3_x = self.P3_2(P3_x)
63 |
64 | P2_x = self.P2_1(C2)
65 | P2_x = P2_x + P3_upsampled_x
66 | P2_x = self.P2_2(P2_x)
67 |
68 | return [P2_x, P3_x, P4_x, P5_x]
69 | #P6_x = self.P6(C5)
70 |
71 | #P7_x = self.P7_1(P6_x)
72 | #P7_x = self.P7_2(P7_x)
73 |
74 | #return [P2_x, P3_x, P4_x, P5_x, P6_x, P7_x]
75 |
76 |
77 | class RegressionModel(nn.Module):
78 | def __init__(self, num_features_in, feature_size=256):
79 | super(RegressionModel, self).__init__()
80 |
81 | self.conv1 = nn.Conv2d(num_features_in, feature_size, kernel_size=3, padding=1)
82 | self.act1 = nn.ReLU()
83 |
84 | self.conv2 = nn.Conv2d(feature_size, feature_size, kernel_size=3, padding=1)
85 | self.act2 = nn.ReLU()
86 |
87 | self.conv3 = nn.Conv2d(feature_size, feature_size, kernel_size=3, padding=1)
88 | self.act3 = nn.ReLU()
89 |
90 | self.conv4 = nn.Conv2d(feature_size, feature_size, kernel_size=3, padding=1)
91 | self.act4 = nn.ReLU()
92 |
93 | self.output = nn.Conv2d(feature_size, 4, kernel_size=3, padding=1)
94 |
95 | def forward(self, x):
96 | out = self.conv1(x)
97 | out = self.act1(out)
98 |
99 | out = self.conv2(out)
100 | out = self.act2(out)
101 |
102 | out = self.conv3(out)
103 | out = self.act3(out)
104 |
105 | out = self.conv4(out)
106 | out = self.act4(out)
107 |
108 | out = self.output(out)
109 |
110 | return out
111 |
112 |
113 | class ClassificationModel(nn.Module):
114 | def __init__(self, num_features_in, num_classes=20, feature_size=256):
115 | super(ClassificationModel, self).__init__()
116 |
117 | self.num_classes = num_classes
118 |
119 | self.conv1 = nn.Conv2d(num_features_in, feature_size, kernel_size=3, padding=1)
120 | self.act1 = nn.ReLU()
121 |
122 | self.conv2 = nn.Conv2d(feature_size, feature_size, kernel_size=3, padding=1)
123 | self.act2 = nn.ReLU()
124 |
125 | self.conv3 = nn.Conv2d(feature_size, feature_size, kernel_size=3, padding=1)
126 | self.act3 = nn.ReLU()
127 |
128 | self.conv4 = nn.Conv2d(feature_size, feature_size, kernel_size=3, padding=1)
129 | self.act4 = nn.ReLU()
130 |
131 | self.output = nn.Conv2d(feature_size, num_classes, kernel_size=3, padding=1)
132 | self.output_act = nn.Sigmoid()
133 |
134 | def forward(self, x):
135 | out = self.conv1(x)
136 | out = self.act1(out)
137 |
138 | out = self.conv2(out)
139 | out = self.act2(out)
140 |
141 | out = self.conv3(out)
142 | out = self.act3(out)
143 |
144 | out = self.conv4(out)
145 | out = self.act4(out)
146 |
147 | out = self.output(out)
148 | out = self.output_act(out)
149 |
150 | return out
151 |
152 |
153 | class ResNet(nn.Module):
154 |
155 | def __init__(self, num_classes, block, layers):
156 | self.inplanes = 64
157 | super(ResNet, self).__init__()
158 | self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3, bias=False)
159 | self.bn1 = nn.BatchNorm2d(64)
160 | self.relu = nn.ReLU(inplace=True)
161 | self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)
162 | self.layer1 = self._make_layer(block, 64, layers[0])
163 | self.layer2 = self._make_layer(block, 128, layers[1], stride=2)
164 | self.layer3 = self._make_layer(block, 256, layers[2], stride=2)
165 | self.layer4 = self._make_layer(block, 512, layers[3], stride=2)
166 |
167 | if block == BasicBlock:
168 | fpn_sizes = [self.layer1[layers[0] - 1].conv2.out_channels, self.layer2[layers[1] - 1].conv2.out_channels,
169 | self.layer3[layers[2] - 1].conv2.out_channels, self.layer4[layers[3] - 1].conv2.out_channels]
170 | elif block == Bottleneck:
171 | fpn_sizes = [self.layer1[layers[0] - 1].conv3.out_channels, self.layer2[layers[1] - 1].conv3.out_channels,
172 | self.layer3[layers[2] - 1].conv3.out_channels, self.layer4[layers[3] - 1].conv3.out_channels]
173 | else:
174 | raise ValueError(f"Block type {block} not understood")
175 |
176 | self.fpn = PyramidFeatures(fpn_sizes[0], fpn_sizes[1], fpn_sizes[2], fpn_sizes[3])
177 |
178 | self.regressionModel = RegressionModel(256)
179 | self.classificationModel = ClassificationModel(256, num_classes=num_classes)
180 |
181 | for m in self.modules():
182 | if isinstance(m, nn.Conv2d):
183 | n = m.kernel_size[0] * m.kernel_size[1] * m.out_channels
184 | m.weight.data.normal_(0, math.sqrt(2. / n))
185 | elif isinstance(m, nn.BatchNorm2d):
186 | m.weight.data.fill_(1)
187 | m.bias.data.zero_()
188 |
189 | prior = 0.01
190 |
191 | self.classificationModel.output.weight.data.fill_(0)
192 | self.classificationModel.output.bias.data.fill_(-math.log((1.0 - prior) / prior))
193 |
194 | self.regressionModel.output.weight.data.fill_(0)
195 | self.regressionModel.output.bias.data.fill_(0)
196 |
197 | self.freeze_bn()
198 |
199 | def _make_layer(self, block, planes, blocks, stride=1):
200 | downsample = None
201 | if stride != 1 or self.inplanes != planes * block.expansion:
202 | downsample = nn.Sequential(
203 | nn.Conv2d(self.inplanes, planes * block.expansion,
204 | kernel_size=1, stride=stride, bias=False),
205 | nn.BatchNorm2d(planes * block.expansion),
206 | )
207 |
208 | layers = [block(self.inplanes, planes, stride, downsample)]
209 | self.inplanes = planes * block.expansion
210 | for i in range(1, blocks):
211 | layers.append(block(self.inplanes, planes))
212 |
213 | return nn.Sequential(*layers)
214 |
215 | def freeze_bn(self):
216 | '''Freeze BatchNorm layers.'''
217 | for layer in self.modules():
218 | if isinstance(layer, nn.BatchNorm2d):
219 | layer.eval()
220 |
221 | def forward(self, inputs):
222 | x = self.conv1(inputs)
223 | x = self.bn1(x)
224 | x = self.relu(x)
225 | x = self.maxpool(x)
226 |
227 | x1 = self.layer1(x)
228 | x2 = self.layer2(x1)
229 | x3 = self.layer3(x2)
230 | x4 = self.layer4(x3)
231 |
232 | features = self.fpn([x1, x2, x3, x4])
233 |
234 | outs = []
235 |
236 | for feature in features:
237 | classification = self.classificationModel(feature)
238 | regression = self.regressionModel(feature)
239 |
240 | outs += [classification, regression]
241 |
242 | return outs[0], outs[1]
243 |
244 |
245 | def resnet18(num_classes, pretrained=False, **kwargs):
246 | """Constructs a ResNet-18 model.
247 | Args:
248 | pretrained (bool): If True, returns a model pre-trained on ImageNet
249 | """
250 | model = ResNet(num_classes, BasicBlock, [2, 2, 2, 2], **kwargs)
251 | if pretrained:
252 | model.load_state_dict(model_zoo.load_url(model_urls['resnet18'], model_dir='.'), strict=False)
253 | return model
254 |
255 |
256 | def resnet34(num_classes, pretrained=False, **kwargs):
257 | """Constructs a ResNet-34 model.
258 | Args:
259 | pretrained (bool): If True, returns a model pre-trained on ImageNet
260 | """
261 | model = ResNet(num_classes, BasicBlock, [3, 4, 6, 3], **kwargs)
262 | if pretrained:
263 | model.load_state_dict(model_zoo.load_url(model_urls['resnet34'], model_dir='.'), strict=False)
264 | return model
265 |
266 |
267 | def resnet50(num_classes, pretrained=False, **kwargs):
268 | """Constructs a ResNet-50 model.
269 | Args:
270 | pretrained (bool): If True, returns a model pre-trained on ImageNet
271 | """
272 | model = ResNet(num_classes, Bottleneck, [3, 4, 6, 3], **kwargs)
273 | if pretrained:
274 | model.load_state_dict(model_zoo.load_url(model_urls['resnet50'], model_dir='.'), strict=False)
275 | return model
276 |
277 |
278 | def resnet101(num_classes, pretrained=False, **kwargs):
279 | """Constructs a ResNet-101 model.
280 | Args:
281 | pretrained (bool): If True, returns a model pre-trained on ImageNet
282 | """
283 | model = ResNet(num_classes, Bottleneck, [3, 4, 23, 3], **kwargs)
284 | if pretrained:
285 | model.load_state_dict(model_zoo.load_url(model_urls['resnet101'], model_dir='.'), strict=False)
286 | return model
287 |
288 |
289 | def resnet152(num_classes, pretrained=False, **kwargs):
290 | """Constructs a ResNet-152 model.
291 | Args:
292 | pretrained (bool): If True, returns a model pre-trained on ImageNet
293 | """
294 | model = ResNet(num_classes, Bottleneck, [3, 8, 36, 3], **kwargs)
295 | if pretrained:
296 | model.load_state_dict(model_zoo.load_url(model_urls['resnet152'], model_dir='.'), strict=False)
297 | return model
298 |
--------------------------------------------------------------------------------
/2007trainval.txt:
--------------------------------------------------------------------------------
1 | 000005
2 | 000007
3 | 000009
4 | 000012
5 | 000016
6 | 000017
7 | 000019
8 | 000020
9 | 000021
10 | 000023
11 | 000024
12 | 000026
13 | 000030
14 | 000032
15 | 000033
16 | 000034
17 | 000035
18 | 000036
19 | 000039
20 | 000041
21 | 000042
22 | 000044
23 | 000046
24 | 000047
25 | 000048
26 | 000050
27 | 000051
28 | 000052
29 | 000060
30 | 000061
31 | 000063
32 | 000064
33 | 000065
34 | 000066
35 | 000072
36 | 000073
37 | 000077
38 | 000078
39 | 000081
40 | 000083
41 | 000089
42 | 000091
43 | 000093
44 | 000095
45 | 000099
46 | 000101
47 | 000102
48 | 000104
49 | 000107
50 | 000109
51 | 000110
52 | 000112
53 | 000113
54 | 000117
55 | 000118
56 | 000120
57 | 000121
58 | 000122
59 | 000123
60 | 000125
61 | 000129
62 | 000130
63 | 000131
64 | 000132
65 | 000133
66 | 000134
67 | 000138
68 | 000140
69 | 000141
70 | 000142
71 | 000143
72 | 000146
73 | 000147
74 | 000150
75 | 000153
76 | 000154
77 | 000156
78 | 000158
79 | 000159
80 | 000161
81 | 000162
82 | 000163
83 | 000164
84 | 000165
85 | 000169
86 | 000170
87 | 000171
88 | 000173
89 | 000174
90 | 000177
91 | 000180
92 | 000184
93 | 000187
94 | 000189
95 | 000190
96 | 000192
97 | 000193
98 | 000194
99 | 000198
100 | 000200
101 | 000203
102 | 000207
103 | 000208
104 | 000209
105 | 000210
106 | 000211
107 | 000214
108 | 000215
109 | 000218
110 | 000219
111 | 000220
112 | 000221
113 | 000222
114 | 000224
115 | 000225
116 | 000228
117 | 000229
118 | 000232
119 | 000233
120 | 000235
121 | 000236
122 | 000241
123 | 000242
124 | 000244
125 | 000245
126 | 000246
127 | 000249
128 | 000250
129 | 000251
130 | 000256
131 | 000257
132 | 000259
133 | 000262
134 | 000263
135 | 000266
136 | 000268
137 | 000269
138 | 000270
139 | 000275
140 | 000276
141 | 000278
142 | 000282
143 | 000285
144 | 000288
145 | 000289
146 | 000294
147 | 000296
148 | 000298
149 | 000302
150 | 000303
151 | 000304
152 | 000305
153 | 000306
154 | 000307
155 | 000308
156 | 000311
157 | 000312
158 | 000317
159 | 000318
160 | 000320
161 | 000321
162 | 000322
163 | 000323
164 | 000325
165 | 000328
166 | 000329
167 | 000331
168 | 000332
169 | 000334
170 | 000336
171 | 000337
172 | 000338
173 | 000340
174 | 000343
175 | 000344
176 | 000347
177 | 000349
178 | 000352
179 | 000354
180 | 000355
181 | 000359
182 | 000363
183 | 000367
184 | 000370
185 | 000372
186 | 000373
187 | 000374
188 | 000379
189 | 000380
190 | 000381
191 | 000382
192 | 000387
193 | 000391
194 | 000394
195 | 000395
196 | 000396
197 | 000400
198 | 000403
199 | 000404
200 | 000406
201 | 000407
202 | 000408
203 | 000411
204 | 000416
205 | 000417
206 | 000419
207 | 000420
208 | 000424
209 | 000427
210 | 000428
211 | 000430
212 | 000431
213 | 000433
214 | 000435
215 | 000438
216 | 000439
217 | 000443
218 | 000446
219 | 000448
220 | 000450
221 | 000454
222 | 000459
223 | 000460
224 | 000461
225 | 000462
226 | 000463
227 | 000464
228 | 000468
229 | 000469
230 | 000470
231 | 000474
232 | 000476
233 | 000477
234 | 000480
235 | 000482
236 | 000483
237 | 000484
238 | 000486
239 | 000489
240 | 000491
241 | 000492
242 | 000494
243 | 000496
244 | 000498
245 | 000499
246 | 000500
247 | 000501
248 | 000503
249 | 000508
250 | 000509
251 | 000513
252 | 000514
253 | 000515
254 | 000516
255 | 000518
256 | 000519
257 | 000520
258 | 000522
259 | 000523
260 | 000524
261 | 000525
262 | 000526
263 | 000528
264 | 000530
265 | 000531
266 | 000535
267 | 000537
268 | 000540
269 | 000541
270 | 000543
271 | 000544
272 | 000545
273 | 000549
274 | 000550
275 | 000552
276 | 000554
277 | 000555
278 | 000559
279 | 000563
280 | 000564
281 | 000565
282 | 000577
283 | 000579
284 | 000581
285 | 000582
286 | 000583
287 | 000588
288 | 000589
289 | 000590
290 | 000591
291 | 000592
292 | 000597
293 | 000598
294 | 000599
295 | 000601
296 | 000605
297 | 000608
298 | 000609
299 | 000610
300 | 000612
301 | 000613
302 | 000619
303 | 000620
304 | 000622
305 | 000625
306 | 000626
307 | 000628
308 | 000632
309 | 000633
310 | 000635
311 | 000637
312 | 000645
313 | 000647
314 | 000648
315 | 000653
316 | 000654
317 | 000656
318 | 000657
319 | 000660
320 | 000661
321 | 000663
322 | 000667
323 | 000671
324 | 000672
325 | 000675
326 | 000676
327 | 000677
328 | 000680
329 | 000682
330 | 000684
331 | 000685
332 | 000686
333 | 000688
334 | 000689
335 | 000690
336 | 000694
337 | 000695
338 | 000699
339 | 000700
340 | 000702
341 | 000705
342 | 000707
343 | 000709
344 | 000710
345 | 000711
346 | 000712
347 | 000713
348 | 000714
349 | 000717
350 | 000720
351 | 000726
352 | 000728
353 | 000729
354 | 000730
355 | 000731
356 | 000733
357 | 000738
358 | 000739
359 | 000740
360 | 000742
361 | 000746
362 | 000748
363 | 000750
364 | 000752
365 | 000753
366 | 000754
367 | 000755
368 | 000756
369 | 000760
370 | 000761
371 | 000763
372 | 000764
373 | 000767
374 | 000768
375 | 000770
376 | 000771
377 | 000772
378 | 000774
379 | 000776
380 | 000777
381 | 000780
382 | 000782
383 | 000786
384 | 000787
385 | 000791
386 | 000793
387 | 000794
388 | 000796
389 | 000797
390 | 000799
391 | 000800
392 | 000802
393 | 000804
394 | 000805
395 | 000806
396 | 000808
397 | 000810
398 | 000812
399 | 000814
400 | 000815
401 | 000816
402 | 000818
403 | 000820
404 | 000822
405 | 000823
406 | 000826
407 | 000827
408 | 000828
409 | 000829
410 | 000830
411 | 000831
412 | 000832
413 | 000834
414 | 000842
415 | 000843
416 | 000845
417 | 000847
418 | 000848
419 | 000849
420 | 000850
421 | 000851
422 | 000854
423 | 000855
424 | 000857
425 | 000859
426 | 000860
427 | 000862
428 | 000863
429 | 000865
430 | 000867
431 | 000868
432 | 000871
433 | 000872
434 | 000874
435 | 000876
436 | 000878
437 | 000879
438 | 000880
439 | 000882
440 | 000885
441 | 000887
442 | 000888
443 | 000889
444 | 000892
445 | 000895
446 | 000896
447 | 000898
448 | 000899
449 | 000900
450 | 000902
451 | 000903
452 | 000904
453 | 000906
454 | 000908
455 | 000911
456 | 000912
457 | 000915
458 | 000917
459 | 000918
460 | 000919
461 | 000920
462 | 000921
463 | 000923
464 | 000926
465 | 000929
466 | 000931
467 | 000934
468 | 000935
469 | 000936
470 | 000937
471 | 000943
472 | 000946
473 | 000947
474 | 000948
475 | 000949
476 | 000950
477 | 000951
478 | 000954
479 | 000958
480 | 000962
481 | 000964
482 | 000965
483 | 000966
484 | 000967
485 | 000971
486 | 000972
487 | 000973
488 | 000977
489 | 000980
490 | 000982
491 | 000987
492 | 000989
493 | 000991
494 | 000993
495 | 000996
496 | 000997
497 | 000999
498 | 001001
499 | 001002
500 | 001004
501 | 001008
502 | 001009
503 | 001010
504 | 001011
505 | 001012
506 | 001014
507 | 001015
508 | 001017
509 | 001018
510 | 001024
511 | 001027
512 | 001028
513 | 001036
514 | 001041
515 | 001042
516 | 001043
517 | 001045
518 | 001050
519 | 001052
520 | 001053
521 | 001056
522 | 001057
523 | 001060
524 | 001061
525 | 001062
526 | 001064
527 | 001066
528 | 001068
529 | 001069
530 | 001071
531 | 001072
532 | 001073
533 | 001074
534 | 001077
535 | 001078
536 | 001079
537 | 001082
538 | 001083
539 | 001084
540 | 001091
541 | 001092
542 | 001093
543 | 001097
544 | 001101
545 | 001102
546 | 001104
547 | 001106
548 | 001107
549 | 001109
550 | 001110
551 | 001112
552 | 001113
553 | 001119
554 | 001121
555 | 001124
556 | 001125
557 | 001127
558 | 001129
559 | 001130
560 | 001136
561 | 001137
562 | 001140
563 | 001142
564 | 001143
565 | 001144
566 | 001145
567 | 001147
568 | 001148
569 | 001149
570 | 001151
571 | 001152
572 | 001154
573 | 001156
574 | 001158
575 | 001160
576 | 001161
577 | 001164
578 | 001166
579 | 001168
580 | 001170
581 | 001171
582 | 001172
583 | 001174
584 | 001175
585 | 001176
586 | 001182
587 | 001184
588 | 001185
589 | 001186
590 | 001187
591 | 001191
592 | 001192
593 | 001194
594 | 001199
595 | 001200
596 | 001201
597 | 001203
598 | 001204
599 | 001205
600 | 001206
601 | 001207
602 | 001209
603 | 001211
604 | 001212
605 | 001214
606 | 001215
607 | 001221
608 | 001224
609 | 001225
610 | 001226
611 | 001229
612 | 001230
613 | 001231
614 | 001233
615 | 001234
616 | 001236
617 | 001237
618 | 001239
619 | 001240
620 | 001241
621 | 001247
622 | 001248
623 | 001250
624 | 001254
625 | 001258
626 | 001259
627 | 001260
628 | 001263
629 | 001265
630 | 001266
631 | 001268
632 | 001269
633 | 001270
634 | 001272
635 | 001273
636 | 001274
637 | 001277
638 | 001279
639 | 001281
640 | 001284
641 | 001286
642 | 001287
643 | 001288
644 | 001289
645 | 001290
646 | 001292
647 | 001293
648 | 001294
649 | 001298
650 | 001299
651 | 001304
652 | 001309
653 | 001310
654 | 001311
655 | 001312
656 | 001314
657 | 001315
658 | 001316
659 | 001323
660 | 001324
661 | 001325
662 | 001326
663 | 001327
664 | 001330
665 | 001332
666 | 001333
667 | 001334
668 | 001337
669 | 001341
670 | 001343
671 | 001345
672 | 001346
673 | 001348
674 | 001350
675 | 001352
676 | 001360
677 | 001361
678 | 001362
679 | 001364
680 | 001365
681 | 001371
682 | 001375
683 | 001378
684 | 001383
685 | 001384
686 | 001385
687 | 001386
688 | 001387
689 | 001388
690 | 001390
691 | 001393
692 | 001395
693 | 001397
694 | 001400
695 | 001402
696 | 001404
697 | 001405
698 | 001406
699 | 001408
700 | 001409
701 | 001413
702 | 001414
703 | 001418
704 | 001420
705 | 001421
706 | 001426
707 | 001427
708 | 001430
709 | 001432
710 | 001434
711 | 001436
712 | 001439
713 | 001441
714 | 001442
715 | 001443
716 | 001444
717 | 001445
718 | 001450
719 | 001451
720 | 001453
721 | 001455
722 | 001457
723 | 001460
724 | 001463
725 | 001464
726 | 001465
727 | 001466
728 | 001467
729 | 001468
730 | 001470
731 | 001472
732 | 001475
733 | 001479
734 | 001480
735 | 001481
736 | 001483
737 | 001484
738 | 001485
739 | 001486
740 | 001488
741 | 001490
742 | 001492
743 | 001493
744 | 001494
745 | 001497
746 | 001498
747 | 001499
748 | 001501
749 | 001504
750 | 001509
751 | 001510
752 | 001512
753 | 001514
754 | 001515
755 | 001517
756 | 001521
757 | 001522
758 | 001523
759 | 001524
760 | 001526
761 | 001528
762 | 001529
763 | 001531
764 | 001532
765 | 001536
766 | 001537
767 | 001539
768 | 001541
769 | 001543
770 | 001544
771 | 001545
772 | 001548
773 | 001553
774 | 001554
775 | 001555
776 | 001556
777 | 001557
778 | 001559
779 | 001561
780 | 001563
781 | 001565
782 | 001571
783 | 001576
784 | 001577
785 | 001579
786 | 001580
787 | 001582
788 | 001586
789 | 001588
790 | 001590
791 | 001593
792 | 001594
793 | 001595
794 | 001597
795 | 001598
796 | 001603
797 | 001604
798 | 001607
799 | 001608
800 | 001610
801 | 001611
802 | 001612
803 | 001614
804 | 001617
805 | 001618
806 | 001622
807 | 001627
808 | 001628
809 | 001630
810 | 001632
811 | 001633
812 | 001636
813 | 001638
814 | 001640
815 | 001642
816 | 001643
817 | 001647
818 | 001649
819 | 001650
820 | 001651
821 | 001653
822 | 001654
823 | 001661
824 | 001662
825 | 001669
826 | 001673
827 | 001675
828 | 001676
829 | 001677
830 | 001678
831 | 001680
832 | 001682
833 | 001683
834 | 001684
835 | 001685
836 | 001686
837 | 001688
838 | 001689
839 | 001690
840 | 001691
841 | 001693
842 | 001699
843 | 001707
844 | 001708
845 | 001711
846 | 001713
847 | 001714
848 | 001717
849 | 001718
850 | 001721
851 | 001723
852 | 001724
853 | 001725
854 | 001726
855 | 001727
856 | 001729
857 | 001730
858 | 001732
859 | 001733
860 | 001734
861 | 001738
862 | 001739
863 | 001741
864 | 001746
865 | 001747
866 | 001749
867 | 001750
868 | 001752
869 | 001754
870 | 001755
871 | 001756
872 | 001758
873 | 001759
874 | 001761
875 | 001765
876 | 001766
877 | 001768
878 | 001771
879 | 001772
880 | 001775
881 | 001777
882 | 001778
883 | 001780
884 | 001782
885 | 001784
886 | 001785
887 | 001787
888 | 001789
889 | 001793
890 | 001795
891 | 001797
892 | 001799
893 | 001800
894 | 001801
895 | 001806
896 | 001807
897 | 001809
898 | 001810
899 | 001816
900 | 001818
901 | 001821
902 | 001825
903 | 001827
904 | 001828
905 | 001830
906 | 001832
907 | 001833
908 | 001834
909 | 001836
910 | 001837
911 | 001840
912 | 001841
913 | 001842
914 | 001843
915 | 001845
916 | 001847
917 | 001849
918 | 001853
919 | 001854
920 | 001855
921 | 001858
922 | 001860
923 | 001861
924 | 001862
925 | 001864
926 | 001870
927 | 001872
928 | 001875
929 | 001877
930 | 001878
931 | 001881
932 | 001882
933 | 001887
934 | 001888
935 | 001892
936 | 001894
937 | 001896
938 | 001898
939 | 001899
940 | 001901
941 | 001902
942 | 001903
943 | 001904
944 | 001906
945 | 001907
946 | 001911
947 | 001915
948 | 001918
949 | 001920
950 | 001922
951 | 001927
952 | 001928
953 | 001930
954 | 001931
955 | 001932
956 | 001933
957 | 001934
958 | 001936
959 | 001937
960 | 001938
961 | 001940
962 | 001941
963 | 001944
964 | 001945
965 | 001948
966 | 001950
967 | 001952
968 | 001954
969 | 001958
970 | 001960
971 | 001962
972 | 001963
973 | 001964
974 | 001970
975 | 001971
976 | 001972
977 | 001976
978 | 001977
979 | 001978
980 | 001980
981 | 001981
982 | 001982
983 | 001985
984 | 001989
985 | 001995
986 | 001999
987 | 002000
988 | 002001
989 | 002002
990 | 002004
991 | 002006
992 | 002011
993 | 002012
994 | 002015
995 | 002019
996 | 002020
997 | 002021
998 | 002022
999 | 002023
1000 | 002024
1001 | 002025
1002 | 002027
1003 | 002030
1004 | 002034
1005 | 002036
1006 | 002037
1007 | 002039
1008 | 002042
1009 | 002043
1010 | 002045
1011 | 002047
1012 | 002049
1013 | 002051
1014 | 002054
1015 | 002055
1016 | 002056
1017 | 002058
1018 | 002061
1019 | 002063
1020 | 002064
1021 | 002067
1022 | 002068
1023 | 002069
1024 | 002070
1025 | 002082
1026 | 002083
1027 | 002086
1028 | 002088
1029 | 002090
1030 | 002091
1031 | 002094
1032 | 002095
1033 | 002096
1034 | 002098
1035 | 002099
1036 | 002101
1037 | 002102
1038 | 002104
1039 | 002108
1040 | 002109
1041 | 002112
1042 | 002114
1043 | 002116
1044 | 002117
1045 | 002120
1046 | 002124
1047 | 002125
1048 | 002126
1049 | 002129
1050 | 002132
1051 | 002134
1052 | 002135
1053 | 002136
1054 | 002139
1055 | 002140
1056 | 002142
1057 | 002145
1058 | 002146
1059 | 002151
1060 | 002152
1061 | 002153
1062 | 002155
1063 | 002156
1064 | 002158
1065 | 002163
1066 | 002165
1067 | 002166
1068 | 002169
1069 | 002170
1070 | 002171
1071 | 002172
1072 | 002174
1073 | 002176
1074 | 002178
1075 | 002179
1076 | 002180
1077 | 002181
1078 | 002182
1079 | 002183
1080 | 002184
1081 | 002186
1082 | 002187
1083 | 002190
1084 | 002191
1085 | 002192
1086 | 002193
1087 | 002194
1088 | 002196
1089 | 002197
1090 | 002199
1091 | 002201
1092 | 002202
1093 | 002208
1094 | 002209
1095 | 002212
1096 | 002213
1097 | 002214
1098 | 002215
1099 | 002218
1100 | 002219
1101 | 002220
1102 | 002221
1103 | 002224
1104 | 002226
1105 | 002228
1106 | 002233
1107 | 002234
1108 | 002237
1109 | 002238
1110 | 002241
1111 | 002244
1112 | 002247
1113 | 002248
1114 | 002249
1115 | 002251
1116 | 002253
1117 | 002255
1118 | 002256
1119 | 002257
1120 | 002259
1121 | 002260
1122 | 002261
1123 | 002263
1124 | 002265
1125 | 002266
1126 | 002267
1127 | 002268
1128 | 002270
1129 | 002272
1130 | 002273
1131 | 002276
1132 | 002277
1133 | 002278
1134 | 002279
1135 | 002280
1136 | 002281
1137 | 002284
1138 | 002285
1139 | 002287
1140 | 002288
1141 | 002290
1142 | 002291
1143 | 002293
1144 | 002300
1145 | 002302
1146 | 002305
1147 | 002306
1148 | 002307
1149 | 002308
1150 | 002310
1151 | 002311
1152 | 002315
1153 | 002318
1154 | 002320
1155 | 002321
1156 | 002323
1157 | 002324
1158 | 002328
1159 | 002329
1160 | 002330
1161 | 002332
1162 | 002333
1163 | 002334
1164 | 002335
1165 | 002337
1166 | 002340
1167 | 002342
1168 | 002343
1169 | 002345
1170 | 002347
1171 | 002348
1172 | 002350
1173 | 002352
1174 | 002354
1175 | 002355
1176 | 002359
1177 | 002361
1178 | 002362
1179 | 002364
1180 | 002366
1181 | 002367
1182 | 002368
1183 | 002369
1184 | 002371
1185 | 002372
1186 | 002373
1187 | 002374
1188 | 002375
1189 | 002376
1190 | 002377
1191 | 002378
1192 | 002382
1193 | 002384
1194 | 002385
1195 | 002387
1196 | 002391
1197 | 002392
1198 | 002393
1199 | 002401
1200 | 002403
1201 | 002404
1202 | 002405
1203 | 002407
1204 | 002410
1205 | 002411
1206 | 002413
1207 | 002415
1208 | 002417
1209 | 002419
1210 | 002420
1211 | 002423
1212 | 002425
1213 | 002427
1214 | 002433
1215 | 002435
1216 | 002436
1217 | 002437
1218 | 002439
1219 | 002441
1220 | 002442
1221 | 002443
1222 | 002444
1223 | 002445
1224 | 002448
1225 | 002450
1226 | 002452
1227 | 002454
1228 | 002456
1229 | 002458
1230 | 002459
1231 | 002460
1232 | 002461
1233 | 002462
1234 | 002465
1235 | 002466
1236 | 002468
1237 | 002470
1238 | 002471
1239 | 002472
1240 | 002476
1241 | 002477
1242 | 002478
1243 | 002479
1244 | 002480
1245 | 002481
1246 | 002483
1247 | 002490
1248 | 002491
1249 | 002492
1250 | 002493
1251 | 002494
1252 | 002496
1253 | 002497
1254 | 002500
1255 | 002501
1256 | 002502
1257 | 002504
1258 | 002505
1259 | 002508
1260 | 002512
1261 | 002513
1262 | 002514
1263 | 002518
1264 | 002519
1265 | 002520
1266 | 002523
1267 | 002524
1268 | 002525
1269 | 002529
1270 | 002533
1271 | 002534
1272 | 002537
1273 | 002539
1274 | 002540
1275 | 002542
1276 | 002544
1277 | 002545
1278 | 002546
1279 | 002547
1280 | 002549
1281 | 002554
1282 | 002555
1283 | 002558
1284 | 002559
1285 | 002561
1286 | 002563
1287 | 002564
1288 | 002565
1289 | 002566
1290 | 002567
1291 | 002569
1292 | 002571
1293 | 002572
1294 | 002578
1295 | 002579
1296 | 002584
1297 | 002585
1298 | 002586
1299 | 002589
1300 | 002590
1301 | 002593
1302 | 002594
1303 | 002595
1304 | 002598
1305 | 002599
1306 | 002600
1307 | 002603
1308 | 002605
1309 | 002606
1310 | 002609
1311 | 002611
1312 | 002613
1313 | 002615
1314 | 002618
1315 | 002621
1316 | 002625
1317 | 002627
1318 | 002632
1319 | 002633
1320 | 002634
1321 | 002635
1322 | 002636
1323 | 002637
1324 | 002641
1325 | 002643
1326 | 002645
1327 | 002646
1328 | 002647
1329 | 002648
1330 | 002649
1331 | 002653
1332 | 002657
1333 | 002658
1334 | 002659
1335 | 002662
1336 | 002664
1337 | 002666
1338 | 002667
1339 | 002668
1340 | 002669
1341 | 002670
1342 | 002675
1343 | 002677
1344 | 002678
1345 | 002680
1346 | 002682
1347 | 002683
1348 | 002684
1349 | 002689
1350 | 002690
1351 | 002691
1352 | 002693
1353 | 002695
1354 | 002696
1355 | 002697
1356 | 002699
1357 | 002702
1358 | 002704
1359 | 002706
1360 | 002709
1361 | 002710
1362 | 002713
1363 | 002714
1364 | 002715
1365 | 002717
1366 | 002718
1367 | 002721
1368 | 002722
1369 | 002723
1370 | 002727
1371 | 002730
1372 | 002732
1373 | 002734
1374 | 002735
1375 | 002737
1376 | 002738
1377 | 002741
1378 | 002744
1379 | 002745
1380 | 002747
1381 | 002749
1382 | 002751
1383 | 002755
1384 | 002757
1385 | 002759
1386 | 002760
1387 | 002762
1388 | 002763
1389 | 002765
1390 | 002766
1391 | 002767
1392 | 002772
1393 | 002774
1394 | 002775
1395 | 002776
1396 | 002778
1397 | 002779
1398 | 002782
1399 | 002783
1400 | 002784
1401 | 002785
1402 | 002786
1403 | 002791
1404 | 002794
1405 | 002795
1406 | 002796
1407 | 002798
1408 | 002800
1409 | 002801
1410 | 002803
1411 | 002804
1412 | 002807
1413 | 002810
1414 | 002812
1415 | 002815
1416 | 002816
1417 | 002817
1418 | 002820
1419 | 002826
1420 | 002827
1421 | 002833
1422 | 002834
1423 | 002835
1424 | 002836
1425 | 002838
1426 | 002841
1427 | 002842
1428 | 002844
1429 | 002845
1430 | 002847
1431 | 002848
1432 | 002854
1433 | 002855
1434 | 002858
1435 | 002859
1436 | 002864
1437 | 002866
1438 | 002867
1439 | 002868
1440 | 002869
1441 | 002870
1442 | 002873
1443 | 002875
1444 | 002879
1445 | 002880
1446 | 002881
1447 | 002884
1448 | 002886
1449 | 002889
1450 | 002891
1451 | 002893
1452 | 002896
1453 | 002899
1454 | 002901
1455 | 002906
1456 | 002910
1457 | 002912
1458 | 002913
1459 | 002914
1460 | 002915
1461 | 002916
1462 | 002917
1463 | 002919
1464 | 002924
1465 | 002931
1466 | 002932
1467 | 002933
1468 | 002934
1469 | 002935
1470 | 002937
1471 | 002938
1472 | 002939
1473 | 002940
1474 | 002941
1475 | 002942
1476 | 002943
1477 | 002944
1478 | 002946
1479 | 002947
1480 | 002952
1481 | 002953
1482 | 002954
1483 | 002956
1484 | 002957
1485 | 002958
1486 | 002960
1487 | 002962
1488 | 002963
1489 | 002965
1490 | 002966
1491 | 002967
1492 | 002969
1493 | 002975
1494 | 002976
1495 | 002977
1496 | 002978
1497 | 002984
1498 | 002986
1499 | 002987
1500 | 002988
1501 | 002989
1502 | 002990
1503 | 002992
1504 | 002994
1505 | 002995
1506 | 003000
1507 | 003002
1508 | 003003
1509 | 003004
1510 | 003005
1511 | 003007
1512 | 003008
1513 | 003009
1514 | 003011
1515 | 003013
1516 | 003015
1517 | 003017
1518 | 003021
1519 | 003023
1520 | 003024
1521 | 003027
1522 | 003028
1523 | 003031
1524 | 003032
1525 | 003034
1526 | 003038
1527 | 003039
1528 | 003042
1529 | 003044
1530 | 003045
1531 | 003047
1532 | 003051
1533 | 003053
1534 | 003054
1535 | 003056
1536 | 003057
1537 | 003058
1538 | 003061
1539 | 003063
1540 | 003064
1541 | 003065
1542 | 003066
1543 | 003072
1544 | 003074
1545 | 003077
1546 | 003078
1547 | 003082
1548 | 003083
1549 | 003085
1550 | 003086
1551 | 003088
1552 | 003089
1553 | 003090
1554 | 003092
1555 | 003093
1556 | 003094
1557 | 003098
1558 | 003100
1559 | 003102
1560 | 003103
1561 | 003105
1562 | 003106
1563 | 003107
1564 | 003108
1565 | 003110
1566 | 003112
1567 | 003116
1568 | 003117
1569 | 003118
1570 | 003120
1571 | 003121
1572 | 003122
1573 | 003124
1574 | 003126
1575 | 003127
1576 | 003129
1577 | 003133
1578 | 003134
1579 | 003135
1580 | 003137
1581 | 003138
1582 | 003140
1583 | 003142
1584 | 003145
1585 | 003146
1586 | 003147
1587 | 003149
1588 | 003150
1589 | 003154
1590 | 003155
1591 | 003157
1592 | 003159
1593 | 003161
1594 | 003162
1595 | 003163
1596 | 003164
1597 | 003165
1598 | 003169
1599 | 003170
1600 | 003175
1601 | 003176
1602 | 003177
1603 | 003178
1604 | 003181
1605 | 003183
1606 | 003184
1607 | 003185
1608 | 003186
1609 | 003188
1610 | 003189
1611 | 003194
1612 | 003195
1613 | 003199
1614 | 003200
1615 | 003202
1616 | 003204
1617 | 003205
1618 | 003207
1619 | 003210
1620 | 003211
1621 | 003213
1622 | 003214
1623 | 003216
1624 | 003218
1625 | 003219
1626 | 003223
1627 | 003228
1628 | 003229
1629 | 003231
1630 | 003233
1631 | 003236
1632 | 003239
1633 | 003240
1634 | 003242
1635 | 003243
1636 | 003244
1637 | 003247
1638 | 003250
1639 | 003253
1640 | 003254
1641 | 003255
1642 | 003256
1643 | 003258
1644 | 003259
1645 | 003260
1646 | 003261
1647 | 003262
1648 | 003269
1649 | 003270
1650 | 003271
1651 | 003272
1652 | 003273
1653 | 003274
1654 | 003279
1655 | 003280
1656 | 003282
1657 | 003284
1658 | 003285
1659 | 003290
1660 | 003292
1661 | 003293
1662 | 003294
1663 | 003296
1664 | 003299
1665 | 003300
1666 | 003301
1667 | 003303
1668 | 003307
1669 | 003308
1670 | 003311
1671 | 003313
1672 | 003316
1673 | 003320
1674 | 003325
1675 | 003327
1676 | 003330
1677 | 003331
1678 | 003335
1679 | 003336
1680 | 003337
1681 | 003338
1682 | 003339
1683 | 003343
1684 | 003344
1685 | 003349
1686 | 003350
1687 | 003351
1688 | 003354
1689 | 003355
1690 | 003356
1691 | 003359
1692 | 003360
1693 | 003362
1694 | 003363
1695 | 003365
1696 | 003367
1697 | 003369
1698 | 003370
1699 | 003373
1700 | 003374
1701 | 003376
1702 | 003377
1703 | 003379
1704 | 003380
1705 | 003382
1706 | 003386
1707 | 003390
1708 | 003391
1709 | 003392
1710 | 003395
1711 | 003396
1712 | 003397
1713 | 003398
1714 | 003401
1715 | 003403
1716 | 003404
1717 | 003406
1718 | 003407
1719 | 003408
1720 | 003410
1721 | 003412
1722 | 003413
1723 | 003415
1724 | 003416
1725 | 003417
1726 | 003419
1727 | 003420
1728 | 003421
1729 | 003422
1730 | 003424
1731 | 003425
1732 | 003429
1733 | 003430
1734 | 003433
1735 | 003435
1736 | 003436
1737 | 003439
1738 | 003441
1739 | 003443
1740 | 003444
1741 | 003449
1742 | 003450
1743 | 003451
1744 | 003452
1745 | 003453
1746 | 003455
1747 | 003458
1748 | 003461
1749 | 003462
1750 | 003464
1751 | 003465
1752 | 003466
1753 | 003468
1754 | 003469
1755 | 003470
1756 | 003477
1757 | 003484
1758 | 003487
1759 | 003489
1760 | 003491
1761 | 003492
1762 | 003493
1763 | 003496
1764 | 003497
1765 | 003499
1766 | 003500
1767 | 003506
1768 | 003508
1769 | 003509
1770 | 003510
1771 | 003511
1772 | 003516
1773 | 003518
1774 | 003519
1775 | 003521
1776 | 003522
1777 | 003524
1778 | 003525
1779 | 003528
1780 | 003529
1781 | 003530
1782 | 003536
1783 | 003537
1784 | 003539
1785 | 003546
1786 | 003548
1787 | 003549
1788 | 003550
1789 | 003551
1790 | 003554
1791 | 003555
1792 | 003556
1793 | 003564
1794 | 003565
1795 | 003566
1796 | 003567
1797 | 003575
1798 | 003576
1799 | 003577
1800 | 003580
1801 | 003585
1802 | 003586
1803 | 003587
1804 | 003588
1805 | 003589
1806 | 003593
1807 | 003594
1808 | 003596
1809 | 003597
1810 | 003599
1811 | 003603
1812 | 003604
1813 | 003605
1814 | 003606
1815 | 003608
1816 | 003609
1817 | 003611
1818 | 003614
1819 | 003618
1820 | 003620
1821 | 003621
1822 | 003622
1823 | 003623
1824 | 003625
1825 | 003627
1826 | 003628
1827 | 003629
1828 | 003632
1829 | 003634
1830 | 003635
1831 | 003636
1832 | 003638
1833 | 003639
1834 | 003640
1835 | 003642
1836 | 003644
1837 | 003645
1838 | 003646
1839 | 003648
1840 | 003651
1841 | 003654
1842 | 003655
1843 | 003656
1844 | 003657
1845 | 003658
1846 | 003660
1847 | 003662
1848 | 003663
1849 | 003664
1850 | 003667
1851 | 003669
1852 | 003671
1853 | 003673
1854 | 003674
1855 | 003675
1856 | 003678
1857 | 003679
1858 | 003681
1859 | 003684
1860 | 003685
1861 | 003688
1862 | 003690
1863 | 003691
1864 | 003694
1865 | 003695
1866 | 003696
1867 | 003698
1868 | 003699
1869 | 003700
1870 | 003703
1871 | 003704
1872 | 003705
1873 | 003706
1874 | 003708
1875 | 003709
1876 | 003711
1877 | 003713
1878 | 003714
1879 | 003717
1880 | 003721
1881 | 003722
1882 | 003727
1883 | 003729
1884 | 003732
1885 | 003735
1886 | 003740
1887 | 003743
1888 | 003748
1889 | 003749
1890 | 003750
1891 | 003751
1892 | 003752
1893 | 003753
1894 | 003754
1895 | 003758
1896 | 003759
1897 | 003760
1898 | 003763
1899 | 003767
1900 | 003772
1901 | 003773
1902 | 003774
1903 | 003779
1904 | 003780
1905 | 003781
1906 | 003783
1907 | 003784
1908 | 003786
1909 | 003788
1910 | 003790
1911 | 003791
1912 | 003792
1913 | 003793
1914 | 003796
1915 | 003797
1916 | 003798
1917 | 003803
1918 | 003806
1919 | 003807
1920 | 003808
1921 | 003809
1922 | 003811
1923 | 003814
1924 | 003817
1925 | 003818
1926 | 003820
1927 | 003821
1928 | 003824
1929 | 003826
1930 | 003827
1931 | 003828
1932 | 003830
1933 | 003834
1934 | 003835
1935 | 003837
1936 | 003838
1937 | 003844
1938 | 003845
1939 | 003846
1940 | 003847
1941 | 003848
1942 | 003849
1943 | 003855
1944 | 003856
1945 | 003857
1946 | 003859
1947 | 003860
1948 | 003861
1949 | 003863
1950 | 003865
1951 | 003866
1952 | 003868
1953 | 003869
1954 | 003871
1955 | 003872
1956 | 003874
1957 | 003876
1958 | 003877
1959 | 003879
1960 | 003885
1961 | 003886
1962 | 003887
1963 | 003889
1964 | 003890
1965 | 003891
1966 | 003895
1967 | 003898
1968 | 003899
1969 | 003905
1970 | 003907
1971 | 003911
1972 | 003912
1973 | 003913
1974 | 003915
1975 | 003918
1976 | 003919
1977 | 003921
1978 | 003923
1979 | 003924
1980 | 003926
1981 | 003932
1982 | 003935
1983 | 003936
1984 | 003937
1985 | 003939
1986 | 003941
1987 | 003945
1988 | 003946
1989 | 003947
1990 | 003948
1991 | 003949
1992 | 003953
1993 | 003954
1994 | 003956
1995 | 003957
1996 | 003960
1997 | 003961
1998 | 003963
1999 | 003965
2000 | 003966
2001 | 003969
2002 | 003970
2003 | 003971
2004 | 003973
2005 | 003974
2006 | 003979
2007 | 003983
2008 | 003984
2009 | 003986
2010 | 003987
2011 | 003988
2012 | 003990
2013 | 003991
2014 | 003992
2015 | 003993
2016 | 003994
2017 | 003996
2018 | 003997
2019 | 003998
2020 | 004003
2021 | 004005
2022 | 004008
2023 | 004009
2024 | 004010
2025 | 004011
2026 | 004012
2027 | 004013
2028 | 004014
2029 | 004015
2030 | 004016
2031 | 004017
2032 | 004019
2033 | 004020
2034 | 004023
2035 | 004025
2036 | 004028
2037 | 004031
2038 | 004033
2039 | 004034
2040 | 004035
2041 | 004037
2042 | 004039
2043 | 004046
2044 | 004047
2045 | 004051
2046 | 004052
2047 | 004057
2048 | 004058
2049 | 004060
2050 | 004066
2051 | 004067
2052 | 004069
2053 | 004073
2054 | 004075
2055 | 004076
2056 | 004077
2057 | 004082
2058 | 004085
2059 | 004087
2060 | 004089
2061 | 004091
2062 | 004092
2063 | 004093
2064 | 004095
2065 | 004100
2066 | 004102
2067 | 004105
2068 | 004106
2069 | 004108
2070 | 004110
2071 | 004111
2072 | 004113
2073 | 004117
2074 | 004120
2075 | 004121
2076 | 004122
2077 | 004129
2078 | 004131
2079 | 004133
2080 | 004135
2081 | 004136
2082 | 004137
2083 | 004138
2084 | 004140
2085 | 004141
2086 | 004142
2087 | 004143
2088 | 004145
2089 | 004146
2090 | 004148
2091 | 004149
2092 | 004150
2093 | 004152
2094 | 004158
2095 | 004163
2096 | 004164
2097 | 004168
2098 | 004169
2099 | 004170
2100 | 004171
2101 | 004174
2102 | 004178
2103 | 004185
2104 | 004186
2105 | 004189
2106 | 004190
2107 | 004191
2108 | 004192
2109 | 004193
2110 | 004194
2111 | 004195
2112 | 004196
2113 | 004200
2114 | 004201
2115 | 004203
2116 | 004204
2117 | 004205
2118 | 004209
2119 | 004212
2120 | 004215
2121 | 004220
2122 | 004221
2123 | 004223
2124 | 004224
2125 | 004228
2126 | 004229
2127 | 004230
2128 | 004231
2129 | 004232
2130 | 004237
2131 | 004239
2132 | 004241
2133 | 004242
2134 | 004244
2135 | 004246
2136 | 004247
2137 | 004253
2138 | 004255
2139 | 004256
2140 | 004257
2141 | 004258
2142 | 004259
2143 | 004263
2144 | 004264
2145 | 004265
2146 | 004269
2147 | 004270
2148 | 004271
2149 | 004272
2150 | 004273
2151 | 004274
2152 | 004275
2153 | 004279
2154 | 004280
2155 | 004281
2156 | 004283
2157 | 004284
2158 | 004286
2159 | 004287
2160 | 004291
2161 | 004292
2162 | 004293
2163 | 004295
2164 | 004296
2165 | 004298
2166 | 004300
2167 | 004303
2168 | 004304
2169 | 004307
2170 | 004310
2171 | 004312
2172 | 004315
2173 | 004318
2174 | 004321
2175 | 004322
2176 | 004323
2177 | 004325
2178 | 004326
2179 | 004327
2180 | 004329
2181 | 004331
2182 | 004333
2183 | 004338
2184 | 004339
2185 | 004341
2186 | 004345
2187 | 004346
2188 | 004347
2189 | 004349
2190 | 004351
2191 | 004352
2192 | 004354
2193 | 004356
2194 | 004359
2195 | 004360
2196 | 004361
2197 | 004364
2198 | 004365
2199 | 004367
2200 | 004368
2201 | 004369
2202 | 004370
2203 | 004371
2204 | 004372
2205 | 004376
2206 | 004379
2207 | 004380
2208 | 004384
2209 | 004386
2210 | 004387
2211 | 004389
2212 | 004390
2213 | 004391
2214 | 004392
2215 | 004396
2216 | 004397
2217 | 004404
2218 | 004405
2219 | 004409
2220 | 004411
2221 | 004421
2222 | 004423
2223 | 004424
2224 | 004429
2225 | 004430
2226 | 004432
2227 | 004433
2228 | 004434
2229 | 004436
2230 | 004437
2231 | 004438
2232 | 004439
2233 | 004441
2234 | 004446
2235 | 004450
2236 | 004452
2237 | 004455
2238 | 004457
2239 | 004459
2240 | 004463
2241 | 004464
2242 | 004466
2243 | 004468
2244 | 004470
2245 | 004471
2246 | 004474
2247 | 004479
2248 | 004481
2249 | 004484
2250 | 004487
2251 | 004488
2252 | 004490
2253 | 004493
2254 | 004494
2255 | 004495
2256 | 004496
2257 | 004498
2258 | 004499
2259 | 004500
2260 | 004502
2261 | 004507
2262 | 004508
2263 | 004509
2264 | 004510
2265 | 004512
2266 | 004514
2267 | 004517
2268 | 004518
2269 | 004519
2270 | 004520
2271 | 004524
2272 | 004526
2273 | 004527
2274 | 004528
2275 | 004530
2276 | 004532
2277 | 004535
2278 | 004537
2279 | 004539
2280 | 004540
2281 | 004542
2282 | 004544
2283 | 004548
2284 | 004549
2285 | 004551
2286 | 004552
2287 | 004553
2288 | 004555
2289 | 004558
2290 | 004562
2291 | 004563
2292 | 004565
2293 | 004566
2294 | 004570
2295 | 004571
2296 | 004574
2297 | 004576
2298 | 004579
2299 | 004581
2300 | 004584
2301 | 004585
2302 | 004587
2303 | 004588
2304 | 004591
2305 | 004592
2306 | 004595
2307 | 004597
2308 | 004600
2309 | 004601
2310 | 004604
2311 | 004605
2312 | 004606
2313 | 004607
2314 | 004609
2315 | 004611
2316 | 004612
2317 | 004618
2318 | 004622
2319 | 004623
2320 | 004625
2321 | 004626
2322 | 004627
2323 | 004628
2324 | 004630
2325 | 004631
2326 | 004632
2327 | 004634
2328 | 004636
2329 | 004643
2330 | 004644
2331 | 004647
2332 | 004648
2333 | 004649
2334 | 004651
2335 | 004652
2336 | 004653
2337 | 004654
2338 | 004655
2339 | 004656
2340 | 004660
2341 | 004662
2342 | 004671
2343 | 004672
2344 | 004673
2345 | 004674
2346 | 004675
2347 | 004676
2348 | 004679
2349 | 004682
2350 | 004683
2351 | 004685
2352 | 004686
2353 | 004687
2354 | 004689
2355 | 004691
2356 | 004692
2357 | 004693
2358 | 004694
2359 | 004699
2360 | 004701
2361 | 004702
2362 | 004705
2363 | 004706
2364 | 004707
2365 | 004708
2366 | 004710
2367 | 004714
2368 | 004715
2369 | 004718
2370 | 004719
2371 | 004722
2372 | 004723
2373 | 004727
2374 | 004732
2375 | 004735
2376 | 004737
2377 | 004742
2378 | 004743
2379 | 004746
2380 | 004747
2381 | 004748
2382 | 004750
2383 | 004753
2384 | 004754
2385 | 004760
2386 | 004761
2387 | 004768
2388 | 004770
2389 | 004773
2390 | 004776
2391 | 004777
2392 | 004779
2393 | 004782
2394 | 004783
2395 | 004785
2396 | 004786
2397 | 004788
2398 | 004789
2399 | 004790
2400 | 004792
2401 | 004793
2402 | 004794
2403 | 004796
2404 | 004797
2405 | 004799
2406 | 004801
2407 | 004805
2408 | 004808
2409 | 004812
2410 | 004814
2411 | 004815
2412 | 004816
2413 | 004818
2414 | 004823
2415 | 004825
2416 | 004826
2417 | 004828
2418 | 004830
2419 | 004831
2420 | 004832
2421 | 004834
2422 | 004836
2423 | 004837
2424 | 004839
2425 | 004840
2426 | 004841
2427 | 004842
2428 | 004846
2429 | 004848
2430 | 004849
2431 | 004850
2432 | 004852
2433 | 004856
2434 | 004857
2435 | 004859
2436 | 004863
2437 | 004866
2438 | 004867
2439 | 004868
2440 | 004869
2441 | 004872
2442 | 004873
2443 | 004876
2444 | 004878
2445 | 004879
2446 | 004882
2447 | 004885
2448 | 004886
2449 | 004890
2450 | 004895
2451 | 004896
2452 | 004897
2453 | 004898
2454 | 004902
2455 | 004903
2456 | 004905
2457 | 004907
2458 | 004910
2459 | 004911
2460 | 004912
2461 | 004913
2462 | 004916
2463 | 004926
2464 | 004928
2465 | 004929
2466 | 004931
2467 | 004935
2468 | 004936
2469 | 004938
2470 | 004939
2471 | 004943
2472 | 004946
2473 | 004948
2474 | 004950
2475 | 004951
2476 | 004953
2477 | 004954
2478 | 004955
2479 | 004956
2480 | 004958
2481 | 004960
2482 | 004961
2483 | 004962
2484 | 004963
2485 | 004966
2486 | 004967
2487 | 004968
2488 | 004972
2489 | 004973
2490 | 004974
2491 | 004976
2492 | 004977
2493 | 004982
2494 | 004983
2495 | 004984
2496 | 004985
2497 | 004986
2498 | 004987
2499 | 004990
2500 | 004991
2501 | 004992
2502 | 004994
2503 | 004995
2504 | 004997
2505 | 004998
2506 | 004999
2507 | 005001
2508 | 005003
2509 | 005004
2510 | 005006
2511 | 005007
2512 | 005014
2513 | 005016
2514 | 005018
2515 | 005020
2516 | 005023
2517 | 005024
2518 | 005026
2519 | 005027
2520 | 005028
2521 | 005029
2522 | 005032
2523 | 005033
2524 | 005036
2525 | 005037
2526 | 005039
2527 | 005042
2528 | 005045
2529 | 005047
2530 | 005052
2531 | 005054
2532 | 005055
2533 | 005056
2534 | 005057
2535 | 005058
2536 | 005061
2537 | 005062
2538 | 005063
2539 | 005064
2540 | 005065
2541 | 005067
2542 | 005068
2543 | 005071
2544 | 005072
2545 | 005073
2546 | 005077
2547 | 005078
2548 | 005079
2549 | 005081
2550 | 005084
2551 | 005085
2552 | 005086
2553 | 005090
2554 | 005093
2555 | 005094
2556 | 005097
2557 | 005101
2558 | 005102
2559 | 005104
2560 | 005107
2561 | 005108
2562 | 005110
2563 | 005111
2564 | 005114
2565 | 005116
2566 | 005121
2567 | 005122
2568 | 005124
2569 | 005128
2570 | 005129
2571 | 005130
2572 | 005131
2573 | 005134
2574 | 005135
2575 | 005136
2576 | 005138
2577 | 005143
2578 | 005144
2579 | 005145
2580 | 005146
2581 | 005150
2582 | 005153
2583 | 005156
2584 | 005159
2585 | 005160
2586 | 005161
2587 | 005168
2588 | 005169
2589 | 005171
2590 | 005173
2591 | 005175
2592 | 005176
2593 | 005177
2594 | 005179
2595 | 005181
2596 | 005183
2597 | 005185
2598 | 005186
2599 | 005189
2600 | 005190
2601 | 005191
2602 | 005195
2603 | 005199
2604 | 005202
2605 | 005203
2606 | 005208
2607 | 005209
2608 | 005210
2609 | 005212
2610 | 005214
2611 | 005215
2612 | 005217
2613 | 005219
2614 | 005220
2615 | 005222
2616 | 005223
2617 | 005224
2618 | 005229
2619 | 005230
2620 | 005231
2621 | 005236
2622 | 005239
2623 | 005242
2624 | 005244
2625 | 005245
2626 | 005246
2627 | 005248
2628 | 005253
2629 | 005254
2630 | 005257
2631 | 005258
2632 | 005259
2633 | 005260
2634 | 005262
2635 | 005263
2636 | 005264
2637 | 005267
2638 | 005268
2639 | 005269
2640 | 005270
2641 | 005273
2642 | 005274
2643 | 005278
2644 | 005281
2645 | 005283
2646 | 005285
2647 | 005288
2648 | 005290
2649 | 005292
2650 | 005293
2651 | 005297
2652 | 005298
2653 | 005303
2654 | 005304
2655 | 005305
2656 | 005306
2657 | 005307
2658 | 005310
2659 | 005311
2660 | 005312
2661 | 005314
2662 | 005315
2663 | 005318
2664 | 005319
2665 | 005320
2666 | 005325
2667 | 005326
2668 | 005327
2669 | 005328
2670 | 005331
2671 | 005336
2672 | 005337
2673 | 005338
2674 | 005340
2675 | 005343
2676 | 005344
2677 | 005345
2678 | 005346
2679 | 005348
2680 | 005349
2681 | 005350
2682 | 005351
2683 | 005352
2684 | 005355
2685 | 005358
2686 | 005360
2687 | 005363
2688 | 005365
2689 | 005367
2690 | 005368
2691 | 005369
2692 | 005370
2693 | 005371
2694 | 005373
2695 | 005374
2696 | 005378
2697 | 005379
2698 | 005380
2699 | 005383
2700 | 005384
2701 | 005385
2702 | 005387
2703 | 005388
2704 | 005389
2705 | 005391
2706 | 005393
2707 | 005395
2708 | 005396
2709 | 005397
2710 | 005398
2711 | 005404
2712 | 005405
2713 | 005406
2714 | 005407
2715 | 005408
2716 | 005410
2717 | 005413
2718 | 005414
2719 | 005416
2720 | 005417
2721 | 005418
2722 | 005419
2723 | 005420
2724 | 005421
2725 | 005423
2726 | 005424
2727 | 005429
2728 | 005430
2729 | 005431
2730 | 005433
2731 | 005434
2732 | 005436
2733 | 005438
2734 | 005439
2735 | 005440
2736 | 005441
2737 | 005445
2738 | 005448
2739 | 005450
2740 | 005451
2741 | 005453
2742 | 005454
2743 | 005455
2744 | 005457
2745 | 005461
2746 | 005465
2747 | 005467
2748 | 005469
2749 | 005470
2750 | 005471
2751 | 005475
2752 | 005478
2753 | 005481
2754 | 005483
2755 | 005485
2756 | 005486
2757 | 005487
2758 | 005489
2759 | 005496
2760 | 005497
2761 | 005499
2762 | 005507
2763 | 005508
2764 | 005509
2765 | 005510
2766 | 005511
2767 | 005514
2768 | 005515
2769 | 005517
2770 | 005518
2771 | 005519
2772 | 005521
2773 | 005522
2774 | 005524
2775 | 005526
2776 | 005527
2777 | 005530
2778 | 005531
2779 | 005535
2780 | 005536
2781 | 005539
2782 | 005541
2783 | 005542
2784 | 005544
2785 | 005547
2786 | 005549
2787 | 005550
2788 | 005552
2789 | 005554
2790 | 005559
2791 | 005563
2792 | 005566
2793 | 005568
2794 | 005573
2795 | 005574
2796 | 005576
2797 | 005577
2798 | 005579
2799 | 005582
2800 | 005583
2801 | 005584
2802 | 005585
2803 | 005586
2804 | 005588
2805 | 005590
2806 | 005591
2807 | 005592
2808 | 005593
2809 | 005599
2810 | 005600
2811 | 005601
2812 | 005603
2813 | 005605
2814 | 005606
2815 | 005608
2816 | 005609
2817 | 005611
2818 | 005613
2819 | 005614
2820 | 005615
2821 | 005618
2822 | 005620
2823 | 005624
2824 | 005625
2825 | 005629
2826 | 005630
2827 | 005631
2828 | 005636
2829 | 005637
2830 | 005639
2831 | 005640
2832 | 005641
2833 | 005644
2834 | 005645
2835 | 005647
2836 | 005648
2837 | 005652
2838 | 005653
2839 | 005654
2840 | 005655
2841 | 005657
2842 | 005658
2843 | 005660
2844 | 005662
2845 | 005664
2846 | 005668
2847 | 005669
2848 | 005672
2849 | 005674
2850 | 005676
2851 | 005679
2852 | 005680
2853 | 005682
2854 | 005685
2855 | 005686
2856 | 005687
2857 | 005693
2858 | 005695
2859 | 005696
2860 | 005697
2861 | 005699
2862 | 005700
2863 | 005701
2864 | 005702
2865 | 005704
2866 | 005705
2867 | 005710
2868 | 005713
2869 | 005714
2870 | 005715
2871 | 005716
2872 | 005718
2873 | 005719
2874 | 005723
2875 | 005728
2876 | 005729
2877 | 005730
2878 | 005731
2879 | 005732
2880 | 005735
2881 | 005736
2882 | 005738
2883 | 005740
2884 | 005741
2885 | 005742
2886 | 005743
2887 | 005747
2888 | 005749
2889 | 005752
2890 | 005755
2891 | 005756
2892 | 005757
2893 | 005760
2894 | 005761
2895 | 005762
2896 | 005764
2897 | 005765
2898 | 005768
2899 | 005769
2900 | 005773
2901 | 005779
2902 | 005780
2903 | 005781
2904 | 005782
2905 | 005783
2906 | 005784
2907 | 005786
2908 | 005788
2909 | 005789
2910 | 005790
2911 | 005791
2912 | 005794
2913 | 005796
2914 | 005799
2915 | 005803
2916 | 005805
2917 | 005806
2918 | 005811
2919 | 005812
2920 | 005813
2921 | 005814
2922 | 005815
2923 | 005817
2924 | 005818
2925 | 005819
2926 | 005821
2927 | 005824
2928 | 005825
2929 | 005826
2930 | 005828
2931 | 005829
2932 | 005830
2933 | 005831
2934 | 005836
2935 | 005838
2936 | 005839
2937 | 005840
2938 | 005841
2939 | 005843
2940 | 005845
2941 | 005850
2942 | 005851
2943 | 005852
2944 | 005853
2945 | 005854
2946 | 005856
2947 | 005859
2948 | 005860
2949 | 005861
2950 | 005863
2951 | 005864
2952 | 005867
2953 | 005868
2954 | 005873
2955 | 005874
2956 | 005875
2957 | 005877
2958 | 005878
2959 | 005879
2960 | 005881
2961 | 005884
2962 | 005885
2963 | 005888
2964 | 005889
2965 | 005893
2966 | 005894
2967 | 005895
2968 | 005897
2969 | 005899
2970 | 005901
2971 | 005903
2972 | 005905
2973 | 005906
2974 | 005908
2975 | 005909
2976 | 005910
2977 | 005911
2978 | 005912
2979 | 005914
2980 | 005917
2981 | 005918
2982 | 005919
2983 | 005920
2984 | 005923
2985 | 005928
2986 | 005930
2987 | 005938
2988 | 005940
2989 | 005947
2990 | 005948
2991 | 005951
2992 | 005952
2993 | 005954
2994 | 005956
2995 | 005960
2996 | 005961
2997 | 005963
2998 | 005964
2999 | 005968
3000 | 005970
3001 | 005971
3002 | 005975
3003 | 005979
3004 | 005980
3005 | 005981
3006 | 005983
3007 | 005984
3008 | 005985
3009 | 005988
3010 | 005989
3011 | 005990
3012 | 005991
3013 | 005992
3014 | 005995
3015 | 005996
3016 | 005998
3017 | 006000
3018 | 006001
3019 | 006004
3020 | 006005
3021 | 006009
3022 | 006011
3023 | 006012
3024 | 006018
3025 | 006020
3026 | 006023
3027 | 006025
3028 | 006026
3029 | 006027
3030 | 006028
3031 | 006029
3032 | 006030
3033 | 006033
3034 | 006035
3035 | 006038
3036 | 006041
3037 | 006042
3038 | 006043
3039 | 006045
3040 | 006046
3041 | 006055
3042 | 006058
3043 | 006061
3044 | 006062
3045 | 006065
3046 | 006066
3047 | 006067
3048 | 006069
3049 | 006070
3050 | 006071
3051 | 006073
3052 | 006074
3053 | 006078
3054 | 006079
3055 | 006084
3056 | 006088
3057 | 006089
3058 | 006091
3059 | 006095
3060 | 006096
3061 | 006097
3062 | 006098
3063 | 006100
3064 | 006103
3065 | 006104
3066 | 006105
3067 | 006107
3068 | 006108
3069 | 006111
3070 | 006117
3071 | 006120
3072 | 006123
3073 | 006124
3074 | 006125
3075 | 006128
3076 | 006129
3077 | 006130
3078 | 006131
3079 | 006133
3080 | 006134
3081 | 006135
3082 | 006136
3083 | 006139
3084 | 006140
3085 | 006141
3086 | 006146
3087 | 006148
3088 | 006150
3089 | 006151
3090 | 006153
3091 | 006156
3092 | 006158
3093 | 006159
3094 | 006161
3095 | 006162
3096 | 006163
3097 | 006166
3098 | 006170
3099 | 006171
3100 | 006172
3101 | 006174
3102 | 006175
3103 | 006176
3104 | 006177
3105 | 006179
3106 | 006180
3107 | 006181
3108 | 006183
3109 | 006184
3110 | 006185
3111 | 006187
3112 | 006188
3113 | 006189
3114 | 006190
3115 | 006196
3116 | 006198
3117 | 006201
3118 | 006202
3119 | 006203
3120 | 006206
3121 | 006208
3122 | 006209
3123 | 006210
3124 | 006212
3125 | 006214
3126 | 006215
3127 | 006216
3128 | 006218
3129 | 006219
3130 | 006220
3131 | 006221
3132 | 006222
3133 | 006223
3134 | 006224
3135 | 006225
3136 | 006229
3137 | 006230
3138 | 006233
3139 | 006234
3140 | 006235
3141 | 006236
3142 | 006238
3143 | 006240
3144 | 006241
3145 | 006243
3146 | 006247
3147 | 006249
3148 | 006250
3149 | 006251
3150 | 006252
3151 | 006254
3152 | 006258
3153 | 006259
3154 | 006260
3155 | 006261
3156 | 006262
3157 | 006264
3158 | 006267
3159 | 006269
3160 | 006270
3161 | 006272
3162 | 006275
3163 | 006276
3164 | 006277
3165 | 006279
3166 | 006281
3167 | 006282
3168 | 006284
3169 | 006285
3170 | 006286
3171 | 006289
3172 | 006290
3173 | 006291
3174 | 006295
3175 | 006296
3176 | 006299
3177 | 006300
3178 | 006301
3179 | 006304
3180 | 006305
3181 | 006306
3182 | 006309
3183 | 006314
3184 | 006318
3185 | 006319
3186 | 006320
3187 | 006321
3188 | 006323
3189 | 006325
3190 | 006329
3191 | 006330
3192 | 006335
3193 | 006337
3194 | 006338
3195 | 006339
3196 | 006341
3197 | 006344
3198 | 006346
3199 | 006348
3200 | 006349
3201 | 006350
3202 | 006351
3203 | 006352
3204 | 006353
3205 | 006355
3206 | 006357
3207 | 006362
3208 | 006363
3209 | 006366
3210 | 006367
3211 | 006369
3212 | 006371
3213 | 006374
3214 | 006375
3215 | 006377
3216 | 006381
3217 | 006382
3218 | 006385
3219 | 006387
3220 | 006391
3221 | 006392
3222 | 006395
3223 | 006396
3224 | 006398
3225 | 006400
3226 | 006404
3227 | 006409
3228 | 006411
3229 | 006417
3230 | 006418
3231 | 006419
3232 | 006421
3233 | 006424
3234 | 006425
3235 | 006427
3236 | 006428
3237 | 006429
3238 | 006430
3239 | 006433
3240 | 006434
3241 | 006436
3242 | 006437
3243 | 006438
3244 | 006440
3245 | 006442
3246 | 006443
3247 | 006444
3248 | 006445
3249 | 006447
3250 | 006448
3251 | 006449
3252 | 006450
3253 | 006455
3254 | 006456
3255 | 006458
3256 | 006459
3257 | 006462
3258 | 006463
3259 | 006465
3260 | 006466
3261 | 006468
3262 | 006470
3263 | 006472
3264 | 006473
3265 | 006474
3266 | 006475
3267 | 006476
3268 | 006480
3269 | 006482
3270 | 006483
3271 | 006484
3272 | 006486
3273 | 006488
3274 | 006492
3275 | 006495
3276 | 006497
3277 | 006499
3278 | 006501
3279 | 006503
3280 | 006506
3281 | 006507
3282 | 006509
3283 | 006512
3284 | 006515
3285 | 006519
3286 | 006520
3287 | 006523
3288 | 006524
3289 | 006529
3290 | 006530
3291 | 006532
3292 | 006534
3293 | 006536
3294 | 006538
3295 | 006542
3296 | 006543
3297 | 006547
3298 | 006548
3299 | 006549
3300 | 006550
3301 | 006551
3302 | 006553
3303 | 006556
3304 | 006560
3305 | 006562
3306 | 006564
3307 | 006565
3308 | 006569
3309 | 006570
3310 | 006572
3311 | 006575
3312 | 006576
3313 | 006578
3314 | 006583
3315 | 006584
3316 | 006585
3317 | 006587
3318 | 006588
3319 | 006593
3320 | 006595
3321 | 006597
3322 | 006599
3323 | 006602
3324 | 006603
3325 | 006605
3326 | 006606
3327 | 006609
3328 | 006610
3329 | 006611
3330 | 006612
3331 | 006617
3332 | 006618
3333 | 006619
3334 | 006621
3335 | 006622
3336 | 006625
3337 | 006626
3338 | 006627
3339 | 006628
3340 | 006631
3341 | 006632
3342 | 006635
3343 | 006636
3344 | 006637
3345 | 006638
3346 | 006643
3347 | 006645
3348 | 006647
3349 | 006648
3350 | 006652
3351 | 006654
3352 | 006657
3353 | 006658
3354 | 006660
3355 | 006661
3356 | 006664
3357 | 006666
3358 | 006667
3359 | 006668
3360 | 006670
3361 | 006671
3362 | 006673
3363 | 006674
3364 | 006677
3365 | 006678
3366 | 006679
3367 | 006681
3368 | 006682
3369 | 006684
3370 | 006687
3371 | 006689
3372 | 006690
3373 | 006694
3374 | 006695
3375 | 006696
3376 | 006697
3377 | 006698
3378 | 006699
3379 | 006702
3380 | 006703
3381 | 006704
3382 | 006706
3383 | 006707
3384 | 006708
3385 | 006709
3386 | 006714
3387 | 006718
3388 | 006719
3389 | 006722
3390 | 006725
3391 | 006726
3392 | 006727
3393 | 006730
3394 | 006731
3395 | 006734
3396 | 006735
3397 | 006736
3398 | 006738
3399 | 006739
3400 | 006740
3401 | 006747
3402 | 006748
3403 | 006751
3404 | 006753
3405 | 006755
3406 | 006759
3407 | 006760
3408 | 006761
3409 | 006762
3410 | 006765
3411 | 006766
3412 | 006768
3413 | 006769
3414 | 006772
3415 | 006773
3416 | 006777
3417 | 006781
3418 | 006782
3419 | 006783
3420 | 006784
3421 | 006786
3422 | 006789
3423 | 006794
3424 | 006797
3425 | 006799
3426 | 006800
3427 | 006802
3428 | 006803
3429 | 006805
3430 | 006806
3431 | 006808
3432 | 006810
3433 | 006813
3434 | 006814
3435 | 006819
3436 | 006821
3437 | 006822
3438 | 006824
3439 | 006825
3440 | 006827
3441 | 006828
3442 | 006829
3443 | 006833
3444 | 006835
3445 | 006836
3446 | 006838
3447 | 006839
3448 | 006840
3449 | 006841
3450 | 006842
3451 | 006844
3452 | 006845
3453 | 006847
3454 | 006848
3455 | 006849
3456 | 006850
3457 | 006852
3458 | 006855
3459 | 006858
3460 | 006859
3461 | 006860
3462 | 006862
3463 | 006864
3464 | 006865
3465 | 006866
3466 | 006867
3467 | 006868
3468 | 006869
3469 | 006874
3470 | 006876
3471 | 006878
3472 | 006880
3473 | 006883
3474 | 006884
3475 | 006886
3476 | 006887
3477 | 006892
3478 | 006893
3479 | 006896
3480 | 006899
3481 | 006900
3482 | 006903
3483 | 006908
3484 | 006909
3485 | 006910
3486 | 006911
3487 | 006912
3488 | 006914
3489 | 006916
3490 | 006917
3491 | 006918
3492 | 006919
3493 | 006922
3494 | 006924
3495 | 006930
3496 | 006931
3497 | 006932
3498 | 006933
3499 | 006934
3500 | 006935
3501 | 006939
3502 | 006940
3503 | 006943
3504 | 006944
3505 | 006945
3506 | 006947
3507 | 006948
3508 | 006949
3509 | 006950
3510 | 006952
3511 | 006953
3512 | 006956
3513 | 006958
3514 | 006959
3515 | 006962
3516 | 006963
3517 | 006965
3518 | 006966
3519 | 006968
3520 | 006971
3521 | 006972
3522 | 006976
3523 | 006981
3524 | 006983
3525 | 006987
3526 | 006988
3527 | 006989
3528 | 006990
3529 | 006994
3530 | 006995
3531 | 007002
3532 | 007003
3533 | 007004
3534 | 007006
3535 | 007007
3536 | 007008
3537 | 007009
3538 | 007011
3539 | 007016
3540 | 007018
3541 | 007020
3542 | 007021
3543 | 007022
3544 | 007023
3545 | 007025
3546 | 007029
3547 | 007031
3548 | 007033
3549 | 007035
3550 | 007036
3551 | 007038
3552 | 007039
3553 | 007040
3554 | 007042
3555 | 007045
3556 | 007046
3557 | 007048
3558 | 007049
3559 | 007050
3560 | 007052
3561 | 007054
3562 | 007056
3563 | 007058
3564 | 007059
3565 | 007062
3566 | 007064
3567 | 007065
3568 | 007068
3569 | 007070
3570 | 007071
3571 | 007072
3572 | 007073
3573 | 007074
3574 | 007075
3575 | 007077
3576 | 007078
3577 | 007079
3578 | 007080
3579 | 007084
3580 | 007086
3581 | 007088
3582 | 007089
3583 | 007090
3584 | 007092
3585 | 007093
3586 | 007095
3587 | 007097
3588 | 007100
3589 | 007101
3590 | 007104
3591 | 007105
3592 | 007108
3593 | 007109
3594 | 007113
3595 | 007114
3596 | 007117
3597 | 007121
3598 | 007122
3599 | 007123
3600 | 007125
3601 | 007128
3602 | 007129
3603 | 007130
3604 | 007132
3605 | 007133
3606 | 007138
3607 | 007139
3608 | 007140
3609 | 007141
3610 | 007144
3611 | 007146
3612 | 007147
3613 | 007148
3614 | 007149
3615 | 007150
3616 | 007152
3617 | 007153
3618 | 007154
3619 | 007159
3620 | 007162
3621 | 007163
3622 | 007165
3623 | 007166
3624 | 007167
3625 | 007168
3626 | 007172
3627 | 007174
3628 | 007177
3629 | 007180
3630 | 007182
3631 | 007184
3632 | 007185
3633 | 007187
3634 | 007189
3635 | 007191
3636 | 007193
3637 | 007194
3638 | 007197
3639 | 007200
3640 | 007204
3641 | 007205
3642 | 007208
3643 | 007210
3644 | 007211
3645 | 007212
3646 | 007213
3647 | 007214
3648 | 007215
3649 | 007216
3650 | 007217
3651 | 007219
3652 | 007222
3653 | 007223
3654 | 007224
3655 | 007227
3656 | 007230
3657 | 007234
3658 | 007236
3659 | 007241
3660 | 007243
3661 | 007244
3662 | 007245
3663 | 007247
3664 | 007249
3665 | 007250
3666 | 007256
3667 | 007258
3668 | 007259
3669 | 007260
3670 | 007261
3671 | 007263
3672 | 007266
3673 | 007270
3674 | 007271
3675 | 007274
3676 | 007275
3677 | 007276
3678 | 007279
3679 | 007280
3680 | 007283
3681 | 007284
3682 | 007285
3683 | 007289
3684 | 007292
3685 | 007294
3686 | 007295
3687 | 007296
3688 | 007297
3689 | 007298
3690 | 007299
3691 | 007300
3692 | 007302
3693 | 007305
3694 | 007308
3695 | 007311
3696 | 007314
3697 | 007318
3698 | 007322
3699 | 007323
3700 | 007325
3701 | 007327
3702 | 007329
3703 | 007330
3704 | 007334
3705 | 007336
3706 | 007343
3707 | 007344
3708 | 007346
3709 | 007350
3710 | 007351
3711 | 007356
3712 | 007359
3713 | 007361
3714 | 007363
3715 | 007365
3716 | 007369
3717 | 007370
3718 | 007372
3719 | 007373
3720 | 007374
3721 | 007375
3722 | 007376
3723 | 007381
3724 | 007383
3725 | 007385
3726 | 007388
3727 | 007389
3728 | 007390
3729 | 007394
3730 | 007396
3731 | 007398
3732 | 007408
3733 | 007410
3734 | 007411
3735 | 007413
3736 | 007414
3737 | 007416
3738 | 007417
3739 | 007419
3740 | 007421
3741 | 007422
3742 | 007424
3743 | 007425
3744 | 007427
3745 | 007431
3746 | 007432
3747 | 007433
3748 | 007435
3749 | 007436
3750 | 007437
3751 | 007438
3752 | 007439
3753 | 007443
3754 | 007445
3755 | 007446
3756 | 007448
3757 | 007449
3758 | 007451
3759 | 007454
3760 | 007457
3761 | 007458
3762 | 007460
3763 | 007461
3764 | 007465
3765 | 007466
3766 | 007467
3767 | 007468
3768 | 007470
3769 | 007474
3770 | 007475
3771 | 007477
3772 | 007479
3773 | 007480
3774 | 007481
3775 | 007482
3776 | 007483
3777 | 007484
3778 | 007486
3779 | 007489
3780 | 007490
3781 | 007491
3782 | 007493
3783 | 007497
3784 | 007498
3785 | 007503
3786 | 007506
3787 | 007511
3788 | 007513
3789 | 007517
3790 | 007519
3791 | 007521
3792 | 007523
3793 | 007524
3794 | 007525
3795 | 007526
3796 | 007527
3797 | 007528
3798 | 007530
3799 | 007533
3800 | 007535
3801 | 007536
3802 | 007537
3803 | 007538
3804 | 007540
3805 | 007543
3806 | 007544
3807 | 007546
3808 | 007547
3809 | 007551
3810 | 007555
3811 | 007558
3812 | 007559
3813 | 007563
3814 | 007565
3815 | 007566
3816 | 007568
3817 | 007570
3818 | 007571
3819 | 007572
3820 | 007575
3821 | 007576
3822 | 007578
3823 | 007579
3824 | 007585
3825 | 007586
3826 | 007590
3827 | 007592
3828 | 007594
3829 | 007600
3830 | 007601
3831 | 007603
3832 | 007605
3833 | 007606
3834 | 007611
3835 | 007612
3836 | 007614
3837 | 007615
3838 | 007618
3839 | 007619
3840 | 007621
3841 | 007622
3842 | 007624
3843 | 007626
3844 | 007629
3845 | 007631
3846 | 007633
3847 | 007637
3848 | 007639
3849 | 007640
3850 | 007642
3851 | 007647
3852 | 007649
3853 | 007650
3854 | 007653
3855 | 007654
3856 | 007655
3857 | 007656
3858 | 007657
3859 | 007662
3860 | 007663
3861 | 007664
3862 | 007666
3863 | 007667
3864 | 007668
3865 | 007670
3866 | 007671
3867 | 007672
3868 | 007673
3869 | 007675
3870 | 007677
3871 | 007678
3872 | 007679
3873 | 007680
3874 | 007682
3875 | 007683
3876 | 007685
3877 | 007687
3878 | 007688
3879 | 007691
3880 | 007692
3881 | 007694
3882 | 007696
3883 | 007697
3884 | 007699
3885 | 007702
3886 | 007704
3887 | 007705
3888 | 007709
3889 | 007712
3890 | 007713
3891 | 007715
3892 | 007718
3893 | 007720
3894 | 007721
3895 | 007723
3896 | 007724
3897 | 007727
3898 | 007729
3899 | 007731
3900 | 007732
3901 | 007735
3902 | 007736
3903 | 007740
3904 | 007742
3905 | 007743
3906 | 007745
3907 | 007746
3908 | 007748
3909 | 007749
3910 | 007751
3911 | 007753
3912 | 007754
3913 | 007758
3914 | 007760
3915 | 007762
3916 | 007763
3917 | 007765
3918 | 007767
3919 | 007768
3920 | 007772
3921 | 007773
3922 | 007775
3923 | 007776
3924 | 007777
3925 | 007779
3926 | 007781
3927 | 007786
3928 | 007790
3929 | 007791
3930 | 007793
3931 | 007795
3932 | 007798
3933 | 007799
3934 | 007803
3935 | 007809
3936 | 007810
3937 | 007812
3938 | 007813
3939 | 007814
3940 | 007815
3941 | 007819
3942 | 007820
3943 | 007821
3944 | 007824
3945 | 007826
3946 | 007831
3947 | 007833
3948 | 007834
3949 | 007836
3950 | 007838
3951 | 007840
3952 | 007841
3953 | 007843
3954 | 007845
3955 | 007847
3956 | 007853
3957 | 007854
3958 | 007855
3959 | 007856
3960 | 007857
3961 | 007859
3962 | 007863
3963 | 007864
3964 | 007865
3965 | 007868
3966 | 007869
3967 | 007872
3968 | 007873
3969 | 007876
3970 | 007877
3971 | 007878
3972 | 007883
3973 | 007884
3974 | 007885
3975 | 007886
3976 | 007889
3977 | 007890
3978 | 007897
3979 | 007898
3980 | 007899
3981 | 007900
3982 | 007901
3983 | 007902
3984 | 007905
3985 | 007908
3986 | 007909
3987 | 007910
3988 | 007911
3989 | 007914
3990 | 007915
3991 | 007916
3992 | 007919
3993 | 007920
3994 | 007921
3995 | 007923
3996 | 007924
3997 | 007925
3998 | 007926
3999 | 007928
4000 | 007931
4001 | 007932
4002 | 007933
4003 | 007935
4004 | 007939
4005 | 007940
4006 | 007943
4007 | 007946
4008 | 007947
4009 | 007950
4010 | 007953
4011 | 007954
4012 | 007956
4013 | 007958
4014 | 007959
4015 | 007963
4016 | 007964
4017 | 007968
4018 | 007970
4019 | 007971
4020 | 007974
4021 | 007976
4022 | 007979
4023 | 007980
4024 | 007984
4025 | 007987
4026 | 007991
4027 | 007996
4028 | 007997
4029 | 007998
4030 | 007999
4031 | 008001
4032 | 008002
4033 | 008004
4034 | 008005
4035 | 008008
4036 | 008009
4037 | 008012
4038 | 008017
4039 | 008019
4040 | 008023
4041 | 008024
4042 | 008026
4043 | 008029
4044 | 008031
4045 | 008032
4046 | 008033
4047 | 008036
4048 | 008037
4049 | 008040
4050 | 008042
4051 | 008043
4052 | 008044
4053 | 008048
4054 | 008049
4055 | 008051
4056 | 008053
4057 | 008057
4058 | 008060
4059 | 008061
4060 | 008062
4061 | 008063
4062 | 008064
4063 | 008067
4064 | 008068
4065 | 008069
4066 | 008072
4067 | 008075
4068 | 008076
4069 | 008079
4070 | 008082
4071 | 008083
4072 | 008084
4073 | 008085
4074 | 008086
4075 | 008087
4076 | 008091
4077 | 008093
4078 | 008095
4079 | 008096
4080 | 008098
4081 | 008100
4082 | 008101
4083 | 008103
4084 | 008105
4085 | 008106
4086 | 008107
4087 | 008108
4088 | 008112
4089 | 008115
4090 | 008116
4091 | 008117
4092 | 008121
4093 | 008122
4094 | 008125
4095 | 008127
4096 | 008130
4097 | 008132
4098 | 008137
4099 | 008138
4100 | 008139
4101 | 008140
4102 | 008141
4103 | 008142
4104 | 008144
4105 | 008150
4106 | 008151
4107 | 008159
4108 | 008160
4109 | 008163
4110 | 008164
4111 | 008166
4112 | 008168
4113 | 008169
4114 | 008171
4115 | 008173
4116 | 008174
4117 | 008175
4118 | 008177
4119 | 008180
4120 | 008186
4121 | 008188
4122 | 008189
4123 | 008190
4124 | 008191
4125 | 008197
4126 | 008199
4127 | 008200
4128 | 008202
4129 | 008203
4130 | 008204
4131 | 008208
4132 | 008209
4133 | 008211
4134 | 008213
4135 | 008216
4136 | 008218
4137 | 008220
4138 | 008222
4139 | 008223
4140 | 008224
4141 | 008225
4142 | 008226
4143 | 008229
4144 | 008232
4145 | 008235
4146 | 008236
4147 | 008241
4148 | 008244
4149 | 008248
4150 | 008250
4151 | 008251
4152 | 008252
4153 | 008253
4154 | 008254
4155 | 008258
4156 | 008260
4157 | 008261
4158 | 008262
4159 | 008263
4160 | 008268
4161 | 008269
4162 | 008272
4163 | 008275
4164 | 008279
4165 | 008280
4166 | 008281
4167 | 008282
4168 | 008284
4169 | 008285
4170 | 008292
4171 | 008293
4172 | 008294
4173 | 008295
4174 | 008296
4175 | 008297
4176 | 008299
4177 | 008300
4178 | 008301
4179 | 008302
4180 | 008306
4181 | 008307
4182 | 008310
4183 | 008311
4184 | 008312
4185 | 008313
4186 | 008315
4187 | 008316
4188 | 008317
4189 | 008318
4190 | 008319
4191 | 008320
4192 | 008322
4193 | 008323
4194 | 008326
4195 | 008327
4196 | 008329
4197 | 008332
4198 | 008335
4199 | 008336
4200 | 008338
4201 | 008341
4202 | 008342
4203 | 008345
4204 | 008346
4205 | 008349
4206 | 008351
4207 | 008355
4208 | 008359
4209 | 008360
4210 | 008364
4211 | 008365
4212 | 008368
4213 | 008370
4214 | 008372
4215 | 008374
4216 | 008376
4217 | 008381
4218 | 008384
4219 | 008385
4220 | 008386
4221 | 008387
4222 | 008388
4223 | 008390
4224 | 008391
4225 | 008397
4226 | 008398
4227 | 008403
4228 | 008409
4229 | 008410
4230 | 008413
4231 | 008415
4232 | 008416
4233 | 008422
4234 | 008423
4235 | 008424
4236 | 008425
4237 | 008426
4238 | 008427
4239 | 008429
4240 | 008430
4241 | 008433
4242 | 008434
4243 | 008437
4244 | 008438
4245 | 008442
4246 | 008443
4247 | 008444
4248 | 008445
4249 | 008449
4250 | 008450
4251 | 008452
4252 | 008453
4253 | 008454
4254 | 008456
4255 | 008461
4256 | 008462
4257 | 008465
4258 | 008466
4259 | 008467
4260 | 008468
4261 | 008470
4262 | 008472
4263 | 008475
4264 | 008477
4265 | 008478
4266 | 008482
4267 | 008483
4268 | 008484
4269 | 008485
4270 | 008492
4271 | 008494
4272 | 008495
4273 | 008498
4274 | 008499
4275 | 008502
4276 | 008503
4277 | 008506
4278 | 008509
4279 | 008512
4280 | 008513
4281 | 008514
4282 | 008517
4283 | 008518
4284 | 008519
4285 | 008521
4286 | 008522
4287 | 008523
4288 | 008524
4289 | 008526
4290 | 008529
4291 | 008530
4292 | 008533
4293 | 008534
4294 | 008535
4295 | 008536
4296 | 008541
4297 | 008542
4298 | 008549
4299 | 008550
4300 | 008553
4301 | 008556
4302 | 008557
4303 | 008558
4304 | 008559
4305 | 008562
4306 | 008564
4307 | 008568
4308 | 008572
4309 | 008573
4310 | 008576
4311 | 008581
4312 | 008582
4313 | 008584
4314 | 008585
4315 | 008586
4316 | 008587
4317 | 008588
4318 | 008592
4319 | 008595
4320 | 008596
4321 | 008601
4322 | 008602
4323 | 008604
4324 | 008606
4325 | 008607
4326 | 008608
4327 | 008610
4328 | 008612
4329 | 008615
4330 | 008617
4331 | 008618
4332 | 008620
4333 | 008621
4334 | 008624
4335 | 008628
4336 | 008633
4337 | 008635
4338 | 008636
4339 | 008638
4340 | 008639
4341 | 008644
4342 | 008645
4343 | 008647
4344 | 008653
4345 | 008654
4346 | 008655
4347 | 008663
4348 | 008665
4349 | 008667
4350 | 008670
4351 | 008676
4352 | 008680
4353 | 008683
4354 | 008687
4355 | 008688
4356 | 008690
4357 | 008691
4358 | 008692
4359 | 008695
4360 | 008698
4361 | 008699
4362 | 008701
4363 | 008702
4364 | 008706
4365 | 008709
4366 | 008710
4367 | 008713
4368 | 008716
4369 | 008717
4370 | 008718
4371 | 008720
4372 | 008722
4373 | 008723
4374 | 008725
4375 | 008727
4376 | 008728
4377 | 008730
4378 | 008731
4379 | 008732
4380 | 008733
4381 | 008738
4382 | 008739
4383 | 008741
4384 | 008742
4385 | 008744
4386 | 008747
4387 | 008748
4388 | 008749
4389 | 008750
4390 | 008752
4391 | 008753
4392 | 008755
4393 | 008756
4394 | 008757
4395 | 008759
4396 | 008760
4397 | 008764
4398 | 008766
4399 | 008768
4400 | 008769
4401 | 008770
4402 | 008771
4403 | 008772
4404 | 008773
4405 | 008775
4406 | 008776
4407 | 008783
4408 | 008784
4409 | 008790
4410 | 008793
4411 | 008794
4412 | 008796
4413 | 008799
4414 | 008801
4415 | 008805
4416 | 008806
4417 | 008809
4418 | 008810
4419 | 008811
4420 | 008813
4421 | 008814
4422 | 008815
4423 | 008817
4424 | 008819
4425 | 008822
4426 | 008823
4427 | 008826
4428 | 008831
4429 | 008833
4430 | 008835
4431 | 008836
4432 | 008837
4433 | 008838
4434 | 008840
4435 | 008841
4436 | 008843
4437 | 008847
4438 | 008848
4439 | 008849
4440 | 008854
4441 | 008856
4442 | 008858
4443 | 008859
4444 | 008862
4445 | 008865
4446 | 008867
4447 | 008871
4448 | 008872
4449 | 008873
4450 | 008874
4451 | 008876
4452 | 008878
4453 | 008879
4454 | 008880
4455 | 008883
4456 | 008884
4457 | 008885
4458 | 008886
4459 | 008888
4460 | 008890
4461 | 008891
4462 | 008892
4463 | 008900
4464 | 008905
4465 | 008909
4466 | 008911
4467 | 008913
4468 | 008914
4469 | 008917
4470 | 008919
4471 | 008920
4472 | 008921
4473 | 008923
4474 | 008926
4475 | 008927
4476 | 008929
4477 | 008930
4478 | 008931
4479 | 008932
4480 | 008933
4481 | 008936
4482 | 008939
4483 | 008940
4484 | 008942
4485 | 008943
4486 | 008944
4487 | 008948
4488 | 008951
4489 | 008953
4490 | 008955
4491 | 008958
4492 | 008960
4493 | 008961
4494 | 008962
4495 | 008965
4496 | 008966
4497 | 008967
4498 | 008968
4499 | 008969
4500 | 008970
4501 | 008971
4502 | 008973
4503 | 008975
4504 | 008976
4505 | 008978
4506 | 008979
4507 | 008980
4508 | 008982
4509 | 008983
4510 | 008985
4511 | 008987
4512 | 008988
4513 | 008989
4514 | 008995
4515 | 008997
4516 | 008999
4517 | 009000
4518 | 009002
4519 | 009004
4520 | 009005
4521 | 009006
4522 | 009007
4523 | 009015
4524 | 009016
4525 | 009018
4526 | 009019
4527 | 009020
4528 | 009022
4529 | 009024
4530 | 009027
4531 | 009029
4532 | 009032
4533 | 009034
4534 | 009035
4535 | 009036
4536 | 009037
4537 | 009039
4538 | 009042
4539 | 009045
4540 | 009048
4541 | 009049
4542 | 009051
4543 | 009053
4544 | 009058
4545 | 009059
4546 | 009060
4547 | 009063
4548 | 009064
4549 | 009066
4550 | 009068
4551 | 009072
4552 | 009073
4553 | 009078
4554 | 009079
4555 | 009080
4556 | 009085
4557 | 009086
4558 | 009087
4559 | 009089
4560 | 009091
4561 | 009094
4562 | 009098
4563 | 009099
4564 | 009100
4565 | 009105
4566 | 009106
4567 | 009108
4568 | 009112
4569 | 009113
4570 | 009114
4571 | 009116
4572 | 009117
4573 | 009121
4574 | 009123
4575 | 009126
4576 | 009128
4577 | 009129
4578 | 009131
4579 | 009133
4580 | 009136
4581 | 009138
4582 | 009141
4583 | 009144
4584 | 009147
4585 | 009148
4586 | 009150
4587 | 009151
4588 | 009153
4589 | 009155
4590 | 009157
4591 | 009159
4592 | 009160
4593 | 009161
4594 | 009162
4595 | 009163
4596 | 009166
4597 | 009168
4598 | 009173
4599 | 009174
4600 | 009175
4601 | 009177
4602 | 009178
4603 | 009179
4604 | 009180
4605 | 009181
4606 | 009184
4607 | 009185
4608 | 009186
4609 | 009187
4610 | 009189
4611 | 009191
4612 | 009192
4613 | 009193
4614 | 009194
4615 | 009195
4616 | 009196
4617 | 009197
4618 | 009200
4619 | 009202
4620 | 009205
4621 | 009208
4622 | 009209
4623 | 009212
4624 | 009213
4625 | 009214
4626 | 009215
4627 | 009218
4628 | 009221
4629 | 009224
4630 | 009227
4631 | 009230
4632 | 009236
4633 | 009238
4634 | 009239
4635 | 009242
4636 | 009244
4637 | 009245
4638 | 009246
4639 | 009247
4640 | 009249
4641 | 009250
4642 | 009251
4643 | 009252
4644 | 009254
4645 | 009255
4646 | 009259
4647 | 009268
4648 | 009269
4649 | 009270
4650 | 009271
4651 | 009272
4652 | 009273
4653 | 009278
4654 | 009279
4655 | 009281
4656 | 009282
4657 | 009283
4658 | 009285
4659 | 009286
4660 | 009287
4661 | 009288
4662 | 009289
4663 | 009290
4664 | 009291
4665 | 009295
4666 | 009296
4667 | 009299
4668 | 009303
4669 | 009306
4670 | 009307
4671 | 009308
4672 | 009309
4673 | 009312
4674 | 009315
4675 | 009316
4676 | 009318
4677 | 009323
4678 | 009324
4679 | 009325
4680 | 009326
4681 | 009327
4682 | 009330
4683 | 009331
4684 | 009333
4685 | 009334
4686 | 009336
4687 | 009337
4688 | 009339
4689 | 009342
4690 | 009343
4691 | 009347
4692 | 009348
4693 | 009349
4694 | 009350
4695 | 009351
4696 | 009354
4697 | 009358
4698 | 009359
4699 | 009362
4700 | 009365
4701 | 009368
4702 | 009371
4703 | 009373
4704 | 009374
4705 | 009375
4706 | 009377
4707 | 009378
4708 | 009382
4709 | 009386
4710 | 009388
4711 | 009389
4712 | 009392
4713 | 009393
4714 | 009394
4715 | 009398
4716 | 009401
4717 | 009405
4718 | 009406
4719 | 009407
4720 | 009408
4721 | 009409
4722 | 009410
4723 | 009411
4724 | 009412
4725 | 009413
4726 | 009414
4727 | 009417
4728 | 009418
4729 | 009419
4730 | 009420
4731 | 009421
4732 | 009422
4733 | 009424
4734 | 009429
4735 | 009432
4736 | 009433
4737 | 009434
4738 | 009437
4739 | 009438
4740 | 009439
4741 | 009440
4742 | 009443
4743 | 009445
4744 | 009446
4745 | 009448
4746 | 009454
4747 | 009455
4748 | 009456
4749 | 009457
4750 | 009458
4751 | 009459
4752 | 009460
4753 | 009461
4754 | 009463
4755 | 009464
4756 | 009465
4757 | 009466
4758 | 009468
4759 | 009469
4760 | 009470
4761 | 009472
4762 | 009476
4763 | 009477
4764 | 009479
4765 | 009480
4766 | 009481
4767 | 009484
4768 | 009488
4769 | 009490
4770 | 009491
4771 | 009494
4772 | 009496
4773 | 009497
4774 | 009499
4775 | 009500
4776 | 009502
4777 | 009504
4778 | 009507
4779 | 009508
4780 | 009512
4781 | 009515
4782 | 009516
4783 | 009517
4784 | 009518
4785 | 009519
4786 | 009520
4787 | 009523
4788 | 009524
4789 | 009526
4790 | 009527
4791 | 009528
4792 | 009531
4793 | 009532
4794 | 009533
4795 | 009537
4796 | 009540
4797 | 009541
4798 | 009542
4799 | 009543
4800 | 009545
4801 | 009546
4802 | 009549
4803 | 009550
4804 | 009551
4805 | 009557
4806 | 009558
4807 | 009560
4808 | 009562
4809 | 009565
4810 | 009566
4811 | 009567
4812 | 009568
4813 | 009571
4814 | 009573
4815 | 009576
4816 | 009577
4817 | 009579
4818 | 009580
4819 | 009584
4820 | 009585
4821 | 009586
4822 | 009587
4823 | 009588
4824 | 009591
4825 | 009596
4826 | 009597
4827 | 009598
4828 | 009600
4829 | 009603
4830 | 009605
4831 | 009609
4832 | 009611
4833 | 009613
4834 | 009614
4835 | 009615
4836 | 009617
4837 | 009618
4838 | 009619
4839 | 009620
4840 | 009621
4841 | 009623
4842 | 009627
4843 | 009629
4844 | 009634
4845 | 009636
4846 | 009637
4847 | 009638
4848 | 009641
4849 | 009644
4850 | 009647
4851 | 009649
4852 | 009650
4853 | 009654
4854 | 009655
4855 | 009656
4856 | 009658
4857 | 009659
4858 | 009664
4859 | 009666
4860 | 009667
4861 | 009668
4862 | 009670
4863 | 009671
4864 | 009676
4865 | 009678
4866 | 009679
4867 | 009681
4868 | 009684
4869 | 009685
4870 | 009686
4871 | 009687
4872 | 009691
4873 | 009692
4874 | 009693
4875 | 009695
4876 | 009698
4877 | 009699
4878 | 009700
4879 | 009702
4880 | 009703
4881 | 009706
4882 | 009707
4883 | 009709
4884 | 009710
4885 | 009711
4886 | 009712
4887 | 009713
4888 | 009717
4889 | 009718
4890 | 009719
4891 | 009721
4892 | 009724
4893 | 009726
4894 | 009729
4895 | 009732
4896 | 009733
4897 | 009734
4898 | 009735
4899 | 009737
4900 | 009738
4901 | 009743
4902 | 009745
4903 | 009746
4904 | 009747
4905 | 009748
4906 | 009749
4907 | 009754
4908 | 009755
4909 | 009756
4910 | 009758
4911 | 009761
4912 | 009762
4913 | 009763
4914 | 009764
4915 | 009767
4916 | 009772
4917 | 009773
4918 | 009774
4919 | 009776
4920 | 009778
4921 | 009780
4922 | 009781
4923 | 009785
4924 | 009789
4925 | 009790
4926 | 009792
4927 | 009794
4928 | 009796
4929 | 009797
4930 | 009800
4931 | 009801
4932 | 009805
4933 | 009807
4934 | 009808
4935 | 009809
4936 | 009810
4937 | 009813
4938 | 009816
4939 | 009819
4940 | 009822
4941 | 009823
4942 | 009825
4943 | 009828
4944 | 009830
4945 | 009831
4946 | 009832
4947 | 009833
4948 | 009834
4949 | 009836
4950 | 009839
4951 | 009841
4952 | 009842
4953 | 009845
4954 | 009848
4955 | 009851
4956 | 009852
4957 | 009855
4958 | 009858
4959 | 009859
4960 | 009860
4961 | 009862
4962 | 009863
4963 | 009865
4964 | 009867
4965 | 009868
4966 | 009869
4967 | 009870
4968 | 009872
4969 | 009874
4970 | 009877
4971 | 009878
4972 | 009879
4973 | 009880
4974 | 009881
4975 | 009882
4976 | 009884
4977 | 009886
4978 | 009887
4979 | 009894
4980 | 009896
4981 | 009897
4982 | 009898
4983 | 009900
4984 | 009902
4985 | 009904
4986 | 009905
4987 | 009908
4988 | 009911
4989 | 009913
4990 | 009917
4991 | 009918
4992 | 009920
4993 | 009923
4994 | 009926
4995 | 009932
4996 | 009935
4997 | 009938
4998 | 009939
4999 | 009940
5000 | 009942
5001 | 009944
5002 | 009945
5003 | 009946
5004 | 009947
5005 | 009949
5006 | 009950
5007 | 009954
5008 | 009955
5009 | 009958
5010 | 009959
5011 | 009961
5012 |
--------------------------------------------------------------------------------