├── figures ├── HVSA.jpg └── performance.jpg ├── requirements.txt ├── layers ├── seq2vec.py ├── HVSA.py └── HVSA_Modules.py ├── dataset ├── vocab.py ├── data.py └── data_handlers.py ├── LICENSE ├── configs ├── HVSA_rsicd.yaml └── HVSA_rsitmd.yaml ├── loss └── losses.py ├── README.md ├── eval.py ├── train.py ├── controller.py ├── utils.py ├── vocab ├── rsicd_splits_vocab.json └── rsitmd_splits_vocab.json └── data └── rsitmd_raw └── test_filename.txt /figures/HVSA.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhangWeihang99/HVSA/HEAD/figures/HVSA.jpg -------------------------------------------------------------------------------- /figures/performance.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhangWeihang99/HVSA/HEAD/figures/performance.jpg -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | python==3.8.8 2 | torch==1.9.0 3 | torchvision==0.9.0 4 | nltk==3.5 5 | numpy==1.19.5 -------------------------------------------------------------------------------- /layers/seq2vec.py: -------------------------------------------------------------------------------- 1 | # encoding:utf-8 2 | """ 3 | * HVSA 4 | * By Zhang Weihang 5 | """ 6 | 7 | # A revision version from Skip-thoughs 8 | import skipthoughts 9 | 10 | def factory(vocab_words, cfg , dropout=0.25): 11 | 12 | if cfg['arch'] == 'skipthoughts': 13 | st_class = getattr(skipthoughts, cfg['type']) 14 | # vocab: ['list', 'of', 'words',] 15 | seq2vec = st_class(cfg['dir_st'], 16 | vocab_words, 17 | dropout=dropout, 18 | fixed_emb=cfg['fixed_emb']) 19 | 20 | else: 21 | raise NotImplementedError 22 | return seq2vec 23 | -------------------------------------------------------------------------------- /dataset/vocab.py: -------------------------------------------------------------------------------- 1 | # encoding:utf-8 2 | """ 3 | * HVSA 4 | * By Zhang Weihang 5 | """ 6 | 7 | import json 8 | 9 | 10 | class Vocabulary(object): 11 | """Simple vocabulary wrapper.""" 12 | 13 | def __init__(self): 14 | self.word2idx = {} 15 | self.idx2word = {} 16 | self.idx = 1 17 | 18 | def add_word(self, word): 19 | if word not in self.word2idx: 20 | self.word2idx[word] = self.idx 21 | self.idx2word[self.idx] = word 22 | self.idx += 1 23 | 24 | def __call__(self, word): 25 | if word not in self.word2idx: 26 | return self.word2idx[''] 27 | return self.word2idx[word] 28 | 29 | def __len__(self): 30 | return len(self.word2idx) 31 | 32 | 33 | def deserialize_vocab(src): 34 | """get vocab from json file""" 35 | with open(src) as f: 36 | d = json.load(f) 37 | vocab = Vocabulary() 38 | vocab.word2idx = d['word2idx'] 39 | vocab.idx2word = d['idx2word'] 40 | vocab.idx = d['idx'] 41 | return vocab 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Zhang Weihang 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /configs/HVSA_rsicd.yaml: -------------------------------------------------------------------------------- 1 | experiment_name: 'HVSA_RSICD' 2 | 3 | optim: 4 | epochs: 50 5 | lr: 0.001 6 | lr_decay_param: 0.1 7 | lr_update_epoch: 20 8 | grad_clip: 0 9 | alpha: 0.2 10 | resume: False 11 | 12 | loss: 13 | adaptive_alignment: 14 | beta: 0.5 15 | feature_uniformity: 16 | gamma: 2 17 | 18 | model: 19 | name: HVSA 20 | embed: 21 | embed_dim: 512 22 | finetune: True 23 | seq2vec: 24 | arch: skipthoughts 25 | dir_st: /mnt/data/seq2vec 26 | type: BayesianUniSkip 27 | dropout: 0.25 28 | fixed_emb: False 29 | 30 | logs: 31 | eval_step: 1 32 | print_freq: 10 33 | ckpt_save_path: "/workspace/HVSA/checkpoint/" 34 | logger_name: 'logs/' 35 | 36 | 37 | random_seed: 38 | seed: [2023,2024,2025] 39 | nums: 3 40 | current_num: 0 41 | 42 | dataset: 43 | datatype: rsicd 44 | data_path: '/workspace/HVSA/data/rsicd_raw/' 45 | image_path: '/mnt/data/dataset/RSICD/images/' 46 | vocab_path: '/workspace/HVSA/vocab/rsicd_splits_vocab.json' 47 | batch_size: 256 48 | batch_size_val: 256 49 | workers: 2 50 | 51 | GPU: V100 -------------------------------------------------------------------------------- /configs/HVSA_rsitmd.yaml: -------------------------------------------------------------------------------- 1 | experiment_name: 'HVSA_RSITMD' 2 | 3 | optim: 4 | epochs: 50 5 | lr: 0.0005 6 | lr_decay_param: 0.1 7 | lr_update_epoch: 20 8 | grad_clip: 0 9 | alpha: 0.2 10 | resume: False 11 | 12 | loss: 13 | adaptive_alignment: 14 | beta: 0.5 15 | feature_uniformity: 16 | gamma: 2 17 | 18 | model: 19 | name: HVSA 20 | embed: 21 | embed_dim: 512 22 | finetune: True 23 | seq2vec: 24 | arch: skipthoughts 25 | dir_st: /mnt/data/seq2vec 26 | type: BayesianUniSkip 27 | dropout: 0.25 28 | fixed_emb: False 29 | 30 | 31 | logs: 32 | eval_step: 1 33 | print_freq: 10 34 | ckpt_save_path: "/workspace/HVSA/checkpoint/" 35 | logger_name: 'logs/' 36 | 37 | 38 | random_seed: 39 | seed: [2022,2023,2024] 40 | nums: 3 41 | current_num: 0 42 | 43 | dataset: 44 | datatype: rsitmd 45 | data_path: '/workspace/HVSA/data/rsitmd_raw/' 46 | image_path: '/mnt/data/dataset/RSITMD/images/' 47 | vocab_path: '/workspace/HVSA/vocab/rsitmd_splits_vocab.json' 48 | batch_size: 256 49 | batch_size_val: 256 50 | workers: 2 51 | 52 | GPU: V100 -------------------------------------------------------------------------------- /loss/losses.py: -------------------------------------------------------------------------------- 1 | # encoding:utf-8 2 | """ 3 | * HVSA 4 | * By Zhang Weihang 5 | """ 6 | 7 | import torch 8 | from torch.autograd import Variable 9 | 10 | 11 | def difficulty_weighted_loss(scores, size, margin, beta): 12 | """ Difficulty Weighted Loss inspired by CL""" 13 | 14 | diagonal = scores.diag().view(size, 1) 15 | d1 = diagonal.expand_as(scores) 16 | d2 = diagonal.t().expand_as(scores) 17 | 18 | # triplet_loss indicates the difficulty of samples 19 | 20 | # caption retrieval 21 | cost_s = (margin + scores - d1).clamp(min=0) 22 | # image retrieval 23 | cost_im = (margin + scores - d2).clamp(min=0) 24 | mask = torch.eye(scores.size(0)) > .5 25 | I = Variable(mask) 26 | if torch.cuda.is_available(): 27 | I = I.cuda() 28 | cost_s = cost_s.masked_fill_(I, 0) 29 | cost_im = cost_im.masked_fill_(I, 0) 30 | 31 | # from easy to hard 32 | weight_s = torch.exp(-beta*cost_s) 33 | weight_im = torch.exp(-beta*cost_im) 34 | 35 | cost_s = cost_s * weight_s 36 | cost_im = cost_im * weight_im 37 | return cost_s.sum() + cost_im.sum() 38 | 39 | 40 | def feature_unif_loss(x, gamma=2): 41 | 42 | """ get image features uniformity loss""" 43 | 44 | x = x[::5, :] 45 | x0 = x / x.norm(p=2, dim=1, keepdim=True) 46 | return torch.pdist(x0, p=2).pow(2).mul(-gamma).exp().mean() 47 | -------------------------------------------------------------------------------- /layers/HVSA.py: -------------------------------------------------------------------------------- 1 | # encoding:utf-8 2 | """ 3 | * HVSA 4 | * By Zhang Weihang 5 | """ 6 | 7 | from .HVSA_Modules import * 8 | import copy 9 | from utils import cosine_similarity 10 | 11 | class HVSA(nn.Module): 12 | 13 | def __init__(self, config={}, vocab_words=[]): 14 | super(HVSA, self).__init__() 15 | self.Eiters = 0 16 | self.extract_img_feature = EncoderImageFull(cfg=config) 17 | self.extract_text_feature = Skipthoughts_Embedding_Module( 18 | vocab=vocab_words, 19 | cfg=config 20 | ) 21 | 22 | self.weight_loss = AutoWeightedModule(2) 23 | 24 | def forward(self, img, text, text_lens): 25 | if self.training is True: 26 | self.Eiters += 1 27 | 28 | batch_img = img.shape[0] 29 | batch_text = text.shape[0] 30 | 31 | # extract features 32 | img_feature = self.extract_img_feature(img) 33 | 34 | # text features 35 | text_feature = self.extract_text_feature(text, text_lens) 36 | dual_sim = cosine_similarity(img_feature.unsqueeze(dim=1).expand(-1, batch_text, -1), 37 | text_feature.unsqueeze(dim=0).expand(batch_img, -1, -1)) 38 | 39 | return dual_sim, img_feature, text_feature 40 | 41 | 42 | def factory(cfg, vocab_words, cuda=True): 43 | """ 44 | get the model and set on device 45 | Args: 46 | vocab_words: all words sorted by frequency 47 | """ 48 | 49 | cfg = copy.copy(cfg) 50 | 51 | # choose model 52 | if cfg['name'] == "HVSA": 53 | model = HVSA(cfg, vocab_words) 54 | else: 55 | raise NotImplementedError 56 | 57 | # use gpu 58 | if cuda: 59 | model.cuda() 60 | 61 | return model 62 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HVSA 2 | 3 | Official PyTorch implementation for [**Hypersphere-Based Remote Sensing Cross-Modal Text–Image Retrieval via Curriculum Learning**](https://ieeexplore.ieee.org/document/10261223?source=authoralert). 4 | 5 | 6 | ![HVSA](figures/HVSA.jpg) 7 | ## News :tada: 8 | - 📣 Oct 2023 - The code of HVSA has been released. 9 | - 📣 Oct 2023 - Codes is coming soon (before Nov). 10 | - 📣 Sep 2023 - Paper Accepted by TGRS. 11 | 12 | 13 | ## Dependencies 14 | Download the dataset files and pre-trained models. Files about seq2vec are from [here](https://github.com/xiaoyuan1996/AMFMN/tree/master/AMFMN). 15 | 16 | Install dependencies using the following command. 17 | 18 | ``` 19 | pip install -r requirements.txt 20 | ``` 21 | 22 | ## Dataset preparation 23 | All experiments are based on [RSITMD](https://github.com/xiaoyuan1996/AMFMN/tree/master/RSITMD) and [RSICD](https://github.com/201528014227051/RSICD_optimal) datasets, 24 | ### RSICD 25 | 26 | We followed the same split provided by [AMFMN](https://github.com/xiaoyuan1996/AMFMN/tree/master/AMFMN/data/rsicd_precomp). 27 | Dataset splits can be found in [data/rsicd_raw](data/rsicd_raw). 28 | 29 | ### RSITMD 30 | We followed the same split provided by [AMFMN](https://github.com/xiaoyuan1996/AMFMN/tree/master/AMFMN/data/rsitmd_precomp). 31 | Dataset splits can be found in [data/rsitmd_raw](data/rsitmd_raw). 32 | 33 | ## Train 34 | ```bash 35 | # RSITMD Dataset 36 | python train.py --config configs/HVSA_rsitmd.yaml 37 | ``` 38 | ## Evaluate 39 | ```bash 40 | # RSITMD Dataset 41 | python eval.py --config configs/HVSA_rsitmd.yaml 42 | ``` 43 | ## Performance 44 | 45 | ![Performance](figures/performance.jpg) 46 | 47 | ## Citing HVSA 48 | If you find this repository useful, please consider giving a star :star: and citation: 49 | ``` 50 | @ARTICLE{10261223, 51 | author={Zhang, Weihang and Li, Jihao and Li, Shuoke and Chen, Jialiang and Zhang, Wenkai and Gao, Xin and Sun, Xian}, 52 | journal={IEEE Transactions on Geoscience and Remote Sensing}, 53 | title={Hypersphere-Based Remote Sensing Cross-Modal Text–Image Retrieval via Curriculum Learning}, 54 | year={2023}, 55 | volume={61}, 56 | number={}, 57 | pages={1-15}, 58 | doi={10.1109/TGRS.2023.3318227}} 59 | ``` 60 | ## Acknowledgment 61 | The implementation of HVSA relies on resources from VSE++, and AMFMN. We thank the original authors for their open-sourcing. -------------------------------------------------------------------------------- /eval.py: -------------------------------------------------------------------------------- 1 | # encoding:utf-8 2 | """ 3 | * HVSA 4 | * By Zhang Weihang 5 | """ 6 | 7 | import os 8 | import copy 9 | import numpy as np 10 | import controller 11 | import utils 12 | from dataset import data_handlers 13 | 14 | 15 | 16 | def main(configs): 17 | 18 | # choose model 19 | vocab, vocab_word = data_handlers.make_vocab(configs) 20 | 21 | # Create dataset, model, criterion and optimizer 22 | test_loader = data_handlers.get_test_loader(vocab, configs) 23 | 24 | model = controller.get_model(configs, vocab_word) 25 | 26 | controller.load_model(configs, model) 27 | 28 | sims = controller.model_test(test_loader, model) 29 | # get indicators 30 | (r1i, r5i, r10i, medri, meanri), _ = utils.acc_i2t(sims) 31 | (r1t, r5t, r10t, medrt, meanrt), _ = utils.acc_t2i(sims) 32 | rsum = r1t + r5t + r10t + r1i + r5i + r10i 33 | all_score = "r1i:{} r5i:{} r10i:{} medri:{} meanri:{}\n r1t:{} r5t:{} r10t:{} medrt:{} meanrt:{}\n rsum:{}\n ------\n".format( 34 | r1i, r5i, r10i, medri, meanri, r1t, r5t, r10t, medrt, meanrt, rsum 35 | ) 36 | 37 | print(all_score) 38 | 39 | utils.log_to_txt( 40 | contexts=all_score, 41 | filename="experiment/" + str(configs['GPU']) + "/" + "result/" + configs['experiment_name'] + ".txt" 42 | ) 43 | 44 | return [r1i, r5i, r10i, r1t, r5t, r10t, rsum] 45 | 46 | def update_configs_savepath(configs, k): 47 | updated_configs = copy.deepcopy(configs) 48 | 49 | updated_configs['optim']['resume'] = configs['logs']['ckpt_save_path'] + configs['experiment_name'] + "/" \ 50 | + str(k) + "/" + configs['model']['name'] + '_best.pth.tar' 51 | 52 | return updated_configs 53 | 54 | if __name__ == '__main__': 55 | configs = controller.get_config() 56 | 57 | # calc ave k results 58 | last_score = [] 59 | if not os.path.exists("experiment/" + str(configs['GPU']) + "/" + "result/"): 60 | os.makedirs("experiment/" + str(configs['GPU']) + "/" + "result/") 61 | 62 | for k in range(configs['random_seed']['nums']): 63 | print("=========================================") 64 | print("Start evaluate random seed {}".format(configs['random_seed']['seed'][k])) 65 | 66 | # update the checkpoint path 67 | update_configs = update_configs_savepath(configs, k) 68 | 69 | # get one experiment result 70 | one_score = main(update_configs) 71 | last_score.append(one_score) 72 | 73 | print("Complete evaluate evaluate random seed {}".format(configs['random_seed']['seed'][k])) 74 | 75 | # average result 76 | print("\n================ Ave Score On {}-random verify) ============".format(configs['random_seed']['nums'])) 77 | last_score = np.average(last_score, axis=0) 78 | names = ['r1i', 'r5i', 'r10i', 'r1t', 'r5t', 'r10t', 'rsum'] 79 | for name, score in zip(names, last_score): 80 | print("{}:{}".format(name, score)) 81 | utils.log_to_txt( 82 | contexts="{}:{}".format(name, score), 83 | filename="experiment/" + str(configs['GPU']) + "/" + "result/" + configs['experiment_name'] + ".txt" 84 | ) 85 | 86 | -------------------------------------------------------------------------------- /train.py: -------------------------------------------------------------------------------- 1 | # encoding:utf-8 2 | """ 3 | * HVSA 4 | * By Zhang Weihang 5 | """ 6 | 7 | import torch 8 | import tensorboard_logger as tb_logger 9 | import logging 10 | import json 11 | 12 | import utils 13 | from dataset import data_handlers 14 | import controller 15 | 16 | def main(config): 17 | """ 18 | train and val the model 19 | """ 20 | 21 | vocab, vocab_word = data_handlers.make_vocab(config) 22 | 23 | # Create dataset, model, criterion and optimizer 24 | print("load the data {}".format(config['dataset']['image_path'])) 25 | train_loader, val_loader = data_handlers.get_train_val_loaders(vocab, config) 26 | model = controller.get_model(config, vocab_word) 27 | optimizer = torch.optim.AdamW(filter(lambda p: p.requires_grad, model.parameters()), 28 | lr=config['optim']['lr']) 29 | 30 | 31 | # optionally resume from a checkpoint 32 | if config['optim']['resume']: 33 | start_epoch = controller.load_model(config, model) 34 | else: 35 | start_epoch = 0 36 | 37 | # start to train 38 | best_rsum = 0 39 | best_score = "" 40 | for epoch in range(start_epoch, config['optim']['epochs']): 41 | # train for one epoch 42 | controller.model_train(train_loader, model, optimizer, epoch, config=config) 43 | # evaluate on validation set 44 | if epoch % config['logs']['eval_step'] == 0: 45 | rsum, all_scores = controller.model_validate(val_loader, model, config) 46 | is_best = rsum > best_rsum 47 | if is_best: 48 | best_score = all_scores 49 | best_rsum = rsum 50 | # save ckpt 51 | utils.save_checkpoint( 52 | { 53 | 'epoch': epoch + 1, 54 | 'model': model.state_dict(), 55 | 'config': config, 56 | }, 57 | is_best, 58 | filename='best.pth.tar', 59 | prefix=config['logs']['ckpt_save_path'], 60 | model_name=config['model']['name'] 61 | ) 62 | print("Current random seed: {}".format(config['random_seed']['current_num'])) 63 | print("Now score:") 64 | print(all_scores) 65 | print("Best score:") 66 | print(best_score) 67 | 68 | 69 | if __name__ == '__main__': 70 | 71 | config = controller.get_config() 72 | # make logger 73 | tb_logger.configure(config['logs']['logger_name'] + 74 | config['experiment_name'] + '/', flush_secs=5) 75 | 76 | logging.basicConfig(format='%(asctime)s %(message)s', level=logging.INFO) 77 | 78 | logging.info("HVSA CONFIG: \n {}".format(json.dumps(config, indent=4))) 79 | 80 | # k_fold verify 81 | for k in range(len(config['random_seed'])): 82 | random_seed = config['random_seed']['seed'][k] 83 | print("=========================================") 84 | print("Start with the random seed: {}".format(random_seed)) 85 | utils.set_seed(random_seed) 86 | # generate random train and val samples 87 | data_handlers.generate_random_samples(config) 88 | # update save path 89 | update_config = utils.update_config(config, k) 90 | 91 | # run experiment 92 | main(update_config) 93 | -------------------------------------------------------------------------------- /dataset/data.py: -------------------------------------------------------------------------------- 1 | # encoding:utf-8 2 | """ 3 | * HVSA 4 | * By Zhang Weihang 5 | """ 6 | 7 | import torch 8 | import torch.utils.data as data 9 | import torchvision.transforms as transforms 10 | import nltk 11 | from PIL import Image 12 | 13 | class PairwiseDataset(data.Dataset): 14 | """ 15 | Load precomputed captions and image features 16 | """ 17 | 18 | def __init__(self, data_split, vocab, opt): 19 | self.vocab = vocab 20 | self.loc = opt['dataset']['data_path'] 21 | self.img_path = opt['dataset']['image_path'] 22 | 23 | # Captions 24 | self.captions = [] 25 | self.maxlength = 0 26 | 27 | if data_split != 'test': 28 | with open(self.loc+'%s_caps_verify.txt' % data_split, 'rb') as f: 29 | for line in f: 30 | self.captions.append(line.strip()) 31 | 32 | self.images = [] 33 | with open(self.loc + '%s_filename_verify.txt' % data_split, 'rb') as f: 34 | for line in f: 35 | self.images.append(line.strip()) 36 | else: 37 | with open(self.loc + '%s_caps.txt' % data_split, 'rb') as f: 38 | for line in f: 39 | self.captions.append(line.strip()) 40 | 41 | self.images = [] 42 | with open(self.loc + '%s_filename.txt' % data_split, 'rb') as f: 43 | for line in f: 44 | self.images.append(line.strip()) 45 | 46 | self.length = len(self.captions) 47 | 48 | if len(self.images) != self.length: 49 | self.im_div = 5 50 | else: 51 | self.im_div = 1 52 | 53 | if data_split == "train": 54 | self.transform = transforms.Compose([ 55 | transforms.Resize((278, 278)), 56 | transforms.RandomRotation((0, 90)), 57 | transforms.RandomCrop(256), 58 | transforms.ToTensor(), 59 | transforms.Normalize((0.485, 0.456, 0.406), 60 | (0.229, 0.224, 0.225))]) 61 | else: 62 | self.transform = transforms.Compose([ 63 | transforms.Resize((256, 256)), 64 | transforms.ToTensor(), 65 | transforms.Normalize((0.485, 0.456, 0.406), 66 | (0.229, 0.224, 0.225))]) 67 | 68 | def __getitem__(self, index): 69 | # handle the image redundancy 70 | img_id = index//self.im_div 71 | caption = self.captions[index] 72 | 73 | vocab = self.vocab 74 | 75 | # Convert caption (string) to word ids. 76 | tokens = nltk.tokenize.word_tokenize( 77 | caption.lower().decode('utf-8')) 78 | punctuations = [',', '.', ':', ';', '?', '(', ')', '[', ']', '&', '!', '*', '@', '#', '$', '%'] 79 | tokens = [k for k in tokens if k not in punctuations] 80 | tokens_UNK = [k if k in vocab.word2idx.keys() else '' for k in tokens] 81 | 82 | 83 | caption = [] 84 | caption.extend([vocab(token) for token in tokens_UNK]) 85 | caption = torch.LongTensor(caption) 86 | 87 | image = Image.open(self.img_path +str(self.images[img_id])[2:-1]).convert('RGB') 88 | image = self.transform(image) # torch.Size([3, 256, 256]) 89 | 90 | return image, caption, tokens_UNK, index, img_id 91 | 92 | def __len__(self): 93 | return self.length 94 | 95 | 96 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /dataset/data_handlers.py: -------------------------------------------------------------------------------- 1 | # encoding:utf-8 2 | """ 3 | * HVSA 4 | * By Zhang Weihang 5 | """ 6 | 7 | import torch 8 | from dataset.data import PairwiseDataset 9 | from dataset.vocab import deserialize_vocab 10 | import utils 11 | import random 12 | 13 | 14 | def collate_fn(data): 15 | 16 | # Sort the data list by caption length 17 | data.sort(key=lambda x: len(x[2]), reverse=True) 18 | images, captions, tokens, ids, img_ids = zip(*data) 19 | 20 | # Merge images (convert tuple of 3D tensor to 4D tensor) 21 | images = torch.stack(images, 0) 22 | 23 | # Merget captions (convert tuple of 1D tensor to 2D tensor) 24 | # PAD 25 | lengths = [len(cap) for cap in captions] 26 | 27 | targets = torch.zeros(len(captions), max(lengths)).long() 28 | for i, cap in enumerate(captions): 29 | end = lengths[i] 30 | targets[i, :end] = cap[:end] 31 | 32 | lengths = [l if l !=0 else 1 for l in lengths] 33 | return images, targets, lengths, ids 34 | 35 | 36 | def get_one_loader(data_split, vocab, batch_size=100, 37 | shuffle=True, num_workers=0, opt={}): 38 | """Returns torch.utils.data.DataLoader for custom coco dataset.""" 39 | dset = PairwiseDataset(data_split, vocab, opt) 40 | 41 | data_loader = torch.utils.data.DataLoader(dataset=dset, 42 | batch_size=batch_size, 43 | shuffle=shuffle, 44 | pin_memory=False, 45 | collate_fn=collate_fn, 46 | num_workers=num_workers) 47 | return data_loader 48 | 49 | 50 | def get_train_val_loaders(vocab, opt): 51 | train_loader = get_one_loader('train', vocab, 52 | opt['dataset']['batch_size'], True, opt['dataset']['workers'], opt=opt) 53 | val_loader = get_one_loader('val', vocab, 54 | opt['dataset']['batch_size_val'], False, opt['dataset']['workers'], opt=opt) 55 | return train_loader, val_loader 56 | 57 | 58 | def get_test_loader(vocab, opt): 59 | test_loader = get_one_loader('test', vocab, 60 | opt['dataset']['batch_size_val'], False, opt['dataset']['workers'], opt=opt) 61 | return test_loader 62 | 63 | 64 | def make_vocab(options): 65 | # make vocab 66 | print("Making the vocab") 67 | vocab = deserialize_vocab(options['dataset']['vocab_path']) 68 | vocab_word = sorted(vocab.word2idx.items(), key=lambda x: x[1], reverse=False) 69 | vocab_word = [tup[0] for tup in vocab_word] 70 | return vocab, vocab_word 71 | 72 | 73 | def generate_random_samples(options): 74 | """ 75 | splite training data for train and val 76 | 77 | """ 78 | # load all anns 79 | caps = utils.load_from_txt(options['dataset']['data_path'] + 'train_caps.txt') 80 | fnames = utils.load_from_txt(options['dataset']['data_path'] + 'train_filename.txt') 81 | 82 | # merge 83 | assert len(caps) // 5 == len(fnames) 84 | all_infos = [] 85 | for img_id in range(len(fnames)): 86 | cap_id = [img_id * 5, (img_id + 1) * 5] 87 | all_infos.append([caps[cap_id[0]:cap_id[1]], fnames[img_id]]) 88 | 89 | # shuffle 90 | random.shuffle(all_infos) 91 | 92 | # split_trainval 93 | percent = 0.9 94 | train_infos = all_infos[:int(len(all_infos) * percent)] 95 | val_infos = all_infos[int(len(all_infos) * percent):] 96 | 97 | # save to txt 98 | train_caps = [] 99 | train_fnames = [] 100 | for item in train_infos: 101 | for cap in item[0]: 102 | train_caps.append(cap) 103 | train_fnames.append(item[1]) 104 | utils.log_to_txt(train_caps, options['dataset']['data_path'] + 'train_caps_verify.txt', mode='w') 105 | utils.log_to_txt(train_fnames, options['dataset']['data_path'] + 'train_filename_verify.txt', mode='w') 106 | 107 | val_caps = [] 108 | val_fnames = [] 109 | for item in val_infos: 110 | for cap in item[0]: 111 | val_caps.append(cap) 112 | val_fnames.append(item[1]) 113 | utils.log_to_txt(val_caps, options['dataset']['data_path'] + 'val_caps_verify.txt', mode='w') 114 | utils.log_to_txt(val_fnames, options['dataset']['data_path'] + 'val_filename_verify.txt', mode='w') 115 | 116 | print("Generate random samples to {} complete.".format(options['dataset']['data_path'])) 117 | 118 | -------------------------------------------------------------------------------- /layers/HVSA_Modules.py: -------------------------------------------------------------------------------- 1 | # encoding:utf-8 2 | """ 3 | * HVSA 4 | * By Zhang Weihang 5 | """ 6 | 7 | import torch 8 | import torch.nn as nn 9 | import torch.nn.init 10 | from torch.autograd import Variable 11 | from torchvision.models.resnet import resnet18 12 | import torch.nn.functional as F 13 | from layers import seq2vec 14 | 15 | from torch.nn.utils.rnn import pack_padded_sequence, pad_packed_sequence 16 | 17 | 18 | def l2norm(X, dim, eps=1e-8): 19 | """ 20 | L2-normalize columns of X 21 | 22 | """ 23 | norm = torch.pow(X, 2).sum(dim=dim, keepdim=True).sqrt() + eps 24 | X = torch.div(X, norm) 25 | return X 26 | 27 | 28 | class L2Norm(nn.Module): 29 | """ 30 | input x [batch_size, embedding_size] 31 | return x [batch_size, embedding_size] 32 | """ 33 | def forward(self, x): 34 | 35 | return x / x.norm(p=2, dim=1, keepdim=True) 36 | 37 | 38 | 39 | class KEA(nn.Module): 40 | 41 | """ Key-Entity Attention""" 42 | 43 | def __init__(self, c, attention_channel=64): 44 | """ 45 | 46 | :param c: int, the input and output channel number 47 | """ 48 | 49 | super(KEA, self).__init__() 50 | 51 | self.conv1 = nn.Conv2d(c, c, 1) 52 | self.attention_channel = attention_channel 53 | self.linear_0 = nn.Conv1d(c, self.attention_channel, 1, bias=False) 54 | self.linear_1 = nn.Conv1d(self.attention_channel, c, 1, bias=False) 55 | self.linear_1.weight.data = self.linear_0.weight.data.permute(1, 0, 2) 56 | self.conv2 = nn.Sequential( 57 | nn.Conv2d(c, c, 1, bias=False), 58 | nn.BatchNorm2d(c) 59 | ) 60 | 61 | def forward(self, x): 62 | idn = x 63 | # key 64 | x = self.conv1(x) 65 | b, c, h, w = x.size() 66 | x = x.view(b, c, h*w) # b*c*n 67 | 68 | # key * query 69 | attn = self.linear_0(x) # b*k*n 70 | attn = F.softmax(attn, dim=-1) # b*k*n 71 | attn = attn / (1e-9 + attn.sum(keepdim=True, dim=1)) # b*k*n 72 | 73 | # value 74 | x = self.linear_1(attn) 75 | x = x.view(b, c, h, w) 76 | x = self.conv2(x) 77 | 78 | # res-connetction 79 | x = x + idn 80 | x = F.relu(x) 81 | 82 | return x 83 | 84 | 85 | class AutoWeightedModule(nn.Module): 86 | 87 | def __init__(self, num_loss): 88 | super(AutoWeightedModule, self).__init__() 89 | self.num_loss = num_loss 90 | self.linear = nn.Sequential( 91 | nn.Linear(num_loss, 64, bias=False), 92 | nn.PReLU(), 93 | nn.Linear(64, 128, bias=False), 94 | nn.PReLU(), 95 | nn.Linear(128, num_loss, bias=False), 96 | ) 97 | 98 | self.softmax = nn.Softmax(dim=0) 99 | 100 | 101 | def forward(self, loss): 102 | # [num_loss, 1] 103 | 104 | loss = torch.cat(loss, dim=0) 105 | self.weight = self.softmax(self.linear(loss)) 106 | return (self.weight*loss).sum() 107 | 108 | 109 | class Skipthoughts_Embedding_Module(nn.Module): 110 | 111 | def __init__(self, vocab, cfg, out_dropout=-1): 112 | super(Skipthoughts_Embedding_Module, self).__init__() 113 | self.cfg = cfg 114 | self.vocab_words = vocab 115 | 116 | self.seq2vec = seq2vec.factory(self.vocab_words, self.cfg['seq2vec'], self.cfg['seq2vec']['dropout']) 117 | 118 | self.to_out = nn.Linear(in_features=2400, out_features=self.cfg['embed']['embed_dim']) 119 | 120 | self.dropout = out_dropout 121 | 122 | def forward(self, input_text, text_len): 123 | x_t_vec = self.seq2vec(input_text, text_len) 124 | out = F.relu(self.to_out(x_t_vec)) 125 | if self.dropout >= 0: 126 | out = F.dropout(out, self.dropout) 127 | 128 | return out 129 | 130 | 131 | 132 | 133 | class EncoderImageFull(nn.Module): 134 | 135 | def __init__(self, cfg={}): 136 | 137 | """Load pretrained VGG19 and replace top fc layer.""" 138 | super(EncoderImageFull, self).__init__() 139 | self.embed_size = cfg['embed']['embed_dim'] 140 | 141 | 142 | #Load a pre-trained model 143 | self.resnet = resnet18(pretrained=True) 144 | 145 | # Replace the last fully connected layer of CNN with a new one 146 | self.fc = nn.Linear(self.resnet.fc.in_features, cfg['embed']['embed_dim']) 147 | 148 | self.key_entity_atten = KEA(512) 149 | 150 | def forward(self, images): 151 | """Extract image feature vectors.""" 152 | # features = self.cnn(images) 153 | x = self.resnet.conv1(images) 154 | x = self.resnet.bn1(x) 155 | x = self.resnet.relu(x) 156 | x = self.resnet.maxpool(x) 157 | 158 | f1 = self.resnet.layer1(x) 159 | f2 = self.resnet.layer2(f1) 160 | f3 = self.resnet.layer3(f2) 161 | 162 | # use self attention 163 | f4 = self.resnet.layer4(f3) 164 | f4 = self.key_entity_atten(f4) 165 | 166 | 167 | features = self.resnet.avgpool(f4) 168 | features = torch.flatten(features, 1) 169 | # linear projection to the joint embedding space 170 | features = self.fc(features) 171 | 172 | return features 173 | -------------------------------------------------------------------------------- /controller.py: -------------------------------------------------------------------------------- 1 | # encoding:utf-8 2 | """ 3 | * HVSA 4 | * By Zhang Weihang 5 | """ 6 | 7 | import os 8 | import argparse 9 | import yaml 10 | import time 11 | import torch 12 | import numpy as np 13 | from torch.autograd import Variable 14 | import tensorboard_logger as tb_logger 15 | import logging 16 | 17 | from loss import losses 18 | import utils 19 | 20 | 21 | def get_config(): 22 | """ 23 | get the parser to load the config 24 | """ 25 | # Hyper Parameters setting 26 | parser = argparse.ArgumentParser() 27 | parser.add_argument('--config', default='configs/HVSA_rsitmd.yaml', type=str, 28 | help='path to a yaml options file') 29 | args = parser.parse_args() 30 | # load model config 31 | with open(args.config, 'r') as handle: 32 | config = yaml.load(handle, Loader=yaml.FullLoader) 33 | 34 | return config 35 | 36 | 37 | def get_model(options, vocab_word): 38 | """ 39 | get model HVSA 40 | 41 | """ 42 | 43 | # choose model 44 | if options['model']['name'] == "HVSA": 45 | from layers import HVSA as models 46 | else: 47 | raise NotImplementedError 48 | 49 | # make ckpt save dir 50 | if not os.path.exists(options['logs']['ckpt_save_path']): 51 | os.makedirs(options['logs']['ckpt_save_path']) 52 | 53 | model = models.factory(options['model'], vocab_word, cuda=True,) 54 | 55 | return model 56 | 57 | 58 | def model_train(train_loader, model, optimizer, epoch, config): 59 | """ 60 | train one epoch 61 | 62 | """ 63 | 64 | # extract value 65 | utils.adjust_learning_rate(config, optimizer, epoch) 66 | grad_clip = config['optim']['grad_clip'] 67 | margin = config['optim']['alpha'] 68 | # loss_name = opt['model']['name'] + "_" + opt['dataset']['datatype'] 69 | print_freq = config['logs']['print_freq'] 70 | 71 | # switch to train mode 72 | model.train() 73 | batch_time = utils.AverageMeter() 74 | data_time = utils.AverageMeter() 75 | train_logger = utils.LogCollector() 76 | 77 | end = time.time() 78 | params = list(model.parameters()) 79 | 80 | # get the train data 81 | for i, train_data in enumerate(train_loader): 82 | images, captions, lengths, ids = train_data #length: [22,19,19,18....] {list:128} 83 | 84 | batch_size = images.size(0) 85 | margin = float(margin) 86 | # measure data loading time 87 | data_time.update(time.time() - end) 88 | model.logger = train_logger 89 | 90 | input_visual = Variable(images) #[128,3,256,256] 91 | input_text = Variable(captions) #[128,22] 92 | 93 | if torch.cuda.is_available(): 94 | input_visual = input_visual.cuda() 95 | input_text = input_text.cuda() 96 | 97 | scores, image_feature, text_feature = model(input_visual, input_text, lengths) 98 | torch.cuda.synchronize() 99 | 100 | # adaptive alignment 101 | beta = config['loss']['adaptive_alignment']['beta'] 102 | loss_triplet = losses.difficulty_weighted_loss( 103 | scores, input_visual.size(0), margin, beta) / (batch_size*batch_size) 104 | 105 | # feature uniformity 106 | gamma = config['loss']['feature_uniformity']['gamma'] 107 | loss_unif_image = losses.feature_unif_loss(image_feature, gamma) 108 | 109 | # auto weighted module 110 | loss = model.weight_loss([loss_triplet.unsqueeze(0), loss_unif_image.unsqueeze(0)]) 111 | 112 | if grad_clip > 0: 113 | torch.nn.utils.clip_grad_norm_(params, grad_clip) 114 | 115 | train_logger.update('L', loss.item()) 116 | train_logger.update('dwh_loss', loss_triplet.item()) 117 | train_logger.update('unif_loss', loss_unif_image.item()) 118 | 119 | # set grad zero, compute the grad and update the params 120 | optimizer.zero_grad() 121 | loss.backward() 122 | torch.cuda.synchronize() 123 | optimizer.step() 124 | torch.cuda.synchronize() 125 | 126 | # measure elapsed time 127 | batch_time.update(time.time() - end) 128 | end = time.time() 129 | 130 | # print training information 131 | if i % print_freq == 0: 132 | logging.info( 133 | 'Epoch: [{0}][{1}/{2}]\t' 134 | 'Time {batch_time.val:.3f}\t' 135 | '{elog}\t' 136 | .format(epoch, i, len(train_loader), 137 | batch_time=batch_time, 138 | elog=str(train_logger))) 139 | 140 | tb_logger.log_value('epoch', epoch, step=model.Eiters) 141 | tb_logger.log_value('step', i, step=model.Eiters) 142 | train_logger.tb_log(tb_logger, step=model.Eiters) 143 | 144 | 145 | def model_validate(val_loader, model, config): 146 | 147 | model.eval() 148 | val_logger = utils.LogCollector() 149 | model.logger = val_logger 150 | 151 | start = time.time() 152 | input_visual = np.zeros((len(val_loader.dataset), 3, 256, 256)) 153 | input_text = np.zeros((len(val_loader.dataset), 47), dtype=np.int64) 154 | input_text_lengeth = [0]*len(val_loader.dataset) 155 | for i, val_data in enumerate(val_loader): 156 | 157 | images, captions, lengths, ids = val_data 158 | 159 | for (id, img, cap, key,l) in zip(ids, (images.numpy().copy()), (captions.numpy().copy()), images, lengths): 160 | input_visual[id] = img 161 | input_text[id, :captions.size(1)] = cap 162 | input_text_lengeth[id] = l 163 | 164 | input_visual = np.array([input_visual[i] for i in range(0, len(input_visual), 5)]) 165 | 166 | d = utils.shard_dis(input_visual, input_text, model, shard_size=config['dataset']['batch_size_val'] 167 | , lengths=input_text_lengeth) 168 | end = time.time() 169 | 170 | 171 | print("calculate similarity time:", end - start) 172 | 173 | (r1i, r5i, r10i, medri, meanri), _ = utils.acc_i2t(d) 174 | logging.info("Image to text: %.1f, %.1f, %.1f, %.1f, %.1f" % 175 | (r1i, r5i, r10i, medri, meanri)) 176 | (r1t, r5t, r10t, medrt, meanrt), _ = utils.acc_t2i(d) 177 | logging.info("Text to image: %.1f, %.1f, %.1f, %.1f, %.1f" % 178 | (r1t, r5t, r10t, medrt, meanrt)) 179 | rsum = (r1t + r5t + r10t + r1i + r5i + r10i) 180 | 181 | all_score = "r1i:{} r5i:{} r10i:{} medri:{} meanri:{}\n r1t:{} r5t:{} r10t:{} medrt:{} meanrt:{}\n sum:{}\n ------\n".format( 182 | r1i, r5i, r10i, medri, meanri, r1t, r5t, r10t, medrt, meanrt, rsum 183 | ) 184 | 185 | # for tensorboard 186 | tb_logger.log_value('rsum', rsum, step=model.Eiters) 187 | tb_logger.log_value('r1i', r1i, step=model.Eiters) 188 | tb_logger.log_value('r5i', r5i, step=model.Eiters) 189 | tb_logger.log_value('r10i', r10i, step=model.Eiters) 190 | tb_logger.log_value('medri', medri, step=model.Eiters) 191 | tb_logger.log_value('meanri', meanri, step=model.Eiters) 192 | tb_logger.log_value('r1t', r1t, step=model.Eiters) 193 | tb_logger.log_value('r5t', r5t, step=model.Eiters) 194 | tb_logger.log_value('r10t', r10t, step=model.Eiters) 195 | tb_logger.log_value('medrt', medrt, step=model.Eiters) 196 | tb_logger.log_value('meanrt', meanrt, step=model.Eiters) 197 | 198 | return rsum, all_score 199 | 200 | 201 | def model_test(test_loader, model): 202 | model.eval() 203 | val_logger = utils.LogCollector() 204 | model.logger = val_logger 205 | 206 | start = time.time() 207 | input_visual = np.zeros((len(test_loader.dataset), 3, 256, 256)) 208 | input_text = np.zeros((len(test_loader.dataset), 47), dtype=np.int64) 209 | input_text_lengeth = [0] * len(test_loader.dataset) 210 | 211 | for i, val_data in enumerate(test_loader): 212 | 213 | images, captions, lengths, ids = val_data 214 | 215 | for (id, img, cap, key, l) in zip(ids, (images.numpy().copy()), (captions.numpy().copy()), images, lengths): 216 | input_visual[id] = img 217 | input_text[id, :captions.size(1)] = cap 218 | input_text_lengeth[id] = l 219 | 220 | input_visual = np.array([input_visual[i] for i in range(0, len(input_visual), 5)]) 221 | 222 | d = utils.shard_dis(input_visual, input_text, model, lengths=input_text_lengeth) 223 | 224 | end = time.time() 225 | print("calculate infer time:", (end-start)/len(test_loader.dataset)) 226 | 227 | return d 228 | 229 | 230 | def load_model(options, model): 231 | if os.path.isfile(options['optim']['resume']): 232 | print("=> loading checkpoint '{}'".format(options['optim']['resume'])) 233 | checkpoint = torch.load(options['optim']['resume']) 234 | start_epoch = checkpoint['epoch'] 235 | model.load_state_dict(checkpoint['model']) 236 | else: 237 | start_epoch = 0 238 | print("=> no checkpoint found at '{}'".format(options['optim']['resume'])) 239 | 240 | return start_epoch 241 | 242 | 243 | -------------------------------------------------------------------------------- /utils.py: -------------------------------------------------------------------------------- 1 | # encoding:utf-8 2 | """ 3 | * HVSA 4 | * By Zhang Weihang 5 | """ 6 | 7 | import torch 8 | import numpy as np 9 | import sys 10 | from torch.autograd import Variable 11 | from collections import OrderedDict 12 | import os 13 | import random 14 | import copy 15 | 16 | 17 | def log_to_txt(contexts=None, filename="save.txt", mark=False, encoding='UTF-8', mode='a'): 18 | """save contexts as txt""" 19 | 20 | f = open(filename, mode, encoding=encoding) 21 | if mark: 22 | sig = "------------------------------------------------\n" 23 | f.write(sig) 24 | elif isinstance(contexts, dict): 25 | tmp = "" 26 | for c in contexts.keys(): 27 | tmp += str(c)+" | " + str(contexts[c]) + "\n" 28 | contexts = tmp 29 | f.write(contexts) 30 | else: 31 | if isinstance(contexts,list): 32 | tmp = "" 33 | for c in contexts: 34 | tmp += str(c) 35 | contexts = tmp 36 | else: 37 | contexts = contexts + "\n" 38 | f.write(contexts) 39 | 40 | f.close() 41 | 42 | 43 | class AverageMeter(object): 44 | """Computes and stores the average and current value""" 45 | 46 | def __init__(self): 47 | self.reset() 48 | 49 | def reset(self): 50 | self.val = 0 51 | self.avg = 0 52 | self.sum = 0 53 | self.count = 0 54 | 55 | def update(self, val, n=0): 56 | self.val = val 57 | self.sum += val * n 58 | self.count += n 59 | self.avg = self.sum / (.0001 + self.count) 60 | 61 | def __str__(self): 62 | """String representation for logging 63 | """ 64 | # for values that should be recorded exactly e.g. iteration number 65 | if self.count == 0: 66 | return str(self.val) 67 | # for stats 68 | return '%.4f (%.4f)' % (self.val, self.avg) 69 | 70 | 71 | class LogCollector(object): 72 | """A collection of logging objects that can change from train to val""" 73 | 74 | def __init__(self): 75 | # to keep the order of logged variables deterministic 76 | self.meters = OrderedDict() 77 | 78 | def update(self, k, v, n=0): 79 | # create a new meter if previously not recorded 80 | if k not in self.meters: 81 | self.meters[k] = AverageMeter() 82 | self.meters[k].update(v, n) 83 | 84 | def __str__(self): 85 | """Concatenate the meters in one log line 86 | """ 87 | s = '' 88 | for i, (k, v) in enumerate(self.meters.items()): 89 | if i > 0: 90 | s += ' ' 91 | s += k + ' ' + str(v) 92 | return s 93 | 94 | def tb_log(self, tb_logger, prefix='', step=None): 95 | """Log using tensorboard 96 | """ 97 | for k, v in self.meters.items(): 98 | tb_logger.log_value(prefix + k, v.val, step=step) 99 | 100 | 101 | def update_values(dict_from, dict_to): 102 | for key, value in dict_from.items(): 103 | if isinstance(value, dict): 104 | update_values(dict_from[key], dict_to[key]) 105 | elif value is not None: 106 | dict_to[key] = dict_from[key] 107 | return dict_to 108 | 109 | 110 | def cosine_similarity(x1, x2, dim=-1, eps=1e-8): 111 | """Returns cosine similarity between x1 and x2, computed along dim.""" 112 | 113 | w12 = torch.sum(x1 * x2, dim) 114 | w1 = torch.norm(x1, 2, dim) 115 | w2 = torch.norm(x2, 2, dim) 116 | 117 | return (w12 / (w1 * w2).clamp(min=eps)).squeeze() 118 | 119 | 120 | def shard_dis(images, captions, model, shard_size=256, lengths=None): 121 | """compute image-caption pairwise distance during validation and test""" 122 | 123 | n_im_shard = (len(images) - 1) // shard_size + 1 124 | n_cap_shard = (len(captions) - 1) // shard_size + 1 125 | 126 | d = np.zeros((len(images), len(captions))) 127 | 128 | for i in range(n_im_shard): 129 | im_start, im_end = shard_size*i, min(shard_size*(i+1), len(images)) 130 | for j in range(n_cap_shard): 131 | sys.stdout.write('\r>> shard_distance batch (%d,%d)' % (i, j)) 132 | cap_start, cap_end = shard_size * j, min(shard_size * (j + 1), len(captions)) 133 | 134 | with torch.no_grad(): 135 | im = Variable(torch.from_numpy(images[im_start:im_end])).float().cuda() 136 | s = Variable(torch.from_numpy(captions[cap_start:cap_end])).cuda() 137 | l = lengths[cap_start:cap_end] 138 | 139 | sim, _, _ = model(im, s, l) 140 | sim = sim.squeeze() 141 | d[im_start:im_end, cap_start:cap_end] = sim.data.cpu().numpy() 142 | sys.stdout.write('\n') 143 | return d 144 | 145 | 146 | def acc_i2t(input): 147 | """Computes the precision@k for the specified values of k of i2t""" 148 | image_size = input.shape[0] 149 | ranks = np.zeros(image_size) 150 | top1 = np.zeros(image_size) 151 | 152 | for index in range(image_size): 153 | inds = np.argsort(input[index])[::-1] 154 | # Score 155 | rank = 1e20 156 | # get ground_truth's rank 157 | for i in range(5 * index, 5 * index + 5, 1): # gt:i 158 | tmp = np.where(inds == i)[0][0] 159 | if tmp < rank: 160 | rank = tmp 161 | ranks[index] = rank 162 | top1[index] = inds[0] 163 | 164 | 165 | # Compute metrics 166 | r1 = 100.0 * len(np.where(ranks < 1)[0]) / len(ranks) 167 | r5 = 100.0 * len(np.where(ranks < 5)[0]) / len(ranks) 168 | r10 = 100.0 * len(np.where(ranks < 10)[0]) / len(ranks) 169 | medr = np.floor(np.median(ranks)) + 1 170 | meanr = ranks.mean() + 1 171 | 172 | return (r1, r5, r10, medr, meanr), (ranks, top1) 173 | 174 | 175 | def acc_t2i(input): 176 | """Computes the precision@k for the specified values of k of t2i""" 177 | image_size = input.shape[0] 178 | ranks = np.zeros(5*image_size) 179 | top1 = np.zeros(5*image_size) 180 | 181 | # --> (5N(caption), N(image)) 182 | input = input.T 183 | 184 | for index in range(image_size): 185 | for i in range(5): 186 | inds = np.argsort(input[5 * index + i])[::-1] 187 | ranks[5 * index + i] = np.where(inds == index)[0][0] 188 | top1[5 * index + i] = inds[0] 189 | 190 | # Compute metrics 191 | r1 = 100.0 * len(np.where(ranks < 1)[0]) / len(ranks) 192 | r5 = 100.0 * len(np.where(ranks < 5)[0]) / len(ranks) 193 | r10 = 100.0 * len(np.where(ranks < 10)[0]) / len(ranks) 194 | medr = np.floor(np.median(ranks)) + 1 195 | meanr = ranks.mean() + 1 196 | 197 | return (r1, r5, r10, medr, meanr), (ranks, top1) 198 | 199 | 200 | def save_checkpoint(state, is_best, filename, prefix='', model_name=None): 201 | """ 202 | save the best checkpoint 203 | :param state: model information 204 | :param is_best: is or not best 205 | :param filename: the file name of the checkpoint 206 | :param prefix: the prefix of the save path 207 | :param model_name: current model 's name 208 | :return: None 209 | 210 | """ 211 | tries = 15 212 | error = None 213 | 214 | # deal with unstable I/O. Usually not necessary. 215 | while tries: 216 | try: 217 | # torch.save(state, prefix + filename) 218 | if is_best: 219 | torch.save(state, prefix +model_name +'_best.pth.tar') 220 | # torch.save(state, prefix + filename) 221 | 222 | except IOError as e: 223 | error = e 224 | tries -= 1 225 | else: 226 | break 227 | print('model save {} failed, remaining {} trials'.format(filename, tries)) 228 | if not tries: 229 | raise error 230 | 231 | 232 | def adjust_learning_rate(options, optimizer, epoch, warm_up=10): 233 | """ 234 | Sets the learning rate to the initial LR 235 | decayed every n epochs 236 | 237 | """ 238 | 239 | for param_group in optimizer.param_groups: 240 | lr = param_group['lr'] 241 | 242 | if epoch / warm_up < 1: 243 | lr = options['optim']['lr'] * (epoch+1)/warm_up 244 | if epoch % options['optim']['lr_update_epoch'] == options['optim']['lr_update_epoch'] - 1: 245 | lr = lr * options['optim']['lr_decay_param'] 246 | 247 | param_group['lr'] = lr 248 | 249 | print("Current lr: {}".format(optimizer.state_dict()['param_groups'][0]['lr'])) 250 | 251 | 252 | def load_from_txt(filename, encoding="utf-8"): 253 | """ 254 | read txt lines 255 | 256 | """ 257 | f = open(filename, 'r', encoding=encoding) 258 | contexts = f.readlines() 259 | return contexts 260 | 261 | 262 | def set_seed(seed=42): 263 | """ 264 | set random seeds for reproduction of the code 265 | 266 | """ 267 | 268 | os.environ['PYTHONHASHSEED'] = str(seed) 269 | np.random.seed(seed) 270 | random.seed(seed) 271 | torch.manual_seed(seed) 272 | torch.cuda.manual_seed(seed) 273 | torch.cuda.manual_seed_all(seed) 274 | torch.backends.cudnn.deterministic = True 275 | 276 | 277 | def update_config(config, k): 278 | """ 279 | update the config 280 | 281 | """ 282 | updated_config = copy.deepcopy(config) 283 | 284 | updated_config['random_seed']['current_num'] = k 285 | updated_config['logs']['ckpt_save_path'] = config['logs']['ckpt_save_path'] + \ 286 | config['experiment_name'] + "/" + str(k) + "/" 287 | return updated_config 288 | -------------------------------------------------------------------------------- /vocab/rsicd_splits_vocab.json: -------------------------------------------------------------------------------- 1 | {"word2idx": {"many": 1, "planes": 2, "parked": 3, "next": 4, "long": 5, "building": 6, "airport": 7, "full": 8, "airplanes": 9, "containers": 10, "near": 11, "runways": 12, "size": 13, "large": 14, "several": 15, "buildings": 16, "green": 17, "trees": 18, "around": 19, "piece": 20, "bareland": 21, "parking": 22, "lot": 23, "scattered": 24, "every": 25, "plane": 26, "position": 27, "complex": 28, "surrounded": 29, "farmland": 30, "numerous": 31, "grand": 32, "made": 33, "terminal": 34, "middle": 35, "silver": 36, "besides": 37, "black": 38, "road": 39, "either": 40, "hand": 41, "dark": 42, "great": 43, "front": 44, "others": 45, "embraced": 46, "different": 47, "open": 48, "runway": 49, "straight": 50, "wide": 51, "stands": 52, "roads": 53, "regions": 54, "side": 55, "square": 56, "meadow": 57, "seven": 58, "big": 59, "little": 60, "arc": 61, "gray": 62, "ground": 63, "light": 64, "four": 65, "lots": 66, "occupies": 67, "area": 68, "including": 69, "differnet": 70, "sizes": 71, "brown": 72, "white": 73, "sparse": 74, "divide": 75, "lines": 76, "inside": 77, "river": 78, "simple": 79, "small": 80, "crowded": 81, "space": 82, "storage": 83, "tanks": 84, "plants": 85, "neat": 86, "arranged": 87, "red": 88, "spaces": 89, "two": 90, "ocean": 91, "farmlands": 92, "meadows": 93, "five": 94, "empty": 95, "orderly": 96, "sides": 97, "pieces": 98, "extends": 99, "water": 100, "aeroplanes": 101, "apron": 102, "located": 103, "weblike": 104, "flight": 105, "paths": 106, "ploygon": 107, "main": 108, "netlike": 109, "decorated": 110, "lawns": 111, "cross": 112, "polygonal": 113, "passenger": 114, "termial": 115, "crossing": 116, "strip": 117, "shaped": 118, "viaducts": 119, "narrow": 120, "star": 121, "like": 122, "sits": 123, "parallel": 124, "three": 125, "rectangular": 126, "boomerang": 127, "aircraft": 128, "corner": 129, "take": 130, "running": 131, "one": 132, "land": 133, "terminals": 134, "crossed": 135, "tarmac": 136, "boarding": 137, "gate": 138, "separated": 139, "landside": 140, "airside": 141, "oval": 142, "aircrafts": 143, "stay": 144, "tarmacs": 145, "grassy": 146, "fields": 147, "waiting": 148, "alongside": 149, "standing": 150, "beside": 151, "grey": 152, "lying": 153, "circular": 154, "yellow": 155, "stretch": 156, "sparsely": 157, "rounded": 158, "rectangle": 159, "criss": 160, "surrounds": 161, "radial": 162, "stop": 163, "majestic": 164, "symmetrical": 165, "triangle": 166, "curve": 167, "seated": 168, "blue": 169, "adjacent": 170, "wasteland": 171, "polygon": 172, "irregular": 173, "paralleled": 174, "grassland": 175, "vertically": 176, "cruciform": 177, "x": 178, "sandwiched": 179, "field": 180, "surrounding": 181, "strips": 182, "neatly": 183, "built": 184, "trapezoid": 185, "grass": 186, "divided": 187, "outside": 188, "encircled": 189, "complicated": 190, "cars": 191, "rows": 192, "separately": 193, "circle": 194, "respectively": 195, "docked": 196, "number": 197, "plains": 198, "eight": 199, "still": 200, "bare": 201, "highway": 202, "packed": 203, "direction": 204, "good": 205, "order": 206, "broad": 207, "almost": 208, "bald": 209, "covers": 210, "vast": 211, "roofed": 212, "house": 213, "tall": 214, "planted": 215, "triangular": 216, "lawn": 217, "sea": 218, "site": 219, "highways": 220, "scale": 221, "roof": 222, "lake": 223, "nearby": 224, "traces": 225, "huge": 226, "spacious": 227, "line": 228, "mark": 229, "part": 230, "tracks": 231, "totally": 232, "point": 233, "seems": 234, "barren": 235, "nothing": 236, "seen": 237, "zigzag": 238, "squared": 239, "khaki": 240, "streets": 241, "corrugated": 242, "short": 243, "aside": 244, "place": 245, "color": 246, "region": 247, "business": 248, "railway": 249, "ponds": 250, "tract": 251, "shape": 252, "parts": 253, "interspersed": 254, "pond": 255, "pools": 256, "messy": 257, "growing": 258, "goes": 259, "along": 260, "row": 261, "stony": 262, "hills": 263, "surface": 264, "bleak": 265, "shadows": 266, "ruts": 267, "pathways": 268, "mountainous": 269, "lakes": 270, "plain": 271, "wavy": 272, "vein": 273, "sandy": 274, "stripes": 275, "clusters": 276, "vegetations": 277, "dirt": 278, "curly": 279, "stretches": 280, "across": 281, "greenland": 282, "coner": 283, "form": 284, "rugged": 285, "together": 286, "formed": 287, "houses": 288, "grow": 289, "grows": 290, "half": 291, "dry": 292, "wet": 293, "going": 294, "marbled": 295, "pattern": 296, "flat": 297, "path": 298, "traverses": 299, "wild": 300, "curved": 301, "striped": 302, "construction": 303, "colored": 304, "stripe": 305, "reddish": 306, "uneven": 307, "desert": 308, "spots": 309, "signs": 310, "marks": 311, "ripples": 312, "living": 313, "things": 314, "plant": 315, "broken": 316, "stone": 317, "waste": 318, "car": 319, "grind": 320, "2": 321, "expanse": 322, "soil": 323, "grown": 324, "wheel": 325, "grew": 326, "exposed": 327, "amount": 328, "vegetation": 329, "truck": 330, "driving": 331, "factory": 332, "forest": 333, "roofs": 334, "kinds": 335, "growth": 336, "patch": 337, "'s": 338, "something": 339, "flows": 340, "baseball": 341, "surround": 342, "flower": 343, "lush": 344, "base": 345, "ball": 346, "covered": 347, "fan-shaped": 348, "courts": 349, "people": 350, "playing": 351, "bright": 352, "playground": 353, "tree": 354, "semi-surrounded": 355, "tennis": 356, "lane": 357, "track": 358, "freeway": 359, "baseballfield": 360, "fan": 361, "bushy": 362, "fanshaped": 363, "edges": 364, "blocks": 365, "distributed": 366, "sand": 367, "round": 368, "edge": 369, "pentagonal": 370, "see": 371, "bleachers": 372, "baseballfields": 373, "diagonally": 374, "basketball": 375, "court": 376, "looking": 377, "well": 378, "forms": 379, "semicircle": 380, "winding": 381, "another": 382, "sports": 383, "back": 384, "football": 385, "sport": 386, "park": 387, "soccer": 388, "pitch": 389, "grounds": 390, "pitches": 391, "neighborhood": 392, "sit": 393, "woods": 394, "freeways": 395, "relatively": 396, "colors": 397, "consists": 398, "crossroads": 399, "evenly": 400, "waves": 401, "beach": 402, "beautiful": 403, "slapping": 404, "makes": 405, "sharp": 406, "gradient": 407, "clear": 408, "boats": 409, "coastline": 410, "crystal": 411, "colour": 412, "flourishing": 413, "resort": 414, "pretty": 415, "roaring": 416, "lapping": 417, "wave": 418, "shore": 419, "textures": 420, "looks": 421, "rock": 422, "mounds": 423, "rocks": 424, "coast": 425, "stones": 426, "swashes": 427, "spray": 428, "bank": 429, "spoondrift": 430, "series": 431, "come": 432, "calm": 433, "separates": 434, "deep": 435, "blue-green": 436, "surf": 437, "masses": 438, "separate": 439, "set": 440, "towards": 441, "city": 442, "lies": 443, "boundary": 444, "curving": 445, "kind": 446, "layers": 447, "patting": 448, "wharf": 449, "swimming": 450, "pool": 451, "quarter": 452, "mountain": 453, "sapphire": 454, "thr": 455, "jungle": 456, "flourish": 457, "stained": 458, "dam": 459, "ribbon": 460, "jade": 461, "high": 462, "way": 463, "cyan": 464, "quiet": 465, "peaceful": 466, "integrated": 467, "beat": 468, "fish": 469, "vastness": 470, "wind": 471, "pedestrian": 472, "sun": 473, "toward": 474, "golden": 475, "rolling": 476, "play": 477, "tourists": 478, "umbrellas": 479, "chairs": 480, "yachts": 481, "sands": 482, "coconut": 483, "byland": 484, "reaching": 485, "stretching": 486, "stand": 487, "yacht": 488, "shade": 489, "bridges": 490, "bridge": 491, "connects": 492, "steel": 493, "structure": 494, "two-way": 495, "six-line": 496, "connected": 497, "exuberant": 498, "cast": 499, "shadow": 500, "muddy": 501, "similar": 502, "boat": 503, "downtown": 504, "rivers": 505, "turns": 506, "busy": 507, "scene": 508, "branches": 509, "branch": 510, "banks": 511, "ends": 512, "island": 513, "connecting": 514, "traverse": 515, "valley": 516, "mills": 517, "ones": 518, "crosses": 519, "plenty": 520, "spans": 521, "deck": 522, "bridege": 523, "suspension": 524, "cable": 525, "stayed": 526, "dense": 527, "double": 528, "tower": 529, "circles": 530, "groves": 531, "residential": 532, "areas": 533, "contains": 534, "towers": 535, "brightly": 536, "shining": 537, "ships": 538, "station": 539, "cities": 540, "tiny": 541, "stopping": 542, "factories": 543, "joins": 544, "ports": 545, "sailing": 546, "ship": 547, "automobiles": 548, "traveling": 549, "bustling": 550, "u": 551, "low": 552, "saddle": 553, "go": 554, "turbid": 555, "passing": 556, "mountains": 557, "islands": 558, "vans": 559, "cement": 560, "partly": 561, "port": 562, "railways": 563, "voer": 564, "unparallel": 565, "build": 566, "barelands": 567, "alive": 568, "lands": 569, "strong": 570, "passed": 571, "densely": 572, "populated": 573, "traffic": 574, "center": 575, "distinctive": 576, "design": 577, "vehicles": 578, "stadium": 579, "block": 580, "altitude": 581, "shell": 582, "make": 583, "intensive": 584, "street": 585, "ferris": 586, "viaduct": 587, "semi-circle": 588, "squares": 589, "quadrilateral": 590, "top": 591, "gymnasium": 592, "leaf": 593, "eye": 594, "among": 595, "regular": 596, "hexagon": 597, "loop": 598, "hexagonal": 599, "grid": 600, "whose": 601, "close": 602, "lace": 603, "metallic": 604, "designed": 605, "seperated": 606, "elliptical": 607, "bowl": 608, "urban": 609, "flyover": 610, "metal": 611, "esthetic": 612, "semi": 613, "drop": 614, "composed": 615, "aesthetic": 616, "smaller": 617, "zone": 618, "paved": 619, "twelve": 620, "purple": 621, "ring": 622, "incomplete": 623, "strange": 624, "whole": 625, "total": 626, "vivid": 627, "spectacular": 628, "domes": 629, "gym": 630, "honeycomb": 631, "trails": 632, "behind": 633, "central": 634, "sided": 635, "magnificent": 636, "church": 637, "owns": 638, "courtyard": 639, "patterns": 640, "variety": 641, "styles": 642, "coloured": 643, "orange": 644, "pink": 645, "moss": 646, "dome": 647, "directions": 648, "tidy": 649, "`": 650, "parks": 651, "roadside": 652, "colorful": 653, "includes": 654, "pitched": 655, "brick": 656, "yard": 657, "neighborhoods": 658, "junction": 659, "old": 660, "flats": 661, "spherical": 662, "opposite": 663, "cylindrical": 664, "pithed": 665, "owning": 666, "closely": 667, "linked": 668, "commercial": 669, "office": 670, "district": 671, "high-rise": 672, "well-organized": 673, "various": 674, "edifices": 675, "eye-catching": 676, "malls": 677, "six": 678, "passes": 679, "prosperous": 680, "distictive": 681, "compact": 682, "rise": 683, "housing": 684, "medium": 685, "height": 686, "skyscrapers": 687, "redidential": 688, "arterial": 689, "lined": 690, "reflection": 691, "glass": 692, "arrangement": 693, "alley": 694, "distribute": 695, "corners": 696, "crossroad": 697, "sitting": 698, "shapes": 699, "school": 700, "apartment": 701, "overpass": 702, "residence": 703, "enclosed": 704, "upscale": 705, "distance": 706, "left": 707, "right": 708, "trade": 709, "pass": 710, "economic": 711, "developed": 712, "belong": 713, "intersection": 714, "mainly": 715, "gap": 716, "working": 717, "community": 718, "devided": 719, "rectangules": 720, "constitute": 721, "marked": 722, "array": 723, "compactly": 724, "laid": 725, "consist": 726, "tress": 727, "cover": 728, "shades": 729, "apartments": 730, "casting": 731, "divids": 732, "lie": 733, "gardens": 734, "enclose": 735, "oblique": 736, "rate": 737, "quadrangle": 738, "mostly": 739, "lied": 740, "collection": 741, "luxury": 742, "extending": 743, "automobile": 744, "picture": 745, "stream": 746, "never": 747, "stops": 748, "dusty": 749, "desolate": 750, "leisure": 751, "beige": 752, "far": 753, "oasis": 754, "sandstorm": 755, "appearance": 756, "cracks": 757, "figure": 758, "stains": 759, "texture": 760, "arcs": 761, "hill": 762, "belts": 763, "flowing": 764, "dunes": 765, "wrinkles": 766, "crack": 767, "rather": 768, "roots": 769, "well-distributed": 770, "jagged": 771, "irregularly": 772, "curves": 773, "sparkling": 774, "wood": 775, "ripple": 776, "thousands": 777, "loos": 778, "diagonal": 779, "stipes": 780, "pits": 781, "scales": 782, "dust": 783, "arid": 784, "boundless": 785, "fine": 786, "thing": 787, "much": 788, "else": 789, "endless": 790, "footpaths": 791, "colours": 792, "crops": 793, "tidily": 794, "colourful": 795, "latticed": 796, "farm": 797, "cut": 798, "baulk": 799, "ridges": 800, "outlined": 801, "farms": 802, "floor": 803, "vertical": 804, "divid": 805, "blended": 806, "trail": 807, "depths": 808, "village": 809, "cream": 810, "ridge": 811, "drains": 812, "vacant": 813, "places": 814, "looked": 815, "look": 816, "croplands": 817, "crooked": 818, "composition": 819, "wheat": 820, "luxuriant": 821, "b": 822, "earth": 823, "also": 824, "spring": 825, "semicircular": 826, "grasses": 827, "combined": 828, "bottle": 829, "forests": 830, "tracts": 831, "footpath": 832, "emerald": 833, "shrubs": 834, "separating": 835, "clouds": 836, "twisty": 837, "bushes": 838, "thick": 839, "runs": 840, "coverage": 841, "industrial": 842, "consisting": 843, "shed": 844, "modern": 845, "ia": 846, "workshops": 847, "clean": 848, "group": 849, "workshop": 850, "warehouses": 851, "work": 852, "placed": 853, "diamond": 854, "unpaved": 855, "concrete": 856, "betweeen": 857, "trucks": 858, "cylinder": 859, "industriala": 860, "n't": 861, "belt": 862, "zones": 863, "tank": 864, "use": 865, "turf": 866, "yellowish": 867, "even": 868, "thin": 869, "withered": 870, "slightly": 871, "worn": 872, "imprints": 873, "points": 874, "distributes": 875, "prairie": 876, "pale": 877, "rhombus": 878, "angle": 879, "fold": 880, "thwatwise": 881, "decorating": 882, "mixed": 883, "deserted": 884, "alone": 885, "country": 886, "cropped": 887, "streamlined": 888, "smooth": 889, "objects": 890, "pasture": 891, "ranch": 892, "hole": 893, "villas": 894, "ornamented": 895, "scatter": 896, "air": 897, "settled": 898, "garden": 899, "pathway": 900, "situated": 901, "dozens": 902, "ten": 903, "cottages": 904, "smart": 905, "forky": 906, "link": 907, "distribution": 908, "flowers": 909, "villa": 910, "independent": 911, "ice": 912, "clearly": 913, "snow": 914, "snows": 915, "range": 916, "winds": 917, "covering": 918, "mountainpeak": 919, "twisted": 920, "mountainpeaks": 921, "twisting": 922, "valleys": 923, "folds": 924, "capped": 925, "corver": 926, "towering": 927, "unbroken": 928, "foot": 929, "run": 930, "flow": 931, "peak": 932, "slopes": 933, "playgrounds": 934, "encircle": 935, "man-made": 936, "view": 937, "heart-shaped": 938, "grove": 939, "peninsulas": 940, "pon": 941, "cream-colored": 942, "l": 943, "amusement": 944, "span": 945, "platform": 946, "mid": 947, "recreation": 948, "facilities": 949, "brook": 950, "semi-surround": 951, "resident": 952, "artificial": 953, "closing": 954, "bell": 955, "wall": 956, "stopped": 957, "sorts": 958, "pentagon": 959, "positions": 960, "overhead": 961, "bush": 962, "filled": 963, "turning": 964, "'": 965, "stuffed": 966, "crammed": 967, "median": 968, "hundreds": 969, "tight": 970, "beds": 971, "free": 972, "standard": 973, "grandstand": 974, "half-old": 975, "since": 976, "spectators": 977, "players": 978, "footballground": 979, "game": 980, "teaching": 981, "equipment": 982, "guys": 983, "ceiling": 984, "room": 985, "badminton": 986, "plastic": 987, "embrace": 988, "mist": 989, "trapezoidal": 990, "quadrangular": 991, "multilateral": 992, "spindle": 993, "fountain": 994, "step": 995, "without": 996, "rectangles": 997, "exactly": 998, "convenient": 999, "pier": 1000, "harbor": 1001, "moored": 1002, "docking": 1003, "bylands": 1004, "cruising": 1005, "larger": 1006, "stirring": 1007, "seawalls": 1008, "dock": 1009, "harbour": 1010, "basin": 1011, "dams": 1012, "seewall": 1013, "types": 1014, "layer": 1015, "docks": 1016, "finished": 1017, "railwaystation": 1018, "rails": 1019, "forming": 1020, "trains": 1021, "abreast": 1022, "converging": 1023, "rail": 1024, "occupied": 1025, "cargo": 1026, "facility": 1027, "satellite": 1028, "imagery": 1029, "abreastly": 1030, "train": 1031, "awnings": 1032, "rings": 1033, "speed": 1034, "subway": 1035, "ceilings": 1036, "painted": 1037, "peninsula": 1038, "tropical": 1039, "resorts": 1040, "resting": 1041, "spa": 1042, "family": 1043, "open-air": 1044, "outdoor": 1045, "holiday": 1046, "seperates": 1047, "turn": 1048, "though": 1049, "terraces": 1050, "bend": 1051, "z": 1052, "rainforest": 1053, "beaches": 1054, "town": 1055, "converge": 1056, "wetland": 1057, "limpid": 1058, "vehicle": 1059, "floating": 1060, "float": 1061, "object": 1062, "poor": 1063, "campus": 1064, "perfect": 1065, "tranquil": 1066, "northeast": 1067, "nine": 1068, "equipped": 1069, "concentrated": 1070, "south": 1071, "northwest": 1072, "wetlands": 1073, "interlaced": 1074, "fully": 1075, "greening": 1076, "staggered": 1077, "leading": 1078, "sunlight": 1079, "end": 1080, "connect": 1081, "hot": 1082, "clearing": 1083, "eye-watching": 1084, "bed": 1085, "bottom": 1086, "octagon": 1087, "roundabout": 1088, "parterre": 1089, "centre": 1090, "public": 1091, "rounds": 1092, "lantern": 1093, "regularly": 1094, "ellipse": 1095, "halls": 1096, "unique": 1097, "contain": 1098, "tens": 1099, "awning": 1100, "blearchers": 1101, "silvery": 1102, "layout": 1103, "tents": 1104, "locates": 1105, "bird": 1106, "nest": 1107, "architecture": 1108, "seats": 1109, "storagetanks": 1110, "pipes": 1111, "tubes": 1112, "columnar": 1113, "oil": 1114, "tanker": 1115, "piping": 1116, "refinery": 1117, "rough": 1118, "store": 1119, "fact": 1120, "seaside": 1121, "amazing": 1122, "diamand": 1123, "loops": 1124, "overpasses": 1125, "spanning": 1126, "petals": 1127, "flyovers": 1128, "mouthed": 1129, "eyes": 1130, "owl": 1131, "nested": 1132, "ease": 1133, "ran": 1134, "drive": 1135, "exercise": 1136, "locate": 1137, "surroundededed": 1138, "subdivisions": 1139, "planned": 1140, "semisurrounded": 1141, "residents": 1142, "jars": 1143, "paint": 1144, "forked": 1145, "west": 1146, "sunshine": 1147, "shabby": 1148, "wreathed": 1149, "situates": 1150, "l-shaped": 1151, "surroundeded": 1152, "hemmed": 1153, "neatly-arranged": 1154, "new": 1155, "north": 1156, "playgound": 1157, "rimmed": 1158, "jar": 1159, "quite": 1160, "rim": 1161, "baksetball": 1162, "slender": 1163, "environment": 1164, "raod": 1165, "course": 1166, "tree-lined": 1167, "links": 1168, "convenience": 1169, "away": 1170, "scenery": 1171, "fast": 1172, "silver-gray": 1173, "containing": 1174, "overall": 1175, "pavilion": 1176, "treelined": 1177, "patches": 1178, "aqua": 1179, "complete": 1180, "airfields": 1181, "criss_crossing": 1182, "potholes": 1183, "bumpy": 1184, "slope": 1185, "palm": 1186, "shallow": 1187, "eyot": 1188, "towns": 1189, "past": 1190, "umbrella": 1191, "delicate": 1192, "paddy": 1193, "bule": 1194, "system": 1195, "budding": 1196, "walkway": 1197, "bends": 1198, "retangular": 1199, "blurred": 1200, "hard": 1201, "nebulous": 1202, "twinkling": 1203, "crash": 1204, "beating": 1205, "truss": 1206, "pyramidal": 1207, "faced": 1208, "alleys": 1209, "ranged": 1210, "tightly": 1211, "peaks": 1212, "intersperse": 1213, "sheet": 1214, "airtight": 1215, "facotry": 1216, "unused": 1217, "merging": 1218, "getting": 1219, "forks": 1220, "circumferential": 1221, "ramps": 1222, "cloverleaf": 1223, "ramp": 1224, "": 1225}, "idx2word": {"1": "many", "2": "planes", "3": "parked", "4": "next", "5": "long", "6": "building", "7": "airport", "8": "full", "9": "airplanes", "10": "containers", "11": "near", "12": "runways", "13": "size", "14": "large", "15": "several", "16": "buildings", "17": "green", "18": "trees", "19": "around", "20": "piece", "21": "bareland", "22": "parking", "23": "lot", "24": "scattered", "25": "every", "26": "plane", "27": "position", "28": "complex", "29": "surrounded", "30": "farmland", "31": "numerous", "32": "grand", "33": "made", "34": "terminal", "35": "middle", "36": "silver", "37": "besides", "38": "black", "39": "road", "40": "either", "41": "hand", "42": "dark", "43": "great", "44": "front", "45": "others", "46": "embraced", "47": "different", "48": "open", "49": "runway", "50": "straight", "51": "wide", "52": "stands", "53": "roads", "54": "regions", "55": "side", "56": "square", "57": "meadow", "58": "seven", "59": "big", "60": "little", "61": "arc", "62": "gray", "63": "ground", "64": "light", "65": "four", "66": "lots", "67": "occupies", "68": "area", "69": "including", "70": "differnet", "71": "sizes", "72": "brown", "73": "white", "74": "sparse", "75": "divide", "76": "lines", "77": "inside", "78": "river", "79": "simple", "80": "small", "81": "crowded", "82": "space", "83": "storage", "84": "tanks", "85": "plants", "86": "neat", "87": "arranged", "88": "red", "89": "spaces", "90": "two", "91": "ocean", "92": "farmlands", "93": "meadows", "94": "five", "95": "empty", "96": "orderly", "97": "sides", "98": "pieces", "99": "extends", "100": "water", "101": "aeroplanes", "102": "apron", "103": "located", "104": "weblike", "105": "flight", "106": "paths", "107": "ploygon", "108": "main", "109": "netlike", "110": "decorated", "111": "lawns", "112": "cross", "113": "polygonal", "114": "passenger", "115": "termial", "116": "crossing", "117": "strip", "118": "shaped", "119": "viaducts", "120": "narrow", "121": "star", "122": "like", "123": "sits", "124": "parallel", "125": "three", "126": "rectangular", "127": "boomerang", "128": "aircraft", "129": "corner", "130": "take", "131": "running", "132": "one", "133": "land", "134": "terminals", "135": "crossed", "136": "tarmac", "137": "boarding", "138": "gate", "139": "separated", "140": "landside", "141": "airside", "142": "oval", "143": "aircrafts", "144": "stay", "145": "tarmacs", "146": "grassy", "147": "fields", "148": "waiting", "149": "alongside", "150": "standing", "151": "beside", "152": "grey", "153": "lying", "154": "circular", "155": "yellow", "156": "stretch", "157": "sparsely", "158": "rounded", "159": "rectangle", "160": "criss", "161": "surrounds", "162": "radial", "163": "stop", "164": "majestic", "165": "symmetrical", "166": "triangle", "167": "curve", "168": "seated", "169": "blue", "170": "adjacent", "171": "wasteland", "172": "polygon", "173": "irregular", "174": "paralleled", "175": "grassland", "176": "vertically", "177": "cruciform", "178": "x", "179": "sandwiched", "180": "field", "181": "surrounding", "182": "strips", "183": "neatly", "184": "built", "185": "trapezoid", "186": "grass", "187": "divided", "188": "outside", "189": "encircled", "190": "complicated", "191": "cars", "192": "rows", "193": "separately", "194": "circle", "195": "respectively", "196": "docked", "197": "number", "198": "plains", "199": "eight", "200": "still", "201": "bare", "202": "highway", "203": "packed", "204": "direction", "205": "good", "206": "order", "207": "broad", "208": "almost", "209": "bald", "210": "covers", "211": "vast", "212": "roofed", "213": "house", "214": "tall", "215": "planted", "216": "triangular", "217": "lawn", "218": "sea", "219": "site", "220": "highways", "221": "scale", "222": "roof", "223": "lake", "224": "nearby", "225": "traces", "226": "huge", "227": "spacious", "228": "line", "229": "mark", "230": "part", "231": "tracks", "232": "totally", "233": "point", "234": "seems", "235": "barren", "236": "nothing", "237": "seen", "238": "zigzag", "239": "squared", "240": "khaki", "241": "streets", "242": "corrugated", "243": "short", "244": "aside", "245": "place", "246": "color", "247": "region", "248": "business", "249": "railway", "250": "ponds", "251": "tract", "252": "shape", "253": "parts", "254": "interspersed", "255": "pond", "256": "pools", "257": "messy", "258": "growing", "259": "goes", "260": "along", "261": "row", "262": "stony", "263": "hills", "264": "surface", "265": "bleak", "266": "shadows", "267": "ruts", "268": "pathways", "269": "mountainous", "270": "lakes", "271": "plain", "272": "wavy", "273": "vein", "274": "sandy", "275": "stripes", "276": "clusters", "277": "vegetations", "278": "dirt", "279": "curly", "280": "stretches", "281": "across", "282": "greenland", "283": "coner", "284": "form", "285": "rugged", "286": "together", "287": "formed", "288": "houses", "289": "grow", "290": "grows", "291": "half", "292": "dry", "293": "wet", "294": "going", "295": "marbled", "296": "pattern", "297": "flat", "298": "path", "299": "traverses", "300": "wild", "301": "curved", "302": "striped", "303": "construction", "304": "colored", "305": "stripe", "306": "reddish", "307": "uneven", "308": "desert", "309": "spots", "310": "signs", "311": "marks", "312": "ripples", "313": "living", "314": "things", "315": "plant", "316": "broken", "317": "stone", "318": "waste", "319": "car", "320": "grind", "321": "2", "322": "expanse", "323": "soil", "324": "grown", "325": "wheel", "326": "grew", "327": "exposed", "328": "amount", "329": "vegetation", "330": "truck", "331": "driving", "332": "factory", "333": "forest", "334": "roofs", "335": "kinds", "336": "growth", "337": "patch", "338": "'s", "339": "something", "340": "flows", "341": "baseball", "342": "surround", "343": "flower", "344": "lush", "345": "base", "346": "ball", "347": "covered", "348": "fan-shaped", "349": "courts", "350": "people", "351": "playing", "352": "bright", "353": "playground", "354": "tree", "355": "semi-surrounded", "356": "tennis", "357": "lane", "358": "track", "359": "freeway", "360": "baseballfield", "361": "fan", "362": "bushy", "363": "fanshaped", "364": "edges", "365": "blocks", "366": "distributed", "367": "sand", "368": "round", "369": "edge", "370": "pentagonal", "371": "see", "372": "bleachers", "373": "baseballfields", "374": "diagonally", "375": "basketball", "376": "court", "377": "looking", "378": "well", "379": "forms", "380": "semicircle", "381": "winding", "382": "another", "383": "sports", "384": "back", "385": "football", "386": "sport", "387": "park", "388": "soccer", "389": "pitch", "390": "grounds", "391": "pitches", "392": "neighborhood", "393": "sit", "394": "woods", "395": "freeways", "396": "relatively", "397": "colors", "398": "consists", "399": "crossroads", "400": "evenly", "401": "waves", "402": "beach", "403": "beautiful", "404": "slapping", "405": "makes", "406": "sharp", "407": "gradient", "408": "clear", "409": "boats", "410": "coastline", "411": "crystal", "412": "colour", "413": "flourishing", "414": "resort", "415": "pretty", "416": "roaring", "417": "lapping", "418": "wave", "419": "shore", "420": "textures", "421": "looks", "422": "rock", "423": "mounds", "424": "rocks", "425": "coast", "426": "stones", "427": "swashes", "428": "spray", "429": "bank", "430": "spoondrift", "431": "series", "432": "come", "433": "calm", "434": "separates", "435": "deep", "436": "blue-green", "437": "surf", "438": "masses", "439": "separate", "440": "set", "441": "towards", "442": "city", "443": "lies", "444": "boundary", "445": "curving", "446": "kind", "447": "layers", "448": "patting", "449": "wharf", "450": "swimming", "451": "pool", "452": "quarter", "453": "mountain", "454": "sapphire", "455": "thr", "456": "jungle", "457": "flourish", "458": "stained", "459": "dam", "460": "ribbon", "461": "jade", "462": "high", "463": "way", "464": "cyan", "465": "quiet", "466": "peaceful", "467": "integrated", "468": "beat", "469": "fish", "470": "vastness", "471": "wind", "472": "pedestrian", "473": "sun", "474": "toward", "475": "golden", "476": "rolling", "477": "play", "478": "tourists", "479": "umbrellas", "480": "chairs", "481": "yachts", "482": "sands", "483": "coconut", "484": "byland", "485": "reaching", "486": "stretching", "487": "stand", "488": "yacht", "489": "shade", "490": "bridges", "491": "bridge", "492": "connects", "493": "steel", "494": "structure", "495": "two-way", "496": "six-line", "497": "connected", "498": "exuberant", "499": "cast", "500": "shadow", "501": "muddy", "502": "similar", "503": "boat", "504": "downtown", "505": "rivers", "506": "turns", "507": "busy", "508": "scene", "509": "branches", "510": "branch", "511": "banks", "512": "ends", "513": "island", "514": "connecting", "515": "traverse", "516": "valley", "517": "mills", "518": "ones", "519": "crosses", "520": "plenty", "521": "spans", "522": "deck", "523": "bridege", "524": "suspension", "525": "cable", "526": "stayed", "527": "dense", "528": "double", "529": "tower", "530": "circles", "531": "groves", "532": "residential", "533": "areas", "534": "contains", "535": "towers", "536": "brightly", "537": "shining", "538": "ships", "539": "station", "540": "cities", "541": "tiny", "542": "stopping", "543": "factories", "544": "joins", "545": "ports", "546": "sailing", "547": "ship", "548": "automobiles", "549": "traveling", "550": "bustling", "551": "u", "552": "low", "553": "saddle", "554": "go", "555": "turbid", "556": "passing", "557": "mountains", "558": "islands", "559": "vans", "560": "cement", "561": "partly", "562": "port", "563": "railways", "564": "voer", "565": "unparallel", "566": "build", "567": "barelands", "568": "alive", "569": "lands", "570": "strong", "571": "passed", "572": "densely", "573": "populated", "574": "traffic", "575": "center", "576": "distinctive", "577": "design", "578": "vehicles", "579": "stadium", "580": "block", "581": "altitude", "582": "shell", "583": "make", "584": "intensive", "585": "street", "586": "ferris", "587": "viaduct", "588": "semi-circle", "589": "squares", "590": "quadrilateral", "591": "top", "592": "gymnasium", "593": "leaf", "594": "eye", "595": "among", "596": "regular", "597": "hexagon", "598": "loop", "599": "hexagonal", "600": "grid", "601": "whose", "602": "close", "603": "lace", "604": "metallic", "605": "designed", "606": "seperated", "607": "elliptical", "608": "bowl", "609": "urban", "610": "flyover", "611": "metal", "612": "esthetic", "613": "semi", "614": "drop", "615": "composed", "616": "aesthetic", "617": "smaller", "618": "zone", "619": "paved", "620": "twelve", "621": "purple", "622": "ring", "623": "incomplete", "624": "strange", "625": "whole", "626": "total", "627": "vivid", "628": "spectacular", "629": "domes", "630": "gym", "631": "honeycomb", "632": "trails", "633": "behind", "634": "central", "635": "sided", "636": "magnificent", "637": "church", "638": "owns", "639": "courtyard", "640": "patterns", "641": "variety", "642": "styles", "643": "coloured", "644": "orange", "645": "pink", "646": "moss", "647": "dome", "648": "directions", "649": "tidy", "650": "`", "651": "parks", "652": "roadside", "653": "colorful", "654": "includes", "655": "pitched", "656": "brick", "657": "yard", "658": "neighborhoods", "659": "junction", "660": "old", "661": "flats", "662": "spherical", "663": "opposite", "664": "cylindrical", "665": "pithed", "666": "owning", "667": "closely", "668": "linked", "669": "commercial", "670": "office", "671": "district", "672": "high-rise", "673": "well-organized", "674": "various", "675": "edifices", "676": "eye-catching", "677": "malls", "678": "six", "679": "passes", "680": "prosperous", "681": "distictive", "682": "compact", "683": "rise", "684": "housing", "685": "medium", "686": "height", "687": "skyscrapers", "688": "redidential", "689": "arterial", "690": "lined", "691": "reflection", "692": "glass", "693": "arrangement", "694": "alley", "695": "distribute", "696": "corners", "697": "crossroad", "698": "sitting", "699": "shapes", "700": "school", "701": "apartment", "702": "overpass", "703": "residence", "704": "enclosed", "705": "upscale", "706": "distance", "707": "left", "708": "right", "709": "trade", "710": "pass", "711": "economic", "712": "developed", "713": "belong", "714": "intersection", "715": "mainly", "716": "gap", "717": "working", "718": "community", "719": "devided", "720": "rectangules", "721": "constitute", "722": "marked", "723": "array", "724": "compactly", "725": "laid", "726": "consist", "727": "tress", "728": "cover", "729": "shades", "730": "apartments", "731": "casting", "732": "divids", "733": "lie", "734": "gardens", "735": "enclose", "736": "oblique", "737": "rate", "738": "quadrangle", "739": "mostly", "740": "lied", "741": "collection", "742": "luxury", "743": "extending", "744": "automobile", "745": "picture", "746": "stream", "747": "never", "748": "stops", "749": "dusty", "750": "desolate", "751": "leisure", "752": "beige", "753": "far", "754": "oasis", "755": "sandstorm", "756": "appearance", "757": "cracks", "758": "figure", "759": "stains", "760": "texture", "761": "arcs", "762": "hill", "763": "belts", "764": "flowing", "765": "dunes", "766": "wrinkles", "767": "crack", "768": "rather", "769": "roots", "770": "well-distributed", "771": "jagged", "772": "irregularly", "773": "curves", "774": "sparkling", "775": "wood", "776": "ripple", "777": "thousands", "778": "loos", "779": "diagonal", "780": "stipes", "781": "pits", "782": "scales", "783": "dust", "784": "arid", "785": "boundless", "786": "fine", "787": "thing", "788": "much", "789": "else", "790": "endless", "791": "footpaths", "792": "colours", "793": "crops", "794": "tidily", "795": "colourful", "796": "latticed", "797": "farm", "798": "cut", "799": "baulk", "800": "ridges", "801": "outlined", "802": "farms", "803": "floor", "804": "vertical", "805": "divid", "806": "blended", "807": "trail", "808": "depths", "809": "village", "810": "cream", "811": "ridge", "812": "drains", "813": "vacant", "814": "places", "815": "looked", "816": "look", "817": "croplands", "818": "crooked", "819": "composition", "820": "wheat", "821": "luxuriant", "822": "b", "823": "earth", "824": "also", "825": "spring", "826": "semicircular", "827": "grasses", "828": "combined", "829": "bottle", "830": "forests", "831": "tracts", "832": "footpath", "833": "emerald", "834": "shrubs", "835": "separating", "836": "clouds", "837": "twisty", "838": "bushes", "839": "thick", "840": "runs", "841": "coverage", "842": "industrial", "843": "consisting", "844": "shed", "845": "modern", "846": "ia", "847": "workshops", "848": "clean", "849": "group", "850": "workshop", "851": "warehouses", "852": "work", "853": "placed", "854": "diamond", "855": "unpaved", "856": "concrete", "857": "betweeen", "858": "trucks", "859": "cylinder", "860": "industriala", "861": "n't", "862": "belt", "863": "zones", "864": "tank", "865": "use", "866": "turf", "867": "yellowish", "868": "even", "869": "thin", "870": "withered", "871": "slightly", "872": "worn", "873": "imprints", "874": "points", "875": "distributes", "876": "prairie", "877": "pale", "878": "rhombus", "879": "angle", "880": "fold", "881": "thwatwise", "882": "decorating", "883": "mixed", "884": "deserted", "885": "alone", "886": "country", "887": "cropped", "888": "streamlined", "889": "smooth", "890": "objects", "891": "pasture", "892": "ranch", "893": "hole", "894": "villas", "895": "ornamented", "896": "scatter", "897": "air", "898": "settled", "899": "garden", "900": "pathway", "901": "situated", "902": "dozens", "903": "ten", "904": "cottages", "905": "smart", "906": "forky", "907": "link", "908": "distribution", "909": "flowers", "910": "villa", "911": "independent", "912": "ice", "913": "clearly", "914": "snow", "915": "snows", "916": "range", "917": "winds", "918": "covering", "919": "mountainpeak", "920": "twisted", "921": "mountainpeaks", "922": "twisting", "923": "valleys", "924": "folds", "925": "capped", "926": "corver", "927": "towering", "928": "unbroken", "929": "foot", "930": "run", "931": "flow", "932": "peak", "933": "slopes", "934": "playgrounds", "935": "encircle", "936": "man-made", "937": "view", "938": "heart-shaped", "939": "grove", "940": "peninsulas", "941": "pon", "942": "cream-colored", "943": "l", "944": "amusement", "945": "span", "946": "platform", "947": "mid", "948": "recreation", "949": "facilities", "950": "brook", "951": "semi-surround", "952": "resident", "953": "artificial", "954": "closing", "955": "bell", "956": "wall", "957": "stopped", "958": "sorts", "959": "pentagon", "960": "positions", "961": "overhead", "962": "bush", "963": "filled", "964": "turning", "965": "'", "966": "stuffed", "967": "crammed", "968": "median", "969": "hundreds", "970": "tight", "971": "beds", "972": "free", "973": "standard", "974": "grandstand", "975": "half-old", "976": "since", "977": "spectators", "978": "players", "979": "footballground", "980": "game", "981": "teaching", "982": "equipment", "983": "guys", "984": "ceiling", "985": "room", "986": "badminton", "987": "plastic", "988": "embrace", "989": "mist", "990": "trapezoidal", "991": "quadrangular", "992": "multilateral", "993": "spindle", "994": "fountain", "995": "step", "996": "without", "997": "rectangles", "998": "exactly", "999": "convenient", "1000": "pier", "1001": "harbor", "1002": "moored", "1003": "docking", "1004": "bylands", "1005": "cruising", "1006": "larger", "1007": "stirring", "1008": "seawalls", "1009": "dock", "1010": "harbour", "1011": "basin", "1012": "dams", "1013": "seewall", "1014": "types", "1015": "layer", "1016": "docks", "1017": "finished", "1018": "railwaystation", "1019": "rails", "1020": "forming", "1021": "trains", "1022": "abreast", "1023": "converging", "1024": "rail", "1025": "occupied", "1026": "cargo", "1027": "facility", "1028": "satellite", "1029": "imagery", "1030": "abreastly", "1031": "train", "1032": "awnings", "1033": "rings", "1034": "speed", "1035": "subway", "1036": "ceilings", "1037": "painted", "1038": "peninsula", "1039": "tropical", "1040": "resorts", "1041": "resting", "1042": "spa", "1043": "family", "1044": "open-air", "1045": "outdoor", "1046": "holiday", "1047": "seperates", "1048": "turn", "1049": "though", "1050": "terraces", "1051": "bend", "1052": "z", "1053": "rainforest", "1054": "beaches", "1055": "town", "1056": "converge", "1057": "wetland", "1058": "limpid", "1059": "vehicle", "1060": "floating", "1061": "float", "1062": "object", "1063": "poor", "1064": "campus", "1065": "perfect", "1066": "tranquil", "1067": "northeast", "1068": "nine", "1069": "equipped", "1070": "concentrated", "1071": "south", "1072": "northwest", "1073": "wetlands", "1074": "interlaced", "1075": "fully", "1076": "greening", "1077": "staggered", "1078": "leading", "1079": "sunlight", "1080": "end", "1081": "connect", "1082": "hot", "1083": "clearing", "1084": "eye-watching", "1085": "bed", "1086": "bottom", "1087": "octagon", "1088": "roundabout", "1089": "parterre", "1090": "centre", "1091": "public", "1092": "rounds", "1093": "lantern", "1094": "regularly", "1095": "ellipse", "1096": "halls", "1097": "unique", "1098": "contain", "1099": "tens", "1100": "awning", "1101": "blearchers", "1102": "silvery", "1103": "layout", "1104": "tents", "1105": "locates", "1106": "bird", "1107": "nest", "1108": "architecture", "1109": "seats", "1110": "storagetanks", "1111": "pipes", "1112": "tubes", "1113": "columnar", "1114": "oil", "1115": "tanker", "1116": "piping", "1117": "refinery", "1118": "rough", "1119": "store", "1120": "fact", "1121": "seaside", "1122": "amazing", "1123": "diamand", "1124": "loops", "1125": "overpasses", "1126": "spanning", "1127": "petals", "1128": "flyovers", "1129": "mouthed", "1130": "eyes", "1131": "owl", "1132": "nested", "1133": "ease", "1134": "ran", "1135": "drive", "1136": "exercise", "1137": "locate", "1138": "surroundededed", "1139": "subdivisions", "1140": "planned", "1141": "semisurrounded", "1142": "residents", "1143": "jars", "1144": "paint", "1145": "forked", "1146": "west", "1147": "sunshine", "1148": "shabby", "1149": "wreathed", "1150": "situates", "1151": "l-shaped", "1152": "surroundeded", "1153": "hemmed", "1154": "neatly-arranged", "1155": "new", "1156": "north", "1157": "playgound", "1158": "rimmed", "1159": "jar", "1160": "quite", "1161": "rim", "1162": "baksetball", "1163": "slender", "1164": "environment", "1165": "raod", "1166": "course", "1167": "tree-lined", "1168": "links", "1169": "convenience", "1170": "away", "1171": "scenery", "1172": "fast", "1173": "silver-gray", "1174": "containing", "1175": "overall", "1176": "pavilion", "1177": "treelined", "1178": "patches", "1179": "aqua", "1180": "complete", "1181": "airfields", "1182": "criss_crossing", "1183": "potholes", "1184": "bumpy", "1185": "slope", "1186": "palm", "1187": "shallow", "1188": "eyot", "1189": "towns", "1190": "past", "1191": "umbrella", "1192": "delicate", "1193": "paddy", "1194": "bule", "1195": "system", "1196": "budding", "1197": "walkway", "1198": "bends", "1199": "retangular", "1200": "blurred", "1201": "hard", "1202": "nebulous", "1203": "twinkling", "1204": "crash", "1205": "beating", "1206": "truss", "1207": "pyramidal", "1208": "faced", "1209": "alleys", "1210": "ranged", "1211": "tightly", "1212": "peaks", "1213": "intersperse", "1214": "sheet", "1215": "airtight", "1216": "facotry", "1217": "unused", "1218": "merging", "1219": "getting", "1220": "forks", "1221": "circumferential", "1222": "ramps", "1223": "cloverleaf", "1224": "ramp", "1225": ""}, "idx": 1226} -------------------------------------------------------------------------------- /vocab/rsitmd_splits_vocab.json: -------------------------------------------------------------------------------- 1 | {"word2idx": {"baseball": 1, "field": 2, "beside": 3, "green": 4, "amusement": 5, "park": 6, "around": 7, "red": 8, "track": 9, "adjacent": 10, "playground": 11, "square": 12, "long": 13, "path": 14, "next": 15, "runway": 16, "two": 17, "white": 18, "houses": 19, "located": 20, "middle": 21, "lawn": 22, "fields": 23, "different": 24, "sizes": 25, "stadium": 26, "stand": 27, "big": 28, "side-by-side": 29, "road": 30, "side": 31, "football": 32, "passes": 33, "gray": 34, "bare": 35, "soil": 36, "close": 37, "alongside": 38, "piece": 39, "land": 40, "separates": 41, "house": 42, "separating": 43, "octagonal": 44, "buildings": 45, "colors": 46, "building": 47, "parking": 48, "lot": 49, "full": 50, "cars": 51, "tennis": 52, "courts": 53, "grey": 54, "roadside": 55, "one": 56, "intersection": 57, "roads": 58, "crossed": 59, "highway": 60, "parallel": 61, "pass": 62, "streets": 63, "lined": 64, "trees": 65, "empty": 66, "sides": 67, "lots": 68, "deep": 69, "black": 70, "river": 71, "blue": 72, "factory": 73, "boats": 74, "moored": 75, "many": 76, "parked": 77, "bank": 78, "three": 79, "anchored": 80, "respectively": 81, "turquoise": 82, "ships": 83, "area": 84, "goods": 85, "boat": 86, "quietly": 87, "thin": 88, "bridge": 89, "sail": 90, "dark": 91, "sea": 92, "harbor": 93, "small": 94, "floating": 95, "port": 96, "floated": 97, "ship": 98, "near": 99, "dock": 100, "yellow": 101, "lay": 102, "across": 103, "crossroads": 104, "sailed": 105, "fast": 106, "calm": 107, "sailing": 108, "deck": 109, "purple": 110, "dry": 111, "cargo": 112, "striped": 113, "coast": 114, "stripes": 115, "shore": 116, "water": 117, "either": 118, "car": 119, "left": 120, "wave": 121, "heihe": 122, "pools": 123, "swimming": 124, "opposite": 125, "facing": 126, "moving": 127, "colorful": 128, "board": 129, "belt": 130, "curved": 131, "crosses": 132, "directly": 133, "make": 134, "way": 135, "residential": 136, "crossing": 137, "intersects": 138, "areas": 139, "plant": 140, "belts": 141, "rivers": 142, "surrounded": 143, "densely": 144, "populated": 145, "decorated": 146, "hand": 147, "open": 148, "grassland": 149, "high-rise": 150, "grass": 151, "skyscrapers": 152, "sits": 153, "tall": 154, "ellipse": 155, "shapes": 156, "oval": 157, "built": 158, "kind": 159, "light": 160, "bifurcation": 161, "street": 162, "train": 163, "railway": 164, "directions": 165, "tracks": 166, "planes": 167, "plane": 168, "large": 169, "crowded": 170, "separated": 171, "jagged": 172, "zigzag": 173, "lying": 174, "vehicles": 175, "airport": 176, "ground": 177, "stopped": 178, "dust": 179, "five": 180, "docked": 181, "sparkling": 182, "face": 183, "rectangular": 184, "together": 185, "line": 186, "several": 187, "edge": 188, "playgrounds": 189, "six": 190, "table": 191, "balls": 192, "semicircular": 193, "orange": 194, "dense": 195, "forest": 196, "thick": 197, "connected": 198, "lake": 199, "pond": 200, "lush": 201, "tree": 202, "connects": 203, "court": 204, "vacant": 205, "paths": 206, "expanse": 207, "run": 208, "runways": 209, "door": 210, "winding": 211, "covered": 212, "shaded": 213, "ponds": 214, "brown": 215, "spectators": 216, "spectator": 217, "audience": 218, "quite": 219, "lawns": 220, "divide": 221, "stood": 222, "four": 223, "bareland": 224, "leans": 225, "surround": 226, "front": 227, "terminal": 228, "others": 229, "besides": 230, "sparse": 231, "meadow": 232, "lines": 233, "inside": 234, "plants": 235, "neat": 236, "arranged": 237, "round": 238, "church": 239, "sit": 240, "aeroplanes": 241, "apron": 242, "flight": 243, "ploygon": 244, "main": 245, "netlike": 246, "cross": 247, "polygonal": 248, "passenger": 249, "termial": 250, "strip": 251, "shaped": 252, "viaducts": 253, "narrow": 254, "star": 255, "like": 256, "boomerang": 257, "aircraft": 258, "corner": 259, "take": 260, "running": 261, "seven": 262, "tarmac": 263, "boarding": 264, "gate": 265, "landside": 266, "airside": 267, "aircrafts": 268, "tarmacs": 269, "grassy": 270, "waiting": 271, "straight": 272, "standing": 273, "bar": 274, "airstrip": 275, "terminals": 276, "airplanes": 277, "circular": 278, "stretch": 279, "sparsely": 280, "rounded": 281, "rectangle": 282, "surrounds": 283, "radial": 284, "symmetrical": 285, "triangle": 286, "curve": 287, "seated": 288, "wasteland": 289, "polygon": 290, "irregular": 291, "paralleled": 292, "sandwiched": 293, "orderly": 294, "majestic": 295, "surrounding": 296, "arc": 297, "ways": 298, "pieces": 299, "meadows": 300, "strips": 301, "neatly": 302, "trapezoid": 303, "divided": 304, "outside": 305, "complicated": 306, "towers": 307, "cut": 308, "scattered": 309, "airplane": 310, "lamp": 311, "eight": 312, "sitting": 313, "pale": 314, "pure": 315, "y-shaped": 316, "berthing": 317, "conspicuous": 318, "beautiful": 319, "stands": 320, "especially": 321, "packed": 322, "silver": 323, "passed": 324, "wide": 325, "dozens": 326, "e-shaped": 327, "number": 328, "plain": 329, "seen": 330, "station": 331, "t-shaped": 332, "room": 333, "appeared": 334, "fragmented": 335, "terrain": 336, "nothing": 337, "stop": 338, "tower": 339, "blocks": 340, "composed": 341, "ball": 342, "u": 343, "smaller": 344, "single": 345, "farmland": 346, "simple": 347, "along": 348, "order": 349, "taxiing": 350, "rows": 351, "parts": 352, "corners": 353, "squared": 354, "stayed": 355, "nearby": 356, "traverse": 357, "contains": 358, "including": 359, "circle": 360, "ring": 361, "consists": 362, "arc-shaped": 363, "rectangles": 364, "separate": 365, "see": 366, "squares": 367, "wild": 368, "aprons": 369, "bright": 370, "block": 371, "facilities": 372, "complete": 373, "industrial": 374, "people": 375, "flat": 376, "spaces": 377, "huge": 378, "vast": 379, "without": 380, "reddish": 381, "meet": 382, "reddish-brown": 383, "obvious": 384, "marks": 385, "floor": 386, "tract": 387, "traces": 388, "clay": 389, "truck": 390, "driving": 391, "hill": 392, "mark": 393, "vegetation": 394, "khaki": 395, "'s": 396, "work": 397, "space": 398, "sand": 399, "leaking": 400, "looks": 401, "uneven": 402, "planted": 403, "surface": 404, "rugged": 405, "intersect": 406, "vertically": 407, "courtyard": 408, "patch": 409, "shape": 410, "interspersed": 411, "messy": 412, "undulating": 413, "wavy": 414, "sandy": 415, "dotted": 416, "bleak": 417, "dirt": 418, "desert": 419, "stretches": 420, "greenland": 421, "coner": 422, "form": 423, "rough": 424, "formed": 425, "fork": 426, "lie": 427, "traverses": 428, "shallow": 429, "clear": 430, "stripe": 431, "go": 432, "alleys": 433, "runs": 434, "earth": 435, "weeds": 436, "growing": 437, "waste": 438, "broken": 439, "stone": 440, "wheel": 441, "naked": 442, "country": 443, "place": 444, "grows": 445, "amount": 446, "roofs": 447, "kinds": 448, "thing": 449, "things": 450, "part": 451, "irregularly": 452, "blended": 453, "littered": 454, "dots": 455, "half": 456, "rock": 457, "hills": 458, "patterns": 459, "pattern": 460, "lands": 461, "use": 462, "wheels": 463, "holes": 464, "also": 465, "tree-lined": 466, "family": 467, "trucks": 468, "behind": 469, "barren": 470, "flowing": 471, "hillside": 472, "slope": 473, "center": 474, "forming": 475, "flower": 476, "luxuriant": 477, "flowers": 478, "row": 479, "top": 480, "view": 481, "gymnasium": 482, "circles": 483, "quarter": 484, "stadiums": 485, "fan-shaped": 486, "lakes": 487, "silvery": 488, "golf": 489, "course": 490, "filled": 491, "clean": 492, "places": 493, "enough": 494, "smooth": 495, "met": 496, "triangular": 497, "faces": 498, "perfect": 499, "rooms": 500, "players": 501, "lane": 502, "freeway": 503, "baseballfield": 504, "red-roofed": 505, "semi-surrounded": 506, "fan": 507, "fanshaped": 508, "reflections": 509, "distributed": 510, "occupies": 511, "pentagonal": 512, "basketball": 513, "forms": 514, "semicircle": 515, "baseballfields": 516, "another": 517, "sports": 518, "size": 519, "back": 520, "soccer": 521, "pitch": 522, "pitches": 523, "neighborhood": 524, "sized": 525, "highways": 526, "woods": 527, "vertical": 528, "routes": 529, "flanked": 530, "among": 531, "iron": 532, "solar": 533, "pool": 534, "grounds": 535, "bleachers": 536, "enclosed": 537, "coconut": 538, "edges": 539, "used": 540, "reflection": 541, "pentagon": 542, "devided": 543, "residence": 544, "lies": 545, "texture": 546, "items": 547, "addition": 548, "waves": 549, "ocean": 550, "beach": 551, "rocks": 552, "beat": 553, "saw": 554, "spectacular": 555, "magnificent": 556, "surging": 557, "spray": 558, "emerald": 559, "curves": 560, "oceans": 561, "float": 562, "patches": 563, "gradient": 564, "seems": 565, "color": 566, "prosperous": 567, "resort": 568, "thriving": 569, "fishing": 570, "ripples": 571, "look": 572, "forests": 573, "beaches": 574, "hit": 575, "picture": 576, "island": 577, "islands": 578, "quiet": 579, "high": 580, "blue-green": 581, "tourists": 582, "scenery": 583, "rocky": 584, "sands": 585, "right": 586, "dunes": 587, "soft": 588, "grasslands": 589, "grow": 590, "stones": 591, "series": 592, "coastline": 593, "dirty": 594, "waters": 595, "wet": 596, "rushed": 597, "city": 598, "layers": 599, "patting": 600, "wharf": 601, "living": 602, "mountain": 603, "short": 604, "boundary": 605, "thr": 606, "jungle": 607, "stained": 608, "dam": 609, "gently": 610, "ribbon": 611, "jade": 612, "ribbons": 613, "objects": 614, "meets": 615, "integrated": 616, "playing": 617, "play": 618, "sunshine": 619, "seaside": 620, "sun": 621, "connect": 622, "reaches": 623, "towards": 624, "golden": 625, "little": 626, "fish": 627, "found": 628, "yellowish": 629, "cyan": 630, "seas": 631, "umbrellas": 632, "yachts": 633, "better": 634, "stretching": 635, "extends": 636, "roofed": 637, "roof": 638, "shadows": 639, "shade": 640, "structure": 641, "scales": 642, "mountains": 643, "plots": 644, "groves": 645, "bottom": 646, "bridges": 647, "banks": 648, "flows": 649, "two-way": 650, "steel": 651, "made": 652, "spans": 653, "six-lane": 654, "frame": 655, "lanes": 656, "span": 657, "partially": 658, "types": 659, "broad": 660, "cast": 661, "shadow": 662, "muddy": 663, "similar": 664, "two-lane": 665, "turns": 666, "joins": 667, "crisscrossed": 668, "end": 669, "factories": 670, "bus": 671, "branches": 672, "traffic": 673, "yacht": 674, "decorations": 675, "pedestrians": 676, "various": 677, "spanning": 678, "connecting": 679, "valley": 680, "ones": 681, "plenty": 682, "bridege": 683, "suspension": 684, "tributary": 685, "cable": 686, "arch": 687, "divides": 688, "double": 689, "cities": 690, "farmlands": 691, "tiny": 692, "stopping": 693, "walking": 694, "bustling": 695, "low": 696, "saddle": 697, "confluence": 698, "turbid": 699, "goes": 700, "passing": 701, "traveling": 702, "cement": 703, "partly": 704, "riverbank": 705, "docks": 706, "non-parallel": 707, "slender": 708, "come": 709, "slowed": 710, "tanks": 711, "oil": 712, "intersections": 713, "villas": 714, "twists": 715, "reservoirs": 716, "storage": 717, "canal": 718, "wilderness": 719, "farm": 720, "arches": 721, "turning": 722, "villages": 723, "seperated": 724, "automobiles": 725, "tributaries": 726, "towns": 727, "diagonal": 728, "barelands": 729, "set": 730, "eyot": 731, "urban": 732, "ran": 733, "expressway": 734, "cruising": 735, "designed": 736, "design": 737, "conference": 738, "arcs": 739, "floors": 740, "convention": 741, "bend": 742, "tightly": 743, "centers": 744, "shell": 745, "intersecting": 746, "parks": 747, "wonderful": 748, "semi-circular": 749, "intensive": 750, "almost": 751, "crops": 752, "entrance": 753, "unique": 754, "central": 755, "away": 756, "memory": 757, "shows": 758, "concentric": 759, "public": 760, "plaza": 761, "trapezoidal": 762, "quadrilateral": 763, "leaf": 764, "eye": 765, "regular": 766, "hexagonal": 767, "rings": 768, "loop": 769, "hexagon": 770, "grid": 771, "lace": 772, "spherical": 773, "bowl": 774, "flyover": 775, "metal": 776, "esthetic": 777, "aesthetic": 778, "chess": 779, "silver-gray": 780, "nearly": 781, "incomplete": 782, "strange": 783, "grand": 784, "whole": 785, "vivid": 786, "gym": 787, "honeycomb": 788, "site": 789, "camp": 790, "pyramid": 791, "elliptical": 792, "construction": 793, "conical": 794, "glass": 795, "bushes": 796, "railways": 797, "placed": 798, "well": 799, "include": 800, "leaves": 801, "busy": 802, "layout": 803, "distribution": 804, "architectural": 805, "owns": 806, "centre": 807, "variety": 808, "region": 809, "styles": 810, "pink": 811, "moss": 812, "cathedral": 813, "great": 814, "dome": 815, "churches": 816, "spread": 817, "yard": 818, "properly": 819, "ordered": 820, "closed": 821, "semi": 822, "heart": 823, "mint": 824, "gree": 825, "pasture": 826, "every": 827, "includes": 828, "bricks": 829, "wooden": 830, "brick": 831, "garden": 832, "neighborhoods": 833, "junction": 834, "t-junction": 835, "old": 836, "flats": 837, "columns": 838, "cone": 839, "domes": 840, "sloping": 841, "cylindrical": 842, "structures": 843, "column": 844, "apartments": 845, "cruciform": 846, "redor": 847, "closely": 848, "linked": 849, "good": 850, "density": 851, "architecture": 852, "colored": 853, "bit": 854, "fine": 855, "umbrella": 856, "consisting": 857, "quadrangle": 858, "gathered": 859, "alley": 860, "wall": 861, "diamond": 862, "covers": 863, "blu": 864, "e": 865, "ceiling": 866, "flow": 867, "stream": 868, "mirror": 869, "reflected": 870, "bunch": 871, "average": 872, "rather": 873, "shrubs": 874, "nice": 875, "bent": 876, "commercial": 877, "business": 878, "district": 879, "concentrated": 880, "office": 881, "districts": 882, "downtown": 883, "well-organized": 884, "shopping": 885, "mixed": 886, "evergreen": 887, "numerous": 888, "home": 889, "section": 890, "viaduct": 891, "rare": 892, "travel": 893, "drive": 894, "skyscraper": 895, "ordinary": 896, "advertisements": 897, "compact": 898, "advertisement": 899, "rise": 900, "school": 901, "medium": 902, "apartment": 903, "edifices": 904, "height": 905, "overpass": 906, "relatively": 907, "standard": 908, "vary": 909, "distance": 910, "economic": 911, "developed": 912, "schools": 913, "mall": 914, "mainly": 915, "zone": 916, "split": 917, "major": 918, "commerce": 919, "beige": 920, "casting": 921, "billboard": 922, "community": 923, "sections": 924, "gardens": 925, "consist": 926, "sector": 927, "spot": 928, "convenient": 929, "territory": 930, "much": 931, "everywhere": 932, "bed": 933, "sharp": 934, "towering": 935, "villa": 936, "4th": 937, "encircle": 938, "serious": 939, "jams": 940, "nas": 941, "files": 942, "constitute": 943, "marked": 944, "range": 945, "organized": 946, "apart": 947, "compactly": 948, "wood": 949, "distribute": 950, "colours": 951, "pastures": 952, "aligned": 953, "cover": 954, "housing": 955, "shades": 956, "divids": 957, "crooked": 958, "oblique": 959, "came": 960, "rate": 961, "greening": 962, "growth": 963, "mostly": 964, "regularly": 965, "luxury": 966, "extending": 967, "never": 968, "stops": 969, "leisure": 970, "file": 971, "rooftop": 972, "village": 973, "trains": 974, "winds": 975, "homes": 976, "bem": 977, "tight": 978, "extend": 979, "arched": 980, "tem": 981, "agricultural": 982, "concrete": 983, "settled": 984, "tidy": 985, "angle": 986, "arrangement": 987, "past": 988, "regions": 989, "desolate": 990, "wrinkles": 991, "wrinkled": 992, "deserted": 993, "ca": 994, "n't": 995, "anything": 996, "oasis": 997, "deserts": 998, "cracks": 999, "scale": 1000, "dried": 1001, "figure": 1002, "stains": 1003, "layered": 1004, "pellets": 1005, "consistency": 1006, "visible": 1007, "grove": 1008, "curly": 1009, "crack": 1010, "spots": 1011, "roots": 1012, "tortuous": 1013, "thousands": 1014, "pile": 1015, "dusty": 1016, "arid": 1017, "boundless": 1018, "prairie": 1019, "endless": 1020, "resources": 1021, "nua": 1022, "scene": 1023, "dividing": 1024, "layer": 1025, "peaks": 1026, "band": 1027, "brook": 1028, "outline": 1029, "creamy": 1030, "cream": 1031, "pits": 1032, "snow": 1033, "complex": 1034, "textures": 1035, "petal": 1036, "colour": 1037, "rain": 1038, "really": 1039, "air": 1040, "fold": 1041, "wind": 1042, "gap": 1043, "looking": 1044, "steep": 1045, "turn": 1046, "dead": 1047, "trail": 1048, "alternating": 1049, "sidewalks": 1050, "farms": 1051, "coloured": 1052, "grown": 1053, "cultivated": 1054, "paddy": 1055, "rest": 1056, "ridge": 1057, "ridges": 1058, "landes": 1059, "mud": 1060, "depths": 1061, "crop": 1062, "loose": 1063, "checkered": 1064, "data": 1065, "points": 1066, "wheat": 1067, "leading": 1068, "luxurious": 1069, "uncultivated": 1070, "b": 1071, "forked": 1072, "bald": 1073, "polygons": 1074, "wooded": 1075, "town": 1076, "ramp": 1077, "nest": 1078, "clouds": 1079, "bush": 1080, "unusual": 1081, "families": 1082, "ranch": 1083, "landscape": 1084, "rich": 1085, "hut": 1086, "spring": 1087, "bottle": 1088, "footpath": 1089, "birds": 1090, "grandma": 1091, "flourishing": 1092, "ranges": 1093, "coverage": 1094, "clearly": 1095, "time": 1096, "twisted": 1097, "unpaved": 1098, "altitude": 1099, "tent": 1100, "zones": 1101, "tents": 1102, "v-shaped": 1103, "direction": 1104, "painted": 1105, "withered": 1106, "peak": 1107, "bud": 1108, "cloud": 1109, "shed": 1110, "laid": 1111, "industry": 1112, "workshops": 1113, "group": 1114, "workshop": 1115, "warehouse": 1116, "warehouses": 1117, "container": 1118, "containers": 1119, "paved": 1120, "betweeen": 1121, "barley": 1122, "cylinders": 1123, "basin": 1124, "modern": 1125, "nude": 1126, "belong": 1127, "tank": 1128, "rio": 1129, "whose": 1130, "overpasses": 1131, "valleys": 1132, "lively": 1133, "system": 1134, "pots": 1135, "cans": 1136, "gradually": 1137, "due": 1138, "problems": 1139, "turf": 1140, "prado": 1141, "perpendicular": 1142, "slightly": 1143, "worn": 1144, "boxes": 1145, "decorating": 1146, "bird": 1147, "folds": 1148, "sprouted": 1149, "yet": 1150, "loess": 1151, "fertile": 1152, "medium-sized": 1153, "hidden": 1154, "situated": 1155, "peaceful": 1156, "ten": 1157, "cottage": 1158, "cabins": 1159, "cottages": 1160, "smart": 1161, "residents": 1162, "walls": 1163, "u-shaped": 1164, "entertainment": 1165, "recreation": 1166, "independent": 1167, "still": 1168, "environment": 1169, "sidewalk": 1170, "venues": 1171, "forks": 1172, "leads": 1173, "rolling": 1174, "corrugated": 1175, "terraces": 1176, "eyes": 1177, "snows": 1178, "covering": 1179, "mountainous": 1180, "foot": 1181, "greek": 1182, "heart-shaped": 1183, "artificial": 1184, "lagoon": 1185, "ferris": 1186, "theme": 1187, "interesting": 1188, "outdoor": 1189, "interlaced": 1190, "equipped": 1191, "equipment": 1192, "children": 1193, "one-way": 1194, "seats": 1195, "position": 1196, "crammed": 1197, "hundreds": 1198, "asphalt": 1199, "spacious": 1200, "median": 1201, "ceilings": 1202, "pulled": 1203, "enter": 1204, "manner": 1205, "lost": 1206, "4": 1207, "vehicle": 1208, "platform": 1209, "goal": 1210, "crimson": 1211, "footballground": 1212, "game": 1213, "teaching": 1214, "educational": 1215, "jim": 1216, "twelve": 1217, "lead": 1218, "guys": 1219, "cemnet": 1220, "plastic": 1221, "intelligent": 1222, "hockey": 1223, "base": 1224, "south": 1225, "fica": 1226, "steps": 1227, "barefoot": 1228, "sky": 1229, "image": 1230, "fog": 1231, "mist": 1232, "diamonds": 1233, "combined": 1234, "spindle": 1235, "fountain": 1236, "stars": 1237, "takes": 1238, "l-shaped": 1239, "2": 1240, "ellipses": 1241, "ports": 1242, "harbour": 1243, "pier": 1244, "quality": 1245, "reach": 1246, "docking": 1247, "seawall": 1248, "basins": 1249, "sailboats": 1250, "regulated": 1251, "leave": 1252, "stations": 1253, "rail": 1254, "railroad": 1255, "facility": 1256, "spindle-shaped": 1257, "satellite": 1258, "awnings": 1259, "awning": 1260, "high-speed": 1261, "belongs": 1262, "subway": 1263, "gray-roofed": 1264, "garage": 1265, "guide": 1266, "transportation": 1267, "resorts": 1268, "tropical": 1269, "tourist": 1270, "ahead": 1271, "holiday": 1272, "chairs": 1273, "s-shaped": 1274, "palm": 1275, "roundabout": 1276, "herringbone": 1277, "rainforest": 1278, "wetlands": 1279, "flowed": 1280, "join": 1281, "saddle-shaped": 1282, "greenbelts": 1283, "cake": 1284, "campus": 1285, "northeast": 1286, "countless": 1287, "painting": 1288, "university": 1289, "northwest": 1290, "well-equipped": 1291, "students": 1292, "carefully": 1293, "c-shaped": 1294, "auditorium": 1295, "hot": 1296, "private": 1297, "photo": 1298, "beds": 1299, "hall": 1300, "monument": 1301, "lantern": 1302, "bell": 1303, "x-shaped": 1304, "hold": 1305, "tens": 1306, "new": 1307, "tripods": 1308, "stalls": 1309, "blearchers": 1310, "pipe": 1311, "storagetanks": 1312, "pipelines": 1313, "drums": 1314, "pipes": 1315, "reservoir": 1316, "identical": 1317, "pallets": 1318, "nine": 1319, "trays": 1320, "storerooms": 1321, "barrelan": 1322, "june": 1323, "columnar": 1324, "tanker": 1325, "loaded": 1326, "treatment": 1327, "jars": 1328, "refinery": 1329, "tankers": 1330, "storing": 1331, "jar": 1332, "bicycles": 1333, "barrels": 1334, "shrinking": 1335, "loops": 1336, "auxiliary": 1337, "eight-shaped": 1338, "flyovers": 1339, "ramps": 1340, "three-dimensional": 1341, "brush": 1342, "nested": 1343, "luggage": 1344, "turfs": 1345, "bunkers": 1346, "extremely": 1347, "20": 1348, "": 1349}, "idx2word": {"1": "baseball", "2": "field", "3": "beside", "4": "green", "5": "amusement", "6": "park", "7": "around", "8": "red", "9": "track", "10": "adjacent", "11": "playground", "12": "square", "13": "long", "14": "path", "15": "next", "16": "runway", "17": "two", "18": "white", "19": "houses", "20": "located", "21": "middle", "22": "lawn", "23": "fields", "24": "different", "25": "sizes", "26": "stadium", "27": "stand", "28": "big", "29": "side-by-side", "30": "road", "31": "side", "32": "football", "33": "passes", "34": "gray", "35": "bare", "36": "soil", "37": "close", "38": "alongside", "39": "piece", "40": "land", "41": "separates", "42": "house", "43": "separating", "44": "octagonal", "45": "buildings", "46": "colors", "47": "building", "48": "parking", "49": "lot", "50": "full", "51": "cars", "52": "tennis", "53": "courts", "54": "grey", "55": "roadside", "56": "one", "57": "intersection", "58": "roads", "59": "crossed", "60": "highway", "61": "parallel", "62": "pass", "63": "streets", "64": "lined", "65": "trees", "66": "empty", "67": "sides", "68": "lots", "69": "deep", "70": "black", "71": "river", "72": "blue", "73": "factory", "74": "boats", "75": "moored", "76": "many", "77": "parked", "78": "bank", "79": "three", "80": "anchored", "81": "respectively", "82": "turquoise", "83": "ships", "84": "area", "85": "goods", "86": "boat", "87": "quietly", "88": "thin", "89": "bridge", "90": "sail", "91": "dark", "92": "sea", "93": "harbor", "94": "small", "95": "floating", "96": "port", "97": "floated", "98": "ship", "99": "near", "100": "dock", "101": "yellow", "102": "lay", "103": "across", "104": "crossroads", "105": "sailed", "106": "fast", "107": "calm", "108": "sailing", "109": "deck", "110": "purple", "111": "dry", "112": "cargo", "113": "striped", "114": "coast", "115": "stripes", "116": "shore", "117": "water", "118": "either", "119": "car", "120": "left", "121": "wave", "122": "heihe", "123": "pools", "124": "swimming", "125": "opposite", "126": "facing", "127": "moving", "128": "colorful", "129": "board", "130": "belt", "131": "curved", "132": "crosses", "133": "directly", "134": "make", "135": "way", "136": "residential", "137": "crossing", "138": "intersects", "139": "areas", "140": "plant", "141": "belts", "142": "rivers", "143": "surrounded", "144": "densely", "145": "populated", "146": "decorated", "147": "hand", "148": "open", "149": "grassland", "150": "high-rise", "151": "grass", "152": "skyscrapers", "153": "sits", "154": "tall", "155": "ellipse", "156": "shapes", "157": "oval", "158": "built", "159": "kind", "160": "light", "161": "bifurcation", "162": "street", "163": "train", "164": "railway", "165": "directions", "166": "tracks", "167": "planes", "168": "plane", "169": "large", "170": "crowded", "171": "separated", "172": "jagged", "173": "zigzag", "174": "lying", "175": "vehicles", "176": "airport", "177": "ground", "178": "stopped", "179": "dust", "180": "five", "181": "docked", "182": "sparkling", "183": "face", "184": "rectangular", "185": "together", "186": "line", "187": "several", "188": "edge", "189": "playgrounds", "190": "six", "191": "table", "192": "balls", "193": "semicircular", "194": "orange", "195": "dense", "196": "forest", "197": "thick", "198": "connected", "199": "lake", "200": "pond", "201": "lush", "202": "tree", "203": "connects", "204": "court", "205": "vacant", "206": "paths", "207": "expanse", "208": "run", "209": "runways", "210": "door", "211": "winding", "212": "covered", "213": "shaded", "214": "ponds", "215": "brown", "216": "spectators", "217": "spectator", "218": "audience", "219": "quite", "220": "lawns", "221": "divide", "222": "stood", "223": "four", "224": "bareland", "225": "leans", "226": "surround", "227": "front", "228": "terminal", "229": "others", "230": "besides", "231": "sparse", "232": "meadow", "233": "lines", "234": "inside", "235": "plants", "236": "neat", "237": "arranged", "238": "round", "239": "church", "240": "sit", "241": "aeroplanes", "242": "apron", "243": "flight", "244": "ploygon", "245": "main", "246": "netlike", "247": "cross", "248": "polygonal", "249": "passenger", "250": "termial", "251": "strip", "252": "shaped", "253": "viaducts", "254": "narrow", "255": "star", "256": "like", "257": "boomerang", "258": "aircraft", "259": "corner", "260": "take", "261": "running", "262": "seven", "263": "tarmac", "264": "boarding", "265": "gate", "266": "landside", "267": "airside", "268": "aircrafts", "269": "tarmacs", "270": "grassy", "271": "waiting", "272": "straight", "273": "standing", "274": "bar", "275": "airstrip", "276": "terminals", "277": "airplanes", "278": "circular", "279": "stretch", "280": "sparsely", "281": "rounded", "282": "rectangle", "283": "surrounds", "284": "radial", "285": "symmetrical", "286": "triangle", "287": "curve", "288": "seated", "289": "wasteland", "290": "polygon", "291": "irregular", "292": "paralleled", "293": "sandwiched", "294": "orderly", "295": "majestic", "296": "surrounding", "297": "arc", "298": "ways", "299": "pieces", "300": "meadows", "301": "strips", "302": "neatly", "303": "trapezoid", "304": "divided", "305": "outside", "306": "complicated", "307": "towers", "308": "cut", "309": "scattered", "310": "airplane", "311": "lamp", "312": "eight", "313": "sitting", "314": "pale", "315": "pure", "316": "y-shaped", "317": "berthing", "318": "conspicuous", "319": "beautiful", "320": "stands", "321": "especially", "322": "packed", "323": "silver", "324": "passed", "325": "wide", "326": "dozens", "327": "e-shaped", "328": "number", "329": "plain", "330": "seen", "331": "station", "332": "t-shaped", "333": "room", "334": "appeared", "335": "fragmented", "336": "terrain", "337": "nothing", "338": "stop", "339": "tower", "340": "blocks", "341": "composed", "342": "ball", "343": "u", "344": "smaller", "345": "single", "346": "farmland", "347": "simple", "348": "along", "349": "order", "350": "taxiing", "351": "rows", "352": "parts", "353": "corners", "354": "squared", "355": "stayed", "356": "nearby", "357": "traverse", "358": "contains", "359": "including", "360": "circle", "361": "ring", "362": "consists", "363": "arc-shaped", "364": "rectangles", "365": "separate", "366": "see", "367": "squares", "368": "wild", "369": "aprons", "370": "bright", "371": "block", "372": "facilities", "373": "complete", "374": "industrial", "375": "people", "376": "flat", "377": "spaces", "378": "huge", "379": "vast", "380": "without", "381": "reddish", "382": "meet", "383": "reddish-brown", "384": "obvious", "385": "marks", "386": "floor", "387": "tract", "388": "traces", "389": "clay", "390": "truck", "391": "driving", "392": "hill", "393": "mark", "394": "vegetation", "395": "khaki", "396": "'s", "397": "work", "398": "space", "399": "sand", "400": "leaking", "401": "looks", "402": "uneven", "403": "planted", "404": "surface", "405": "rugged", "406": "intersect", "407": "vertically", "408": "courtyard", "409": "patch", "410": "shape", "411": "interspersed", "412": "messy", "413": "undulating", "414": "wavy", "415": "sandy", "416": "dotted", "417": "bleak", "418": "dirt", "419": "desert", "420": "stretches", "421": "greenland", "422": "coner", "423": "form", "424": "rough", "425": "formed", "426": "fork", "427": "lie", "428": "traverses", "429": "shallow", "430": "clear", "431": "stripe", "432": "go", "433": "alleys", "434": "runs", "435": "earth", "436": "weeds", "437": "growing", "438": "waste", "439": "broken", "440": "stone", "441": "wheel", "442": "naked", "443": "country", "444": "place", "445": "grows", "446": "amount", "447": "roofs", "448": "kinds", "449": "thing", "450": "things", "451": "part", "452": "irregularly", "453": "blended", "454": "littered", "455": "dots", "456": "half", "457": "rock", "458": "hills", "459": "patterns", "460": "pattern", "461": "lands", "462": "use", "463": "wheels", "464": "holes", "465": "also", "466": "tree-lined", "467": "family", "468": "trucks", "469": "behind", "470": "barren", "471": "flowing", "472": "hillside", "473": "slope", "474": "center", "475": "forming", "476": "flower", "477": "luxuriant", "478": "flowers", "479": "row", "480": "top", "481": "view", "482": "gymnasium", "483": "circles", "484": "quarter", "485": "stadiums", "486": "fan-shaped", "487": "lakes", "488": "silvery", "489": "golf", "490": "course", "491": "filled", "492": "clean", "493": "places", "494": "enough", "495": "smooth", "496": "met", "497": "triangular", "498": "faces", "499": "perfect", "500": "rooms", "501": "players", "502": "lane", "503": "freeway", "504": "baseballfield", "505": "red-roofed", "506": "semi-surrounded", "507": "fan", "508": "fanshaped", "509": "reflections", "510": "distributed", "511": "occupies", "512": "pentagonal", "513": "basketball", "514": "forms", "515": "semicircle", "516": "baseballfields", "517": "another", "518": "sports", "519": "size", "520": "back", "521": "soccer", "522": "pitch", "523": "pitches", "524": "neighborhood", "525": "sized", "526": "highways", "527": "woods", "528": "vertical", "529": "routes", "530": "flanked", "531": "among", "532": "iron", "533": "solar", "534": "pool", "535": "grounds", "536": "bleachers", "537": "enclosed", "538": "coconut", "539": "edges", "540": "used", "541": "reflection", "542": "pentagon", "543": "devided", "544": "residence", "545": "lies", "546": "texture", "547": "items", "548": "addition", "549": "waves", "550": "ocean", "551": "beach", "552": "rocks", "553": "beat", "554": "saw", "555": "spectacular", "556": "magnificent", "557": "surging", "558": "spray", "559": "emerald", "560": "curves", "561": "oceans", "562": "float", "563": "patches", "564": "gradient", "565": "seems", "566": "color", "567": "prosperous", "568": "resort", "569": "thriving", "570": "fishing", "571": "ripples", "572": "look", "573": "forests", "574": "beaches", "575": "hit", "576": "picture", "577": "island", "578": "islands", "579": "quiet", "580": "high", "581": "blue-green", "582": "tourists", "583": "scenery", "584": "rocky", "585": "sands", "586": "right", "587": "dunes", "588": "soft", "589": "grasslands", "590": "grow", "591": "stones", "592": "series", "593": "coastline", "594": "dirty", "595": "waters", "596": "wet", "597": "rushed", "598": "city", "599": "layers", "600": "patting", "601": "wharf", "602": "living", "603": "mountain", "604": "short", "605": "boundary", "606": "thr", "607": "jungle", "608": "stained", "609": "dam", "610": "gently", "611": "ribbon", "612": "jade", "613": "ribbons", "614": "objects", "615": "meets", "616": "integrated", "617": "playing", "618": "play", "619": "sunshine", "620": "seaside", "621": "sun", "622": "connect", "623": "reaches", "624": "towards", "625": "golden", "626": "little", "627": "fish", "628": "found", "629": "yellowish", "630": "cyan", "631": "seas", "632": "umbrellas", "633": "yachts", "634": "better", "635": "stretching", "636": "extends", "637": "roofed", "638": "roof", "639": "shadows", "640": "shade", "641": "structure", "642": "scales", "643": "mountains", "644": "plots", "645": "groves", "646": "bottom", "647": "bridges", "648": "banks", "649": "flows", "650": "two-way", "651": "steel", "652": "made", "653": "spans", "654": "six-lane", "655": "frame", "656": "lanes", "657": "span", "658": "partially", "659": "types", "660": "broad", "661": "cast", "662": "shadow", "663": "muddy", "664": "similar", "665": "two-lane", "666": "turns", "667": "joins", "668": "crisscrossed", "669": "end", "670": "factories", "671": "bus", "672": "branches", "673": "traffic", "674": "yacht", "675": "decorations", "676": "pedestrians", "677": "various", "678": "spanning", "679": "connecting", "680": "valley", "681": "ones", "682": "plenty", "683": "bridege", "684": "suspension", "685": "tributary", "686": "cable", "687": "arch", "688": "divides", "689": "double", "690": "cities", "691": "farmlands", "692": "tiny", "693": "stopping", "694": "walking", "695": "bustling", "696": "low", "697": "saddle", "698": "confluence", "699": "turbid", "700": "goes", "701": "passing", "702": "traveling", "703": "cement", "704": "partly", "705": "riverbank", "706": "docks", "707": "non-parallel", "708": "slender", "709": "come", "710": "slowed", "711": "tanks", "712": "oil", "713": "intersections", "714": "villas", "715": "twists", "716": "reservoirs", "717": "storage", "718": "canal", "719": "wilderness", "720": "farm", "721": "arches", "722": "turning", "723": "villages", "724": "seperated", "725": "automobiles", "726": "tributaries", "727": "towns", "728": "diagonal", "729": "barelands", "730": "set", "731": "eyot", "732": "urban", "733": "ran", "734": "expressway", "735": "cruising", "736": "designed", "737": "design", "738": "conference", "739": "arcs", "740": "floors", "741": "convention", "742": "bend", "743": "tightly", "744": "centers", "745": "shell", "746": "intersecting", "747": "parks", "748": "wonderful", "749": "semi-circular", "750": "intensive", "751": "almost", "752": "crops", "753": "entrance", "754": "unique", "755": "central", "756": "away", "757": "memory", "758": "shows", "759": "concentric", "760": "public", "761": "plaza", "762": "trapezoidal", "763": "quadrilateral", "764": "leaf", "765": "eye", "766": "regular", "767": "hexagonal", "768": "rings", "769": "loop", "770": "hexagon", "771": "grid", "772": "lace", "773": "spherical", "774": "bowl", "775": "flyover", "776": "metal", "777": "esthetic", "778": "aesthetic", "779": "chess", "780": "silver-gray", "781": "nearly", "782": "incomplete", "783": "strange", "784": "grand", "785": "whole", "786": "vivid", "787": "gym", "788": "honeycomb", "789": "site", "790": "camp", "791": "pyramid", "792": "elliptical", "793": "construction", "794": "conical", "795": "glass", "796": "bushes", "797": "railways", "798": "placed", "799": "well", "800": "include", "801": "leaves", "802": "busy", "803": "layout", "804": "distribution", "805": "architectural", "806": "owns", "807": "centre", "808": "variety", "809": "region", "810": "styles", "811": "pink", "812": "moss", "813": "cathedral", "814": "great", "815": "dome", "816": "churches", "817": "spread", "818": "yard", "819": "properly", "820": "ordered", "821": "closed", "822": "semi", "823": "heart", "824": "mint", "825": "gree", "826": "pasture", "827": "every", "828": "includes", "829": "bricks", "830": "wooden", "831": "brick", "832": "garden", "833": "neighborhoods", "834": "junction", "835": "t-junction", "836": "old", "837": "flats", "838": "columns", "839": "cone", "840": "domes", "841": "sloping", "842": "cylindrical", "843": "structures", "844": "column", "845": "apartments", "846": "cruciform", "847": "redor", "848": "closely", "849": "linked", "850": "good", "851": "density", "852": "architecture", "853": "colored", "854": "bit", "855": "fine", "856": "umbrella", "857": "consisting", "858": "quadrangle", "859": "gathered", "860": "alley", "861": "wall", "862": "diamond", "863": "covers", "864": "blu", "865": "e", "866": "ceiling", "867": "flow", "868": "stream", "869": "mirror", "870": "reflected", "871": "bunch", "872": "average", "873": "rather", "874": "shrubs", "875": "nice", "876": "bent", "877": "commercial", "878": "business", "879": "district", "880": "concentrated", "881": "office", "882": "districts", "883": "downtown", "884": "well-organized", "885": "shopping", "886": "mixed", "887": "evergreen", "888": "numerous", "889": "home", "890": "section", "891": "viaduct", "892": "rare", "893": "travel", "894": "drive", "895": "skyscraper", "896": "ordinary", "897": "advertisements", "898": "compact", "899": "advertisement", "900": "rise", "901": "school", "902": "medium", "903": "apartment", "904": "edifices", "905": "height", "906": "overpass", "907": "relatively", "908": "standard", "909": "vary", "910": "distance", "911": "economic", "912": "developed", "913": "schools", "914": "mall", "915": "mainly", "916": "zone", "917": "split", "918": "major", "919": "commerce", "920": "beige", "921": "casting", "922": "billboard", "923": "community", "924": "sections", "925": "gardens", "926": "consist", "927": "sector", "928": "spot", "929": "convenient", "930": "territory", "931": "much", "932": "everywhere", "933": "bed", "934": "sharp", "935": "towering", "936": "villa", "937": "4th", "938": "encircle", "939": "serious", "940": "jams", "941": "nas", "942": "files", "943": "constitute", "944": "marked", "945": "range", "946": "organized", "947": "apart", "948": "compactly", "949": "wood", "950": "distribute", "951": "colours", "952": "pastures", "953": "aligned", "954": "cover", "955": "housing", "956": "shades", "957": "divids", "958": "crooked", "959": "oblique", "960": "came", "961": "rate", "962": "greening", "963": "growth", "964": "mostly", "965": "regularly", "966": "luxury", "967": "extending", "968": "never", "969": "stops", "970": "leisure", "971": "file", "972": "rooftop", "973": "village", "974": "trains", "975": "winds", "976": "homes", "977": "bem", "978": "tight", "979": "extend", "980": "arched", "981": "tem", "982": "agricultural", "983": "concrete", "984": "settled", "985": "tidy", "986": "angle", "987": "arrangement", "988": "past", "989": "regions", "990": "desolate", "991": "wrinkles", "992": "wrinkled", "993": "deserted", "994": "ca", "995": "n't", "996": "anything", "997": "oasis", "998": "deserts", "999": "cracks", "1000": "scale", "1001": "dried", "1002": "figure", "1003": "stains", "1004": "layered", "1005": "pellets", "1006": "consistency", "1007": "visible", "1008": "grove", "1009": "curly", "1010": "crack", "1011": "spots", "1012": "roots", "1013": "tortuous", "1014": "thousands", "1015": "pile", "1016": "dusty", "1017": "arid", "1018": "boundless", "1019": "prairie", "1020": "endless", "1021": "resources", "1022": "nua", "1023": "scene", "1024": "dividing", "1025": "layer", "1026": "peaks", "1027": "band", "1028": "brook", "1029": "outline", "1030": "creamy", "1031": "cream", "1032": "pits", "1033": "snow", "1034": "complex", "1035": "textures", "1036": "petal", "1037": "colour", "1038": "rain", "1039": "really", "1040": "air", "1041": "fold", "1042": "wind", "1043": "gap", "1044": "looking", "1045": "steep", "1046": "turn", "1047": "dead", "1048": "trail", "1049": "alternating", "1050": "sidewalks", "1051": "farms", "1052": "coloured", "1053": "grown", "1054": "cultivated", "1055": "paddy", "1056": "rest", "1057": "ridge", "1058": "ridges", "1059": "landes", "1060": "mud", "1061": "depths", "1062": "crop", "1063": "loose", "1064": "checkered", "1065": "data", "1066": "points", "1067": "wheat", "1068": "leading", "1069": "luxurious", "1070": "uncultivated", "1071": "b", "1072": "forked", "1073": "bald", "1074": "polygons", "1075": "wooded", "1076": "town", "1077": "ramp", "1078": "nest", "1079": "clouds", "1080": "bush", "1081": "unusual", "1082": "families", "1083": "ranch", "1084": "landscape", "1085": "rich", "1086": "hut", "1087": "spring", "1088": "bottle", "1089": "footpath", "1090": "birds", "1091": "grandma", "1092": "flourishing", "1093": "ranges", "1094": "coverage", "1095": "clearly", "1096": "time", "1097": "twisted", "1098": "unpaved", "1099": "altitude", "1100": "tent", "1101": "zones", "1102": "tents", "1103": "v-shaped", "1104": "direction", "1105": "painted", "1106": "withered", "1107": "peak", "1108": "bud", "1109": "cloud", "1110": "shed", "1111": "laid", "1112": "industry", "1113": "workshops", "1114": "group", "1115": "workshop", "1116": "warehouse", "1117": "warehouses", "1118": "container", "1119": "containers", "1120": "paved", "1121": "betweeen", "1122": "barley", "1123": "cylinders", "1124": "basin", "1125": "modern", "1126": "nude", "1127": "belong", "1128": "tank", "1129": "rio", "1130": "whose", "1131": "overpasses", "1132": "valleys", "1133": "lively", "1134": "system", "1135": "pots", "1136": "cans", "1137": "gradually", "1138": "due", "1139": "problems", "1140": "turf", "1141": "prado", "1142": "perpendicular", "1143": "slightly", "1144": "worn", "1145": "boxes", "1146": "decorating", "1147": "bird", "1148": "folds", "1149": "sprouted", "1150": "yet", "1151": "loess", "1152": "fertile", "1153": "medium-sized", "1154": "hidden", "1155": "situated", "1156": "peaceful", "1157": "ten", "1158": "cottage", "1159": "cabins", "1160": "cottages", "1161": "smart", "1162": "residents", "1163": "walls", "1164": "u-shaped", "1165": "entertainment", "1166": "recreation", "1167": "independent", "1168": "still", "1169": "environment", "1170": "sidewalk", "1171": "venues", "1172": "forks", "1173": "leads", "1174": "rolling", "1175": "corrugated", "1176": "terraces", "1177": "eyes", "1178": "snows", "1179": "covering", "1180": "mountainous", "1181": "foot", "1182": "greek", "1183": "heart-shaped", "1184": "artificial", "1185": "lagoon", "1186": "ferris", "1187": "theme", "1188": "interesting", "1189": "outdoor", "1190": "interlaced", "1191": "equipped", "1192": "equipment", "1193": "children", "1194": "one-way", "1195": "seats", "1196": "position", "1197": "crammed", "1198": "hundreds", "1199": "asphalt", "1200": "spacious", "1201": "median", "1202": "ceilings", "1203": "pulled", "1204": "enter", "1205": "manner", "1206": "lost", "1207": "4", "1208": "vehicle", "1209": "platform", "1210": "goal", "1211": "crimson", "1212": "footballground", "1213": "game", "1214": "teaching", "1215": "educational", "1216": "jim", "1217": "twelve", "1218": "lead", "1219": "guys", "1220": "cemnet", "1221": "plastic", "1222": "intelligent", "1223": "hockey", "1224": "base", "1225": "south", "1226": "fica", "1227": "steps", "1228": "barefoot", "1229": "sky", "1230": "image", "1231": "fog", "1232": "mist", "1233": "diamonds", "1234": "combined", "1235": "spindle", "1236": "fountain", "1237": "stars", "1238": "takes", "1239": "l-shaped", "1240": "2", "1241": "ellipses", "1242": "ports", "1243": "harbour", "1244": "pier", "1245": "quality", "1246": "reach", "1247": "docking", "1248": "seawall", "1249": "basins", "1250": "sailboats", "1251": "regulated", "1252": "leave", "1253": "stations", "1254": "rail", "1255": "railroad", "1256": "facility", "1257": "spindle-shaped", "1258": "satellite", "1259": "awnings", "1260": "awning", "1261": "high-speed", "1262": "belongs", "1263": "subway", "1264": "gray-roofed", "1265": "garage", "1266": "guide", "1267": "transportation", "1268": "resorts", "1269": "tropical", "1270": "tourist", "1271": "ahead", "1272": "holiday", "1273": "chairs", "1274": "s-shaped", "1275": "palm", "1276": "roundabout", "1277": "herringbone", "1278": "rainforest", "1279": "wetlands", "1280": "flowed", "1281": "join", "1282": "saddle-shaped", "1283": "greenbelts", "1284": "cake", "1285": "campus", "1286": "northeast", "1287": "countless", "1288": "painting", "1289": "university", "1290": "northwest", "1291": "well-equipped", "1292": "students", "1293": "carefully", "1294": "c-shaped", "1295": "auditorium", "1296": "hot", "1297": "private", "1298": "photo", "1299": "beds", "1300": "hall", "1301": "monument", "1302": "lantern", "1303": "bell", "1304": "x-shaped", "1305": "hold", "1306": "tens", "1307": "new", "1308": "tripods", "1309": "stalls", "1310": "blearchers", "1311": "pipe", "1312": "storagetanks", "1313": "pipelines", "1314": "drums", "1315": "pipes", "1316": "reservoir", "1317": "identical", "1318": "pallets", "1319": "nine", "1320": "trays", "1321": "storerooms", "1322": "barrelan", "1323": "june", "1324": "columnar", "1325": "tanker", "1326": "loaded", "1327": "treatment", "1328": "jars", "1329": "refinery", "1330": "tankers", "1331": "storing", "1332": "jar", "1333": "bicycles", "1334": "barrels", "1335": "shrinking", "1336": "loops", "1337": "auxiliary", "1338": "eight-shaped", "1339": "flyovers", "1340": "ramps", "1341": "three-dimensional", "1342": "brush", "1343": "nested", "1344": "luggage", "1345": "turfs", "1346": "bunkers", "1347": "extremely", "1348": "20", "1349": ""}, "idx": 1350} -------------------------------------------------------------------------------- /data/rsitmd_raw/test_filename.txt: -------------------------------------------------------------------------------- 1 | boat_0.tif 2 | boat_0.tif 3 | boat_0.tif 4 | boat_0.tif 5 | boat_0.tif 6 | playground_1.tif 7 | playground_1.tif 8 | playground_1.tif 9 | playground_1.tif 10 | playground_1.tif 11 | airport_2.tif 12 | airport_2.tif 13 | airport_2.tif 14 | airport_2.tif 15 | airport_2.tif 16 | airport_3.tif 17 | airport_3.tif 18 | airport_3.tif 19 | airport_3.tif 20 | airport_3.tif 21 | airport_4.tif 22 | airport_4.tif 23 | airport_4.tif 24 | airport_4.tif 25 | airport_4.tif 26 | airport_5.tif 27 | airport_5.tif 28 | airport_5.tif 29 | airport_5.tif 30 | airport_5.tif 31 | airport_6.tif 32 | airport_6.tif 33 | airport_6.tif 34 | airport_6.tif 35 | airport_6.tif 36 | airport_7.tif 37 | airport_7.tif 38 | airport_7.tif 39 | airport_7.tif 40 | airport_7.tif 41 | airport_8.tif 42 | airport_8.tif 43 | airport_8.tif 44 | airport_8.tif 45 | airport_8.tif 46 | airport_9.tif 47 | airport_9.tif 48 | airport_9.tif 49 | airport_9.tif 50 | airport_9.tif 51 | airport_10.tif 52 | airport_10.tif 53 | airport_10.tif 54 | airport_10.tif 55 | airport_10.tif 56 | airport_11.tif 57 | airport_11.tif 58 | airport_11.tif 59 | airport_11.tif 60 | airport_11.tif 61 | airport_12.tif 62 | airport_12.tif 63 | airport_12.tif 64 | airport_12.tif 65 | airport_12.tif 66 | bareland_13.tif 67 | bareland_13.tif 68 | bareland_13.tif 69 | bareland_13.tif 70 | bareland_13.tif 71 | bareland_14.tif 72 | bareland_14.tif 73 | bareland_14.tif 74 | bareland_14.tif 75 | bareland_14.tif 76 | bareland_15.tif 77 | bareland_15.tif 78 | bareland_15.tif 79 | bareland_15.tif 80 | bareland_15.tif 81 | bareland_16.tif 82 | bareland_16.tif 83 | bareland_16.tif 84 | bareland_16.tif 85 | bareland_16.tif 86 | bareland_17.tif 87 | bareland_17.tif 88 | bareland_17.tif 89 | bareland_17.tif 90 | bareland_17.tif 91 | baseballfield_18.tif 92 | baseballfield_18.tif 93 | baseballfield_18.tif 94 | baseballfield_18.tif 95 | baseballfield_18.tif 96 | baseballfield_19.tif 97 | baseballfield_19.tif 98 | baseballfield_19.tif 99 | baseballfield_19.tif 100 | baseballfield_19.tif 101 | baseballfield_20.tif 102 | baseballfield_20.tif 103 | baseballfield_20.tif 104 | baseballfield_20.tif 105 | baseballfield_20.tif 106 | baseballfield_21.tif 107 | baseballfield_21.tif 108 | baseballfield_21.tif 109 | baseballfield_21.tif 110 | baseballfield_21.tif 111 | baseballfield_22.tif 112 | baseballfield_22.tif 113 | baseballfield_22.tif 114 | baseballfield_22.tif 115 | baseballfield_22.tif 116 | baseballfield_23.tif 117 | baseballfield_23.tif 118 | baseballfield_23.tif 119 | baseballfield_23.tif 120 | baseballfield_23.tif 121 | baseballfield_24.tif 122 | baseballfield_24.tif 123 | baseballfield_24.tif 124 | baseballfield_24.tif 125 | baseballfield_24.tif 126 | baseballfield_25.tif 127 | baseballfield_25.tif 128 | baseballfield_25.tif 129 | baseballfield_25.tif 130 | baseballfield_25.tif 131 | baseballfield_26.tif 132 | baseballfield_26.tif 133 | baseballfield_26.tif 134 | baseballfield_26.tif 135 | baseballfield_26.tif 136 | beach_27.tif 137 | beach_27.tif 138 | beach_27.tif 139 | beach_27.tif 140 | beach_27.tif 141 | beach_28.tif 142 | beach_28.tif 143 | beach_28.tif 144 | beach_28.tif 145 | beach_28.tif 146 | beach_29.tif 147 | beach_29.tif 148 | beach_29.tif 149 | beach_29.tif 150 | beach_29.tif 151 | beach_30.tif 152 | beach_30.tif 153 | beach_30.tif 154 | beach_30.tif 155 | beach_30.tif 156 | beach_31.tif 157 | beach_31.tif 158 | beach_31.tif 159 | beach_31.tif 160 | beach_31.tif 161 | beach_32.tif 162 | beach_32.tif 163 | beach_32.tif 164 | beach_32.tif 165 | beach_32.tif 166 | beach_33.tif 167 | beach_33.tif 168 | beach_33.tif 169 | beach_33.tif 170 | beach_33.tif 171 | beach_34.tif 172 | beach_34.tif 173 | beach_34.tif 174 | beach_34.tif 175 | beach_34.tif 176 | beach_35.tif 177 | beach_35.tif 178 | beach_35.tif 179 | beach_35.tif 180 | beach_35.tif 181 | beach_36.tif 182 | beach_36.tif 183 | beach_36.tif 184 | beach_36.tif 185 | beach_36.tif 186 | beach_37.tif 187 | beach_37.tif 188 | beach_37.tif 189 | beach_37.tif 190 | beach_37.tif 191 | beach_38.tif 192 | beach_38.tif 193 | beach_38.tif 194 | beach_38.tif 195 | beach_38.tif 196 | beach_39.tif 197 | beach_39.tif 198 | beach_39.tif 199 | beach_39.tif 200 | beach_39.tif 201 | beach_40.tif 202 | beach_40.tif 203 | beach_40.tif 204 | beach_40.tif 205 | beach_40.tif 206 | beach_41.tif 207 | beach_41.tif 208 | beach_41.tif 209 | beach_41.tif 210 | beach_41.tif 211 | bridge_42.tif 212 | bridge_42.tif 213 | bridge_42.tif 214 | bridge_42.tif 215 | bridge_42.tif 216 | bridge_43.tif 217 | bridge_43.tif 218 | bridge_43.tif 219 | bridge_43.tif 220 | bridge_43.tif 221 | bridge_44.tif 222 | bridge_44.tif 223 | bridge_44.tif 224 | bridge_44.tif 225 | bridge_44.tif 226 | bridge_45.tif 227 | bridge_45.tif 228 | bridge_45.tif 229 | bridge_45.tif 230 | bridge_45.tif 231 | bridge_46.tif 232 | bridge_46.tif 233 | bridge_46.tif 234 | bridge_46.tif 235 | bridge_46.tif 236 | bridge_47.tif 237 | bridge_47.tif 238 | bridge_47.tif 239 | bridge_47.tif 240 | bridge_47.tif 241 | bridge_48.tif 242 | bridge_48.tif 243 | bridge_48.tif 244 | bridge_48.tif 245 | bridge_48.tif 246 | bridge_49.tif 247 | bridge_49.tif 248 | bridge_49.tif 249 | bridge_49.tif 250 | bridge_49.tif 251 | bridge_50.tif 252 | bridge_50.tif 253 | bridge_50.tif 254 | bridge_50.tif 255 | bridge_50.tif 256 | bridge_51.tif 257 | bridge_51.tif 258 | bridge_51.tif 259 | bridge_51.tif 260 | bridge_51.tif 261 | bridge_52.tif 262 | bridge_52.tif 263 | bridge_52.tif 264 | bridge_52.tif 265 | bridge_52.tif 266 | bridge_53.tif 267 | bridge_53.tif 268 | bridge_53.tif 269 | bridge_53.tif 270 | bridge_53.tif 271 | bridge_54.tif 272 | bridge_54.tif 273 | bridge_54.tif 274 | bridge_54.tif 275 | bridge_54.tif 276 | bridge_55.tif 277 | bridge_55.tif 278 | bridge_55.tif 279 | bridge_55.tif 280 | bridge_55.tif 281 | bridge_56.tif 282 | bridge_56.tif 283 | bridge_56.tif 284 | bridge_56.tif 285 | bridge_56.tif 286 | center_57.tif 287 | center_57.tif 288 | center_57.tif 289 | center_57.tif 290 | center_57.tif 291 | center_58.tif 292 | center_58.tif 293 | center_58.tif 294 | center_58.tif 295 | center_58.tif 296 | center_59.tif 297 | center_59.tif 298 | center_59.tif 299 | center_59.tif 300 | center_59.tif 301 | center_60.tif 302 | center_60.tif 303 | center_60.tif 304 | center_60.tif 305 | center_60.tif 306 | center_61.tif 307 | center_61.tif 308 | center_61.tif 309 | center_61.tif 310 | center_61.tif 311 | center_62.tif 312 | center_62.tif 313 | center_62.tif 314 | center_62.tif 315 | center_62.tif 316 | center_63.tif 317 | center_63.tif 318 | center_63.tif 319 | center_63.tif 320 | center_63.tif 321 | center_64.tif 322 | center_64.tif 323 | center_64.tif 324 | center_64.tif 325 | center_64.tif 326 | center_65.tif 327 | center_65.tif 328 | center_65.tif 329 | center_65.tif 330 | center_65.tif 331 | center_66.tif 332 | center_66.tif 333 | center_66.tif 334 | center_66.tif 335 | center_66.tif 336 | center_67.tif 337 | center_67.tif 338 | center_67.tif 339 | center_67.tif 340 | center_67.tif 341 | center_68.tif 342 | center_68.tif 343 | center_68.tif 344 | center_68.tif 345 | center_68.tif 346 | center_69.tif 347 | center_69.tif 348 | center_69.tif 349 | center_69.tif 350 | center_69.tif 351 | center_70.tif 352 | center_70.tif 353 | center_70.tif 354 | center_70.tif 355 | center_70.tif 356 | church_71.tif 357 | church_71.tif 358 | church_71.tif 359 | church_71.tif 360 | church_71.tif 361 | church_72.tif 362 | church_72.tif 363 | church_72.tif 364 | church_72.tif 365 | church_72.tif 366 | church_73.tif 367 | church_73.tif 368 | church_73.tif 369 | church_73.tif 370 | church_73.tif 371 | church_74.tif 372 | church_74.tif 373 | church_74.tif 374 | church_74.tif 375 | church_74.tif 376 | church_75.tif 377 | church_75.tif 378 | church_75.tif 379 | church_75.tif 380 | church_75.tif 381 | church_76.tif 382 | church_76.tif 383 | church_76.tif 384 | church_76.tif 385 | church_76.tif 386 | church_77.tif 387 | church_77.tif 388 | church_77.tif 389 | church_77.tif 390 | church_77.tif 391 | church_78.tif 392 | church_78.tif 393 | church_78.tif 394 | church_78.tif 395 | church_78.tif 396 | church_79.tif 397 | church_79.tif 398 | church_79.tif 399 | church_79.tif 400 | church_79.tif 401 | church_80.tif 402 | church_80.tif 403 | church_80.tif 404 | church_80.tif 405 | church_80.tif 406 | church_81.tif 407 | church_81.tif 408 | church_81.tif 409 | church_81.tif 410 | church_81.tif 411 | church_82.tif 412 | church_82.tif 413 | church_82.tif 414 | church_82.tif 415 | church_82.tif 416 | church_83.tif 417 | church_83.tif 418 | church_83.tif 419 | church_83.tif 420 | church_83.tif 421 | commercial_84.tif 422 | commercial_84.tif 423 | commercial_84.tif 424 | commercial_84.tif 425 | commercial_84.tif 426 | commercial_85.tif 427 | commercial_85.tif 428 | commercial_85.tif 429 | commercial_85.tif 430 | commercial_85.tif 431 | commercial_86.tif 432 | commercial_86.tif 433 | commercial_86.tif 434 | commercial_86.tif 435 | commercial_86.tif 436 | commercial_87.tif 437 | commercial_87.tif 438 | commercial_87.tif 439 | commercial_87.tif 440 | commercial_87.tif 441 | commercial_88.tif 442 | commercial_88.tif 443 | commercial_88.tif 444 | commercial_88.tif 445 | commercial_88.tif 446 | commercial_89.tif 447 | commercial_89.tif 448 | commercial_89.tif 449 | commercial_89.tif 450 | commercial_89.tif 451 | commercial_90.tif 452 | commercial_90.tif 453 | commercial_90.tif 454 | commercial_90.tif 455 | commercial_90.tif 456 | commercial_91.tif 457 | commercial_91.tif 458 | commercial_91.tif 459 | commercial_91.tif 460 | commercial_91.tif 461 | commercial_92.tif 462 | commercial_92.tif 463 | commercial_92.tif 464 | commercial_92.tif 465 | commercial_92.tif 466 | commercial_93.tif 467 | commercial_93.tif 468 | commercial_93.tif 469 | commercial_93.tif 470 | commercial_93.tif 471 | commercial_94.tif 472 | commercial_94.tif 473 | commercial_94.tif 474 | commercial_94.tif 475 | commercial_94.tif 476 | commercial_95.tif 477 | commercial_95.tif 478 | commercial_95.tif 479 | commercial_95.tif 480 | commercial_95.tif 481 | commercial_96.tif 482 | commercial_96.tif 483 | commercial_96.tif 484 | commercial_96.tif 485 | commercial_96.tif 486 | commercial_97.tif 487 | commercial_97.tif 488 | commercial_97.tif 489 | commercial_97.tif 490 | commercial_97.tif 491 | denseresidential_98.tif 492 | denseresidential_98.tif 493 | denseresidential_98.tif 494 | denseresidential_98.tif 495 | denseresidential_98.tif 496 | denseresidential_99.tif 497 | denseresidential_99.tif 498 | denseresidential_99.tif 499 | denseresidential_99.tif 500 | denseresidential_99.tif 501 | denseresidential_100.tif 502 | denseresidential_100.tif 503 | denseresidential_100.tif 504 | denseresidential_100.tif 505 | denseresidential_100.tif 506 | denseresidential_101.tif 507 | denseresidential_101.tif 508 | denseresidential_101.tif 509 | denseresidential_101.tif 510 | denseresidential_101.tif 511 | denseresidential_102.tif 512 | denseresidential_102.tif 513 | denseresidential_102.tif 514 | denseresidential_102.tif 515 | denseresidential_102.tif 516 | denseresidential_103.tif 517 | denseresidential_103.tif 518 | denseresidential_103.tif 519 | denseresidential_103.tif 520 | denseresidential_103.tif 521 | denseresidential_104.tif 522 | denseresidential_104.tif 523 | denseresidential_104.tif 524 | denseresidential_104.tif 525 | denseresidential_104.tif 526 | denseresidential_105.tif 527 | denseresidential_105.tif 528 | denseresidential_105.tif 529 | denseresidential_105.tif 530 | denseresidential_105.tif 531 | denseresidential_106.tif 532 | denseresidential_106.tif 533 | denseresidential_106.tif 534 | denseresidential_106.tif 535 | denseresidential_106.tif 536 | denseresidential_107.tif 537 | denseresidential_107.tif 538 | denseresidential_107.tif 539 | denseresidential_107.tif 540 | denseresidential_107.tif 541 | denseresidential_108.tif 542 | denseresidential_108.tif 543 | denseresidential_108.tif 544 | denseresidential_108.tif 545 | denseresidential_108.tif 546 | denseresidential_109.tif 547 | denseresidential_109.tif 548 | denseresidential_109.tif 549 | denseresidential_109.tif 550 | denseresidential_109.tif 551 | denseresidential_110.tif 552 | denseresidential_110.tif 553 | denseresidential_110.tif 554 | denseresidential_110.tif 555 | denseresidential_110.tif 556 | denseresidential_111.tif 557 | denseresidential_111.tif 558 | denseresidential_111.tif 559 | denseresidential_111.tif 560 | denseresidential_111.tif 561 | desert_112.tif 562 | desert_112.tif 563 | desert_112.tif 564 | desert_112.tif 565 | desert_112.tif 566 | desert_113.tif 567 | desert_113.tif 568 | desert_113.tif 569 | desert_113.tif 570 | desert_113.tif 571 | desert_114.tif 572 | desert_114.tif 573 | desert_114.tif 574 | desert_114.tif 575 | desert_114.tif 576 | desert_115.tif 577 | desert_115.tif 578 | desert_115.tif 579 | desert_115.tif 580 | desert_115.tif 581 | desert_116.tif 582 | desert_116.tif 583 | desert_116.tif 584 | desert_116.tif 585 | desert_116.tif 586 | desert_117.tif 587 | desert_117.tif 588 | desert_117.tif 589 | desert_117.tif 590 | desert_117.tif 591 | desert_118.tif 592 | desert_118.tif 593 | desert_118.tif 594 | desert_118.tif 595 | desert_118.tif 596 | desert_119.tif 597 | desert_119.tif 598 | desert_119.tif 599 | desert_119.tif 600 | desert_119.tif 601 | desert_120.tif 602 | desert_120.tif 603 | desert_120.tif 604 | desert_120.tif 605 | desert_120.tif 606 | desert_121.tif 607 | desert_121.tif 608 | desert_121.tif 609 | desert_121.tif 610 | desert_121.tif 611 | desert_122.tif 612 | desert_122.tif 613 | desert_122.tif 614 | desert_122.tif 615 | desert_122.tif 616 | desert_123.tif 617 | desert_123.tif 618 | desert_123.tif 619 | desert_123.tif 620 | desert_123.tif 621 | farmland_124.tif 622 | farmland_124.tif 623 | farmland_124.tif 624 | farmland_124.tif 625 | farmland_124.tif 626 | farmland_125.tif 627 | farmland_125.tif 628 | farmland_125.tif 629 | farmland_125.tif 630 | farmland_125.tif 631 | farmland_126.tif 632 | farmland_126.tif 633 | farmland_126.tif 634 | farmland_126.tif 635 | farmland_126.tif 636 | farmland_127.tif 637 | farmland_127.tif 638 | farmland_127.tif 639 | farmland_127.tif 640 | farmland_127.tif 641 | farmland_128.tif 642 | farmland_128.tif 643 | farmland_128.tif 644 | farmland_128.tif 645 | farmland_128.tif 646 | farmland_129.tif 647 | farmland_129.tif 648 | farmland_129.tif 649 | farmland_129.tif 650 | farmland_129.tif 651 | farmland_130.tif 652 | farmland_130.tif 653 | farmland_130.tif 654 | farmland_130.tif 655 | farmland_130.tif 656 | farmland_131.tif 657 | farmland_131.tif 658 | farmland_131.tif 659 | farmland_131.tif 660 | farmland_131.tif 661 | farmland_132.tif 662 | farmland_132.tif 663 | farmland_132.tif 664 | farmland_132.tif 665 | farmland_132.tif 666 | farmland_133.tif 667 | farmland_133.tif 668 | farmland_133.tif 669 | farmland_133.tif 670 | farmland_133.tif 671 | farmland_134.tif 672 | farmland_134.tif 673 | farmland_134.tif 674 | farmland_134.tif 675 | farmland_134.tif 676 | farmland_135.tif 677 | farmland_135.tif 678 | farmland_135.tif 679 | farmland_135.tif 680 | farmland_135.tif 681 | farmland_136.tif 682 | farmland_136.tif 683 | farmland_136.tif 684 | farmland_136.tif 685 | farmland_136.tif 686 | farmland_137.tif 687 | farmland_137.tif 688 | farmland_137.tif 689 | farmland_137.tif 690 | farmland_137.tif 691 | farmland_138.tif 692 | farmland_138.tif 693 | farmland_138.tif 694 | farmland_138.tif 695 | farmland_138.tif 696 | farmland_139.tif 697 | farmland_139.tif 698 | farmland_139.tif 699 | farmland_139.tif 700 | farmland_139.tif 701 | farmland_140.tif 702 | farmland_140.tif 703 | farmland_140.tif 704 | farmland_140.tif 705 | farmland_140.tif 706 | forest_141.tif 707 | forest_141.tif 708 | forest_141.tif 709 | forest_141.tif 710 | forest_141.tif 711 | forest_142.tif 712 | forest_142.tif 713 | forest_142.tif 714 | forest_142.tif 715 | forest_142.tif 716 | forest_143.tif 717 | forest_143.tif 718 | forest_143.tif 719 | forest_143.tif 720 | forest_143.tif 721 | forest_144.tif 722 | forest_144.tif 723 | forest_144.tif 724 | forest_144.tif 725 | forest_144.tif 726 | forest_145.tif 727 | forest_145.tif 728 | forest_145.tif 729 | forest_145.tif 730 | forest_145.tif 731 | forest_146.tif 732 | forest_146.tif 733 | forest_146.tif 734 | forest_146.tif 735 | forest_146.tif 736 | forest_147.tif 737 | forest_147.tif 738 | forest_147.tif 739 | forest_147.tif 740 | forest_147.tif 741 | forest_148.tif 742 | forest_148.tif 743 | forest_148.tif 744 | forest_148.tif 745 | forest_148.tif 746 | forest_149.tif 747 | forest_149.tif 748 | forest_149.tif 749 | forest_149.tif 750 | forest_149.tif 751 | forest_150.tif 752 | forest_150.tif 753 | forest_150.tif 754 | forest_150.tif 755 | forest_150.tif 756 | forest_151.tif 757 | forest_151.tif 758 | forest_151.tif 759 | forest_151.tif 760 | forest_151.tif 761 | industrial_152.tif 762 | industrial_152.tif 763 | industrial_152.tif 764 | industrial_152.tif 765 | industrial_152.tif 766 | industrial_153.tif 767 | industrial_153.tif 768 | industrial_153.tif 769 | industrial_153.tif 770 | industrial_153.tif 771 | industrial_154.tif 772 | industrial_154.tif 773 | industrial_154.tif 774 | industrial_154.tif 775 | industrial_154.tif 776 | industrial_155.tif 777 | industrial_155.tif 778 | industrial_155.tif 779 | industrial_155.tif 780 | industrial_155.tif 781 | industrial_156.tif 782 | industrial_156.tif 783 | industrial_156.tif 784 | industrial_156.tif 785 | industrial_156.tif 786 | industrial_157.tif 787 | industrial_157.tif 788 | industrial_157.tif 789 | industrial_157.tif 790 | industrial_157.tif 791 | industrial_158.tif 792 | industrial_158.tif 793 | industrial_158.tif 794 | industrial_158.tif 795 | industrial_158.tif 796 | industrial_159.tif 797 | industrial_159.tif 798 | industrial_159.tif 799 | industrial_159.tif 800 | industrial_159.tif 801 | industrial_160.tif 802 | industrial_160.tif 803 | industrial_160.tif 804 | industrial_160.tif 805 | industrial_160.tif 806 | industrial_161.tif 807 | industrial_161.tif 808 | industrial_161.tif 809 | industrial_161.tif 810 | industrial_161.tif 811 | industrial_162.tif 812 | industrial_162.tif 813 | industrial_162.tif 814 | industrial_162.tif 815 | industrial_162.tif 816 | industrial_163.tif 817 | industrial_163.tif 818 | industrial_163.tif 819 | industrial_163.tif 820 | industrial_163.tif 821 | industrial_164.tif 822 | industrial_164.tif 823 | industrial_164.tif 824 | industrial_164.tif 825 | industrial_164.tif 826 | industrial_165.tif 827 | industrial_165.tif 828 | industrial_165.tif 829 | industrial_165.tif 830 | industrial_165.tif 831 | industrial_166.tif 832 | industrial_166.tif 833 | industrial_166.tif 834 | industrial_166.tif 835 | industrial_166.tif 836 | industrial_167.tif 837 | industrial_167.tif 838 | industrial_167.tif 839 | industrial_167.tif 840 | industrial_167.tif 841 | industrial_168.tif 842 | industrial_168.tif 843 | industrial_168.tif 844 | industrial_168.tif 845 | industrial_168.tif 846 | industrial_169.tif 847 | industrial_169.tif 848 | industrial_169.tif 849 | industrial_169.tif 850 | industrial_169.tif 851 | industrial_170.tif 852 | industrial_170.tif 853 | industrial_170.tif 854 | industrial_170.tif 855 | industrial_170.tif 856 | industrial_171.tif 857 | industrial_171.tif 858 | industrial_171.tif 859 | industrial_171.tif 860 | industrial_171.tif 861 | meadow_172.tif 862 | meadow_172.tif 863 | meadow_172.tif 864 | meadow_172.tif 865 | meadow_172.tif 866 | meadow_173.tif 867 | meadow_173.tif 868 | meadow_173.tif 869 | meadow_173.tif 870 | meadow_173.tif 871 | meadow_174.tif 872 | meadow_174.tif 873 | meadow_174.tif 874 | meadow_174.tif 875 | meadow_174.tif 876 | meadow_175.tif 877 | meadow_175.tif 878 | meadow_175.tif 879 | meadow_175.tif 880 | meadow_175.tif 881 | meadow_176.tif 882 | meadow_176.tif 883 | meadow_176.tif 884 | meadow_176.tif 885 | meadow_176.tif 886 | meadow_177.tif 887 | meadow_177.tif 888 | meadow_177.tif 889 | meadow_177.tif 890 | meadow_177.tif 891 | meadow_178.tif 892 | meadow_178.tif 893 | meadow_178.tif 894 | meadow_178.tif 895 | meadow_178.tif 896 | meadow_179.tif 897 | meadow_179.tif 898 | meadow_179.tif 899 | meadow_179.tif 900 | meadow_179.tif 901 | meadow_180.tif 902 | meadow_180.tif 903 | meadow_180.tif 904 | meadow_180.tif 905 | meadow_180.tif 906 | meadow_181.tif 907 | meadow_181.tif 908 | meadow_181.tif 909 | meadow_181.tif 910 | meadow_181.tif 911 | meadow_182.tif 912 | meadow_182.tif 913 | meadow_182.tif 914 | meadow_182.tif 915 | meadow_182.tif 916 | meadow_183.tif 917 | meadow_183.tif 918 | meadow_183.tif 919 | meadow_183.tif 920 | meadow_183.tif 921 | mediumresidential_184.tif 922 | mediumresidential_184.tif 923 | mediumresidential_184.tif 924 | mediumresidential_184.tif 925 | mediumresidential_184.tif 926 | mediumresidential_185.tif 927 | mediumresidential_185.tif 928 | mediumresidential_185.tif 929 | mediumresidential_185.tif 930 | mediumresidential_185.tif 931 | mediumresidential_186.tif 932 | mediumresidential_186.tif 933 | mediumresidential_186.tif 934 | mediumresidential_186.tif 935 | mediumresidential_186.tif 936 | mediumresidential_187.tif 937 | mediumresidential_187.tif 938 | mediumresidential_187.tif 939 | mediumresidential_187.tif 940 | mediumresidential_187.tif 941 | mediumresidential_188.tif 942 | mediumresidential_188.tif 943 | mediumresidential_188.tif 944 | mediumresidential_188.tif 945 | mediumresidential_188.tif 946 | mediumresidential_189.tif 947 | mediumresidential_189.tif 948 | mediumresidential_189.tif 949 | mediumresidential_189.tif 950 | mediumresidential_189.tif 951 | mediumresidential_190.tif 952 | mediumresidential_190.tif 953 | mediumresidential_190.tif 954 | mediumresidential_190.tif 955 | mediumresidential_190.tif 956 | mediumresidential_191.tif 957 | mediumresidential_191.tif 958 | mediumresidential_191.tif 959 | mediumresidential_191.tif 960 | mediumresidential_191.tif 961 | mediumresidential_192.tif 962 | mediumresidential_192.tif 963 | mediumresidential_192.tif 964 | mediumresidential_192.tif 965 | mediumresidential_192.tif 966 | mediumresidential_193.tif 967 | mediumresidential_193.tif 968 | mediumresidential_193.tif 969 | mediumresidential_193.tif 970 | mediumresidential_193.tif 971 | mediumresidential_194.tif 972 | mediumresidential_194.tif 973 | mediumresidential_194.tif 974 | mediumresidential_194.tif 975 | mediumresidential_194.tif 976 | mediumresidential_195.tif 977 | mediumresidential_195.tif 978 | mediumresidential_195.tif 979 | mediumresidential_195.tif 980 | mediumresidential_195.tif 981 | mediumresidential_196.tif 982 | mediumresidential_196.tif 983 | mediumresidential_196.tif 984 | mediumresidential_196.tif 985 | mediumresidential_196.tif 986 | mountain_197.tif 987 | mountain_197.tif 988 | mountain_197.tif 989 | mountain_197.tif 990 | mountain_197.tif 991 | mountain_198.tif 992 | mountain_198.tif 993 | mountain_198.tif 994 | mountain_198.tif 995 | mountain_198.tif 996 | mountain_199.tif 997 | mountain_199.tif 998 | mountain_199.tif 999 | mountain_199.tif 1000 | mountain_199.tif 1001 | mountain_200.tif 1002 | mountain_200.tif 1003 | mountain_200.tif 1004 | mountain_200.tif 1005 | mountain_200.tif 1006 | mountain_201.tif 1007 | mountain_201.tif 1008 | mountain_201.tif 1009 | mountain_201.tif 1010 | mountain_201.tif 1011 | mountain_202.tif 1012 | mountain_202.tif 1013 | mountain_202.tif 1014 | mountain_202.tif 1015 | mountain_202.tif 1016 | mountain_203.tif 1017 | mountain_203.tif 1018 | mountain_203.tif 1019 | mountain_203.tif 1020 | mountain_203.tif 1021 | mountain_204.tif 1022 | mountain_204.tif 1023 | mountain_204.tif 1024 | mountain_204.tif 1025 | mountain_204.tif 1026 | mountain_205.tif 1027 | mountain_205.tif 1028 | mountain_205.tif 1029 | mountain_205.tif 1030 | mountain_205.tif 1031 | mountain_206.tif 1032 | mountain_206.tif 1033 | mountain_206.tif 1034 | mountain_206.tif 1035 | mountain_206.tif 1036 | park_207.tif 1037 | park_207.tif 1038 | park_207.tif 1039 | park_207.tif 1040 | park_207.tif 1041 | park_208.tif 1042 | park_208.tif 1043 | park_208.tif 1044 | park_208.tif 1045 | park_208.tif 1046 | park_209.tif 1047 | park_209.tif 1048 | park_209.tif 1049 | park_209.tif 1050 | park_209.tif 1051 | park_210.tif 1052 | park_210.tif 1053 | park_210.tif 1054 | park_210.tif 1055 | park_210.tif 1056 | park_211.tif 1057 | park_211.tif 1058 | park_211.tif 1059 | park_211.tif 1060 | park_211.tif 1061 | park_212.tif 1062 | park_212.tif 1063 | park_212.tif 1064 | park_212.tif 1065 | park_212.tif 1066 | park_213.tif 1067 | park_213.tif 1068 | park_213.tif 1069 | park_213.tif 1070 | park_213.tif 1071 | park_214.tif 1072 | park_214.tif 1073 | park_214.tif 1074 | park_214.tif 1075 | park_214.tif 1076 | park_215.tif 1077 | park_215.tif 1078 | park_215.tif 1079 | park_215.tif 1080 | park_215.tif 1081 | park_216.tif 1082 | park_216.tif 1083 | park_216.tif 1084 | park_216.tif 1085 | park_216.tif 1086 | park_217.tif 1087 | park_217.tif 1088 | park_217.tif 1089 | park_217.tif 1090 | park_217.tif 1091 | park_218.tif 1092 | park_218.tif 1093 | park_218.tif 1094 | park_218.tif 1095 | park_218.tif 1096 | park_219.tif 1097 | park_219.tif 1098 | park_219.tif 1099 | park_219.tif 1100 | park_219.tif 1101 | park_220.tif 1102 | park_220.tif 1103 | park_220.tif 1104 | park_220.tif 1105 | park_220.tif 1106 | park_221.tif 1107 | park_221.tif 1108 | park_221.tif 1109 | park_221.tif 1110 | park_221.tif 1111 | park_222.tif 1112 | park_222.tif 1113 | park_222.tif 1114 | park_222.tif 1115 | park_222.tif 1116 | parking_223.tif 1117 | parking_223.tif 1118 | parking_223.tif 1119 | parking_223.tif 1120 | parking_223.tif 1121 | parking_224.tif 1122 | parking_224.tif 1123 | parking_224.tif 1124 | parking_224.tif 1125 | parking_224.tif 1126 | parking_225.tif 1127 | parking_225.tif 1128 | parking_225.tif 1129 | parking_225.tif 1130 | parking_225.tif 1131 | parking_226.tif 1132 | parking_226.tif 1133 | parking_226.tif 1134 | parking_226.tif 1135 | parking_226.tif 1136 | parking_227.tif 1137 | parking_227.tif 1138 | parking_227.tif 1139 | parking_227.tif 1140 | parking_227.tif 1141 | parking_228.tif 1142 | parking_228.tif 1143 | parking_228.tif 1144 | parking_228.tif 1145 | parking_228.tif 1146 | parking_229.tif 1147 | parking_229.tif 1148 | parking_229.tif 1149 | parking_229.tif 1150 | parking_229.tif 1151 | parking_230.tif 1152 | parking_230.tif 1153 | parking_230.tif 1154 | parking_230.tif 1155 | parking_230.tif 1156 | parking_231.tif 1157 | parking_231.tif 1158 | parking_231.tif 1159 | parking_231.tif 1160 | parking_231.tif 1161 | parking_232.tif 1162 | parking_232.tif 1163 | parking_232.tif 1164 | parking_232.tif 1165 | parking_232.tif 1166 | parking_233.tif 1167 | parking_233.tif 1168 | parking_233.tif 1169 | parking_233.tif 1170 | parking_233.tif 1171 | parking_234.tif 1172 | parking_234.tif 1173 | parking_234.tif 1174 | parking_234.tif 1175 | parking_234.tif 1176 | parking_235.tif 1177 | parking_235.tif 1178 | parking_235.tif 1179 | parking_235.tif 1180 | parking_235.tif 1181 | parking_236.tif 1182 | parking_236.tif 1183 | parking_236.tif 1184 | parking_236.tif 1185 | parking_236.tif 1186 | playground_237.tif 1187 | playground_237.tif 1188 | playground_237.tif 1189 | playground_237.tif 1190 | playground_237.tif 1191 | playground_238.tif 1192 | playground_238.tif 1193 | playground_238.tif 1194 | playground_238.tif 1195 | playground_238.tif 1196 | playground_239.tif 1197 | playground_239.tif 1198 | playground_239.tif 1199 | playground_239.tif 1200 | playground_239.tif 1201 | playground_240.tif 1202 | playground_240.tif 1203 | playground_240.tif 1204 | playground_240.tif 1205 | playground_240.tif 1206 | playground_241.tif 1207 | playground_241.tif 1208 | playground_241.tif 1209 | playground_241.tif 1210 | playground_241.tif 1211 | playground_242.tif 1212 | playground_242.tif 1213 | playground_242.tif 1214 | playground_242.tif 1215 | playground_242.tif 1216 | playground_243.tif 1217 | playground_243.tif 1218 | playground_243.tif 1219 | playground_243.tif 1220 | playground_243.tif 1221 | playground_244.tif 1222 | playground_244.tif 1223 | playground_244.tif 1224 | playground_244.tif 1225 | playground_244.tif 1226 | playground_245.tif 1227 | playground_245.tif 1228 | playground_245.tif 1229 | playground_245.tif 1230 | playground_245.tif 1231 | playground_246.tif 1232 | playground_246.tif 1233 | playground_246.tif 1234 | playground_246.tif 1235 | playground_246.tif 1236 | playground_247.tif 1237 | playground_247.tif 1238 | playground_247.tif 1239 | playground_247.tif 1240 | playground_247.tif 1241 | playground_248.tif 1242 | playground_248.tif 1243 | playground_248.tif 1244 | playground_248.tif 1245 | playground_248.tif 1246 | playground_249.tif 1247 | playground_249.tif 1248 | playground_249.tif 1249 | playground_249.tif 1250 | playground_249.tif 1251 | playground_250.tif 1252 | playground_250.tif 1253 | playground_250.tif 1254 | playground_250.tif 1255 | playground_250.tif 1256 | playground_251.tif 1257 | playground_251.tif 1258 | playground_251.tif 1259 | playground_251.tif 1260 | playground_251.tif 1261 | playground_252.tif 1262 | playground_252.tif 1263 | playground_252.tif 1264 | playground_252.tif 1265 | playground_252.tif 1266 | pond_253.tif 1267 | pond_253.tif 1268 | pond_253.tif 1269 | pond_253.tif 1270 | pond_253.tif 1271 | pond_254.tif 1272 | pond_254.tif 1273 | pond_254.tif 1274 | pond_254.tif 1275 | pond_254.tif 1276 | pond_255.tif 1277 | pond_255.tif 1278 | pond_255.tif 1279 | pond_255.tif 1280 | pond_255.tif 1281 | pond_256.tif 1282 | pond_256.tif 1283 | pond_256.tif 1284 | pond_256.tif 1285 | pond_256.tif 1286 | pond_257.tif 1287 | pond_257.tif 1288 | pond_257.tif 1289 | pond_257.tif 1290 | pond_257.tif 1291 | pond_258.tif 1292 | pond_258.tif 1293 | pond_258.tif 1294 | pond_258.tif 1295 | pond_258.tif 1296 | pond_259.tif 1297 | pond_259.tif 1298 | pond_259.tif 1299 | pond_259.tif 1300 | pond_259.tif 1301 | pond_260.tif 1302 | pond_260.tif 1303 | pond_260.tif 1304 | pond_260.tif 1305 | pond_260.tif 1306 | pond_261.tif 1307 | pond_261.tif 1308 | pond_261.tif 1309 | pond_261.tif 1310 | pond_261.tif 1311 | pond_262.tif 1312 | pond_262.tif 1313 | pond_262.tif 1314 | pond_262.tif 1315 | pond_262.tif 1316 | pond_263.tif 1317 | pond_263.tif 1318 | pond_263.tif 1319 | pond_263.tif 1320 | pond_263.tif 1321 | pond_264.tif 1322 | pond_264.tif 1323 | pond_264.tif 1324 | pond_264.tif 1325 | pond_264.tif 1326 | pond_265.tif 1327 | pond_265.tif 1328 | pond_265.tif 1329 | pond_265.tif 1330 | pond_265.tif 1331 | pond_266.tif 1332 | pond_266.tif 1333 | pond_266.tif 1334 | pond_266.tif 1335 | pond_266.tif 1336 | pond_267.tif 1337 | pond_267.tif 1338 | pond_267.tif 1339 | pond_267.tif 1340 | pond_267.tif 1341 | pond_268.tif 1342 | pond_268.tif 1343 | pond_268.tif 1344 | pond_268.tif 1345 | pond_268.tif 1346 | pond_269.tif 1347 | pond_269.tif 1348 | pond_269.tif 1349 | pond_269.tif 1350 | pond_269.tif 1351 | pond_270.tif 1352 | pond_270.tif 1353 | pond_270.tif 1354 | pond_270.tif 1355 | pond_270.tif 1356 | pond_271.tif 1357 | pond_271.tif 1358 | pond_271.tif 1359 | pond_271.tif 1360 | pond_271.tif 1361 | pond_272.tif 1362 | pond_272.tif 1363 | pond_272.tif 1364 | pond_272.tif 1365 | pond_272.tif 1366 | pond_273.tif 1367 | pond_273.tif 1368 | pond_273.tif 1369 | pond_273.tif 1370 | pond_273.tif 1371 | pond_274.tif 1372 | pond_274.tif 1373 | pond_274.tif 1374 | pond_274.tif 1375 | pond_274.tif 1376 | port_275.tif 1377 | port_275.tif 1378 | port_275.tif 1379 | port_275.tif 1380 | port_275.tif 1381 | port_276.tif 1382 | port_276.tif 1383 | port_276.tif 1384 | port_276.tif 1385 | port_276.tif 1386 | port_277.tif 1387 | port_277.tif 1388 | port_277.tif 1389 | port_277.tif 1390 | port_277.tif 1391 | port_278.tif 1392 | port_278.tif 1393 | port_278.tif 1394 | port_278.tif 1395 | port_278.tif 1396 | port_279.tif 1397 | port_279.tif 1398 | port_279.tif 1399 | port_279.tif 1400 | port_279.tif 1401 | port_280.tif 1402 | port_280.tif 1403 | port_280.tif 1404 | port_280.tif 1405 | port_280.tif 1406 | port_281.tif 1407 | port_281.tif 1408 | port_281.tif 1409 | port_281.tif 1410 | port_281.tif 1411 | port_282.tif 1412 | port_282.tif 1413 | port_282.tif 1414 | port_282.tif 1415 | port_282.tif 1416 | port_283.tif 1417 | port_283.tif 1418 | port_283.tif 1419 | port_283.tif 1420 | port_283.tif 1421 | port_284.tif 1422 | port_284.tif 1423 | port_284.tif 1424 | port_284.tif 1425 | port_284.tif 1426 | port_285.tif 1427 | port_285.tif 1428 | port_285.tif 1429 | port_285.tif 1430 | port_285.tif 1431 | port_286.tif 1432 | port_286.tif 1433 | port_286.tif 1434 | port_286.tif 1435 | port_286.tif 1436 | port_287.tif 1437 | port_287.tif 1438 | port_287.tif 1439 | port_287.tif 1440 | port_287.tif 1441 | port_288.tif 1442 | port_288.tif 1443 | port_288.tif 1444 | port_288.tif 1445 | port_288.tif 1446 | port_289.tif 1447 | port_289.tif 1448 | port_289.tif 1449 | port_289.tif 1450 | port_289.tif 1451 | port_290.tif 1452 | port_290.tif 1453 | port_290.tif 1454 | port_290.tif 1455 | port_290.tif 1456 | port_291.tif 1457 | port_291.tif 1458 | port_291.tif 1459 | port_291.tif 1460 | port_291.tif 1461 | railwaystation_292.tif 1462 | railwaystation_292.tif 1463 | railwaystation_292.tif 1464 | railwaystation_292.tif 1465 | railwaystation_292.tif 1466 | railwaystation_293.tif 1467 | railwaystation_293.tif 1468 | railwaystation_293.tif 1469 | railwaystation_293.tif 1470 | railwaystation_293.tif 1471 | railwaystation_294.tif 1472 | railwaystation_294.tif 1473 | railwaystation_294.tif 1474 | railwaystation_294.tif 1475 | railwaystation_294.tif 1476 | railwaystation_295.tif 1477 | railwaystation_295.tif 1478 | railwaystation_295.tif 1479 | railwaystation_295.tif 1480 | railwaystation_295.tif 1481 | railwaystation_296.tif 1482 | railwaystation_296.tif 1483 | railwaystation_296.tif 1484 | railwaystation_296.tif 1485 | railwaystation_296.tif 1486 | railwaystation_297.tif 1487 | railwaystation_297.tif 1488 | railwaystation_297.tif 1489 | railwaystation_297.tif 1490 | railwaystation_297.tif 1491 | railwaystation_298.tif 1492 | railwaystation_298.tif 1493 | railwaystation_298.tif 1494 | railwaystation_298.tif 1495 | railwaystation_298.tif 1496 | railwaystation_299.tif 1497 | railwaystation_299.tif 1498 | railwaystation_299.tif 1499 | railwaystation_299.tif 1500 | railwaystation_299.tif 1501 | railwaystation_300.tif 1502 | railwaystation_300.tif 1503 | railwaystation_300.tif 1504 | railwaystation_300.tif 1505 | railwaystation_300.tif 1506 | railwaystation_301.tif 1507 | railwaystation_301.tif 1508 | railwaystation_301.tif 1509 | railwaystation_301.tif 1510 | railwaystation_301.tif 1511 | railwaystation_302.tif 1512 | railwaystation_302.tif 1513 | railwaystation_302.tif 1514 | railwaystation_302.tif 1515 | railwaystation_302.tif 1516 | resort_303.tif 1517 | resort_303.tif 1518 | resort_303.tif 1519 | resort_303.tif 1520 | resort_303.tif 1521 | resort_304.tif 1522 | resort_304.tif 1523 | resort_304.tif 1524 | resort_304.tif 1525 | resort_304.tif 1526 | resort_305.tif 1527 | resort_305.tif 1528 | resort_305.tif 1529 | resort_305.tif 1530 | resort_305.tif 1531 | resort_306.tif 1532 | resort_306.tif 1533 | resort_306.tif 1534 | resort_306.tif 1535 | resort_306.tif 1536 | resort_307.tif 1537 | resort_307.tif 1538 | resort_307.tif 1539 | resort_307.tif 1540 | resort_307.tif 1541 | resort_308.tif 1542 | resort_308.tif 1543 | resort_308.tif 1544 | resort_308.tif 1545 | resort_308.tif 1546 | resort_309.tif 1547 | resort_309.tif 1548 | resort_309.tif 1549 | resort_309.tif 1550 | resort_309.tif 1551 | resort_310.tif 1552 | resort_310.tif 1553 | resort_310.tif 1554 | resort_310.tif 1555 | resort_310.tif 1556 | resort_311.tif 1557 | resort_311.tif 1558 | resort_311.tif 1559 | resort_311.tif 1560 | resort_311.tif 1561 | resort_312.tif 1562 | resort_312.tif 1563 | resort_312.tif 1564 | resort_312.tif 1565 | resort_312.tif 1566 | resort_313.tif 1567 | resort_313.tif 1568 | resort_313.tif 1569 | resort_313.tif 1570 | resort_313.tif 1571 | resort_314.tif 1572 | resort_314.tif 1573 | resort_314.tif 1574 | resort_314.tif 1575 | resort_314.tif 1576 | resort_315.tif 1577 | resort_315.tif 1578 | resort_315.tif 1579 | resort_315.tif 1580 | resort_315.tif 1581 | resort_316.tif 1582 | resort_316.tif 1583 | resort_316.tif 1584 | resort_316.tif 1585 | resort_316.tif 1586 | resort_317.tif 1587 | resort_317.tif 1588 | resort_317.tif 1589 | resort_317.tif 1590 | resort_317.tif 1591 | resort_318.tif 1592 | resort_318.tif 1593 | resort_318.tif 1594 | resort_318.tif 1595 | resort_318.tif 1596 | river_319.tif 1597 | river_319.tif 1598 | river_319.tif 1599 | river_319.tif 1600 | river_319.tif 1601 | river_320.tif 1602 | river_320.tif 1603 | river_320.tif 1604 | river_320.tif 1605 | river_320.tif 1606 | river_321.tif 1607 | river_321.tif 1608 | river_321.tif 1609 | river_321.tif 1610 | river_321.tif 1611 | river_322.tif 1612 | river_322.tif 1613 | river_322.tif 1614 | river_322.tif 1615 | river_322.tif 1616 | river_323.tif 1617 | river_323.tif 1618 | river_323.tif 1619 | river_323.tif 1620 | river_323.tif 1621 | river_324.tif 1622 | river_324.tif 1623 | river_324.tif 1624 | river_324.tif 1625 | river_324.tif 1626 | river_325.tif 1627 | river_325.tif 1628 | river_325.tif 1629 | river_325.tif 1630 | river_325.tif 1631 | river_326.tif 1632 | river_326.tif 1633 | river_326.tif 1634 | river_326.tif 1635 | river_326.tif 1636 | river_327.tif 1637 | river_327.tif 1638 | river_327.tif 1639 | river_327.tif 1640 | river_327.tif 1641 | river_328.tif 1642 | river_328.tif 1643 | river_328.tif 1644 | river_328.tif 1645 | river_328.tif 1646 | river_329.tif 1647 | river_329.tif 1648 | river_329.tif 1649 | river_329.tif 1650 | river_329.tif 1651 | river_330.tif 1652 | river_330.tif 1653 | river_330.tif 1654 | river_330.tif 1655 | river_330.tif 1656 | river_331.tif 1657 | river_331.tif 1658 | river_331.tif 1659 | river_331.tif 1660 | river_331.tif 1661 | river_332.tif 1662 | river_332.tif 1663 | river_332.tif 1664 | river_332.tif 1665 | river_332.tif 1666 | river_333.tif 1667 | river_333.tif 1668 | river_333.tif 1669 | river_333.tif 1670 | river_333.tif 1671 | river_334.tif 1672 | river_334.tif 1673 | river_334.tif 1674 | river_334.tif 1675 | river_334.tif 1676 | river_335.tif 1677 | river_335.tif 1678 | river_335.tif 1679 | river_335.tif 1680 | river_335.tif 1681 | river_336.tif 1682 | river_336.tif 1683 | river_336.tif 1684 | river_336.tif 1685 | river_336.tif 1686 | school_337.tif 1687 | school_337.tif 1688 | school_337.tif 1689 | school_337.tif 1690 | school_337.tif 1691 | school_338.tif 1692 | school_338.tif 1693 | school_338.tif 1694 | school_338.tif 1695 | school_338.tif 1696 | school_339.tif 1697 | school_339.tif 1698 | school_339.tif 1699 | school_339.tif 1700 | school_339.tif 1701 | school_340.tif 1702 | school_340.tif 1703 | school_340.tif 1704 | school_340.tif 1705 | school_340.tif 1706 | school_341.tif 1707 | school_341.tif 1708 | school_341.tif 1709 | school_341.tif 1710 | school_341.tif 1711 | school_342.tif 1712 | school_342.tif 1713 | school_342.tif 1714 | school_342.tif 1715 | school_342.tif 1716 | school_343.tif 1717 | school_343.tif 1718 | school_343.tif 1719 | school_343.tif 1720 | school_343.tif 1721 | school_344.tif 1722 | school_344.tif 1723 | school_344.tif 1724 | school_344.tif 1725 | school_344.tif 1726 | school_345.tif 1727 | school_345.tif 1728 | school_345.tif 1729 | school_345.tif 1730 | school_345.tif 1731 | school_346.tif 1732 | school_346.tif 1733 | school_346.tif 1734 | school_346.tif 1735 | school_346.tif 1736 | school_347.tif 1737 | school_347.tif 1738 | school_347.tif 1739 | school_347.tif 1740 | school_347.tif 1741 | school_348.tif 1742 | school_348.tif 1743 | school_348.tif 1744 | school_348.tif 1745 | school_348.tif 1746 | school_349.tif 1747 | school_349.tif 1748 | school_349.tif 1749 | school_349.tif 1750 | school_349.tif 1751 | school_350.tif 1752 | school_350.tif 1753 | school_350.tif 1754 | school_350.tif 1755 | school_350.tif 1756 | school_351.tif 1757 | school_351.tif 1758 | school_351.tif 1759 | school_351.tif 1760 | school_351.tif 1761 | school_352.tif 1762 | school_352.tif 1763 | school_352.tif 1764 | school_352.tif 1765 | school_352.tif 1766 | sparseresidential_353.tif 1767 | sparseresidential_353.tif 1768 | sparseresidential_353.tif 1769 | sparseresidential_353.tif 1770 | sparseresidential_353.tif 1771 | sparseresidential_354.tif 1772 | sparseresidential_354.tif 1773 | sparseresidential_354.tif 1774 | sparseresidential_354.tif 1775 | sparseresidential_354.tif 1776 | sparseresidential_355.tif 1777 | sparseresidential_355.tif 1778 | sparseresidential_355.tif 1779 | sparseresidential_355.tif 1780 | sparseresidential_355.tif 1781 | sparseresidential_356.tif 1782 | sparseresidential_356.tif 1783 | sparseresidential_356.tif 1784 | sparseresidential_356.tif 1785 | sparseresidential_356.tif 1786 | sparseresidential_357.tif 1787 | sparseresidential_357.tif 1788 | sparseresidential_357.tif 1789 | sparseresidential_357.tif 1790 | sparseresidential_357.tif 1791 | sparseresidential_358.tif 1792 | sparseresidential_358.tif 1793 | sparseresidential_358.tif 1794 | sparseresidential_358.tif 1795 | sparseresidential_358.tif 1796 | sparseresidential_359.tif 1797 | sparseresidential_359.tif 1798 | sparseresidential_359.tif 1799 | sparseresidential_359.tif 1800 | sparseresidential_359.tif 1801 | sparseresidential_360.tif 1802 | sparseresidential_360.tif 1803 | sparseresidential_360.tif 1804 | sparseresidential_360.tif 1805 | sparseresidential_360.tif 1806 | sparseresidential_361.tif 1807 | sparseresidential_361.tif 1808 | sparseresidential_361.tif 1809 | sparseresidential_361.tif 1810 | sparseresidential_361.tif 1811 | sparseresidential_362.tif 1812 | sparseresidential_362.tif 1813 | sparseresidential_362.tif 1814 | sparseresidential_362.tif 1815 | sparseresidential_362.tif 1816 | sparseresidential_363.tif 1817 | sparseresidential_363.tif 1818 | sparseresidential_363.tif 1819 | sparseresidential_363.tif 1820 | sparseresidential_363.tif 1821 | sparseresidential_364.tif 1822 | sparseresidential_364.tif 1823 | sparseresidential_364.tif 1824 | sparseresidential_364.tif 1825 | sparseresidential_364.tif 1826 | sparseresidential_365.tif 1827 | sparseresidential_365.tif 1828 | sparseresidential_365.tif 1829 | sparseresidential_365.tif 1830 | sparseresidential_365.tif 1831 | sparseresidential_366.tif 1832 | sparseresidential_366.tif 1833 | sparseresidential_366.tif 1834 | sparseresidential_366.tif 1835 | sparseresidential_366.tif 1836 | sparseresidential_367.tif 1837 | sparseresidential_367.tif 1838 | sparseresidential_367.tif 1839 | sparseresidential_367.tif 1840 | sparseresidential_367.tif 1841 | square_368.tif 1842 | square_368.tif 1843 | square_368.tif 1844 | square_368.tif 1845 | square_368.tif 1846 | square_369.tif 1847 | square_369.tif 1848 | square_369.tif 1849 | square_369.tif 1850 | square_369.tif 1851 | square_370.tif 1852 | square_370.tif 1853 | square_370.tif 1854 | square_370.tif 1855 | square_370.tif 1856 | square_371.tif 1857 | square_371.tif 1858 | square_371.tif 1859 | square_371.tif 1860 | square_371.tif 1861 | square_372.tif 1862 | square_372.tif 1863 | square_372.tif 1864 | square_372.tif 1865 | square_372.tif 1866 | square_373.tif 1867 | square_373.tif 1868 | square_373.tif 1869 | square_373.tif 1870 | square_373.tif 1871 | square_374.tif 1872 | square_374.tif 1873 | square_374.tif 1874 | square_374.tif 1875 | square_374.tif 1876 | square_375.tif 1877 | square_375.tif 1878 | square_375.tif 1879 | square_375.tif 1880 | square_375.tif 1881 | square_376.tif 1882 | square_376.tif 1883 | square_376.tif 1884 | square_376.tif 1885 | square_376.tif 1886 | square_377.tif 1887 | square_377.tif 1888 | square_377.tif 1889 | square_377.tif 1890 | square_377.tif 1891 | square_378.tif 1892 | square_378.tif 1893 | square_378.tif 1894 | square_378.tif 1895 | square_378.tif 1896 | square_379.tif 1897 | square_379.tif 1898 | square_379.tif 1899 | square_379.tif 1900 | square_379.tif 1901 | square_380.tif 1902 | square_380.tif 1903 | square_380.tif 1904 | square_380.tif 1905 | square_380.tif 1906 | square_381.tif 1907 | square_381.tif 1908 | square_381.tif 1909 | square_381.tif 1910 | square_381.tif 1911 | square_382.tif 1912 | square_382.tif 1913 | square_382.tif 1914 | square_382.tif 1915 | square_382.tif 1916 | square_383.tif 1917 | square_383.tif 1918 | square_383.tif 1919 | square_383.tif 1920 | square_383.tif 1921 | square_384.tif 1922 | square_384.tif 1923 | square_384.tif 1924 | square_384.tif 1925 | square_384.tif 1926 | square_385.tif 1927 | square_385.tif 1928 | square_385.tif 1929 | square_385.tif 1930 | square_385.tif 1931 | square_386.tif 1932 | square_386.tif 1933 | square_386.tif 1934 | square_386.tif 1935 | square_386.tif 1936 | stadium_387.tif 1937 | stadium_387.tif 1938 | stadium_387.tif 1939 | stadium_387.tif 1940 | stadium_387.tif 1941 | stadium_388.tif 1942 | stadium_388.tif 1943 | stadium_388.tif 1944 | stadium_388.tif 1945 | stadium_388.tif 1946 | stadium_389.tif 1947 | stadium_389.tif 1948 | stadium_389.tif 1949 | stadium_389.tif 1950 | stadium_389.tif 1951 | stadium_390.tif 1952 | stadium_390.tif 1953 | stadium_390.tif 1954 | stadium_390.tif 1955 | stadium_390.tif 1956 | stadium_391.tif 1957 | stadium_391.tif 1958 | stadium_391.tif 1959 | stadium_391.tif 1960 | stadium_391.tif 1961 | stadium_392.tif 1962 | stadium_392.tif 1963 | stadium_392.tif 1964 | stadium_392.tif 1965 | stadium_392.tif 1966 | stadium_393.tif 1967 | stadium_393.tif 1968 | stadium_393.tif 1969 | stadium_393.tif 1970 | stadium_393.tif 1971 | stadium_394.tif 1972 | stadium_394.tif 1973 | stadium_394.tif 1974 | stadium_394.tif 1975 | stadium_394.tif 1976 | stadium_395.tif 1977 | stadium_395.tif 1978 | stadium_395.tif 1979 | stadium_395.tif 1980 | stadium_395.tif 1981 | stadium_396.tif 1982 | stadium_396.tif 1983 | stadium_396.tif 1984 | stadium_396.tif 1985 | stadium_396.tif 1986 | stadium_397.tif 1987 | stadium_397.tif 1988 | stadium_397.tif 1989 | stadium_397.tif 1990 | stadium_397.tif 1991 | stadium_398.tif 1992 | stadium_398.tif 1993 | stadium_398.tif 1994 | stadium_398.tif 1995 | stadium_398.tif 1996 | stadium_399.tif 1997 | stadium_399.tif 1998 | stadium_399.tif 1999 | stadium_399.tif 2000 | stadium_399.tif 2001 | stadium_400.tif 2002 | stadium_400.tif 2003 | stadium_400.tif 2004 | stadium_400.tif 2005 | stadium_400.tif 2006 | stadium_401.tif 2007 | stadium_401.tif 2008 | stadium_401.tif 2009 | stadium_401.tif 2010 | stadium_401.tif 2011 | stadium_402.tif 2012 | stadium_402.tif 2013 | stadium_402.tif 2014 | stadium_402.tif 2015 | stadium_402.tif 2016 | stadium_403.tif 2017 | stadium_403.tif 2018 | stadium_403.tif 2019 | stadium_403.tif 2020 | stadium_403.tif 2021 | stadium_404.tif 2022 | stadium_404.tif 2023 | stadium_404.tif 2024 | stadium_404.tif 2025 | stadium_404.tif 2026 | stadium_405.tif 2027 | stadium_405.tif 2028 | stadium_405.tif 2029 | stadium_405.tif 2030 | stadium_405.tif 2031 | storagetanks_406.tif 2032 | storagetanks_406.tif 2033 | storagetanks_406.tif 2034 | storagetanks_406.tif 2035 | storagetanks_406.tif 2036 | storagetanks_407.tif 2037 | storagetanks_407.tif 2038 | storagetanks_407.tif 2039 | storagetanks_407.tif 2040 | storagetanks_407.tif 2041 | storagetanks_408.tif 2042 | storagetanks_408.tif 2043 | storagetanks_408.tif 2044 | storagetanks_408.tif 2045 | storagetanks_408.tif 2046 | storagetanks_409.tif 2047 | storagetanks_409.tif 2048 | storagetanks_409.tif 2049 | storagetanks_409.tif 2050 | storagetanks_409.tif 2051 | storagetanks_410.tif 2052 | storagetanks_410.tif 2053 | storagetanks_410.tif 2054 | storagetanks_410.tif 2055 | storagetanks_410.tif 2056 | storagetanks_411.tif 2057 | storagetanks_411.tif 2058 | storagetanks_411.tif 2059 | storagetanks_411.tif 2060 | storagetanks_411.tif 2061 | storagetanks_412.tif 2062 | storagetanks_412.tif 2063 | storagetanks_412.tif 2064 | storagetanks_412.tif 2065 | storagetanks_412.tif 2066 | storagetanks_413.tif 2067 | storagetanks_413.tif 2068 | storagetanks_413.tif 2069 | storagetanks_413.tif 2070 | storagetanks_413.tif 2071 | storagetanks_414.tif 2072 | storagetanks_414.tif 2073 | storagetanks_414.tif 2074 | storagetanks_414.tif 2075 | storagetanks_414.tif 2076 | storagetanks_415.tif 2077 | storagetanks_415.tif 2078 | storagetanks_415.tif 2079 | storagetanks_415.tif 2080 | storagetanks_415.tif 2081 | storagetanks_416.tif 2082 | storagetanks_416.tif 2083 | storagetanks_416.tif 2084 | storagetanks_416.tif 2085 | storagetanks_416.tif 2086 | storagetanks_417.tif 2087 | storagetanks_417.tif 2088 | storagetanks_417.tif 2089 | storagetanks_417.tif 2090 | storagetanks_417.tif 2091 | storagetanks_418.tif 2092 | storagetanks_418.tif 2093 | storagetanks_418.tif 2094 | storagetanks_418.tif 2095 | storagetanks_418.tif 2096 | storagetanks_419.tif 2097 | storagetanks_419.tif 2098 | storagetanks_419.tif 2099 | storagetanks_419.tif 2100 | storagetanks_419.tif 2101 | storagetanks_420.tif 2102 | storagetanks_420.tif 2103 | storagetanks_420.tif 2104 | storagetanks_420.tif 2105 | storagetanks_420.tif 2106 | storagetanks_421.tif 2107 | storagetanks_421.tif 2108 | storagetanks_421.tif 2109 | storagetanks_421.tif 2110 | storagetanks_421.tif 2111 | storagetanks_422.tif 2112 | storagetanks_422.tif 2113 | storagetanks_422.tif 2114 | storagetanks_422.tif 2115 | storagetanks_422.tif 2116 | storagetanks_423.tif 2117 | storagetanks_423.tif 2118 | storagetanks_423.tif 2119 | storagetanks_423.tif 2120 | storagetanks_423.tif 2121 | storagetanks_424.tif 2122 | storagetanks_424.tif 2123 | storagetanks_424.tif 2124 | storagetanks_424.tif 2125 | storagetanks_424.tif 2126 | storagetanks_425.tif 2127 | storagetanks_425.tif 2128 | storagetanks_425.tif 2129 | storagetanks_425.tif 2130 | storagetanks_425.tif 2131 | storagetanks_426.tif 2132 | storagetanks_426.tif 2133 | storagetanks_426.tif 2134 | storagetanks_426.tif 2135 | storagetanks_426.tif 2136 | storagetanks_427.tif 2137 | storagetanks_427.tif 2138 | storagetanks_427.tif 2139 | storagetanks_427.tif 2140 | storagetanks_427.tif 2141 | storagetanks_428.tif 2142 | storagetanks_428.tif 2143 | storagetanks_428.tif 2144 | storagetanks_428.tif 2145 | storagetanks_428.tif 2146 | viaduct_429.tif 2147 | viaduct_429.tif 2148 | viaduct_429.tif 2149 | viaduct_429.tif 2150 | viaduct_429.tif 2151 | viaduct_430.tif 2152 | viaduct_430.tif 2153 | viaduct_430.tif 2154 | viaduct_430.tif 2155 | viaduct_430.tif 2156 | viaduct_431.tif 2157 | viaduct_431.tif 2158 | viaduct_431.tif 2159 | viaduct_431.tif 2160 | viaduct_431.tif 2161 | viaduct_432.tif 2162 | viaduct_432.tif 2163 | viaduct_432.tif 2164 | viaduct_432.tif 2165 | viaduct_432.tif 2166 | viaduct_433.tif 2167 | viaduct_433.tif 2168 | viaduct_433.tif 2169 | viaduct_433.tif 2170 | viaduct_433.tif 2171 | viaduct_434.tif 2172 | viaduct_434.tif 2173 | viaduct_434.tif 2174 | viaduct_434.tif 2175 | viaduct_434.tif 2176 | viaduct_435.tif 2177 | viaduct_435.tif 2178 | viaduct_435.tif 2179 | viaduct_435.tif 2180 | viaduct_435.tif 2181 | viaduct_436.tif 2182 | viaduct_436.tif 2183 | viaduct_436.tif 2184 | viaduct_436.tif 2185 | viaduct_436.tif 2186 | viaduct_437.tif 2187 | viaduct_437.tif 2188 | viaduct_437.tif 2189 | viaduct_437.tif 2190 | viaduct_437.tif 2191 | viaduct_438.tif 2192 | viaduct_438.tif 2193 | viaduct_438.tif 2194 | viaduct_438.tif 2195 | viaduct_438.tif 2196 | viaduct_439.tif 2197 | viaduct_439.tif 2198 | viaduct_439.tif 2199 | viaduct_439.tif 2200 | viaduct_439.tif 2201 | viaduct_440.tif 2202 | viaduct_440.tif 2203 | viaduct_440.tif 2204 | viaduct_440.tif 2205 | viaduct_440.tif 2206 | viaduct_441.tif 2207 | viaduct_441.tif 2208 | viaduct_441.tif 2209 | viaduct_441.tif 2210 | viaduct_441.tif 2211 | viaduct_442.tif 2212 | viaduct_442.tif 2213 | viaduct_442.tif 2214 | viaduct_442.tif 2215 | viaduct_442.tif 2216 | viaduct_443.tif 2217 | viaduct_443.tif 2218 | viaduct_443.tif 2219 | viaduct_443.tif 2220 | viaduct_443.tif 2221 | viaduct_444.tif 2222 | viaduct_444.tif 2223 | viaduct_444.tif 2224 | viaduct_444.tif 2225 | viaduct_444.tif 2226 | viaduct_445.tif 2227 | viaduct_445.tif 2228 | viaduct_445.tif 2229 | viaduct_445.tif 2230 | viaduct_445.tif 2231 | viaduct_446.tif 2232 | viaduct_446.tif 2233 | viaduct_446.tif 2234 | viaduct_446.tif 2235 | viaduct_446.tif 2236 | denseresidential_447.tif 2237 | denseresidential_447.tif 2238 | denseresidential_447.tif 2239 | denseresidential_447.tif 2240 | denseresidential_447.tif 2241 | airport_448.tif 2242 | airport_448.tif 2243 | airport_448.tif 2244 | airport_448.tif 2245 | airport_448.tif 2246 | intersection_449.tif 2247 | intersection_449.tif 2248 | intersection_449.tif 2249 | intersection_449.tif 2250 | intersection_449.tif 2251 | playground_450.tif 2252 | playground_450.tif 2253 | playground_450.tif 2254 | playground_450.tif 2255 | playground_450.tif 2256 | storagetanks_451.tif 2257 | storagetanks_451.tif 2258 | storagetanks_451.tif 2259 | storagetanks_451.tif 2260 | storagetanks_451.tif 2261 | --------------------------------------------------------------------------------