├── 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 | 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 | --------------------------------------------------------------------------------