Showing preview only (686K chars total). Download the full file or copy to clipboard to get everything.
Repository: liyunsheng13/BDL
Branch: master
Commit: a0e5821f79cf
Files: 29
Total size: 665.5 KB
Directory structure:
gitextract_uic_0g2j/
├── BDL.py
├── LICENSE
├── README.md
├── SSL.py
├── cyclegan/
│ ├── cycle_gan_model.py
│ ├── deeplab.py
│ ├── networks.py
│ └── readme.md
├── data/
│ ├── __init__.py
│ ├── cityscapes_dataset.py
│ ├── cityscapes_dataset_label.py
│ ├── gta5_dataset.py
│ └── synthia_dataset.py
├── dataset/
│ ├── cityscapes_list/
│ │ ├── info.json
│ │ ├── label.txt
│ │ ├── train.txt
│ │ └── val.txt
│ ├── gta5_list/
│ │ └── train.txt
│ └── synthia_list/
│ └── train.txt
├── evaluation.py
├── model/
│ ├── __init__.py
│ ├── deeplab.py
│ ├── discriminator.py
│ └── fcn8s.py
├── options/
│ ├── __init__.py
│ ├── test_options.py
│ └── train_options.py
└── utils/
├── __init__.py
└── timer.py
================================================
FILE CONTENTS
================================================
================================================
FILE: BDL.py
================================================
import torch
from torch.autograd import Variable
import torch.backends.cudnn as cudnn
import torch.nn.functional as F
from options.train_options import TrainOptions
import os
import numpy as np
from data import CreateSrcDataLoader
from data import CreateTrgDataLoader
from model import CreateModel
from model import CreateDiscriminator
from utils.timer import Timer
import tensorboardX
def main():
opt = TrainOptions()
args = opt.initialize()
_t = {'iter time' : Timer()}
model_name = args.source + '_to_' + args.target
if not os.path.exists(args.snapshot_dir):
os.makedirs(args.snapshot_dir)
os.makedirs(os.path.join(args.snapshot_dir, 'logs'))
opt.print_options(args)
sourceloader, targetloader = CreateSrcDataLoader(args), CreateTrgDataLoader(args)
targetloader_iter, sourceloader_iter = iter(targetloader), iter(sourceloader)
model, optimizer = CreateModel(args)
model_D, optimizer_D = CreateDiscriminator(args)
start_iter = 0
if args.restore_from is not None:
start_iter = int(args.restore_from.rsplit('/', 1)[1].rsplit('_')[1])
train_writer = tensorboardX.SummaryWriter(os.path.join(args.snapshot_dir, "logs", model_name))
bce_loss = torch.nn.BCEWithLogitsLoss()
cudnn.enabled = True
cudnn.benchmark = True
model.train()
model.cuda()
model_D.train()
model_D.cuda()
loss = ['loss_seg_src', 'loss_seg_trg', 'loss_D_trg_fake', 'loss_D_src_real', 'loss_D_trg_real']
_t['iter time'].tic()
for i in range(start_iter, args.num_steps):
model.adjust_learning_rate(args, optimizer, i)
model_D.adjust_learning_rate(args, optimizer_D, i)
optimizer.zero_grad()
optimizer_D.zero_grad()
for param in model_D.parameters():
param.requires_grad = False
src_img, src_lbl, _, _ = sourceloader_iter.next()
src_img, src_lbl = Variable(src_img).cuda(), Variable(src_lbl.long()).cuda()
src_seg_score = model(src_img, lbl=src_lbl)
loss_seg_src = model.loss
loss_seg_src.backward()
if args.data_label_folder_target is not None:
trg_img, trg_lbl, _, _ = targetloader_iter.next()
trg_img, trg_lbl = Variable(trg_img).cuda(), Variable(trg_lbl.long()).cuda()
trg_seg_score = model(trg_img, lbl=trg_lbl)
loss_seg_trg = model.loss
else:
trg_img, _, name = targetloader_iter.next()
trg_img = Variable(trg_img).cuda()
trg_seg_score = model(trg_img)
loss_seg_trg = 0
outD_trg = model_D(F.softmax(trg_seg_score), 0)
loss_D_trg_fake = model_D.loss
loss_trg = args.lambda_adv_target * loss_D_trg_fake + loss_seg_trg
loss_trg.backward()
for param in model_D.parameters():
param.requires_grad = True
src_seg_score, trg_seg_score = src_seg_score.detach(), trg_seg_score.detach()
outD_src = model_D(F.softmax(src_seg_score), 0)
loss_D_src_real = model_D.loss / 2
loss_D_src_real.backward()
outD_trg = model_D(F.softmax(trg_seg_score), 1)
loss_D_trg_real = model_D.loss / 2
loss_D_trg_real.backward()
optimizer.step()
optimizer_D.step()
for m in loss:
train_writer.add_scalar(m, eval(m), i+1)
if (i+1) % args.save_pred_every == 0:
print 'taking snapshot ...'
torch.save(model.state_dict(), os.path.join(args.snapshot_dir, '%s_' %(args.source) +str(i+1)+'.pth' ))
if (i+1) % args.print_freq == 0:
_t['iter time'].toc(average=False)
print '[it %d][src seg loss %.4f][lr %.4f][%.2fs]' % \
(i + 1, loss_seg_src.data, optimizer.param_groups[0]['lr']*10000, _t['iter time'].diff)
if i + 1 > args.num_steps_stop:
print 'finish training'
break
_t['iter time'].tic()
if __name__ == '__main__':
os.system('nvidia-smi -q -d Memory |grep -A4 GPU|grep Free >tmp')
memory_gpu=[int(x.split()[2]) for x in open('tmp','r').readlines()]
os.system('rm tmp')
os.environ["CUDA_VISIBLE_DEVICES"] = str(np.argmax(memory_gpu))
main()
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2019 Bidirectional Learning for Domain Adaptation of Semantic Segmentation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
# Bidirectional Learning for Domain Adaptation of Semantic Segmentation (CVPR 2019)
A [pytorch](http://pytorch.org/) implementation of [BDL](https://arxiv.org/pdf/1904.10620.pdf).
If you use this code in your research please consider citing
>@article{li2019bidirectional,
title={Bidirectional Learning for Domain Adaptation of Semantic Segmentation},
author={Li, Yunsheng and Yuan, Lu and Vasconcelos, Nuno},
journal={arXiv preprint arXiv:1904.10620},
year={2019}
}
### Requirements
- Hardware: PC with NVIDIA Titan GPU.
- Software: *Ubuntu 16.04*, *CUDA 9.2*, *Anaconda2*, *pytorch 0.4.0*
- Python package
- `conda install pytorch=0.4.0 torchvision cuda91 -y -c pytorch`
- `pip install tensorboard tensorboardX`
### Datasets
* Download the [GTA5 Dataset](https://download.visinf.tu-darmstadt.de/data/from_games/) as source dataset
* Download the [Cityscapes Dataset](https://www.cityscapes-dataset.com/) as target dataset
### Train adaptive segmenation network in BDL
* Transferred images for CityScapes dataset can be found:
* [GTA5 as CityScapes (DeepLab)](https://drive.google.com/open?id=1OBvYVz2ND4ipdfnkhSaseT8yu2ru5n5l)
* Initial model can be downloaded from [DeepLab-V2](https://drive.google.com/open?id=1TIrTmFKqEyf3pOKniv8-53m3v9SyBK0u)
* Training example (without self-supervised learning):
```
python BDL.py --snapshot-dir ./snapshots/gta2city \
--init-weights /path/to/inital_weights \
--num-steps-stop 80000 \
--model DeepLab
```
* Training example (with self-supervised learning):
* Download the model [SSL_step1](https://drive.google.com/open?id=1cB5WT_aEm1KYfdOkD81B3C7mRo9ubfcX) or [SSL_step2](https://drive.google.com/open?id=1WtM2dLtRwFvCL_t9Gi6mYhTago_Fk-rA) to generate pseudo labels for CityScapes dataset and then run:
```
python SSL.py --data-list-target /path/to/dataset/cityscapes_list/train.txt \
--restore-from /path/to/SSL_step1_or_SSL_step2 \
--model DeepLab \
--save /path/to/cityscapes/cityscapes_ssl \
--set train
```
With the pseudo labels, the adaptive segmenation model can be trained as:
```
python BDL.py --data-label-folder-target pseudo_label_folder_name \
--snapshot-dir ./snapshots/gta2city_ssl \
--init-weights /path/to/inital_weights \
--num-steps-stop 120000 \
--model DeepLab
```
### Evaluation
The pre-trained model can be downloaded here [GTA5_deeplab](https://drive.google.com/open?id=1uNIydmPONNh29PeXqCb9MGRAnCWxAu99). You can use the pre-trained model or your own model to make a test as following:
```
python evaluation.py --restore-from ./snapshots/gta2city \
--save /path/to/cityscapes/results
```
### Others
The different initial models can be downloaded here:
* Download [SYNTHIA as CityScapes](https://drive.google.com/open?id=1d7GxVhyN8HzEIPDeRIB3dRXTYzHI91ng)
* Download [initial weights of GTA5 for VGG16-FCN](https://drive.google.com/open?id=1Ud27yq6IXPRvcmUkPkLP9DNseTQ5d98D)
* Download [initial weights of SYNTHIA for VGG16-FCN](https://drive.google.com/open?id=1FGC-_kzPBnSzBj6oq-g_KqdudDt9huV3)
If you want to use BDL for SYNTHIA dataset or use VGG-FCN model, you can assign '--source synthia' or '--model VGG'
The model for SYNTHIA with DeepLab or VGG can be downloaded here to reproduce the results in the paper:
* Download [SYNTHIA_deeplab](https://drive.google.com/open?id=1RGHJ_SRLnCcFRATnaJ3Vx5YNJ7HGkUYI)
* Download [SYNTHIA_VGG](https://drive.google.com/open?id=1S2_PJCD-LE6YGdusplC3SoBgwdNQ9eN_)
The model for GTA5 with VGG can be downloaded here to reproduce the results in the paper:
* Download [GTA5_VGG](https://drive.google.com/open?id=1AsNXc_SzN6FcAxJEKUn-WF4pqoj7o9e0)
The other transferred images can be downloaed here:
* Download [GTA5 as Cityscapes (VGG)](https://drive.google.com/open?id=15XjJOuLHPinOu4FtYJunIoMQnHiMgpYc)
* Download [SYNTHIA as Cityscapes (DeepLab)](https://drive.google.com/open?id=1d7GxVhyN8HzEIPDeRIB3dRXTYzHI91ng)
* Download [SYNTHIA as Cityscapes (VGG)](https://drive.google.com/open?id=1YlIHqLYTSL-JAGRLA8_9xDvOTnP3zVIs)
### Acknowledgment
This code is heavily borrowed from [AdaptSegNet](https://github.com/wasidennis/AdaptSegNet)
================================================
FILE: SSL.py
================================================
import torch
import torch.nn as nn
from torch.autograd import Variable
from torch.utils import data
from options.test_options import TestOptions
from data import CreateTrgDataSSLLoader
from PIL import Image
import json
import os.path as osp
import os
import numpy as np
from model import CreateSSLModel
def main():
opt = TestOptions()
args = opt.initialize()
if not os.path.exists(args.save):
os.makedirs(args.save)
model = CreateSSLModel(args)
model.eval()
model.cuda()
targetloader = CreateTrgDataSSLLoader(args)
predicted_label = np.zeros((len(targetloader), 512, 1024))
predicted_prob = np.zeros((len(targetloader), 512, 1024))
image_name = []
for index, batch in enumerate(targetloader):
if index % 100 == 0:
print '%d processd' % index
image, _, name = batch
output = model(Variable(image).cuda(), ssl=True)
output = nn.functional.softmax(output, dim=1)
output = nn.functional.upsample(output, (512, 1024), mode='bilinear', align_corners=True).cpu().data[0].numpy()
output = output.transpose(1,2,0)
label, prob = np.argmax(output, axis=2), np.max(output, axis=2)
predicted_label[index] = label.copy()
predicted_prob[index] = prob.copy()
image_name.append(name[0])
thres = []
for i in range(19):
x = predicted_prob[predicted_label==i]
if len(x) == 0:
thres.append(0)
continue
x = np.sort(x)
thres.append(x[np.int(np.round(len(x)*0.5))])
print thres
thres = np.array(thres)
thres[thres>0.9]=0.9
print thres
for index in range(len(targetloader)):
name = image_name[index]
label = predicted_label[index]
prob = predicted_prob[index]
for i in range(19):
label[(prob<thres[i])*(label==i)] = 255
output = np.asarray(label, dtype=np.uint8)
output = Image.fromarray(output)
name = name.split('/')[-1]
output.save('%s/%s' % (args.save, name))
if __name__ == '__main__':
os.system('nvidia-smi -q -d Memory |grep -A4 GPU|grep Free >tmp')
memory_gpu=[int(x.split()[2]) for x in open('tmp','r').readlines()]
os.system('rm tmp')
os.environ["CUDA_VISIBLE_DEVICES"] = str(np.argmax(memory_gpu))
main()
================================================
FILE: cyclegan/cycle_gan_model.py
================================================
import torch
import itertools
from util.image_pool import ImagePool
from .base_model import BaseModel
from . import networks
import torch.nn as nn
from torch.autograd import Variable
class CycleGANModel(BaseModel):
def name(self):
return 'CycleGANModel'
@staticmethod
def modify_commandline_options(parser, is_train=True):
# default CycleGAN did not use dropout
parser.set_defaults(no_dropout=True)
if is_train:
parser.add_argument('--lambda_A', type=float, default=10.0, help='weight for cycle loss (A -> B -> A)')
parser.add_argument('--lambda_B', type=float, default=10.0,
help='weight for cycle loss (B -> A -> B)')
parser.add_argument('--lambda_identity', type=float, default=0.5, help='use identity mapping. Setting lambda_identity other than 0 has an effect of scaling the weight of the identity mapping loss. For example, if the weight of the identity loss should be 10 times smaller than the weight of the reconstruction loss, please set lambda_identity = 0.1')
parser.add_argument('--init_weights', type=str, default='semantic model initialization ', help='directory to the pth model')
parser.add_argument('--lambda_semantic', type=float, default=1, help='semantic loss weight')
return parser
def initialize(self, opt):
BaseModel.initialize(self, opt)
# specify the training losses you want to print out. The program will call base_model.get_current_losses
self.loss_names = ['D_A', 'G_A', 'cycle_A', 'idt_A', 'sem_A', 'rec_sem_A', 'D_B', 'G_B', 'cycle_B', 'idt_B', 'sem_B', 'rec_sem_B']
# specify the images you want to save/display. The program will call base_model.get_current_visuals
# specify the models you want to save to the disk. The program will call base_model.save_networks and base_model.load_networks
if self.isTrain: #lys
visual_names_A = ['real_A', 'fake_B', 'rec_A']
visual_names_B = ['real_B', 'fake_A', 'rec_B']
if self.isTrain and self.opt.lambda_identity > 0.0:
visual_names_A.append('idt_A')
visual_names_B.append('idt_B')
if self.isTrain:
self.visual_names = visual_names_A + visual_names_B
else:
if self.opt.which_direction == 'AtoB':
self.visual_names = ['fake_B']
else:
self.visual_names = ['fake_A']
# specify the models you want to save to the disk. The program will call base_model.save_networks and base_model.load_networks
if self.isTrain:
self.model_names = ['G_A', 'G_B', 'D_A', 'D_B']
else: # during test time, only load Gs
self.model_names = ['G_A', 'G_B']
# load/define networks
# The naming conversion is different from those used in the paper
# Code (paper): G_A (G), G_B (F), D_A (D_Y), D_B (D_X)
self.netG_A = networks.define_G(opt.input_nc, opt.output_nc,
opt.ngf, opt.which_model_netG, opt.norm, not opt.no_dropout, opt.init_type, opt.init_gain, self.gpu_ids)
self.netG_B = networks.define_G(opt.output_nc, opt.input_nc,
opt.ngf, opt.which_model_netG, opt.norm, not opt.no_dropout, opt.init_type, opt.init_gain, self.gpu_ids)
if self.isTrain:
use_sigmoid = opt.no_lsgan
self.netD_A = networks.define_D(opt.output_nc, opt.ndf, opt.which_model_netD,
opt.n_layers_D, opt.norm, use_sigmoid, opt.init_type, opt.init_gain, self.gpu_ids)
self.netD_B = networks.define_D(opt.input_nc, opt.ndf, opt.which_model_netD,
opt.n_layers_D, opt.norm, use_sigmoid, opt.init_type, opt.init_gain, self.gpu_ids)
self.semantic = networks.semantic(init_weights=opt.init_weights, gpu_ids=self.gpu_ids)
self.interp = nn.Upsample(size=(opt.fineSize, opt.fineSize), mode='bilinear', align_corners=True)
self.instancenorm = nn.InstanceNorm2d(19, affine=False)
if self.isTrain:
self.fake_A_pool = ImagePool(opt.pool_size)
self.fake_B_pool = ImagePool(opt.pool_size)
# define loss functions
self.criterionGAN = networks.GANLoss(use_lsgan=not opt.no_lsgan).to(self.device)
self.criterion = networks.CrossEntropy2d().to(self.device)
self.criterionCycle = torch.nn.L1Loss()
self.criterionIdt = torch.nn.L1Loss()
# initialize optimizers
self.optimizer_G = torch.optim.Adam(itertools.chain(self.netG_A.parameters(), self.netG_B.parameters()),
lr=opt.lr, betas=(opt.beta1, 0.999))
self.optimizer_D = torch.optim.Adam(itertools.chain(self.netD_A.parameters(), self.netD_B.parameters()),
lr=opt.lr, betas=(opt.beta1, 0.999))
self.optimizers = []
self.optimizers.append(self.optimizer_G)
self.optimizers.append(self.optimizer_D)
def set_input(self, input):
AtoB = self.opt.which_direction == 'AtoB'
self.real_A = input['A' if AtoB else 'B'].to(self.device)
self.real_B = input['B' if AtoB else 'A'].to(self.device)
self.image_paths = input['A_paths' if AtoB else 'B_paths']
def forward(self):
if self.isTrain:
self.fake_B = self.netG_A(self.real_A)
#self.rec_A = self.netG_B(torch.cat((self.fake_B[:,0:3,:,:], self.real_A[:,3,:,:].unsqueeze(1)), 1)) #lys
self.rec_A = self.netG_B(self.fake_B)
self.fake_A = self.netG_B(self.real_B)
#self.rec_B = self.netG_A(torch.cat((self.fake_A[:,0:3,:,:], self.real_B[:,3,:,:].unsqueeze(1)), 1))
self.rec_B = self.netG_A(self.fake_A)
else:
if self.opt.which_direction == 'AtoB':
self.fake_B = self.netG_A(self.real_A)
else:
self.fake_A = self.netG_B(self.real_A)
def backward_D_basic(self, netD, real, fake):
# Real
pred_real = netD(real)
loss_D_real = self.criterionGAN(pred_real, True)
# Fake
pred_fake = netD(fake.detach())
loss_D_fake = self.criterionGAN(pred_fake, False)
# Combined loss
loss_D = (loss_D_real + loss_D_fake) * 0.5
# backward
loss_D.backward()
return loss_D
def backward_D_A(self):
fake_B = self.fake_B_pool.query(self.fake_B)
self.loss_D_A = self.backward_D_basic(self.netD_A, self.real_B, fake_B)
def backward_D_B(self):
fake_A = self.fake_A_pool.query(self.fake_A)
self.loss_D_B = self.backward_D_basic(self.netD_B, self.real_A, fake_A)
def backward_G(self):
lambda_idt = self.opt.lambda_identity
lambda_A = self.opt.lambda_A
lambda_B = self.opt.lambda_B
# Identity loss
if lambda_idt > 0:
# G_A should be identity if real_B is fed.
self.idt_A = self.netG_A(self.real_B)
self.loss_idt_A = self.criterionIdt(self.idt_A, self.real_B) * lambda_B * lambda_idt
# G_B should be identity if real_A is fed.
self.idt_B = self.netG_B(self.real_A)
self.loss_idt_B = self.criterionIdt(self.idt_B, self.real_A) * lambda_A * lambda_idt
else:
self.loss_idt_A = 0
self.loss_idt_B = 0
# GAN loss D_A(G_A(A))
self.loss_G_A = self.criterionGAN(self.netD_A(self.fake_B), True)
# GAN loss D_B(G_B(B))
self.loss_G_B = self.criterionGAN(self.netD_B(self.fake_A), True)
# Forward cycle loss
self.loss_cycle_A = self.criterionCycle(self.rec_A, self.real_A) * lambda_A
# Backward cycle loss
self.loss_cycle_B = self.criterionCycle(self.rec_B, self.real_B) * lambda_B
# semantic loss
real_A_feat, rec_A_feat = self.compute_semantic_feat(self.real_A), self.compute_semantic_feat(self.rec_A)
real_B_feat, rec_B_feat = self.compute_semantic_feat(self.real_B), self.compute_semantic_feat(self.rec_B)
fake_A_feat, fake_B_feat = self.compute_semantic_feat(self.fake_A), self.compute_semantic_feat(self.fake_B)
self.loss_rec_sem_A = self.compute_semantic_loss(rec_A_feat, real_A_feat) * lambda_A * self.opt.lambda_semantic #lys
self.loss_rec_sem_B = self.compute_semantic_loss(rec_B_feat, real_B_feat) * lambda_B * self.opt.lambda_semantic #lys
self.loss_sem_A = self.compute_semantic_loss(fake_B_feat, real_A_feat) * 0.1 #lys
self.loss_sem_B = self.compute_semantic_loss(fake_A_feat, real_B_feat) * 0.1 #lys
# combined loss
self.loss_G = self.loss_G_A + self.loss_G_B + self.loss_cycle_A + self.loss_cycle_B + self.loss_idt_A + self.loss_idt_B + self.loss_sem_A +self.loss_sem_B + self.loss_rec_sem_A + self.loss_rec_sem_B
self.loss_G.backward()
def optimize_parameters(self):
# forward
self.forward()
# G_A and G_B
self.set_requires_grad([self.netD_A, self.netD_B], False)
self.optimizer_G.zero_grad()
self.backward_G()
self.optimizer_G.step()
# D_A and D_B
self.set_requires_grad([self.netD_A, self.netD_B], True)
self.optimizer_D.zero_grad()
self.backward_D_A()
self.backward_D_B()
self.optimizer_D.step()
def compute_semantic_loss(self, img_feat, target_feat):
return torch.mean((self.instancenorm(img_feat) - self.instancenorm(target_feat)) ** 2)
def compute_semantic_feat(self, img):
img_vgg = self.img_preprocess(img)
img_feat = self.semantic(img_vgg)
return img_feat
def img_preprocess(self, batch):
tensortype = type(batch.data)
(r, g, b) = torch.chunk(batch, 3, dim=1)
batch = torch.cat((b, g, r), dim=1) # convert RGB to BGR
batch = (batch + 1) * 255 * 0.5 # [-1, 1] -> [0, 255]
mean = tensortype(batch.data.size())
mean[:, 0, :, :] = 104.00698793
mean[:, 1, :, :] = 116.66876762
mean[:, 2, :, :] = 122.67891434
batch = batch.sub(Variable(mean).to(self.device)) # subtract mean
return batch
================================================
FILE: cyclegan/deeplab.py
================================================
import torch.nn as nn
import torch.nn.functional as F
import math
import torch.utils.model_zoo as model_zoo
import torch
import numpy as np
affine_par = True
def outS(i):
i = int(i)
i = (i + 1) / 2
i = int(np.ceil((i + 1) / 2.0))
i = (i + 1) / 2
return i
def conv3x3(in_planes, out_planes, stride=1):
"3x3 convolution with padding"
return nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride,
padding=1, bias=False)
class BasicBlock(nn.Module):
expansion = 1
def __init__(self, inplanes, planes, stride=1, downsample=None):
super(BasicBlock, self).__init__()
self.conv1 = conv3x3(inplanes, planes, stride)
self.bn1 = nn.BatchNorm2d(planes, affine=affine_par)
self.relu = nn.ReLU(inplace=True)
self.conv2 = conv3x3(planes, planes)
self.bn2 = nn.BatchNorm2d(planes, affine=affine_par)
self.downsample = downsample
self.stride = stride
def forward(self, x):
residual = x
out = self.conv1(x)
out = self.bn1(out)
out = self.relu(out)
out = self.conv2(out)
out = self.bn2(out)
if self.downsample is not None:
residual = self.downsample(x)
out += residual
out = self.relu(out)
return out
class Bottleneck(nn.Module):
expansion = 4
def __init__(self, inplanes, planes, stride=1, dilation=1, downsample=None):
super(Bottleneck, self).__init__()
self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=1, stride=stride, bias=False) # change
self.bn1 = nn.BatchNorm2d(planes, affine=affine_par)
for i in self.bn1.parameters():
i.requires_grad = False
padding = dilation
self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, stride=1, # change
padding=padding, bias=False, dilation=dilation)
self.bn2 = nn.BatchNorm2d(planes, affine=affine_par)
for i in self.bn2.parameters():
i.requires_grad = False
self.conv3 = nn.Conv2d(planes, planes * 4, kernel_size=1, bias=False)
self.bn3 = nn.BatchNorm2d(planes * 4, affine=affine_par)
for i in self.bn3.parameters():
i.requires_grad = False
self.relu = nn.ReLU(inplace=True)
self.downsample = downsample
self.stride = stride
def forward(self, x):
residual = x
out = self.conv1(x)
out = self.bn1(out)
out = self.relu(out)
out = self.conv2(out)
out = self.bn2(out)
out = self.relu(out)
out = self.conv3(out)
out = self.bn3(out)
if self.downsample is not None:
residual = self.downsample(x)
out += residual
out = self.relu(out)
return out
class Classifier_Module(nn.Module):
def __init__(self, inplanes, dilation_series, padding_series, num_classes):
super(Classifier_Module, self).__init__()
self.conv2d_list = nn.ModuleList()
for dilation, padding in zip(dilation_series, padding_series):
self.conv2d_list.append(
nn.Conv2d(inplanes, num_classes, kernel_size=3, stride=1, padding=padding, dilation=dilation, bias=True))
for m in self.conv2d_list:
m.weight.data.normal_(0, 0.01)
def forward(self, x):
out = self.conv2d_list[0](x)
for i in range(len(self.conv2d_list) - 1):
out += self.conv2d_list[i + 1](x)
return out
class ResNet101(nn.Module):
def __init__(self, block, layers, num_classes, phase):
self.inplanes = 64
self.phase = phase
super(ResNet101, self).__init__()
self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3,
bias=False)
self.bn1 = nn.BatchNorm2d(64, affine=affine_par)
for i in self.bn1.parameters():
i.requires_grad = False
self.relu = nn.ReLU(inplace=True)
self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1, ceil_mode=True) # change
self.layer1 = self._make_layer(block, 64, layers[0])
self.layer2 = self._make_layer(block, 128, layers[1], stride=2)
self.layer3 = self._make_layer(block, 256, layers[2], stride=1, dilation=2)
self.layer4 = self._make_layer(block, 512, layers[3], stride=1, dilation=4)
self.layer5 = self._make_pred_layer(Classifier_Module, 2048, [6, 12, 18, 24], [6, 12, 18, 24], num_classes)
for m in self.modules():
if isinstance(m, nn.Conv2d):
n = m.kernel_size[0] * m.kernel_size[1] * m.out_channels
m.weight.data.normal_(0, 0.01)
elif isinstance(m, nn.BatchNorm2d):
m.weight.data.fill_(1)
m.bias.data.zero_()
# for i in m.parameters():
# i.requires_grad = False
def _make_layer(self, block, planes, blocks, stride=1, dilation=1):
downsample = None
if stride != 1 or self.inplanes != planes * block.expansion or dilation == 2 or dilation == 4:
downsample = nn.Sequential(
nn.Conv2d(self.inplanes, planes * block.expansion,
kernel_size=1, stride=stride, bias=False),
nn.BatchNorm2d(planes * block.expansion, affine=affine_par))
for i in downsample._modules['1'].parameters():
i.requires_grad = False
layers = []
layers.append(block(self.inplanes, planes, stride, dilation=dilation, downsample=downsample))
self.inplanes = planes * block.expansion
for i in range(1, blocks):
layers.append(block(self.inplanes, planes, dilation=dilation))
return nn.Sequential(*layers)
def _make_pred_layer(self, block, inplanes, dilation_series, padding_series, num_classes):
return block(inplanes, dilation_series, padding_series, num_classes)
def forward(self, x, ssl=False, lbl=None):
_, _, h, w = x.size()
x = self.conv1(x)
x = self.bn1(x)
x = self.relu(x)
x = self.maxpool(x)
x = self.layer1(x)
x = self.layer2(x)
x = self.layer3(x)
x = self.layer4(x)
x = self.layer5(x)
return x
def Deeplab(num_classes=21, init_weights=None, restore_from=None, phase='train'):
model = ResNet101(Bottleneck, [3, 4, 23, 3], num_classes, phase)
return model
================================================
FILE: cyclegan/networks.py
================================================
import torch
import torch.nn as nn
from torch.nn import init
import functools
from torch.optim import lr_scheduler
from deeplab import Deeplab #lys
from collections import OrderedDict #lys
import torch.nn.functional as F #lys
from fcn8s_LSD import FCN8s_LSD #lys
###############################################################################
# Helper Functions
###############################################################################
downsample = nn.AvgPool2d(8, stride=8)
def get_norm_layer(norm_type='instance'):
if norm_type == 'batch':
norm_layer = functools.partial(nn.BatchNorm2d, affine=True)
elif norm_type == 'instance':
norm_layer = functools.partial(nn.InstanceNorm2d, affine=False, track_running_stats=True)
elif norm_type == 'none':
norm_layer = None
else:
raise NotImplementedError('normalization layer [%s] is not found' % norm_type)
return norm_layer
def get_scheduler(optimizer, opt):
if opt.lr_policy == 'lambda':
def lambda_rule(epoch):
lr_l = 1.0 - max(0, epoch + 1 + opt.epoch_count - opt.niter) / float(opt.niter_decay + 1)
return lr_l
scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lambda_rule)
elif opt.lr_policy == 'step':
scheduler = lr_scheduler.StepLR(optimizer, step_size=opt.lr_decay_iters, gamma=0.1)
elif opt.lr_policy == 'plateau':
scheduler = lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', factor=0.2, threshold=0.01, patience=5)
else:
return NotImplementedError('learning rate policy [%s] is not implemented', opt.lr_policy)
return scheduler
def init_weights(net, init_type='normal', gain=0.02):
def init_func(m):
classname = m.__class__.__name__
if hasattr(m, 'weight') and (classname.find('Conv') != -1 or classname.find('Linear') != -1):
if init_type == 'normal':
init.normal_(m.weight.data, 0.0, gain)
elif init_type == 'xavier':
init.xavier_normal_(m.weight.data, gain=gain)
elif init_type == 'kaiming':
init.kaiming_normal_(m.weight.data, a=0, mode='fan_in')
elif init_type == 'orthogonal':
init.orthogonal_(m.weight.data, gain=gain)
else:
raise NotImplementedError('initialization method [%s] is not implemented' % init_type)
if hasattr(m, 'bias') and m.bias is not None:
init.constant_(m.bias.data, 0.0)
elif classname.find('BatchNorm2d') != -1:
init.normal_(m.weight.data, 1.0, gain)
init.constant_(m.bias.data, 0.0)
print('initialize network with %s' % init_type)
net.apply(init_func)
def init_net(net, init_type='normal', init_gain=0.02, gpu_ids=[]):
if len(gpu_ids) > 0:
assert(torch.cuda.is_available())
net.to(gpu_ids[0])
net = torch.nn.DataParallel(net, gpu_ids)
init_weights(net, init_type, gain=init_gain)
return net
def define_G(input_nc, output_nc, ngf, which_model_netG, norm='batch', use_dropout=False, init_type='normal', init_gain=0.02, gpu_ids=[]):
netG = None
norm_layer = get_norm_layer(norm_type=norm)
if which_model_netG == 'resnet_9blocks':
netG = ResnetGenerator(input_nc, output_nc, ngf, norm_layer=norm_layer, use_dropout=use_dropout, n_blocks=9)
elif which_model_netG == 'resnet_6blocks':
netG = ResnetGenerator(input_nc, output_nc, ngf, norm_layer=norm_layer, use_dropout=use_dropout, n_blocks=6)
elif which_model_netG == 'unet_128':
netG = UnetGenerator(input_nc, output_nc, 7, ngf, norm_layer=norm_layer, use_dropout=use_dropout)
elif which_model_netG == 'unet_256':
netG = UnetGenerator(input_nc, output_nc, 8, ngf, norm_layer=norm_layer, use_dropout=use_dropout)
else:
raise NotImplementedError('Generator model name [%s] is not recognized' % which_model_netG)
return init_net(netG, init_type, init_gain, gpu_ids)
def define_D(input_nc, ndf, which_model_netD,
n_layers_D=3, norm='batch', use_sigmoid=False, init_type='normal', init_gain=0.02, gpu_ids=[]):
netD = None
norm_layer = get_norm_layer(norm_type=norm)
if which_model_netD == 'basic':
netD = NLayerDiscriminator(input_nc, ndf, n_layers=3, norm_layer=norm_layer, use_sigmoid=use_sigmoid)
elif which_model_netD == 'n_layers':
netD = NLayerDiscriminator(input_nc, ndf, n_layers_D, norm_layer=norm_layer, use_sigmoid=use_sigmoid)
elif which_model_netD == 'pixel':
netD = PixelDiscriminator(input_nc, ndf, norm_layer=norm_layer, use_sigmoid=use_sigmoid)
else:
raise NotImplementedError('Discriminator model name [%s] is not recognized' %
which_model_netD)
return init_net(netD, init_type, init_gain, gpu_ids)
def semantic(init_weights=None, gpu_ids=0):
model = Deeplab(num_classes=19)
if init_weights is not None:
saved_state_dict = torch.load(init_weights, map_location=lambda storage, loc: storage)
model.load_state_dict(saved_state_dict)
model.eval()
for param in model.parameters():
param.requires_grad = False
model.to(gpu_ids[0])
model = torch.nn.DataParallel(model, gpu_ids)
return model
##############################################################################
# Classes
##############################################################################
# Defines the GAN loss which uses either LSGAN or the regular GAN.
# When LSGAN is used, it is basically same as MSELoss,
# but it abstracts away the need to create the target label tensor
# that has the same size as the input
class GANLoss(nn.Module):
def __init__(self, use_lsgan=True, target_real_label=1.0, target_fake_label=0.0):
super(GANLoss, self).__init__()
self.register_buffer('real_label', torch.tensor(target_real_label))
self.register_buffer('fake_label', torch.tensor(target_fake_label))
if use_lsgan:
self.loss = nn.MSELoss()
else:
self.loss = nn.BCELoss()
def get_target_tensor(self, input, target_is_real):
if target_is_real:
target_tensor = self.real_label
else:
target_tensor = self.fake_label
return target_tensor.expand_as(input)
def __call__(self, input, target_is_real):
target_tensor = self.get_target_tensor(input, target_is_real)
return self.loss(input, target_tensor)
# Defines the generator that consists of Resnet blocks between a few
# downsampling/upsampling operations.
# Code and idea originally from Justin Johnson's architecture.
# https://github.com/jcjohnson/fast-neural-style/
class ResnetGenerator(nn.Module):
def __init__(self, input_nc, output_nc, ngf=64, norm_layer=nn.BatchNorm2d, use_dropout=False, n_blocks=6, padding_type='reflect'):
assert(n_blocks >= 0)
super(ResnetGenerator, self).__init__()
self.input_nc = input_nc
self.output_nc = output_nc
self.ngf = ngf
if type(norm_layer) == functools.partial:
use_bias = norm_layer.func == nn.InstanceNorm2d
else:
use_bias = norm_layer == nn.InstanceNorm2d
model = [nn.ReflectionPad2d(3),
nn.Conv2d(input_nc, ngf, kernel_size=7, padding=0,
bias=use_bias),
norm_layer(ngf),
nn.ReLU(True)]
n_downsampling = 2
for i in range(n_downsampling):
mult = 2**i
model += [nn.Conv2d(ngf * mult, ngf * mult * 2, kernel_size=3,
stride=2, padding=1, bias=use_bias),
norm_layer(ngf * mult * 2),
nn.ReLU(True)]
mult = 2**n_downsampling
for i in range(n_blocks):
model += [ResnetBlock(ngf * mult, padding_type=padding_type, norm_layer=norm_layer, use_dropout=use_dropout, use_bias=use_bias)]
for i in range(n_downsampling):
mult = 2**(n_downsampling - i)
model += [nn.ConvTranspose2d(ngf * mult, int(ngf * mult / 2),
kernel_size=3, stride=2,
padding=1, output_padding=1,
bias=use_bias),
norm_layer(int(ngf * mult / 2)),
nn.ReLU(True)]
model += [nn.ReflectionPad2d(3)]
model += [nn.Conv2d(ngf, output_nc, kernel_size=7, padding=0)]
model += [nn.Tanh()]
self.model = nn.Sequential(*model)
def forward(self, input):
return self.model(input)
# Define a resnet block
class ResnetBlock(nn.Module):
def __init__(self, dim, padding_type, norm_layer, use_dropout, use_bias):
super(ResnetBlock, self).__init__()
self.conv_block = self.build_conv_block(dim, padding_type, norm_layer, use_dropout, use_bias)
def build_conv_block(self, dim, padding_type, norm_layer, use_dropout, use_bias):
conv_block = []
p = 0
if padding_type == 'reflect':
conv_block += [nn.ReflectionPad2d(1)]
elif padding_type == 'replicate':
conv_block += [nn.ReplicationPad2d(1)]
elif padding_type == 'zero':
p = 1
else:
raise NotImplementedError('padding [%s] is not implemented' % padding_type)
conv_block += [nn.Conv2d(dim, dim, kernel_size=3, padding=p, bias=use_bias),
norm_layer(dim),
nn.ReLU(True)]
if use_dropout:
conv_block += [nn.Dropout(0.5)]
p = 0
if padding_type == 'reflect':
conv_block += [nn.ReflectionPad2d(1)]
elif padding_type == 'replicate':
conv_block += [nn.ReplicationPad2d(1)]
elif padding_type == 'zero':
p = 1
else:
raise NotImplementedError('padding [%s] is not implemented' % padding_type)
conv_block += [nn.Conv2d(dim, dim, kernel_size=3, padding=p, bias=use_bias),
norm_layer(dim)]
return nn.Sequential(*conv_block)
def forward(self, x):
out = x + self.conv_block(x)
return out
# Defines the Unet generator.
# |num_downs|: number of downsamplings in UNet. For example,
# if |num_downs| == 7, image of size 128x128 will become of size 1x1
# at the bottleneck
class UnetGenerator(nn.Module):
def __init__(self, input_nc, output_nc, num_downs, ngf=64,
norm_layer=nn.BatchNorm2d, use_dropout=False):
super(UnetGenerator, self).__init__()
# construct unet structure
unet_block = UnetSkipConnectionBlock(ngf * 8, ngf * 8, input_nc=None, submodule=None, norm_layer=norm_layer, innermost=True)
for i in range(num_downs - 5):
unet_block = UnetSkipConnectionBlock(ngf * 8, ngf * 8, input_nc=None, submodule=unet_block, norm_layer=norm_layer, use_dropout=use_dropout)
unet_block = UnetSkipConnectionBlock(ngf * 4, ngf * 8, input_nc=None, submodule=unet_block, norm_layer=norm_layer)
unet_block = UnetSkipConnectionBlock(ngf * 2, ngf * 4, input_nc=None, submodule=unet_block, norm_layer=norm_layer)
unet_block = UnetSkipConnectionBlock(ngf, ngf * 2, input_nc=None, submodule=unet_block, norm_layer=norm_layer)
unet_block = UnetSkipConnectionBlock(output_nc, ngf, input_nc=input_nc, submodule=unet_block, outermost=True, norm_layer=norm_layer)
self.model = unet_block
def forward(self, input):
return self.model(input)
# Defines the submodule with skip connection.
# X -------------------identity---------------------- X
# |-- downsampling -- |submodule| -- upsampling --|
class UnetSkipConnectionBlock(nn.Module):
def __init__(self, outer_nc, inner_nc, input_nc=None,
submodule=None, outermost=False, innermost=False, norm_layer=nn.BatchNorm2d, use_dropout=False):
super(UnetSkipConnectionBlock, self).__init__()
self.outermost = outermost
if type(norm_layer) == functools.partial:
use_bias = norm_layer.func == nn.InstanceNorm2d
else:
use_bias = norm_layer == nn.InstanceNorm2d
if input_nc is None:
input_nc = outer_nc
downconv = nn.Conv2d(input_nc, inner_nc, kernel_size=4,
stride=2, padding=1, bias=use_bias)
downrelu = nn.LeakyReLU(0.2, True)
downnorm = norm_layer(inner_nc)
uprelu = nn.ReLU(True)
upnorm = norm_layer(outer_nc)
if outermost:
upconv = nn.ConvTranspose2d(inner_nc * 2, outer_nc,
kernel_size=4, stride=2,
padding=1)
down = [downconv]
up = [uprelu, upconv, nn.Tanh()]
model = down + [submodule] + up
elif innermost:
upconv = nn.ConvTranspose2d(inner_nc, outer_nc,
kernel_size=4, stride=2,
padding=1, bias=use_bias)
down = [downrelu, downconv]
up = [uprelu, upconv, upnorm]
model = down + up
else:
upconv = nn.ConvTranspose2d(inner_nc * 2, outer_nc,
kernel_size=4, stride=2,
padding=1, bias=use_bias)
down = [downrelu, downconv, downnorm]
up = [uprelu, upconv, upnorm]
if use_dropout:
model = down + [submodule] + up + [nn.Dropout(0.5)]
else:
model = down + [submodule] + up
self.model = nn.Sequential(*model)
def forward(self, x):
if self.outermost:
return self.model(x)
else:
return torch.cat([x, self.model(x)], 1)
# Defines the PatchGAN discriminator with the specified arguments.
class NLayerDiscriminator(nn.Module):
def __init__(self, input_nc, ndf=64, n_layers=3, norm_layer=nn.BatchNorm2d, use_sigmoid=False):
super(NLayerDiscriminator, self).__init__()
if type(norm_layer) == functools.partial:
use_bias = norm_layer.func == nn.InstanceNorm2d
else:
use_bias = norm_layer == nn.InstanceNorm2d
kw = 4
padw = 1
sequence = [
nn.Conv2d(input_nc, ndf, kernel_size=kw, stride=2, padding=padw),
nn.LeakyReLU(0.2, True)
]
nf_mult = 1
nf_mult_prev = 1
for n in range(1, n_layers):
nf_mult_prev = nf_mult
nf_mult = min(2**n, 8)
sequence += [
nn.Conv2d(ndf * nf_mult_prev, ndf * nf_mult,
kernel_size=kw, stride=2, padding=padw, bias=use_bias),
norm_layer(ndf * nf_mult),
nn.LeakyReLU(0.2, True)
]
nf_mult_prev = nf_mult
nf_mult = min(2**n_layers, 8)
sequence += [
nn.Conv2d(ndf * nf_mult_prev, ndf * nf_mult,
kernel_size=kw, stride=1, padding=padw, bias=use_bias),
norm_layer(ndf * nf_mult),
nn.LeakyReLU(0.2, True)
]
sequence += [nn.Conv2d(ndf * nf_mult, 1, kernel_size=kw, stride=1, padding=padw)]
if use_sigmoid:
sequence += [nn.Sigmoid()]
self.model = nn.Sequential(*sequence)
def forward(self, input):
return self.model(input)
class PixelDiscriminator(nn.Module):
def __init__(self, input_nc, ndf=64, norm_layer=nn.BatchNorm2d, use_sigmoid=False):
super(PixelDiscriminator, self).__init__()
if type(norm_layer) == functools.partial:
use_bias = norm_layer.func == nn.InstanceNorm2d
else:
use_bias = norm_layer == nn.InstanceNorm2d
self.net = [
nn.Conv2d(input_nc, ndf, kernel_size=1, stride=1, padding=0),
nn.LeakyReLU(0.2, True),
nn.Conv2d(ndf, ndf * 2, kernel_size=1, stride=1, padding=0, bias=use_bias),
norm_layer(ndf * 2),
nn.LeakyReLU(0.2, True),
nn.Conv2d(ndf * 2, 1, kernel_size=1, stride=1, padding=0, bias=use_bias)]
if use_sigmoid:
self.net.append(nn.Sigmoid())
self.net = nn.Sequential(*self.net)
def forward(self, input):
return self.net(input)
class CrossEntropy2d(nn.Module):
def __init__(self, size_average=True, ignore_label=255):
super(CrossEntropy2d, self).__init__()
self.size_average = size_average
self.ignore_label = ignore_label
def forward(self, predict, target, weight=None):
"""
Args:
predict:(n, c, h, w)
target:(n, h, w)
weight (Tensor, optional): a manual rescaling weight given to each class.
If given, has to be a Tensor of size "nclasses"
"""
assert not target.requires_grad
assert predict.dim() == 4
assert target.dim() == 3
assert predict.size(0) == target.size(0), "{0} vs {1} ".format(predict.size(0), target.size(0))
assert predict.size(2) == target.size(1), "{0} vs {1} ".format(predict.size(2), target.size(1))
assert predict.size(3) == target.size(2), "{0} vs {1} ".format(predict.size(3), target.size(3))
n, c, h, w = predict.size()
target_mask = (target >= 0) * (target != self.ignore_label)
target = target[target_mask]
if not target.data.dim():
return Variable(torch.zeros(1))
predict = predict.transpose(1, 2).transpose(2, 3).contiguous()
predict = predict[target_mask.view(n, h, w, 1).repeat(1, 1, 1, c)].view(-1, c)
loss = F.cross_entropy(predict, target.long(), weight=weight, size_average=self.size_average)
return loss
================================================
FILE: cyclegan/readme.md
================================================
# CycleGAN with semantic loss
Download [CycleGAN](https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix) and replace the files in model/ with ours.
You can use standard folllowing parameters to train it. The initial weights for semantic model for CycleGAN can be downloaded here:
* Download [CycleGAN_sem](https://drive.google.com/open?id=1ysOLKt7vgRjSOCiw1_R2v15R6-qfl3Fr)
```
python train.py --resize_or_crop scale_width_and_crop
--checkpoints_dir /path/to/checkpoints/
--dataroot datasets/gta2city/
--model cycle_gan
--display_freq 3000
--save_latest_freq 5000
--name gta2city_cyclegan
--niter 10
--niter_decay 10
--loadSize 1024
--fineSize 452
--init_weights /path/to/initial_wegiths
--lambda_semantic 1
--save_epoch_freq 1
--gpu 0,1,2,3
--batchSize 4
--lambda_identity 0.5
```
================================================
FILE: data/__init__.py
================================================
from data.gta5_dataset import GTA5DataSet
from data.cityscapes_dataset import cityscapesDataSet
from data.synthia_dataset import SYNDataSet
from data.cityscapes_dataset_label import cityscapesDataSetLabel
import numpy as np
from torch.utils import data
IMG_MEAN = np.array((104.00698793, 116.66876762, 122.67891434), dtype=np.float32)
image_sizes = {'cityscapes': (1024,512), 'gta5': (1280, 720), 'synthia': (1280, 760)}
def CreateSrcDataLoader(args):
if args.source == 'gta5':
source_dataset = GTA5DataSet(args.data_dir, args.data_list, max_iters=args.num_steps * args.batch_size,
crop_size=image_sizes['gta5'], mean=IMG_MEAN)
elif args.source == 'synthia':
source_dataset = SYNDataSet(args.data_dir, args.data_list, max_iters=args.num_steps * args.batch_size,
crop_size=image_sizes['synthia'], mean=IMG_MEAN)
else:
raise ValueError('The target dataset mush be either gta5 or synthia')
source_dataloader = data.DataLoader(source_dataset, batch_size=args.batch_size, shuffle=True, num_workers=args.num_workers, pin_memory=True)
return source_dataloader
def CreateTrgDataLoader(args):
if args.data_label_folder_target is not None:
target_dataset = cityscapesDataSetLabel(args.data_dir_target, args.data_list_target,
max_iters=args.num_steps * args.batch_size,
crop_size=image_sizes['cityscapes'], mean=IMG_MEAN,
set=args.set, label_folder=args.data_label_folder_target)
else:
if args.set == 'train':
target_dataset = cityscapesDataSet(args.data_dir_target, args.data_list_target,
max_iters=args.num_steps * args.batch_size,
crop_size=image_sizes['cityscapes'], mean=IMG_MEAN, set=args.set)
else:
target_dataset = cityscapesDataSet(args.data_dir_target, args.data_list_target,
crop_size=image_sizes['cityscapes'], mean=IMG_MEAN, set=args.set)
if args.set == 'train':
target_dataloader = data.DataLoader(target_dataset, batch_size=args.batch_size, shuffle=True, num_workers=args.num_workers, pin_memory=True)
else:
target_dataloader = data.DataLoader(target_dataset, batch_size=1, shuffle=False, pin_memory=True)
return target_dataloader
def CreateTrgDataSSLLoader(args):
target_dataset = cityscapesDataSet(args.data_dir_target, args.data_list_target,
crop_size=image_sizes['cityscapes'], mean=IMG_MEAN, set=args.set)
target_dataloader = data.DataLoader(target_dataset, batch_size=1, shuffle=False, pin_memory=True)
return target_dataloader
================================================
FILE: data/cityscapes_dataset.py
================================================
import os
import os.path as osp
import numpy as np
import random
#import matplotlib.pyplot as plt
import collections
import torch
import torchvision
from torch.utils import data
from PIL import Image
class cityscapesDataSet(data.Dataset):
def __init__(self, root, list_path, max_iters=None, crop_size=(321, 321), mean=(128, 128, 128), set='val'):
self.root = root
self.list_path = list_path
self.crop_size = crop_size
self.mean = mean
self.img_ids = [i_id.strip() for i_id in open(list_path)]
if not max_iters==None:
self.img_ids = self.img_ids * int(np.ceil(float(max_iters) / len(self.img_ids)))
self.files = []
self.set = set
def __len__(self):
return len(self.img_ids)
def __getitem__(self, index):
name = self.img_ids[index]
image = Image.open(osp.join(self.root, "leftImg8bit/%s/%s" % (self.set, name))).convert('RGB')
# resize
image = image.resize(self.crop_size, Image.BICUBIC)
image = np.asarray(image, np.float32)
size = image.shape
image = image[:, :, ::-1] # change to BGR
image -= self.mean
image = image.transpose((2, 0, 1))
return image.copy(), np.array(size), name
================================================
FILE: data/cityscapes_dataset_label.py
================================================
import os
import os.path as osp
import numpy as np
import random
#import matplotlib.pyplot as plt
import collections
import torch
import torchvision
from torch.utils import data
from PIL import Image
class cityscapesDataSetLabel(data.Dataset):
def __init__(self, root, list_path, max_iters=None, crop_size=(321, 321), mean=(128, 128, 128), set='val', label_folder=None):
self.root = root
self.list_path = list_path
self.crop_size = crop_size
self.mean = mean
self.img_ids = [i_id.strip() for i_id in open(list_path)]
if not max_iters==None:
self.img_ids = self.img_ids * int(np.ceil(float(max_iters) / len(self.img_ids)))
self.files = []
self.set = set
self.label_folder = label_folder
def __len__(self):
return len(self.img_ids)
def __getitem__(self, index):
name = self.img_ids[index]
image = Image.open(osp.join(self.root, "leftImg8bit/%s/%s" % (self.set, name))).convert('RGB')
label = Image.open(osp.join(self.root, self.label_folder+"/%s" %name.split('/')[1]))
# resize
image = image.resize(self.crop_size, Image.BICUBIC)
image = np.asarray(image, np.float32)
label = np.asarray(label, np.float32)
size = image.shape
image = image[:, :, ::-1] # change to BGR
image -= self.mean
image = image.transpose((2, 0, 1))
return image.copy(), label.copy(), np.array(size), name
================================================
FILE: data/gta5_dataset.py
================================================
import os
import os.path as osp
import numpy as np
import random
#import matplotlib.pyplot as plt
import collections
import torch
import torchvision
from torch.utils import data
from PIL import Image
class GTA5DataSet(data.Dataset):
def __init__(self, root, list_path, max_iters=None, crop_size=(321, 321), mean=(128, 128, 128), ignore_label=255):
self.root = root
self.list_path = list_path
self.crop_size = crop_size
self.ignore_label = ignore_label
self.mean = mean
self.img_ids = [i_id.strip() for i_id in open(list_path)]
if not max_iters==None:
self.img_ids = self.img_ids * int(np.ceil(float(max_iters) / len(self.img_ids)))
self.files = []
self.id_to_trainid = {7: 0, 8: 1, 11: 2, 12: 3, 13: 4, 17: 5,
19: 6, 20: 7, 21: 8, 22: 9, 23: 10, 24: 11, 25: 12,
26: 13, 27: 14, 28: 15, 31: 16, 32: 17, 33: 18}
def __len__(self):
return len(self.img_ids)
def __getitem__(self, index):
name = self.img_ids[index]
image = Image.open(osp.join(self.root, "images/%s" % name)).convert('RGB')
label = Image.open(osp.join(self.root, "labels/%s" % name))
# resize
image = image.resize(self.crop_size, Image.BICUBIC)
label = label.resize(self.crop_size, Image.NEAREST)
image = np.asarray(image, np.float32)
label = np.asarray(label, np.float32)
label_copy = self.ignore_label * np.ones(label.shape, dtype=np.float32)
for k, v in self.id_to_trainid.items():
label_copy[label == k] = v
size = image.shape
image = image[:, :, ::-1] # change to BGR
image -= self.mean
image = image.transpose((2, 0, 1))
return image.copy(), label_copy.copy(), np.array(size), name
================================================
FILE: data/synthia_dataset.py
================================================
import os
import os.path as osp
import numpy as np
import random
import matplotlib.pyplot as plt
import collections
import torch
import torchvision
from torch.utils import data
from PIL import Image
class SYNDataSet(data.Dataset):
def __init__(self, root, list_path, max_iters=None, crop_size=(321, 321), mean=(128, 128, 128), ignore_label=255):
self.root = root
self.list_path = list_path
self.crop_size = crop_size
self.ignore_label = ignore_label
self.mean = mean
self.img_ids = [i_id.strip()[4:] for i_id in open(list_path)]
if not max_iters==None:
self.img_ids = self.img_ids * int(np.ceil(float(max_iters) / len(self.img_ids)))
self.files = []
self.id_to_trainid = {3: 0, 4: 1, 2: 2, 21: 3, 5: 4, 7: 5,
15: 6, 9: 7, 6: 8, 16: 9, 1: 10, 10: 11, 17: 12,
8: 13, 18: 14, 19: 15, 20: 16, 12: 17, 11: 18}
def __len__(self):
return len(self.img_ids)
def __getitem__(self, index):
name = self.img_ids[index]
image = Image.open(osp.join(self.root, "RGB/%s" % name)).convert('RGB')
label = Image.open(osp.join(self.root, "synthia_mapped_to_cityscapes/%s" % name))
# resize
image = image.resize(self.crop_size, Image.BICUBIC)
label = label.resize(self.crop_size, Image.NEAREST)
image = np.asarray(image, np.float32)
label = np.asarray(label, np.float32)
# re-assign labels to match the format of Cityscapes
label_copy = self.ignore_label * np.ones(label.shape, dtype=np.float32)
for k, v in self.id_to_trainid.items():
label_copy[label == k] = v
size = image.shape
image = image[:, :, ::-1] # change to BGR
image -= self.mean
image = image.transpose((2, 0, 1))
return image.copy(), label_copy.copy(), np.array(size), name
================================================
FILE: dataset/cityscapes_list/info.json
================================================
{
"classes":19,
"label2train":[
[0, 255],
[1, 255],
[2, 255],
[3, 255],
[4, 255],
[5, 255],
[6, 255],
[7, 0],
[8, 1],
[9, 255],
[10, 255],
[11, 2],
[12, 3],
[13, 4],
[14, 255],
[15, 255],
[16, 255],
[17, 5],
[18, 255],
[19, 6],
[20, 7],
[21, 8],
[22, 9],
[23, 10],
[24, 11],
[25, 12],
[26, 13],
[27, 14],
[28, 15],
[29, 255],
[30, 255],
[31, 16],
[32, 17],
[33, 18],
[-1, 255]],
"label":[
"road",
"sidewalk",
"building",
"wall",
"fence",
"pole",
"light",
"sign",
"vegetation",
"terrain",
"sky",
"person",
"rider",
"car",
"truck",
"bus",
"train",
"motocycle",
"bicycle"],
"palette":[
[128,64,128],
[244,35,232],
[70,70,70],
[102,102,156],
[190,153,153],
[153,153,153],
[250,170,30],
[220,220,0],
[107,142,35],
[152,251,152],
[70,130,180],
[220,20,60],
[255,0,0],
[0,0,142],
[0,0,70],
[0,60,100],
[0,80,100],
[0,0,230],
[119,11,32],
[0,0,0]],
"mean":[
73.158359210711552,
82.908917542625858,
72.392398761941593],
"std":[
47.675755341814678,
48.494214368814916,
47.736546325441594]
}
================================================
FILE: dataset/cityscapes_list/label.txt
================================================
frankfurt/frankfurt_000001_007973_gtFine_labelIds.png
frankfurt/frankfurt_000001_025921_gtFine_labelIds.png
frankfurt/frankfurt_000001_062016_gtFine_labelIds.png
frankfurt/frankfurt_000001_049078_gtFine_labelIds.png
frankfurt/frankfurt_000000_009561_gtFine_labelIds.png
frankfurt/frankfurt_000001_013710_gtFine_labelIds.png
frankfurt/frankfurt_000001_041664_gtFine_labelIds.png
frankfurt/frankfurt_000000_013240_gtFine_labelIds.png
frankfurt/frankfurt_000001_044787_gtFine_labelIds.png
frankfurt/frankfurt_000001_015328_gtFine_labelIds.png
frankfurt/frankfurt_000001_073243_gtFine_labelIds.png
frankfurt/frankfurt_000001_034816_gtFine_labelIds.png
frankfurt/frankfurt_000001_041074_gtFine_labelIds.png
frankfurt/frankfurt_000001_005898_gtFine_labelIds.png
frankfurt/frankfurt_000000_022254_gtFine_labelIds.png
frankfurt/frankfurt_000001_044658_gtFine_labelIds.png
frankfurt/frankfurt_000001_009504_gtFine_labelIds.png
frankfurt/frankfurt_000001_024927_gtFine_labelIds.png
frankfurt/frankfurt_000001_017842_gtFine_labelIds.png
frankfurt/frankfurt_000001_068208_gtFine_labelIds.png
frankfurt/frankfurt_000001_013016_gtFine_labelIds.png
frankfurt/frankfurt_000001_010156_gtFine_labelIds.png
frankfurt/frankfurt_000000_002963_gtFine_labelIds.png
frankfurt/frankfurt_000001_020693_gtFine_labelIds.png
frankfurt/frankfurt_000001_078803_gtFine_labelIds.png
frankfurt/frankfurt_000001_025713_gtFine_labelIds.png
frankfurt/frankfurt_000001_007285_gtFine_labelIds.png
frankfurt/frankfurt_000001_070099_gtFine_labelIds.png
frankfurt/frankfurt_000000_009291_gtFine_labelIds.png
frankfurt/frankfurt_000000_019607_gtFine_labelIds.png
frankfurt/frankfurt_000001_068063_gtFine_labelIds.png
frankfurt/frankfurt_000000_003920_gtFine_labelIds.png
frankfurt/frankfurt_000001_077233_gtFine_labelIds.png
frankfurt/frankfurt_000001_029086_gtFine_labelIds.png
frankfurt/frankfurt_000001_060545_gtFine_labelIds.png
frankfurt/frankfurt_000001_001464_gtFine_labelIds.png
frankfurt/frankfurt_000001_028590_gtFine_labelIds.png
frankfurt/frankfurt_000001_016462_gtFine_labelIds.png
frankfurt/frankfurt_000001_060422_gtFine_labelIds.png
frankfurt/frankfurt_000001_009058_gtFine_labelIds.png
frankfurt/frankfurt_000001_080830_gtFine_labelIds.png
frankfurt/frankfurt_000001_012870_gtFine_labelIds.png
frankfurt/frankfurt_000001_077434_gtFine_labelIds.png
frankfurt/frankfurt_000001_033655_gtFine_labelIds.png
frankfurt/frankfurt_000001_051516_gtFine_labelIds.png
frankfurt/frankfurt_000001_044413_gtFine_labelIds.png
frankfurt/frankfurt_000001_055172_gtFine_labelIds.png
frankfurt/frankfurt_000001_040575_gtFine_labelIds.png
frankfurt/frankfurt_000000_020215_gtFine_labelIds.png
frankfurt/frankfurt_000000_017228_gtFine_labelIds.png
frankfurt/frankfurt_000001_041354_gtFine_labelIds.png
frankfurt/frankfurt_000000_008206_gtFine_labelIds.png
frankfurt/frankfurt_000001_043564_gtFine_labelIds.png
frankfurt/frankfurt_000001_032711_gtFine_labelIds.png
frankfurt/frankfurt_000001_064130_gtFine_labelIds.png
frankfurt/frankfurt_000001_053102_gtFine_labelIds.png
frankfurt/frankfurt_000001_082087_gtFine_labelIds.png
frankfurt/frankfurt_000001_057478_gtFine_labelIds.png
frankfurt/frankfurt_000001_007407_gtFine_labelIds.png
frankfurt/frankfurt_000001_008200_gtFine_labelIds.png
frankfurt/frankfurt_000001_038844_gtFine_labelIds.png
frankfurt/frankfurt_000001_016029_gtFine_labelIds.png
frankfurt/frankfurt_000001_058176_gtFine_labelIds.png
frankfurt/frankfurt_000001_057181_gtFine_labelIds.png
frankfurt/frankfurt_000001_039895_gtFine_labelIds.png
frankfurt/frankfurt_000000_000294_gtFine_labelIds.png
frankfurt/frankfurt_000001_055062_gtFine_labelIds.png
frankfurt/frankfurt_000001_083029_gtFine_labelIds.png
frankfurt/frankfurt_000001_010444_gtFine_labelIds.png
frankfurt/frankfurt_000001_041517_gtFine_labelIds.png
frankfurt/frankfurt_000001_069633_gtFine_labelIds.png
frankfurt/frankfurt_000001_020287_gtFine_labelIds.png
frankfurt/frankfurt_000001_012038_gtFine_labelIds.png
frankfurt/frankfurt_000001_046504_gtFine_labelIds.png
frankfurt/frankfurt_000001_032556_gtFine_labelIds.png
frankfurt/frankfurt_000000_001751_gtFine_labelIds.png
frankfurt/frankfurt_000001_000538_gtFine_labelIds.png
frankfurt/frankfurt_000001_083852_gtFine_labelIds.png
frankfurt/frankfurt_000001_077092_gtFine_labelIds.png
frankfurt/frankfurt_000001_017101_gtFine_labelIds.png
frankfurt/frankfurt_000001_044525_gtFine_labelIds.png
frankfurt/frankfurt_000001_005703_gtFine_labelIds.png
frankfurt/frankfurt_000001_080391_gtFine_labelIds.png
frankfurt/frankfurt_000001_038418_gtFine_labelIds.png
frankfurt/frankfurt_000001_066832_gtFine_labelIds.png
frankfurt/frankfurt_000000_003357_gtFine_labelIds.png
frankfurt/frankfurt_000000_020880_gtFine_labelIds.png
frankfurt/frankfurt_000001_062396_gtFine_labelIds.png
frankfurt/frankfurt_000001_046272_gtFine_labelIds.png
frankfurt/frankfurt_000001_062509_gtFine_labelIds.png
frankfurt/frankfurt_000001_054415_gtFine_labelIds.png
frankfurt/frankfurt_000001_021406_gtFine_labelIds.png
frankfurt/frankfurt_000001_030310_gtFine_labelIds.png
frankfurt/frankfurt_000000_014480_gtFine_labelIds.png
frankfurt/frankfurt_000001_005410_gtFine_labelIds.png
frankfurt/frankfurt_000000_022797_gtFine_labelIds.png
frankfurt/frankfurt_000001_035144_gtFine_labelIds.png
frankfurt/frankfurt_000001_014565_gtFine_labelIds.png
frankfurt/frankfurt_000001_065850_gtFine_labelIds.png
frankfurt/frankfurt_000000_000576_gtFine_labelIds.png
frankfurt/frankfurt_000001_065617_gtFine_labelIds.png
frankfurt/frankfurt_000000_005543_gtFine_labelIds.png
frankfurt/frankfurt_000001_055709_gtFine_labelIds.png
frankfurt/frankfurt_000001_027325_gtFine_labelIds.png
frankfurt/frankfurt_000001_011835_gtFine_labelIds.png
frankfurt/frankfurt_000001_046779_gtFine_labelIds.png
frankfurt/frankfurt_000001_064305_gtFine_labelIds.png
frankfurt/frankfurt_000001_012738_gtFine_labelIds.png
frankfurt/frankfurt_000001_048355_gtFine_labelIds.png
frankfurt/frankfurt_000001_019969_gtFine_labelIds.png
frankfurt/frankfurt_000001_080091_gtFine_labelIds.png
frankfurt/frankfurt_000000_011007_gtFine_labelIds.png
frankfurt/frankfurt_000000_015676_gtFine_labelIds.png
frankfurt/frankfurt_000001_044227_gtFine_labelIds.png
frankfurt/frankfurt_000001_055387_gtFine_labelIds.png
frankfurt/frankfurt_000001_038245_gtFine_labelIds.png
frankfurt/frankfurt_000001_059642_gtFine_labelIds.png
frankfurt/frankfurt_000001_030669_gtFine_labelIds.png
frankfurt/frankfurt_000001_068772_gtFine_labelIds.png
frankfurt/frankfurt_000001_079206_gtFine_labelIds.png
frankfurt/frankfurt_000001_055306_gtFine_labelIds.png
frankfurt/frankfurt_000001_012699_gtFine_labelIds.png
frankfurt/frankfurt_000001_042384_gtFine_labelIds.png
frankfurt/frankfurt_000001_054077_gtFine_labelIds.png
frankfurt/frankfurt_000001_010830_gtFine_labelIds.png
frankfurt/frankfurt_000001_052120_gtFine_labelIds.png
frankfurt/frankfurt_000001_032018_gtFine_labelIds.png
frankfurt/frankfurt_000001_051737_gtFine_labelIds.png
frankfurt/frankfurt_000001_028335_gtFine_labelIds.png
frankfurt/frankfurt_000001_049770_gtFine_labelIds.png
frankfurt/frankfurt_000001_054884_gtFine_labelIds.png
frankfurt/frankfurt_000001_019698_gtFine_labelIds.png
frankfurt/frankfurt_000000_011461_gtFine_labelIds.png
frankfurt/frankfurt_000000_001016_gtFine_labelIds.png
frankfurt/frankfurt_000001_062250_gtFine_labelIds.png
frankfurt/frankfurt_000001_004736_gtFine_labelIds.png
frankfurt/frankfurt_000001_068682_gtFine_labelIds.png
frankfurt/frankfurt_000000_006589_gtFine_labelIds.png
frankfurt/frankfurt_000000_011810_gtFine_labelIds.png
frankfurt/frankfurt_000001_066574_gtFine_labelIds.png
frankfurt/frankfurt_000001_048654_gtFine_labelIds.png
frankfurt/frankfurt_000001_049209_gtFine_labelIds.png
frankfurt/frankfurt_000001_042098_gtFine_labelIds.png
frankfurt/frankfurt_000001_031416_gtFine_labelIds.png
frankfurt/frankfurt_000000_009969_gtFine_labelIds.png
frankfurt/frankfurt_000001_038645_gtFine_labelIds.png
frankfurt/frankfurt_000001_020046_gtFine_labelIds.png
frankfurt/frankfurt_000001_054219_gtFine_labelIds.png
frankfurt/frankfurt_000001_002759_gtFine_labelIds.png
frankfurt/frankfurt_000001_066438_gtFine_labelIds.png
frankfurt/frankfurt_000000_020321_gtFine_labelIds.png
frankfurt/frankfurt_000001_002646_gtFine_labelIds.png
frankfurt/frankfurt_000001_046126_gtFine_labelIds.png
frankfurt/frankfurt_000000_002196_gtFine_labelIds.png
frankfurt/frankfurt_000001_057954_gtFine_labelIds.png
frankfurt/frankfurt_000001_011715_gtFine_labelIds.png
frankfurt/frankfurt_000000_021879_gtFine_labelIds.png
frankfurt/frankfurt_000001_082466_gtFine_labelIds.png
frankfurt/frankfurt_000000_003025_gtFine_labelIds.png
frankfurt/frankfurt_000001_023369_gtFine_labelIds.png
frankfurt/frankfurt_000001_061682_gtFine_labelIds.png
frankfurt/frankfurt_000001_017459_gtFine_labelIds.png
frankfurt/frankfurt_000001_059789_gtFine_labelIds.png
frankfurt/frankfurt_000001_073464_gtFine_labelIds.png
frankfurt/frankfurt_000001_063045_gtFine_labelIds.png
frankfurt/frankfurt_000001_064651_gtFine_labelIds.png
frankfurt/frankfurt_000000_013382_gtFine_labelIds.png
frankfurt/frankfurt_000001_002512_gtFine_labelIds.png
frankfurt/frankfurt_000001_032942_gtFine_labelIds.png
frankfurt/frankfurt_000001_010600_gtFine_labelIds.png
frankfurt/frankfurt_000001_030067_gtFine_labelIds.png
frankfurt/frankfurt_000001_014741_gtFine_labelIds.png
frankfurt/frankfurt_000000_021667_gtFine_labelIds.png
frankfurt/frankfurt_000001_051807_gtFine_labelIds.png
frankfurt/frankfurt_000001_019854_gtFine_labelIds.png
frankfurt/frankfurt_000001_015768_gtFine_labelIds.png
frankfurt/frankfurt_000001_007857_gtFine_labelIds.png
frankfurt/frankfurt_000001_058914_gtFine_labelIds.png
frankfurt/frankfurt_000000_012868_gtFine_labelIds.png
frankfurt/frankfurt_000000_013942_gtFine_labelIds.png
frankfurt/frankfurt_000001_014406_gtFine_labelIds.png
frankfurt/frankfurt_000001_049298_gtFine_labelIds.png
frankfurt/frankfurt_000001_023769_gtFine_labelIds.png
frankfurt/frankfurt_000001_012519_gtFine_labelIds.png
frankfurt/frankfurt_000001_064925_gtFine_labelIds.png
frankfurt/frankfurt_000001_072295_gtFine_labelIds.png
frankfurt/frankfurt_000001_058504_gtFine_labelIds.png
frankfurt/frankfurt_000001_059119_gtFine_labelIds.png
frankfurt/frankfurt_000001_015091_gtFine_labelIds.png
frankfurt/frankfurt_000001_058057_gtFine_labelIds.png
frankfurt/frankfurt_000001_003056_gtFine_labelIds.png
frankfurt/frankfurt_000001_007622_gtFine_labelIds.png
frankfurt/frankfurt_000001_016273_gtFine_labelIds.png
frankfurt/frankfurt_000001_035864_gtFine_labelIds.png
frankfurt/frankfurt_000001_067092_gtFine_labelIds.png
frankfurt/frankfurt_000000_013067_gtFine_labelIds.png
frankfurt/frankfurt_000001_067474_gtFine_labelIds.png
frankfurt/frankfurt_000001_060135_gtFine_labelIds.png
frankfurt/frankfurt_000000_018797_gtFine_labelIds.png
frankfurt/frankfurt_000000_005898_gtFine_labelIds.png
frankfurt/frankfurt_000001_055603_gtFine_labelIds.png
frankfurt/frankfurt_000001_060906_gtFine_labelIds.png
frankfurt/frankfurt_000001_062653_gtFine_labelIds.png
frankfurt/frankfurt_000000_004617_gtFine_labelIds.png
frankfurt/frankfurt_000001_055538_gtFine_labelIds.png
frankfurt/frankfurt_000000_008451_gtFine_labelIds.png
frankfurt/frankfurt_000001_052594_gtFine_labelIds.png
frankfurt/frankfurt_000001_004327_gtFine_labelIds.png
frankfurt/frankfurt_000001_075296_gtFine_labelIds.png
frankfurt/frankfurt_000001_073088_gtFine_labelIds.png
frankfurt/frankfurt_000001_005184_gtFine_labelIds.png
frankfurt/frankfurt_000000_016286_gtFine_labelIds.png
frankfurt/frankfurt_000001_008688_gtFine_labelIds.png
frankfurt/frankfurt_000000_011074_gtFine_labelIds.png
frankfurt/frankfurt_000001_056580_gtFine_labelIds.png
frankfurt/frankfurt_000001_067735_gtFine_labelIds.png
frankfurt/frankfurt_000001_034047_gtFine_labelIds.png
frankfurt/frankfurt_000001_076502_gtFine_labelIds.png
frankfurt/frankfurt_000001_071288_gtFine_labelIds.png
frankfurt/frankfurt_000001_067295_gtFine_labelIds.png
frankfurt/frankfurt_000001_071781_gtFine_labelIds.png
frankfurt/frankfurt_000000_012121_gtFine_labelIds.png
frankfurt/frankfurt_000001_004859_gtFine_labelIds.png
frankfurt/frankfurt_000001_073911_gtFine_labelIds.png
frankfurt/frankfurt_000001_047552_gtFine_labelIds.png
frankfurt/frankfurt_000001_037705_gtFine_labelIds.png
frankfurt/frankfurt_000001_025512_gtFine_labelIds.png
frankfurt/frankfurt_000001_047178_gtFine_labelIds.png
frankfurt/frankfurt_000001_014221_gtFine_labelIds.png
frankfurt/frankfurt_000000_007365_gtFine_labelIds.png
frankfurt/frankfurt_000001_049698_gtFine_labelIds.png
frankfurt/frankfurt_000001_065160_gtFine_labelIds.png
frankfurt/frankfurt_000001_061763_gtFine_labelIds.png
frankfurt/frankfurt_000000_010351_gtFine_labelIds.png
frankfurt/frankfurt_000001_072155_gtFine_labelIds.png
frankfurt/frankfurt_000001_023235_gtFine_labelIds.png
frankfurt/frankfurt_000000_015389_gtFine_labelIds.png
frankfurt/frankfurt_000000_009688_gtFine_labelIds.png
frankfurt/frankfurt_000000_016005_gtFine_labelIds.png
frankfurt/frankfurt_000001_054640_gtFine_labelIds.png
frankfurt/frankfurt_000001_029600_gtFine_labelIds.png
frankfurt/frankfurt_000001_028232_gtFine_labelIds.png
frankfurt/frankfurt_000001_050686_gtFine_labelIds.png
frankfurt/frankfurt_000001_013496_gtFine_labelIds.png
frankfurt/frankfurt_000001_066092_gtFine_labelIds.png
frankfurt/frankfurt_000001_009854_gtFine_labelIds.png
frankfurt/frankfurt_000001_067178_gtFine_labelIds.png
frankfurt/frankfurt_000001_028854_gtFine_labelIds.png
frankfurt/frankfurt_000001_083199_gtFine_labelIds.png
frankfurt/frankfurt_000001_064798_gtFine_labelIds.png
frankfurt/frankfurt_000001_018113_gtFine_labelIds.png
frankfurt/frankfurt_000001_050149_gtFine_labelIds.png
frankfurt/frankfurt_000001_048196_gtFine_labelIds.png
frankfurt/frankfurt_000000_001236_gtFine_labelIds.png
frankfurt/frankfurt_000000_017476_gtFine_labelIds.png
frankfurt/frankfurt_000001_003588_gtFine_labelIds.png
frankfurt/frankfurt_000001_021825_gtFine_labelIds.png
frankfurt/frankfurt_000000_010763_gtFine_labelIds.png
frankfurt/frankfurt_000001_062793_gtFine_labelIds.png
frankfurt/frankfurt_000001_029236_gtFine_labelIds.png
frankfurt/frankfurt_000001_075984_gtFine_labelIds.png
frankfurt/frankfurt_000001_031266_gtFine_labelIds.png
frankfurt/frankfurt_000001_043395_gtFine_labelIds.png
frankfurt/frankfurt_000001_040732_gtFine_labelIds.png
frankfurt/frankfurt_000001_011162_gtFine_labelIds.png
frankfurt/frankfurt_000000_012009_gtFine_labelIds.png
frankfurt/frankfurt_000001_042733_gtFine_labelIds.png
lindau/lindau_000052_000019_gtFine_labelIds.png
lindau/lindau_000009_000019_gtFine_labelIds.png
lindau/lindau_000037_000019_gtFine_labelIds.png
lindau/lindau_000047_000019_gtFine_labelIds.png
lindau/lindau_000015_000019_gtFine_labelIds.png
lindau/lindau_000030_000019_gtFine_labelIds.png
lindau/lindau_000012_000019_gtFine_labelIds.png
lindau/lindau_000032_000019_gtFine_labelIds.png
lindau/lindau_000046_000019_gtFine_labelIds.png
lindau/lindau_000000_000019_gtFine_labelIds.png
lindau/lindau_000031_000019_gtFine_labelIds.png
lindau/lindau_000011_000019_gtFine_labelIds.png
lindau/lindau_000027_000019_gtFine_labelIds.png
lindau/lindau_000054_000019_gtFine_labelIds.png
lindau/lindau_000026_000019_gtFine_labelIds.png
lindau/lindau_000017_000019_gtFine_labelIds.png
lindau/lindau_000023_000019_gtFine_labelIds.png
lindau/lindau_000005_000019_gtFine_labelIds.png
lindau/lindau_000056_000019_gtFine_labelIds.png
lindau/lindau_000025_000019_gtFine_labelIds.png
lindau/lindau_000045_000019_gtFine_labelIds.png
lindau/lindau_000014_000019_gtFine_labelIds.png
lindau/lindau_000004_000019_gtFine_labelIds.png
lindau/lindau_000021_000019_gtFine_labelIds.png
lindau/lindau_000049_000019_gtFine_labelIds.png
lindau/lindau_000033_000019_gtFine_labelIds.png
lindau/lindau_000042_000019_gtFine_labelIds.png
lindau/lindau_000013_000019_gtFine_labelIds.png
lindau/lindau_000024_000019_gtFine_labelIds.png
lindau/lindau_000002_000019_gtFine_labelIds.png
lindau/lindau_000043_000019_gtFine_labelIds.png
lindau/lindau_000016_000019_gtFine_labelIds.png
lindau/lindau_000050_000019_gtFine_labelIds.png
lindau/lindau_000018_000019_gtFine_labelIds.png
lindau/lindau_000007_000019_gtFine_labelIds.png
lindau/lindau_000048_000019_gtFine_labelIds.png
lindau/lindau_000022_000019_gtFine_labelIds.png
lindau/lindau_000053_000019_gtFine_labelIds.png
lindau/lindau_000038_000019_gtFine_labelIds.png
lindau/lindau_000001_000019_gtFine_labelIds.png
lindau/lindau_000036_000019_gtFine_labelIds.png
lindau/lindau_000035_000019_gtFine_labelIds.png
lindau/lindau_000003_000019_gtFine_labelIds.png
lindau/lindau_000034_000019_gtFine_labelIds.png
lindau/lindau_000010_000019_gtFine_labelIds.png
lindau/lindau_000055_000019_gtFine_labelIds.png
lindau/lindau_000006_000019_gtFine_labelIds.png
lindau/lindau_000019_000019_gtFine_labelIds.png
lindau/lindau_000029_000019_gtFine_labelIds.png
lindau/lindau_000039_000019_gtFine_labelIds.png
lindau/lindau_000051_000019_gtFine_labelIds.png
lindau/lindau_000020_000019_gtFine_labelIds.png
lindau/lindau_000057_000019_gtFine_labelIds.png
lindau/lindau_000041_000019_gtFine_labelIds.png
lindau/lindau_000040_000019_gtFine_labelIds.png
lindau/lindau_000044_000019_gtFine_labelIds.png
lindau/lindau_000028_000019_gtFine_labelIds.png
lindau/lindau_000058_000019_gtFine_labelIds.png
lindau/lindau_000008_000019_gtFine_labelIds.png
munster/munster_000000_000019_gtFine_labelIds.png
munster/munster_000012_000019_gtFine_labelIds.png
munster/munster_000032_000019_gtFine_labelIds.png
munster/munster_000068_000019_gtFine_labelIds.png
munster/munster_000101_000019_gtFine_labelIds.png
munster/munster_000153_000019_gtFine_labelIds.png
munster/munster_000115_000019_gtFine_labelIds.png
munster/munster_000029_000019_gtFine_labelIds.png
munster/munster_000019_000019_gtFine_labelIds.png
munster/munster_000156_000019_gtFine_labelIds.png
munster/munster_000129_000019_gtFine_labelIds.png
munster/munster_000169_000019_gtFine_labelIds.png
munster/munster_000150_000019_gtFine_labelIds.png
munster/munster_000165_000019_gtFine_labelIds.png
munster/munster_000050_000019_gtFine_labelIds.png
munster/munster_000025_000019_gtFine_labelIds.png
munster/munster_000116_000019_gtFine_labelIds.png
munster/munster_000132_000019_gtFine_labelIds.png
munster/munster_000066_000019_gtFine_labelIds.png
munster/munster_000096_000019_gtFine_labelIds.png
munster/munster_000030_000019_gtFine_labelIds.png
munster/munster_000146_000019_gtFine_labelIds.png
munster/munster_000098_000019_gtFine_labelIds.png
munster/munster_000059_000019_gtFine_labelIds.png
munster/munster_000093_000019_gtFine_labelIds.png
munster/munster_000122_000019_gtFine_labelIds.png
munster/munster_000024_000019_gtFine_labelIds.png
munster/munster_000036_000019_gtFine_labelIds.png
munster/munster_000086_000019_gtFine_labelIds.png
munster/munster_000163_000019_gtFine_labelIds.png
munster/munster_000001_000019_gtFine_labelIds.png
munster/munster_000053_000019_gtFine_labelIds.png
munster/munster_000071_000019_gtFine_labelIds.png
munster/munster_000079_000019_gtFine_labelIds.png
munster/munster_000159_000019_gtFine_labelIds.png
munster/munster_000038_000019_gtFine_labelIds.png
munster/munster_000138_000019_gtFine_labelIds.png
munster/munster_000135_000019_gtFine_labelIds.png
munster/munster_000065_000019_gtFine_labelIds.png
munster/munster_000139_000019_gtFine_labelIds.png
munster/munster_000108_000019_gtFine_labelIds.png
munster/munster_000020_000019_gtFine_labelIds.png
munster/munster_000074_000019_gtFine_labelIds.png
munster/munster_000035_000019_gtFine_labelIds.png
munster/munster_000067_000019_gtFine_labelIds.png
munster/munster_000151_000019_gtFine_labelIds.png
munster/munster_000083_000019_gtFine_labelIds.png
munster/munster_000118_000019_gtFine_labelIds.png
munster/munster_000046_000019_gtFine_labelIds.png
munster/munster_000147_000019_gtFine_labelIds.png
munster/munster_000047_000019_gtFine_labelIds.png
munster/munster_000043_000019_gtFine_labelIds.png
munster/munster_000168_000019_gtFine_labelIds.png
munster/munster_000167_000019_gtFine_labelIds.png
munster/munster_000021_000019_gtFine_labelIds.png
munster/munster_000073_000019_gtFine_labelIds.png
munster/munster_000089_000019_gtFine_labelIds.png
munster/munster_000060_000019_gtFine_labelIds.png
munster/munster_000155_000019_gtFine_labelIds.png
munster/munster_000140_000019_gtFine_labelIds.png
munster/munster_000145_000019_gtFine_labelIds.png
munster/munster_000077_000019_gtFine_labelIds.png
munster/munster_000018_000019_gtFine_labelIds.png
munster/munster_000045_000019_gtFine_labelIds.png
munster/munster_000166_000019_gtFine_labelIds.png
munster/munster_000037_000019_gtFine_labelIds.png
munster/munster_000112_000019_gtFine_labelIds.png
munster/munster_000080_000019_gtFine_labelIds.png
munster/munster_000144_000019_gtFine_labelIds.png
munster/munster_000142_000019_gtFine_labelIds.png
munster/munster_000070_000019_gtFine_labelIds.png
munster/munster_000044_000019_gtFine_labelIds.png
munster/munster_000137_000019_gtFine_labelIds.png
munster/munster_000041_000019_gtFine_labelIds.png
munster/munster_000113_000019_gtFine_labelIds.png
munster/munster_000075_000019_gtFine_labelIds.png
munster/munster_000157_000019_gtFine_labelIds.png
munster/munster_000158_000019_gtFine_labelIds.png
munster/munster_000109_000019_gtFine_labelIds.png
munster/munster_000033_000019_gtFine_labelIds.png
munster/munster_000088_000019_gtFine_labelIds.png
munster/munster_000090_000019_gtFine_labelIds.png
munster/munster_000114_000019_gtFine_labelIds.png
munster/munster_000171_000019_gtFine_labelIds.png
munster/munster_000013_000019_gtFine_labelIds.png
munster/munster_000130_000019_gtFine_labelIds.png
munster/munster_000016_000019_gtFine_labelIds.png
munster/munster_000136_000019_gtFine_labelIds.png
munster/munster_000007_000019_gtFine_labelIds.png
munster/munster_000014_000019_gtFine_labelIds.png
munster/munster_000052_000019_gtFine_labelIds.png
munster/munster_000104_000019_gtFine_labelIds.png
munster/munster_000173_000019_gtFine_labelIds.png
munster/munster_000057_000019_gtFine_labelIds.png
munster/munster_000072_000019_gtFine_labelIds.png
munster/munster_000003_000019_gtFine_labelIds.png
munster/munster_000161_000019_gtFine_labelIds.png
munster/munster_000002_000019_gtFine_labelIds.png
munster/munster_000028_000019_gtFine_labelIds.png
munster/munster_000051_000019_gtFine_labelIds.png
munster/munster_000105_000019_gtFine_labelIds.png
munster/munster_000061_000019_gtFine_labelIds.png
munster/munster_000058_000019_gtFine_labelIds.png
munster/munster_000094_000019_gtFine_labelIds.png
munster/munster_000027_000019_gtFine_labelIds.png
munster/munster_000062_000019_gtFine_labelIds.png
munster/munster_000127_000019_gtFine_labelIds.png
munster/munster_000110_000019_gtFine_labelIds.png
munster/munster_000170_000019_gtFine_labelIds.png
munster/munster_000023_000019_gtFine_labelIds.png
munster/munster_000084_000019_gtFine_labelIds.png
munster/munster_000121_000019_gtFine_labelIds.png
munster/munster_000087_000019_gtFine_labelIds.png
munster/munster_000097_000019_gtFine_labelIds.png
munster/munster_000119_000019_gtFine_labelIds.png
munster/munster_000128_000019_gtFine_labelIds.png
munster/munster_000078_000019_gtFine_labelIds.png
munster/munster_000010_000019_gtFine_labelIds.png
munster/munster_000015_000019_gtFine_labelIds.png
munster/munster_000048_000019_gtFine_labelIds.png
munster/munster_000085_000019_gtFine_labelIds.png
munster/munster_000164_000019_gtFine_labelIds.png
munster/munster_000111_000019_gtFine_labelIds.png
munster/munster_000099_000019_gtFine_labelIds.png
munster/munster_000117_000019_gtFine_labelIds.png
munster/munster_000009_000019_gtFine_labelIds.png
munster/munster_000049_000019_gtFine_labelIds.png
munster/munster_000148_000019_gtFine_labelIds.png
munster/munster_000022_000019_gtFine_labelIds.png
munster/munster_000131_000019_gtFine_labelIds.png
munster/munster_000006_000019_gtFine_labelIds.png
munster/munster_000005_000019_gtFine_labelIds.png
munster/munster_000102_000019_gtFine_labelIds.png
munster/munster_000160_000019_gtFine_labelIds.png
munster/munster_000107_000019_gtFine_labelIds.png
munster/munster_000095_000019_gtFine_labelIds.png
munster/munster_000106_000019_gtFine_labelIds.png
munster/munster_000034_000019_gtFine_labelIds.png
munster/munster_000143_000019_gtFine_labelIds.png
munster/munster_000017_000019_gtFine_labelIds.png
munster/munster_000040_000019_gtFine_labelIds.png
munster/munster_000152_000019_gtFine_labelIds.png
munster/munster_000154_000019_gtFine_labelIds.png
munster/munster_000100_000019_gtFine_labelIds.png
munster/munster_000004_000019_gtFine_labelIds.png
munster/munster_000141_000019_gtFine_labelIds.png
munster/munster_000011_000019_gtFine_labelIds.png
munster/munster_000055_000019_gtFine_labelIds.png
munster/munster_000134_000019_gtFine_labelIds.png
munster/munster_000054_000019_gtFine_labelIds.png
munster/munster_000064_000019_gtFine_labelIds.png
munster/munster_000039_000019_gtFine_labelIds.png
munster/munster_000103_000019_gtFine_labelIds.png
munster/munster_000092_000019_gtFine_labelIds.png
munster/munster_000172_000019_gtFine_labelIds.png
munster/munster_000042_000019_gtFine_labelIds.png
munster/munster_000124_000019_gtFine_labelIds.png
munster/munster_000069_000019_gtFine_labelIds.png
munster/munster_000026_000019_gtFine_labelIds.png
munster/munster_000120_000019_gtFine_labelIds.png
munster/munster_000031_000019_gtFine_labelIds.png
munster/munster_000162_000019_gtFine_labelIds.png
munster/munster_000056_000019_gtFine_labelIds.png
munster/munster_000081_000019_gtFine_labelIds.png
munster/munster_000123_000019_gtFine_labelIds.png
munster/munster_000125_000019_gtFine_labelIds.png
munster/munster_000082_000019_gtFine_labelIds.png
munster/munster_000133_000019_gtFine_labelIds.png
munster/munster_000126_000019_gtFine_labelIds.png
munster/munster_000063_000019_gtFine_labelIds.png
munster/munster_000008_000019_gtFine_labelIds.png
munster/munster_000149_000019_gtFine_labelIds.png
munster/munster_000076_000019_gtFine_labelIds.png
munster/munster_000091_000019_gtFine_labelIds.png
================================================
FILE: dataset/cityscapes_list/train.txt
================================================
aachen/aachen_000000_000019_leftImg8bit.png
aachen/aachen_000001_000019_leftImg8bit.png
aachen/aachen_000002_000019_leftImg8bit.png
aachen/aachen_000003_000019_leftImg8bit.png
aachen/aachen_000004_000019_leftImg8bit.png
aachen/aachen_000005_000019_leftImg8bit.png
aachen/aachen_000006_000019_leftImg8bit.png
aachen/aachen_000007_000019_leftImg8bit.png
aachen/aachen_000008_000019_leftImg8bit.png
aachen/aachen_000009_000019_leftImg8bit.png
aachen/aachen_000010_000019_leftImg8bit.png
aachen/aachen_000011_000019_leftImg8bit.png
aachen/aachen_000012_000019_leftImg8bit.png
aachen/aachen_000013_000019_leftImg8bit.png
aachen/aachen_000014_000019_leftImg8bit.png
aachen/aachen_000015_000019_leftImg8bit.png
aachen/aachen_000016_000019_leftImg8bit.png
aachen/aachen_000017_000019_leftImg8bit.png
aachen/aachen_000018_000019_leftImg8bit.png
aachen/aachen_000019_000019_leftImg8bit.png
aachen/aachen_000020_000019_leftImg8bit.png
aachen/aachen_000021_000019_leftImg8bit.png
aachen/aachen_000022_000019_leftImg8bit.png
aachen/aachen_000023_000019_leftImg8bit.png
aachen/aachen_000024_000019_leftImg8bit.png
aachen/aachen_000025_000019_leftImg8bit.png
aachen/aachen_000026_000019_leftImg8bit.png
aachen/aachen_000027_000019_leftImg8bit.png
aachen/aachen_000028_000019_leftImg8bit.png
aachen/aachen_000029_000019_leftImg8bit.png
aachen/aachen_000030_000019_leftImg8bit.png
aachen/aachen_000031_000019_leftImg8bit.png
aachen/aachen_000032_000019_leftImg8bit.png
aachen/aachen_000033_000019_leftImg8bit.png
aachen/aachen_000034_000019_leftImg8bit.png
aachen/aachen_000035_000019_leftImg8bit.png
aachen/aachen_000036_000019_leftImg8bit.png
aachen/aachen_000037_000019_leftImg8bit.png
aachen/aachen_000038_000019_leftImg8bit.png
aachen/aachen_000039_000019_leftImg8bit.png
aachen/aachen_000040_000019_leftImg8bit.png
aachen/aachen_000041_000019_leftImg8bit.png
aachen/aachen_000042_000019_leftImg8bit.png
aachen/aachen_000043_000019_leftImg8bit.png
aachen/aachen_000044_000019_leftImg8bit.png
aachen/aachen_000045_000019_leftImg8bit.png
aachen/aachen_000046_000019_leftImg8bit.png
aachen/aachen_000047_000019_leftImg8bit.png
aachen/aachen_000048_000019_leftImg8bit.png
aachen/aachen_000049_000019_leftImg8bit.png
aachen/aachen_000050_000019_leftImg8bit.png
aachen/aachen_000051_000019_leftImg8bit.png
aachen/aachen_000052_000019_leftImg8bit.png
aachen/aachen_000053_000019_leftImg8bit.png
aachen/aachen_000054_000019_leftImg8bit.png
aachen/aachen_000055_000019_leftImg8bit.png
aachen/aachen_000056_000019_leftImg8bit.png
aachen/aachen_000057_000019_leftImg8bit.png
aachen/aachen_000058_000019_leftImg8bit.png
aachen/aachen_000059_000019_leftImg8bit.png
aachen/aachen_000060_000019_leftImg8bit.png
aachen/aachen_000061_000019_leftImg8bit.png
aachen/aachen_000062_000019_leftImg8bit.png
aachen/aachen_000063_000019_leftImg8bit.png
aachen/aachen_000064_000019_leftImg8bit.png
aachen/aachen_000065_000019_leftImg8bit.png
aachen/aachen_000066_000019_leftImg8bit.png
aachen/aachen_000067_000019_leftImg8bit.png
aachen/aachen_000068_000019_leftImg8bit.png
aachen/aachen_000069_000019_leftImg8bit.png
aachen/aachen_000070_000019_leftImg8bit.png
aachen/aachen_000071_000019_leftImg8bit.png
aachen/aachen_000072_000019_leftImg8bit.png
aachen/aachen_000073_000019_leftImg8bit.png
aachen/aachen_000074_000019_leftImg8bit.png
aachen/aachen_000075_000019_leftImg8bit.png
aachen/aachen_000076_000019_leftImg8bit.png
aachen/aachen_000077_000019_leftImg8bit.png
aachen/aachen_000078_000019_leftImg8bit.png
aachen/aachen_000079_000019_leftImg8bit.png
aachen/aachen_000080_000019_leftImg8bit.png
aachen/aachen_000081_000019_leftImg8bit.png
aachen/aachen_000082_000019_leftImg8bit.png
aachen/aachen_000083_000019_leftImg8bit.png
aachen/aachen_000084_000019_leftImg8bit.png
aachen/aachen_000085_000019_leftImg8bit.png
aachen/aachen_000086_000019_leftImg8bit.png
aachen/aachen_000087_000019_leftImg8bit.png
aachen/aachen_000088_000019_leftImg8bit.png
aachen/aachen_000089_000019_leftImg8bit.png
aachen/aachen_000090_000019_leftImg8bit.png
aachen/aachen_000091_000019_leftImg8bit.png
aachen/aachen_000092_000019_leftImg8bit.png
aachen/aachen_000093_000019_leftImg8bit.png
aachen/aachen_000094_000019_leftImg8bit.png
aachen/aachen_000095_000019_leftImg8bit.png
aachen/aachen_000096_000019_leftImg8bit.png
aachen/aachen_000097_000019_leftImg8bit.png
aachen/aachen_000098_000019_leftImg8bit.png
aachen/aachen_000099_000019_leftImg8bit.png
aachen/aachen_000100_000019_leftImg8bit.png
aachen/aachen_000101_000019_leftImg8bit.png
aachen/aachen_000102_000019_leftImg8bit.png
aachen/aachen_000103_000019_leftImg8bit.png
aachen/aachen_000104_000019_leftImg8bit.png
aachen/aachen_000105_000019_leftImg8bit.png
aachen/aachen_000106_000019_leftImg8bit.png
aachen/aachen_000107_000019_leftImg8bit.png
aachen/aachen_000108_000019_leftImg8bit.png
aachen/aachen_000109_000019_leftImg8bit.png
aachen/aachen_000110_000019_leftImg8bit.png
aachen/aachen_000111_000019_leftImg8bit.png
aachen/aachen_000112_000019_leftImg8bit.png
aachen/aachen_000113_000019_leftImg8bit.png
aachen/aachen_000114_000019_leftImg8bit.png
aachen/aachen_000115_000019_leftImg8bit.png
aachen/aachen_000116_000019_leftImg8bit.png
aachen/aachen_000117_000019_leftImg8bit.png
aachen/aachen_000118_000019_leftImg8bit.png
aachen/aachen_000119_000019_leftImg8bit.png
aachen/aachen_000120_000019_leftImg8bit.png
aachen/aachen_000121_000019_leftImg8bit.png
aachen/aachen_000122_000019_leftImg8bit.png
aachen/aachen_000123_000019_leftImg8bit.png
aachen/aachen_000124_000019_leftImg8bit.png
aachen/aachen_000125_000019_leftImg8bit.png
aachen/aachen_000126_000019_leftImg8bit.png
aachen/aachen_000127_000019_leftImg8bit.png
aachen/aachen_000128_000019_leftImg8bit.png
aachen/aachen_000129_000019_leftImg8bit.png
aachen/aachen_000130_000019_leftImg8bit.png
aachen/aachen_000131_000019_leftImg8bit.png
aachen/aachen_000132_000019_leftImg8bit.png
aachen/aachen_000133_000019_leftImg8bit.png
aachen/aachen_000134_000019_leftImg8bit.png
aachen/aachen_000135_000019_leftImg8bit.png
aachen/aachen_000136_000019_leftImg8bit.png
aachen/aachen_000137_000019_leftImg8bit.png
aachen/aachen_000138_000019_leftImg8bit.png
aachen/aachen_000139_000019_leftImg8bit.png
aachen/aachen_000140_000019_leftImg8bit.png
aachen/aachen_000141_000019_leftImg8bit.png
aachen/aachen_000142_000019_leftImg8bit.png
aachen/aachen_000143_000019_leftImg8bit.png
aachen/aachen_000144_000019_leftImg8bit.png
aachen/aachen_000145_000019_leftImg8bit.png
aachen/aachen_000146_000019_leftImg8bit.png
aachen/aachen_000147_000019_leftImg8bit.png
aachen/aachen_000148_000019_leftImg8bit.png
aachen/aachen_000149_000019_leftImg8bit.png
aachen/aachen_000150_000019_leftImg8bit.png
aachen/aachen_000151_000019_leftImg8bit.png
aachen/aachen_000152_000019_leftImg8bit.png
aachen/aachen_000153_000019_leftImg8bit.png
aachen/aachen_000154_000019_leftImg8bit.png
aachen/aachen_000155_000019_leftImg8bit.png
aachen/aachen_000156_000019_leftImg8bit.png
aachen/aachen_000157_000019_leftImg8bit.png
aachen/aachen_000158_000019_leftImg8bit.png
aachen/aachen_000159_000019_leftImg8bit.png
aachen/aachen_000160_000019_leftImg8bit.png
aachen/aachen_000161_000019_leftImg8bit.png
aachen/aachen_000162_000019_leftImg8bit.png
aachen/aachen_000163_000019_leftImg8bit.png
aachen/aachen_000164_000019_leftImg8bit.png
aachen/aachen_000165_000019_leftImg8bit.png
aachen/aachen_000166_000019_leftImg8bit.png
aachen/aachen_000167_000019_leftImg8bit.png
aachen/aachen_000168_000019_leftImg8bit.png
aachen/aachen_000169_000019_leftImg8bit.png
aachen/aachen_000170_000019_leftImg8bit.png
aachen/aachen_000171_000019_leftImg8bit.png
aachen/aachen_000172_000019_leftImg8bit.png
aachen/aachen_000173_000019_leftImg8bit.png
bochum/bochum_000000_000313_leftImg8bit.png
bochum/bochum_000000_000600_leftImg8bit.png
bochum/bochum_000000_000885_leftImg8bit.png
bochum/bochum_000000_001097_leftImg8bit.png
bochum/bochum_000000_001519_leftImg8bit.png
bochum/bochum_000000_001828_leftImg8bit.png
bochum/bochum_000000_002293_leftImg8bit.png
bochum/bochum_000000_002562_leftImg8bit.png
bochum/bochum_000000_003005_leftImg8bit.png
bochum/bochum_000000_003245_leftImg8bit.png
bochum/bochum_000000_003674_leftImg8bit.png
bochum/bochum_000000_004032_leftImg8bit.png
bochum/bochum_000000_004229_leftImg8bit.png
bochum/bochum_000000_004748_leftImg8bit.png
bochum/bochum_000000_005537_leftImg8bit.png
bochum/bochum_000000_005936_leftImg8bit.png
bochum/bochum_000000_006026_leftImg8bit.png
bochum/bochum_000000_006484_leftImg8bit.png
bochum/bochum_000000_006746_leftImg8bit.png
bochum/bochum_000000_007150_leftImg8bit.png
bochum/bochum_000000_007651_leftImg8bit.png
bochum/bochum_000000_007950_leftImg8bit.png
bochum/bochum_000000_008162_leftImg8bit.png
bochum/bochum_000000_008448_leftImg8bit.png
bochum/bochum_000000_008804_leftImg8bit.png
bochum/bochum_000000_009554_leftImg8bit.png
bochum/bochum_000000_009951_leftImg8bit.png
bochum/bochum_000000_010562_leftImg8bit.png
bochum/bochum_000000_010700_leftImg8bit.png
bochum/bochum_000000_011255_leftImg8bit.png
bochum/bochum_000000_011711_leftImg8bit.png
bochum/bochum_000000_013209_leftImg8bit.png
bochum/bochum_000000_013705_leftImg8bit.png
bochum/bochum_000000_014332_leftImg8bit.png
bochum/bochum_000000_014658_leftImg8bit.png
bochum/bochum_000000_014803_leftImg8bit.png
bochum/bochum_000000_015038_leftImg8bit.png
bochum/bochum_000000_015321_leftImg8bit.png
bochum/bochum_000000_015645_leftImg8bit.png
bochum/bochum_000000_015880_leftImg8bit.png
bochum/bochum_000000_016125_leftImg8bit.png
bochum/bochum_000000_016260_leftImg8bit.png
bochum/bochum_000000_016591_leftImg8bit.png
bochum/bochum_000000_016758_leftImg8bit.png
bochum/bochum_000000_017216_leftImg8bit.png
bochum/bochum_000000_017453_leftImg8bit.png
bochum/bochum_000000_018195_leftImg8bit.png
bochum/bochum_000000_019188_leftImg8bit.png
bochum/bochum_000000_020673_leftImg8bit.png
bochum/bochum_000000_020776_leftImg8bit.png
bochum/bochum_000000_020899_leftImg8bit.png
bochum/bochum_000000_021070_leftImg8bit.png
bochum/bochum_000000_021325_leftImg8bit.png
bochum/bochum_000000_021393_leftImg8bit.png
bochum/bochum_000000_021479_leftImg8bit.png
bochum/bochum_000000_021606_leftImg8bit.png
bochum/bochum_000000_022210_leftImg8bit.png
bochum/bochum_000000_022414_leftImg8bit.png
bochum/bochum_000000_023040_leftImg8bit.png
bochum/bochum_000000_023174_leftImg8bit.png
bochum/bochum_000000_023435_leftImg8bit.png
bochum/bochum_000000_023648_leftImg8bit.png
bochum/bochum_000000_024196_leftImg8bit.png
bochum/bochum_000000_024343_leftImg8bit.png
bochum/bochum_000000_024524_leftImg8bit.png
bochum/bochum_000000_024717_leftImg8bit.png
bochum/bochum_000000_024855_leftImg8bit.png
bochum/bochum_000000_025746_leftImg8bit.png
bochum/bochum_000000_025833_leftImg8bit.png
bochum/bochum_000000_026056_leftImg8bit.png
bochum/bochum_000000_026634_leftImg8bit.png
bochum/bochum_000000_027057_leftImg8bit.png
bochum/bochum_000000_027699_leftImg8bit.png
bochum/bochum_000000_027951_leftImg8bit.png
bochum/bochum_000000_028297_leftImg8bit.png
bochum/bochum_000000_028764_leftImg8bit.png
bochum/bochum_000000_029203_leftImg8bit.png
bochum/bochum_000000_029721_leftImg8bit.png
bochum/bochum_000000_030913_leftImg8bit.png
bochum/bochum_000000_031152_leftImg8bit.png
bochum/bochum_000000_031477_leftImg8bit.png
bochum/bochum_000000_031687_leftImg8bit.png
bochum/bochum_000000_031922_leftImg8bit.png
bochum/bochum_000000_032169_leftImg8bit.png
bochum/bochum_000000_033056_leftImg8bit.png
bochum/bochum_000000_033331_leftImg8bit.png
bochum/bochum_000000_033531_leftImg8bit.png
bochum/bochum_000000_033714_leftImg8bit.png
bochum/bochum_000000_034936_leftImg8bit.png
bochum/bochum_000000_035958_leftImg8bit.png
bochum/bochum_000000_036606_leftImg8bit.png
bochum/bochum_000000_037039_leftImg8bit.png
bochum/bochum_000000_037223_leftImg8bit.png
bochum/bochum_000000_037829_leftImg8bit.png
bochum/bochum_000000_038022_leftImg8bit.png
bochum/bochum_000000_038150_leftImg8bit.png
bremen/bremen_000000_000019_leftImg8bit.png
bremen/bremen_000001_000019_leftImg8bit.png
bremen/bremen_000002_000019_leftImg8bit.png
bremen/bremen_000003_000019_leftImg8bit.png
bremen/bremen_000004_000019_leftImg8bit.png
bremen/bremen_000005_000019_leftImg8bit.png
bremen/bremen_000006_000019_leftImg8bit.png
bremen/bremen_000007_000019_leftImg8bit.png
bremen/bremen_000008_000019_leftImg8bit.png
bremen/bremen_000009_000019_leftImg8bit.png
bremen/bremen_000010_000019_leftImg8bit.png
bremen/bremen_000011_000019_leftImg8bit.png
bremen/bremen_000012_000019_leftImg8bit.png
bremen/bremen_000013_000019_leftImg8bit.png
bremen/bremen_000014_000019_leftImg8bit.png
bremen/bremen_000015_000019_leftImg8bit.png
bremen/bremen_000016_000019_leftImg8bit.png
bremen/bremen_000017_000019_leftImg8bit.png
bremen/bremen_000018_000019_leftImg8bit.png
bremen/bremen_000019_000019_leftImg8bit.png
bremen/bremen_000020_000019_leftImg8bit.png
bremen/bremen_000021_000019_leftImg8bit.png
bremen/bremen_000022_000019_leftImg8bit.png
bremen/bremen_000023_000019_leftImg8bit.png
bremen/bremen_000024_000019_leftImg8bit.png
bremen/bremen_000025_000019_leftImg8bit.png
bremen/bremen_000026_000019_leftImg8bit.png
bremen/bremen_000027_000019_leftImg8bit.png
bremen/bremen_000028_000019_leftImg8bit.png
bremen/bremen_000029_000019_leftImg8bit.png
bremen/bremen_000030_000019_leftImg8bit.png
bremen/bremen_000031_000019_leftImg8bit.png
bremen/bremen_000032_000019_leftImg8bit.png
bremen/bremen_000033_000019_leftImg8bit.png
bremen/bremen_000034_000019_leftImg8bit.png
bremen/bremen_000035_000019_leftImg8bit.png
bremen/bremen_000036_000019_leftImg8bit.png
bremen/bremen_000037_000019_leftImg8bit.png
bremen/bremen_000038_000019_leftImg8bit.png
bremen/bremen_000039_000019_leftImg8bit.png
bremen/bremen_000040_000019_leftImg8bit.png
bremen/bremen_000041_000019_leftImg8bit.png
bremen/bremen_000042_000019_leftImg8bit.png
bremen/bremen_000043_000019_leftImg8bit.png
bremen/bremen_000044_000019_leftImg8bit.png
bremen/bremen_000045_000019_leftImg8bit.png
bremen/bremen_000046_000019_leftImg8bit.png
bremen/bremen_000047_000019_leftImg8bit.png
bremen/bremen_000048_000019_leftImg8bit.png
bremen/bremen_000049_000019_leftImg8bit.png
bremen/bremen_000050_000019_leftImg8bit.png
bremen/bremen_000051_000019_leftImg8bit.png
bremen/bremen_000052_000019_leftImg8bit.png
bremen/bremen_000053_000019_leftImg8bit.png
bremen/bremen_000054_000019_leftImg8bit.png
bremen/bremen_000055_000019_leftImg8bit.png
bremen/bremen_000056_000019_leftImg8bit.png
bremen/bremen_000057_000019_leftImg8bit.png
bremen/bremen_000058_000019_leftImg8bit.png
bremen/bremen_000059_000019_leftImg8bit.png
bremen/bremen_000060_000019_leftImg8bit.png
bremen/bremen_000061_000019_leftImg8bit.png
bremen/bremen_000062_000019_leftImg8bit.png
bremen/bremen_000063_000019_leftImg8bit.png
bremen/bremen_000064_000019_leftImg8bit.png
bremen/bremen_000065_000019_leftImg8bit.png
bremen/bremen_000066_000019_leftImg8bit.png
bremen/bremen_000067_000019_leftImg8bit.png
bremen/bremen_000068_000019_leftImg8bit.png
bremen/bremen_000069_000019_leftImg8bit.png
bremen/bremen_000070_000019_leftImg8bit.png
bremen/bremen_000071_000019_leftImg8bit.png
bremen/bremen_000072_000019_leftImg8bit.png
bremen/bremen_000073_000019_leftImg8bit.png
bremen/bremen_000074_000019_leftImg8bit.png
bremen/bremen_000075_000019_leftImg8bit.png
bremen/bremen_000076_000019_leftImg8bit.png
bremen/bremen_000077_000019_leftImg8bit.png
bremen/bremen_000078_000019_leftImg8bit.png
bremen/bremen_000079_000019_leftImg8bit.png
bremen/bremen_000080_000019_leftImg8bit.png
bremen/bremen_000081_000019_leftImg8bit.png
bremen/bremen_000082_000019_leftImg8bit.png
bremen/bremen_000083_000019_leftImg8bit.png
bremen/bremen_000084_000019_leftImg8bit.png
bremen/bremen_000085_000019_leftImg8bit.png
bremen/bremen_000086_000019_leftImg8bit.png
bremen/bremen_000087_000019_leftImg8bit.png
bremen/bremen_000088_000019_leftImg8bit.png
bremen/bremen_000089_000019_leftImg8bit.png
bremen/bremen_000090_000019_leftImg8bit.png
bremen/bremen_000091_000019_leftImg8bit.png
bremen/bremen_000092_000019_leftImg8bit.png
bremen/bremen_000093_000019_leftImg8bit.png
bremen/bremen_000094_000019_leftImg8bit.png
bremen/bremen_000095_000019_leftImg8bit.png
bremen/bremen_000096_000019_leftImg8bit.png
bremen/bremen_000097_000019_leftImg8bit.png
bremen/bremen_000098_000019_leftImg8bit.png
bremen/bremen_000099_000019_leftImg8bit.png
bremen/bremen_000100_000019_leftImg8bit.png
bremen/bremen_000101_000019_leftImg8bit.png
bremen/bremen_000102_000019_leftImg8bit.png
bremen/bremen_000103_000019_leftImg8bit.png
bremen/bremen_000104_000019_leftImg8bit.png
bremen/bremen_000105_000019_leftImg8bit.png
bremen/bremen_000106_000019_leftImg8bit.png
bremen/bremen_000107_000019_leftImg8bit.png
bremen/bremen_000108_000019_leftImg8bit.png
bremen/bremen_000109_000019_leftImg8bit.png
bremen/bremen_000110_000019_leftImg8bit.png
bremen/bremen_000111_000019_leftImg8bit.png
bremen/bremen_000112_000019_leftImg8bit.png
bremen/bremen_000113_000019_leftImg8bit.png
bremen/bremen_000114_000019_leftImg8bit.png
bremen/bremen_000115_000019_leftImg8bit.png
bremen/bremen_000116_000019_leftImg8bit.png
bremen/bremen_000117_000019_leftImg8bit.png
bremen/bremen_000118_000019_leftImg8bit.png
bremen/bremen_000119_000019_leftImg8bit.png
bremen/bremen_000120_000019_leftImg8bit.png
bremen/bremen_000121_000019_leftImg8bit.png
bremen/bremen_000122_000019_leftImg8bit.png
bremen/bremen_000123_000019_leftImg8bit.png
bremen/bremen_000124_000019_leftImg8bit.png
bremen/bremen_000125_000019_leftImg8bit.png
bremen/bremen_000126_000019_leftImg8bit.png
bremen/bremen_000127_000019_leftImg8bit.png
bremen/bremen_000128_000019_leftImg8bit.png
bremen/bremen_000129_000019_leftImg8bit.png
bremen/bremen_000130_000019_leftImg8bit.png
bremen/bremen_000131_000019_leftImg8bit.png
bremen/bremen_000132_000019_leftImg8bit.png
bremen/bremen_000133_000019_leftImg8bit.png
bremen/bremen_000134_000019_leftImg8bit.png
bremen/bremen_000135_000019_leftImg8bit.png
bremen/bremen_000136_000019_leftImg8bit.png
bremen/bremen_000137_000019_leftImg8bit.png
bremen/bremen_000138_000019_leftImg8bit.png
bremen/bremen_000139_000019_leftImg8bit.png
bremen/bremen_000140_000019_leftImg8bit.png
bremen/bremen_000141_000019_leftImg8bit.png
bremen/bremen_000142_000019_leftImg8bit.png
bremen/bremen_000143_000019_leftImg8bit.png
bremen/bremen_000144_000019_leftImg8bit.png
bremen/bremen_000145_000019_leftImg8bit.png
bremen/bremen_000146_000019_leftImg8bit.png
bremen/bremen_000147_000019_leftImg8bit.png
bremen/bremen_000148_000019_leftImg8bit.png
bremen/bremen_000149_000019_leftImg8bit.png
bremen/bremen_000150_000019_leftImg8bit.png
bremen/bremen_000151_000019_leftImg8bit.png
bremen/bremen_000152_000019_leftImg8bit.png
bremen/bremen_000153_000019_leftImg8bit.png
bremen/bremen_000154_000019_leftImg8bit.png
bremen/bremen_000155_000019_leftImg8bit.png
bremen/bremen_000156_000019_leftImg8bit.png
bremen/bremen_000157_000019_leftImg8bit.png
bremen/bremen_000158_000019_leftImg8bit.png
bremen/bremen_000159_000019_leftImg8bit.png
bremen/bremen_000160_000019_leftImg8bit.png
bremen/bremen_000161_000019_leftImg8bit.png
bremen/bremen_000162_000019_leftImg8bit.png
bremen/bremen_000163_000019_leftImg8bit.png
bremen/bremen_000164_000019_leftImg8bit.png
bremen/bremen_000165_000019_leftImg8bit.png
bremen/bremen_000166_000019_leftImg8bit.png
bremen/bremen_000167_000019_leftImg8bit.png
bremen/bremen_000168_000019_leftImg8bit.png
bremen/bremen_000169_000019_leftImg8bit.png
bremen/bremen_000170_000019_leftImg8bit.png
bremen/bremen_000171_000019_leftImg8bit.png
bremen/bremen_000172_000019_leftImg8bit.png
bremen/bremen_000173_000019_leftImg8bit.png
bremen/bremen_000174_000019_leftImg8bit.png
bremen/bremen_000175_000019_leftImg8bit.png
bremen/bremen_000176_000019_leftImg8bit.png
bremen/bremen_000177_000019_leftImg8bit.png
bremen/bremen_000178_000019_leftImg8bit.png
bremen/bremen_000179_000019_leftImg8bit.png
bremen/bremen_000180_000019_leftImg8bit.png
bremen/bremen_000181_000019_leftImg8bit.png
bremen/bremen_000182_000019_leftImg8bit.png
bremen/bremen_000183_000019_leftImg8bit.png
bremen/bremen_000184_000019_leftImg8bit.png
bremen/bremen_000185_000019_leftImg8bit.png
bremen/bremen_000186_000019_leftImg8bit.png
bremen/bremen_000187_000019_leftImg8bit.png
bremen/bremen_000188_000019_leftImg8bit.png
bremen/bremen_000189_000019_leftImg8bit.png
bremen/bremen_000190_000019_leftImg8bit.png
bremen/bremen_000191_000019_leftImg8bit.png
bremen/bremen_000192_000019_leftImg8bit.png
bremen/bremen_000193_000019_leftImg8bit.png
bremen/bremen_000194_000019_leftImg8bit.png
bremen/bremen_000195_000019_leftImg8bit.png
bremen/bremen_000196_000019_leftImg8bit.png
bremen/bremen_000197_000019_leftImg8bit.png
bremen/bremen_000198_000019_leftImg8bit.png
bremen/bremen_000199_000019_leftImg8bit.png
bremen/bremen_000200_000019_leftImg8bit.png
bremen/bremen_000201_000019_leftImg8bit.png
bremen/bremen_000202_000019_leftImg8bit.png
bremen/bremen_000203_000019_leftImg8bit.png
bremen/bremen_000204_000019_leftImg8bit.png
bremen/bremen_000205_000019_leftImg8bit.png
bremen/bremen_000206_000019_leftImg8bit.png
bremen/bremen_000207_000019_leftImg8bit.png
bremen/bremen_000208_000019_leftImg8bit.png
bremen/bremen_000209_000019_leftImg8bit.png
bremen/bremen_000210_000019_leftImg8bit.png
bremen/bremen_000211_000019_leftImg8bit.png
bremen/bremen_000212_000019_leftImg8bit.png
bremen/bremen_000213_000019_leftImg8bit.png
bremen/bremen_000214_000019_leftImg8bit.png
bremen/bremen_000215_000019_leftImg8bit.png
bremen/bremen_000216_000019_leftImg8bit.png
bremen/bremen_000217_000019_leftImg8bit.png
bremen/bremen_000218_000019_leftImg8bit.png
bremen/bremen_000219_000019_leftImg8bit.png
bremen/bremen_000220_000019_leftImg8bit.png
bremen/bremen_000221_000019_leftImg8bit.png
bremen/bremen_000222_000019_leftImg8bit.png
bremen/bremen_000223_000019_leftImg8bit.png
bremen/bremen_000224_000019_leftImg8bit.png
bremen/bremen_000225_000019_leftImg8bit.png
bremen/bremen_000226_000019_leftImg8bit.png
bremen/bremen_000227_000019_leftImg8bit.png
bremen/bremen_000228_000019_leftImg8bit.png
bremen/bremen_000229_000019_leftImg8bit.png
bremen/bremen_000230_000019_leftImg8bit.png
bremen/bremen_000231_000019_leftImg8bit.png
bremen/bremen_000232_000019_leftImg8bit.png
bremen/bremen_000233_000019_leftImg8bit.png
bremen/bremen_000234_000019_leftImg8bit.png
bremen/bremen_000235_000019_leftImg8bit.png
bremen/bremen_000236_000019_leftImg8bit.png
bremen/bremen_000237_000019_leftImg8bit.png
bremen/bremen_000238_000019_leftImg8bit.png
bremen/bremen_000239_000019_leftImg8bit.png
bremen/bremen_000240_000019_leftImg8bit.png
bremen/bremen_000241_000019_leftImg8bit.png
bremen/bremen_000242_000019_leftImg8bit.png
bremen/bremen_000243_000019_leftImg8bit.png
bremen/bremen_000244_000019_leftImg8bit.png
bremen/bremen_000245_000019_leftImg8bit.png
bremen/bremen_000246_000019_leftImg8bit.png
bremen/bremen_000247_000019_leftImg8bit.png
bremen/bremen_000248_000019_leftImg8bit.png
bremen/bremen_000249_000019_leftImg8bit.png
bremen/bremen_000250_000019_leftImg8bit.png
bremen/bremen_000251_000019_leftImg8bit.png
bremen/bremen_000252_000019_leftImg8bit.png
bremen/bremen_000253_000019_leftImg8bit.png
bremen/bremen_000254_000019_leftImg8bit.png
bremen/bremen_000255_000019_leftImg8bit.png
bremen/bremen_000256_000019_leftImg8bit.png
bremen/bremen_000257_000019_leftImg8bit.png
bremen/bremen_000258_000019_leftImg8bit.png
bremen/bremen_000259_000019_leftImg8bit.png
bremen/bremen_000260_000019_leftImg8bit.png
bremen/bremen_000261_000019_leftImg8bit.png
bremen/bremen_000262_000019_leftImg8bit.png
bremen/bremen_000263_000019_leftImg8bit.png
bremen/bremen_000264_000019_leftImg8bit.png
bremen/bremen_000265_000019_leftImg8bit.png
bremen/bremen_000266_000019_leftImg8bit.png
bremen/bremen_000267_000019_leftImg8bit.png
bremen/bremen_000268_000019_leftImg8bit.png
bremen/bremen_000269_000019_leftImg8bit.png
bremen/bremen_000270_000019_leftImg8bit.png
bremen/bremen_000271_000019_leftImg8bit.png
bremen/bremen_000272_000019_leftImg8bit.png
bremen/bremen_000273_000019_leftImg8bit.png
bremen/bremen_000274_000019_leftImg8bit.png
bremen/bremen_000275_000019_leftImg8bit.png
bremen/bremen_000276_000019_leftImg8bit.png
bremen/bremen_000277_000019_leftImg8bit.png
bremen/bremen_000278_000019_leftImg8bit.png
bremen/bremen_000279_000019_leftImg8bit.png
bremen/bremen_000280_000019_leftImg8bit.png
bremen/bremen_000281_000019_leftImg8bit.png
bremen/bremen_000282_000019_leftImg8bit.png
bremen/bremen_000283_000019_leftImg8bit.png
bremen/bremen_000284_000019_leftImg8bit.png
bremen/bremen_000285_000019_leftImg8bit.png
bremen/bremen_000286_000019_leftImg8bit.png
bremen/bremen_000287_000019_leftImg8bit.png
bremen/bremen_000288_000019_leftImg8bit.png
bremen/bremen_000289_000019_leftImg8bit.png
bremen/bremen_000290_000019_leftImg8bit.png
bremen/bremen_000291_000019_leftImg8bit.png
bremen/bremen_000292_000019_leftImg8bit.png
bremen/bremen_000293_000019_leftImg8bit.png
bremen/bremen_000294_000019_leftImg8bit.png
bremen/bremen_000295_000019_leftImg8bit.png
bremen/bremen_000296_000019_leftImg8bit.png
bremen/bremen_000297_000019_leftImg8bit.png
bremen/bremen_000298_000019_leftImg8bit.png
bremen/bremen_000299_000019_leftImg8bit.png
bremen/bremen_000300_000019_leftImg8bit.png
bremen/bremen_000301_000019_leftImg8bit.png
bremen/bremen_000302_000019_leftImg8bit.png
bremen/bremen_000303_000019_leftImg8bit.png
bremen/bremen_000304_000019_leftImg8bit.png
bremen/bremen_000305_000019_leftImg8bit.png
bremen/bremen_000306_000019_leftImg8bit.png
bremen/bremen_000307_000019_leftImg8bit.png
bremen/bremen_000308_000019_leftImg8bit.png
bremen/bremen_000309_000019_leftImg8bit.png
bremen/bremen_000310_000019_leftImg8bit.png
bremen/bremen_000311_000019_leftImg8bit.png
bremen/bremen_000312_000019_leftImg8bit.png
bremen/bremen_000313_000019_leftImg8bit.png
bremen/bremen_000314_000019_leftImg8bit.png
bremen/bremen_000315_000019_leftImg8bit.png
cologne/cologne_000000_000019_leftImg8bit.png
cologne/cologne_000001_000019_leftImg8bit.png
cologne/cologne_000002_000019_leftImg8bit.png
cologne/cologne_000003_000019_leftImg8bit.png
cologne/cologne_000004_000019_leftImg8bit.png
cologne/cologne_000005_000019_leftImg8bit.png
cologne/cologne_000006_000019_leftImg8bit.png
cologne/cologne_000007_000019_leftImg8bit.png
cologne/cologne_000008_000019_leftImg8bit.png
cologne/cologne_000009_000019_leftImg8bit.png
cologne/cologne_000010_000019_leftImg8bit.png
cologne/cologne_000011_000019_leftImg8bit.png
cologne/cologne_000012_000019_leftImg8bit.png
cologne/cologne_000013_000019_leftImg8bit.png
cologne/cologne_000014_000019_leftImg8bit.png
cologne/cologne_000015_000019_leftImg8bit.png
cologne/cologne_000016_000019_leftImg8bit.png
cologne/cologne_000017_000019_leftImg8bit.png
cologne/cologne_000018_000019_leftImg8bit.png
cologne/cologne_000019_000019_leftImg8bit.png
cologne/cologne_000020_000019_leftImg8bit.png
cologne/cologne_000021_000019_leftImg8bit.png
cologne/cologne_000022_000019_leftImg8bit.png
cologne/cologne_000023_000019_leftImg8bit.png
cologne/cologne_000024_000019_leftImg8bit.png
cologne/cologne_000025_000019_leftImg8bit.png
cologne/cologne_000026_000019_leftImg8bit.png
cologne/cologne_000027_000019_leftImg8bit.png
cologne/cologne_000028_000019_leftImg8bit.png
cologne/cologne_000029_000019_leftImg8bit.png
cologne/cologne_000030_000019_leftImg8bit.png
cologne/cologne_000031_000019_leftImg8bit.png
cologne/cologne_000032_000019_leftImg8bit.png
cologne/cologne_000033_000019_leftImg8bit.png
cologne/cologne_000034_000019_leftImg8bit.png
cologne/cologne_000035_000019_leftImg8bit.png
cologne/cologne_000036_000019_leftImg8bit.png
cologne/cologne_000037_000019_leftImg8bit.png
cologne/cologne_000038_000019_leftImg8bit.png
cologne/cologne_000039_000019_leftImg8bit.png
cologne/cologne_000040_000019_leftImg8bit.png
cologne/cologne_000041_000019_leftImg8bit.png
cologne/cologne_000042_000019_leftImg8bit.png
cologne/cologne_000043_000019_leftImg8bit.png
cologne/cologne_000044_000019_leftImg8bit.png
cologne/cologne_000045_000019_leftImg8bit.png
cologne/cologne_000046_000019_leftImg8bit.png
cologne/cologne_000047_000019_leftImg8bit.png
cologne/cologne_000048_000019_leftImg8bit.png
cologne/cologne_000049_000019_leftImg8bit.png
cologne/cologne_000050_000019_leftImg8bit.png
cologne/cologne_000051_000019_leftImg8bit.png
cologne/cologne_000052_000019_leftImg8bit.png
cologne/cologne_000053_000019_leftImg8bit.png
cologne/cologne_000054_000019_leftImg8bit.png
cologne/cologne_000055_000019_leftImg8bit.png
cologne/cologne_000056_000019_leftImg8bit.png
cologne/cologne_000057_000019_leftImg8bit.png
cologne/cologne_000058_000019_leftImg8bit.png
cologne/cologne_000059_000019_leftImg8bit.png
cologne/cologne_000060_000019_leftImg8bit.png
cologne/cologne_000061_000019_leftImg8bit.png
cologne/cologne_000062_000019_leftImg8bit.png
cologne/cologne_000063_000019_leftImg8bit.png
cologne/cologne_000064_000019_leftImg8bit.png
cologne/cologne_000065_000019_leftImg8bit.png
cologne/cologne_000066_000019_leftImg8bit.png
cologne/cologne_000067_000019_leftImg8bit.png
cologne/cologne_000068_000019_leftImg8bit.png
cologne/cologne_000069_000019_leftImg8bit.png
cologne/cologne_000070_000019_leftImg8bit.png
cologne/cologne_000071_000019_leftImg8bit.png
cologne/cologne_000072_000019_leftImg8bit.png
cologne/cologne_000073_000019_leftImg8bit.png
cologne/cologne_000074_000019_leftImg8bit.png
cologne/cologne_000075_000019_leftImg8bit.png
cologne/cologne_000076_000019_leftImg8bit.png
cologne/cologne_000077_000019_leftImg8bit.png
cologne/cologne_000078_000019_leftImg8bit.png
cologne/cologne_000079_000019_leftImg8bit.png
cologne/cologne_000080_000019_leftImg8bit.png
cologne/cologne_000081_000019_leftImg8bit.png
cologne/cologne_000082_000019_leftImg8bit.png
cologne/cologne_000083_000019_leftImg8bit.png
cologne/cologne_000084_000019_leftImg8bit.png
cologne/cologne_000085_000019_leftImg8bit.png
cologne/cologne_000086_000019_leftImg8bit.png
cologne/cologne_000087_000019_leftImg8bit.png
cologne/cologne_000088_000019_leftImg8bit.png
cologne/cologne_000089_000019_leftImg8bit.png
cologne/cologne_000090_000019_leftImg8bit.png
cologne/cologne_000091_000019_leftImg8bit.png
cologne/cologne_000092_000019_leftImg8bit.png
cologne/cologne_000093_000019_leftImg8bit.png
cologne/cologne_000094_000019_leftImg8bit.png
cologne/cologne_000095_000019_leftImg8bit.png
cologne/cologne_000096_000019_leftImg8bit.png
cologne/cologne_000097_000019_leftImg8bit.png
cologne/cologne_000098_000019_leftImg8bit.png
cologne/cologne_000099_000019_leftImg8bit.png
cologne/cologne_000100_000019_leftImg8bit.png
cologne/cologne_000101_000019_leftImg8bit.png
cologne/cologne_000102_000019_leftImg8bit.png
cologne/cologne_000103_000019_leftImg8bit.png
cologne/cologne_000104_000019_leftImg8bit.png
cologne/cologne_000105_000019_leftImg8bit.png
cologne/cologne_000106_000019_leftImg8bit.png
cologne/cologne_000107_000019_leftImg8bit.png
cologne/cologne_000108_000019_leftImg8bit.png
cologne/cologne_000109_000019_leftImg8bit.png
cologne/cologne_000110_000019_leftImg8bit.png
cologne/cologne_000111_000019_leftImg8bit.png
cologne/cologne_000112_000019_leftImg8bit.png
cologne/cologne_000113_000019_leftImg8bit.png
cologne/cologne_000114_000019_leftImg8bit.png
cologne/cologne_000115_000019_leftImg8bit.png
cologne/cologne_000116_000019_leftImg8bit.png
cologne/cologne_000117_000019_leftImg8bit.png
cologne/cologne_000118_000019_leftImg8bit.png
cologne/cologne_000119_000019_leftImg8bit.png
cologne/cologne_000120_000019_leftImg8bit.png
cologne/cologne_000121_000019_leftImg8bit.png
cologne/cologne_000122_000019_leftImg8bit.png
cologne/cologne_000123_000019_leftImg8bit.png
cologne/cologne_000124_000019_leftImg8bit.png
cologne/cologne_000125_000019_leftImg8bit.png
cologne/cologne_000126_000019_leftImg8bit.png
cologne/cologne_000127_000019_leftImg8bit.png
cologne/cologne_000128_000019_leftImg8bit.png
cologne/cologne_000129_000019_leftImg8bit.png
cologne/cologne_000130_000019_leftImg8bit.png
cologne/cologne_000131_000019_leftImg8bit.png
cologne/cologne_000132_000019_leftImg8bit.png
cologne/cologne_000133_000019_leftImg8bit.png
cologne/cologne_000134_000019_leftImg8bit.png
cologne/cologne_000135_000019_leftImg8bit.png
cologne/cologne_000136_000019_leftImg8bit.png
cologne/cologne_000137_000019_leftImg8bit.png
cologne/cologne_000138_000019_leftImg8bit.png
cologne/cologne_000139_000019_leftImg8bit.png
cologne/cologne_000140_000019_leftImg8bit.png
cologne/cologne_000141_000019_leftImg8bit.png
cologne/cologne_000142_000019_leftImg8bit.png
cologne/cologne_000143_000019_leftImg8bit.png
cologne/cologne_000144_000019_leftImg8bit.png
cologne/cologne_000145_000019_leftImg8bit.png
cologne/cologne_000146_000019_leftImg8bit.png
cologne/cologne_000147_000019_leftImg8bit.png
cologne/cologne_000148_000019_leftImg8bit.png
cologne/cologne_000149_000019_leftImg8bit.png
cologne/cologne_000150_000019_leftImg8bit.png
cologne/cologne_000151_000019_leftImg8bit.png
cologne/cologne_000152_000019_leftImg8bit.png
cologne/cologne_000153_000019_leftImg8bit.png
darmstadt/darmstadt_000000_000019_leftImg8bit.png
darmstadt/darmstadt_000001_000019_leftImg8bit.png
darmstadt/darmstadt_000002_000019_leftImg8bit.png
darmstadt/darmstadt_000003_000019_leftImg8bit.png
darmstadt/darmstadt_000004_000019_leftImg8bit.png
darmstadt/darmstadt_000005_000019_leftImg8bit.png
darmstadt/darmstadt_000006_000019_leftImg8bit.png
darmstadt/darmstadt_000007_000019_leftImg8bit.png
darmstadt/darmstadt_000008_000019_leftImg8bit.png
darmstadt/darmstadt_000009_000019_leftImg8bit.png
darmstadt/darmstadt_000010_000019_leftImg8bit.png
darmstadt/darmstadt_000011_000019_leftImg8bit.png
darmstadt/darmstadt_000012_000019_leftImg8bit.png
darmstadt/darmstadt_000013_000019_leftImg8bit.png
darmstadt/darmstadt_000014_000019_leftImg8bit.png
darmstadt/darmstadt_000015_000019_leftImg8bit.png
darmstadt/darmstadt_000016_000019_leftImg8bit.png
darmstadt/darmstadt_000017_000019_leftImg8bit.png
darmstadt/darmstadt_000018_000019_leftImg8bit.png
darmstadt/darmstadt_000019_000019_leftImg8bit.png
darmstadt/darmstadt_000020_000019_leftImg8bit.png
darmstadt/darmstadt_000021_000019_leftImg8bit.png
darmstadt/darmstadt_000022_000019_leftImg8bit.png
darmstadt/darmstadt_000023_000019_leftImg8bit.png
darmstadt/darmstadt_000024_000019_leftImg8bit.png
darmstadt/darmstadt_000025_000019_leftImg8bit.png
darmstadt/darmstadt_000026_000019_leftImg8bit.png
darmstadt/darmstadt_000027_000019_leftImg8bit.png
darmstadt/darmstadt_000028_000019_leftImg8bit.png
darmstadt/darmstadt_000029_000019_leftImg8bit.png
darmstadt/darmstadt_000030_000019_leftImg8bit.png
darmstadt/darmstadt_000031_000019_leftImg8bit.png
darmstadt/darmstadt_000032_000019_leftImg8bit.png
darmstadt/darmstadt_000033_000019_leftImg8bit.png
darmstadt/darmstadt_000034_000019_leftImg8bit.png
darmstadt/darmstadt_000035_000019_leftImg8bit.png
darmstadt/darmstadt_000036_000019_leftImg8bit.png
darmstadt/darmstadt_000037_000019_leftImg8bit.png
darmstadt/darmstadt_000038_000019_leftImg8bit.png
darmstadt/darmstadt_000039_000019_leftImg8bit.png
darmstadt/darmstadt_000040_000019_leftImg8bit.png
darmstadt/darmstadt_000041_000019_leftImg8bit.png
darmstadt/darmstadt_000042_000019_leftImg8bit.png
darmstadt/darmstadt_000043_000019_leftImg8bit.png
darmstadt/darmstadt_000044_000019_leftImg8bit.png
darmstadt/darmstadt_000045_000019_leftImg8bit.png
darmstadt/darmstadt_000046_000019_leftImg8bit.png
darmstadt/darmstadt_000047_000019_leftImg8bit.png
darmstadt/darmstadt_000048_000019_leftImg8bit.png
darmstadt/darmstadt_000049_000019_leftImg8bit.png
darmstadt/darmstadt_000050_000019_leftImg8bit.png
darmstadt/darmstadt_000051_000019_leftImg8bit.png
darmstadt/darmstadt_000052_000019_leftImg8bit.png
darmstadt/darmstadt_000053_000019_leftImg8bit.png
darmstadt/darmstadt_000054_000019_leftImg8bit.png
darmstadt/darmstadt_000055_000019_leftImg8bit.png
darmstadt/darmstadt_000056_000019_leftImg8bit.png
darmstadt/darmstadt_000057_000019_leftImg8bit.png
darmstadt/darmstadt_000058_000019_leftImg8bit.png
darmstadt/darmstadt_000059_000019_leftImg8bit.png
darmstadt/darmstadt_000060_000019_leftImg8bit.png
darmstadt/darmstadt_000061_000019_leftImg8bit.png
darmstadt/darmstadt_000062_000019_leftImg8bit.png
darmstadt/darmstadt_000063_000019_leftImg8bit.png
darmstadt/darmstadt_000064_000019_leftImg8bit.png
darmstadt/darmstadt_000065_000019_leftImg8bit.png
darmstadt/darmstadt_000066_000019_leftImg8bit.png
darmstadt/darmstadt_000067_000019_leftImg8bit.png
darmstadt/darmstadt_000068_000019_leftImg8bit.png
darmstadt/darmstadt_000069_000019_leftImg8bit.png
darmstadt/darmstadt_000070_000019_leftImg8bit.png
darmstadt/darmstadt_000071_000019_leftImg8bit.png
darmstadt/darmstadt_000072_000019_leftImg8bit.png
darmstadt/darmstadt_000073_000019_leftImg8bit.png
darmstadt/darmstadt_000074_000019_leftImg8bit.png
darmstadt/darmstadt_000075_000019_leftImg8bit.png
darmstadt/darmstadt_000076_000019_leftImg8bit.png
darmstadt/darmstadt_000077_000019_leftImg8bit.png
darmstadt/darmstadt_000078_000019_leftImg8bit.png
darmstadt/darmstadt_000079_000019_leftImg8bit.png
darmstadt/darmstadt_000080_000019_leftImg8bit.png
darmstadt/darmstadt_000081_000019_leftImg8bit.png
darmstadt/darmstadt_000082_000019_leftImg8bit.png
darmstadt/darmstadt_000083_000019_leftImg8bit.png
darmstadt/darmstadt_000084_000019_leftImg8bit.png
dusseldorf/dusseldorf_000000_000019_leftImg8bit.png
dusseldorf/dusseldorf_000001_000019_leftImg8bit.png
dusseldorf/dusseldorf_000002_000019_leftImg8bit.png
dusseldorf/dusseldorf_000003_000019_leftImg8bit.png
dusseldorf/dusseldorf_000004_000019_leftImg8bit.png
dusseldorf/dusseldorf_000005_000019_leftImg8bit.png
dusseldorf/dusseldorf_000006_000019_leftImg8bit.png
dusseldorf/dusseldorf_000007_000019_leftImg8bit.png
dusseldorf/dusseldorf_000008_000019_leftImg8bit.png
dusseldorf/dusseldorf_000009_000019_leftImg8bit.png
dusseldorf/dusseldorf_000010_000019_leftImg8bit.png
dusseldorf/dusseldorf_000011_000019_leftImg8bit.png
dusseldorf/dusseldorf_000012_000019_leftImg8bit.png
dusseldorf/dusseldorf_000013_000019_leftImg8bit.png
dusseldorf/dusseldorf_000014_000019_leftImg8bit.png
dusseldorf/dusseldorf_000015_000019_leftImg8bit.png
dusseldorf/dusseldorf_000016_000019_leftImg8bit.png
dusseldorf/dusseldorf_000017_000019_leftImg8bit.png
dusseldorf/dusseldorf_000018_000019_leftImg8bit.png
dusseldorf/dusseldorf_000019_000019_leftImg8bit.png
dusseldorf/dusseldorf_000020_000019_leftImg8bit.png
dusseldorf/dusseldorf_000021_000019_leftImg8bit.png
dusseldorf/dusseldorf_000022_000019_leftImg8bit.png
dusseldorf/dusseldorf_000023_000019_leftImg8bit.png
dusseldorf/dusseldorf_000024_000019_leftImg8bit.png
dusseldorf/dusseldorf_000025_000019_leftImg8bit.png
dusseldorf/dusseldorf_000026_000019_leftImg8bit.png
dusseldorf/dusseldorf_000027_000019_leftImg8bit.png
dusseldorf/dusseldorf_000028_000019_leftImg8bit.png
dusseldorf/dusseldorf_000029_000019_leftImg8bit.png
dusseldorf/dusseldorf_000030_000019_leftImg8bit.png
dusseldorf/dusseldorf_000031_000019_leftImg8bit.png
dusseldorf/dusseldorf_000032_000019_leftImg8bit.png
dusseldorf/dusseldorf_000033_000019_leftImg8bit.png
dusseldorf/dusseldorf_000034_000019_leftImg8bit.png
dusseldorf/dusseldorf_000035_000019_leftImg8bit.png
dusseldorf/dusseldorf_000036_000019_leftImg8bit.png
dusseldorf/dusseldorf_000037_000019_leftImg8bit.png
dusseldorf/dusseldorf_000038_000019_leftImg8bit.png
dusseldorf/dusseldorf_000039_000019_leftImg8bit.png
dusseldorf/dusseldorf_000040_000019_leftImg8bit.png
dusseldorf/dusseldorf_000041_000019_leftImg8bit.png
dusseldorf/dusseldorf_000042_000019_leftImg8bit.png
dusseldorf/dusseldorf_000043_000019_leftImg8bit.png
dusseldorf/dusseldorf_000044_000019_leftImg8bit.png
dusseldorf/dusseldorf_000045_000019_leftImg8bit.png
dusseldorf/dusseldorf_000046_000019_leftImg8bit.png
dusseldorf/dusseldorf_000047_000019_leftImg8bit.png
dusseldorf/dusseldorf_000048_000019_leftImg8bit.png
dusseldorf/dusseldorf_000049_000019_leftImg8bit.png
dusseldorf/dusseldorf_000050_000019_leftImg8bit.png
dusseldorf/dusseldorf_000051_000019_leftImg8bit.png
dusseldorf/dusseldorf_000052_000019_leftImg8bit.png
dusseldorf/dusseldorf_000053_000019_leftImg8bit.png
dusseldorf/dusseldorf_000054_000019_leftImg8bit.png
dusseldorf/dusseldorf_000055_000019_leftImg8bit.png
dusseldorf/dusseldorf_000056_000019_leftImg8bit.png
dusseldorf/dusseldorf_000057_000019_leftImg8bit.png
dusseldorf/dusseldorf_000058_000019_leftImg8bit.png
dusseldorf/dusseldorf_000059_000019_leftImg8bit.png
dusseldorf/dusseldorf_000060_000019_leftImg8bit.png
dusseldorf/dusseldorf_000061_000019_leftImg8bit.png
dusseldorf/dusseldorf_000062_000019_leftImg8bit.png
dusseldorf/dusseldorf_000063_000019_leftImg8bit.png
dusseldorf/dusseldorf_000064_000019_leftImg8bit.png
dusseldorf/dusseldorf_000065_000019_leftImg8bit.png
dusseldorf/dusseldorf_000066_000019_leftImg8bit.png
dusseldorf/dusseldorf_000067_000019_leftImg8bit.png
dusseldorf/dusseldorf_000068_000019_leftImg8bit.png
dusseldorf/dusseldorf_000069_000019_leftImg8bit.png
dusseldorf/dusseldorf_000070_000019_leftImg8bit.png
dusseldorf/dusseldorf_000071_000019_leftImg8bit.png
dusseldorf/dusseldorf_000072_000019_leftImg8bit.png
dusseldorf/dusseldorf_000073_000019_leftImg8bit.png
dusseldorf/dusseldorf_000074_000019_leftImg8bit.png
dusseldorf/dusseldorf_000075_000019_leftImg8bit.png
dusseldorf/dusseldorf_000076_000019_leftImg8bit.png
dusseldorf/dusseldorf_000077_000019_leftImg8bit.png
dusseldorf/dusseldorf_000078_000019_leftImg8bit.png
dusseldorf/dusseldorf_000079_000019_leftImg8bit.png
dusseldorf/dusseldorf_000080_000019_leftImg8bit.png
dusseldorf/dusseldorf_000081_000019_leftImg8bit.png
dusseldorf/dusseldorf_000082_000019_leftImg8bit.png
dusseldorf/dusseldorf_000083_000019_leftImg8bit.png
dusseldorf/dusseldorf_000084_000019_leftImg8bit.png
dusseldorf/dusseldorf_000085_000019_leftImg8bit.png
dusseldorf/dusseldorf_000086_000019_leftImg8bit.png
dusseldorf/dusseldorf_000087_000019_leftImg8bit.png
dusseldorf/dusseldorf_000088_000019_leftImg8bit.png
dusseldorf/dusseldorf_000089_000019_leftImg8bit.png
dusseldorf/dusseldorf_000090_000019_leftImg8bit.png
dusseldorf/dusseldorf_000091_000019_leftImg8bit.png
dusseldorf/dusseldorf_000092_000019_leftImg8bit.png
dusseldorf/dusseldorf_000093_000019_leftImg8bit.png
dusseldorf/dusseldorf_000094_000019_leftImg8bit.png
dusseldorf/dusseldorf_000095_000019_leftImg8bit.png
dusseldorf/dusseldorf_000096_000019_leftImg8bit.png
dusseldorf/dusseldorf_000097_000019_leftImg8bit.png
dusseldorf/dusseldorf_000098_000019_leftImg8bit.png
dusseldorf/dusseldorf_000099_000019_leftImg8bit.png
dusseldorf/dusseldorf_000100_000019_leftImg8bit.png
dusseldorf/dusseldorf_000101_000019_leftImg8bit.png
dusseldorf/dusseldorf_000102_000019_leftImg8bit.png
dusseldorf/dusseldorf_000103_000019_leftImg8bit.png
dusseldorf/dusseldorf_000104_000019_leftImg8bit.png
dusseldorf/dusseldorf_000105_000019_leftImg8bit.png
dusseldorf/dusseldorf_000106_000019_leftImg8bit.png
dusseldorf/dusseldorf_000107_000019_leftImg8bit.png
dusseldorf/dusseldorf_000108_000019_leftImg8bit.png
dusseldorf/dusseldorf_000109_000019_leftImg8bit.png
dusseldorf/dusseldorf_000110_000019_leftImg8bit.png
dusseldorf/dusseldorf_000111_000019_leftImg8bit.png
dusseldorf/dusseldorf_000112_000019_leftImg8bit.png
dusseldorf/dusseldorf_000113_000019_leftImg8bit.png
dusseldorf/dusseldorf_000114_000019_leftImg8bit.png
dusseldorf/dusseldorf_000115_000019_leftImg8bit.png
dusseldorf/dusseldorf_000116_000019_leftImg8bit.png
dusseldorf/dusseldorf_000117_000019_leftImg8bit.png
dusseldorf/dusseldorf_000118_000019_leftImg8bit.png
dusseldorf/dusseldorf_000119_000019_leftImg8bit.png
dusseldorf/dusseldorf_000120_000019_leftImg8bit.png
dusseldorf/dusseldorf_000121_000019_leftImg8bit.png
dusseldorf/dusseldorf_000122_000019_leftImg8bit.png
dusseldorf/dusseldorf_000123_000019_leftImg8bit.png
dusseldorf/dusseldorf_000124_000019_leftImg8bit.png
dusseldorf/dusseldorf_000125_000019_leftImg8bit.png
dusseldorf/dusseldorf_000126_000019_leftImg8bit.png
dusseldorf/dusseldorf_000127_000019_leftImg8bit.png
dusseldorf/dusseldorf_000128_000019_leftImg8bit.png
dusseldorf/dusseldorf_000129_000019_leftImg8bit.png
dusseldorf/dusseldorf_000130_000019_leftImg8bit.png
dusseldorf/dusseldorf_000131_000019_leftImg8bit.png
dusseldorf/dusseldorf_000132_000019_leftImg8bit.png
dusseldorf/dusseldorf_000133_000019_leftImg8bit.png
dusseldorf/dusseldorf_000134_000019_leftImg8bit.png
dusseldorf/dusseldorf_000135_000019_leftImg8bit.png
dusseldorf/dusseldorf_000136_000019_leftImg8bit.png
dusseldorf/dusseldorf_000137_000019_leftImg8bit.png
dusseldorf/dusseldorf_000138_000019_leftImg8bit.png
dusseldorf/dusseldorf_000139_000019_leftImg8bit.png
dusseldorf/dusseldorf_000140_000019_leftImg8bit.png
dusseldorf/dusseldorf_000141_000019_leftImg8bit.png
dusseldorf/dusseldorf_000142_000019_leftImg8bit.png
dusseldorf/dusseldorf_000143_000019_leftImg8bit.png
dusseldorf/dusseldorf_000144_000019_leftImg8bit.png
dusseldorf/dusseldorf_000145_000019_leftImg8bit.png
dusseldorf/dusseldorf_000146_000019_leftImg8bit.png
dusseldorf/dusseldorf_000147_000019_leftImg8bit.png
dusseldorf/dusseldorf_000148_000019_leftImg8bit.png
dusseldorf/dusseldorf_000149_000019_leftImg8bit.png
dusseldorf/dusseldorf_000150_000019_leftImg8bit.png
dusseldorf/dusseldorf_000151_000019_leftImg8bit.png
dusseldorf/dusseldorf_000152_000019_leftImg8bit.png
dusseldorf/dusseldorf_000153_000019_leftImg8bit.png
dusseldorf/dusseldorf_000154_000019_leftImg8bit.png
dusseldorf/dusseldorf_000155_000019_leftImg8bit.png
dusseldorf/dusseldorf_000156_000019_leftImg8bit.png
dusseldorf/dusseldorf_000157_000019_leftImg8bit.png
dusseldorf/dusseldorf_000158_000019_leftImg8bit.png
dusseldorf/dusseldorf_000159_000019_leftImg8bit.png
dusseldorf/dusseldorf_000160_000019_leftImg8bit.png
dusseldorf/dusseldorf_000161_000019_leftImg8bit.png
dusseldorf/dusseldorf_000162_000019_leftImg8bit.png
dusseldorf/dusseldorf_000163_000019_leftImg8bit.png
dusseldorf/dusseldorf_000164_000019_leftImg8bit.png
dusseldorf/dusseldorf_000165_000019_leftImg8bit.png
dusseldorf/dusseldorf_000166_000019_leftImg8bit.png
dusseldorf/dusseldorf_000167_000019_leftImg8bit.png
dusseldorf/dusseldorf_000168_000019_leftImg8bit.png
dusseldorf/dusseldorf_000169_000019_leftImg8bit.png
dusseldorf/dusseldorf_000170_000019_leftImg8bit.png
dusseldorf/dusseldorf_000171_000019_leftImg8bit.png
dusseldorf/dusseldorf_000172_000019_leftImg8bit.png
dusseldorf/dusseldorf_000173_000019_leftImg8bit.png
dusseldorf/dusseldorf_000174_000019_leftImg8bit.png
dusseldorf/dusseldorf_000175_000019_leftImg8bit.png
dusseldorf/dusseldorf_000176_000019_leftImg8bit.png
dusseldorf/dusseldorf_000177_000019_leftImg8bit.png
dusseldorf/dusseldorf_000178_000019_leftImg8bit.png
dusseldorf/dusseldorf_000179_000019_leftImg8bit.png
dusseldorf/dusseldorf_000180_000019_leftImg8bit.png
dusseldorf/dusseldorf_000181_000019_leftImg8bit.png
dusseldorf/dusseldorf_000182_000019_leftImg8bit.png
dusseldorf/dusseldorf_000183_000019_leftImg8bit.png
dusseldorf/dusseldorf_000184_000019_leftImg8bit.png
dusseldorf/dusseldorf_000185_000019_leftImg8bit.png
dusseldorf/dusseldorf_000186_000019_leftImg8bit.png
dusseldorf/dusseldorf_000187_000019_leftImg8bit.png
dusseldorf/dusseldorf_000188_000019_leftImg8bit.png
dusseldorf/dusseldorf_000189_000019_leftImg8bit.png
dusseldorf/dusseldorf_000190_000019_leftImg8bit.png
dusseldorf/dusseldorf_000191_000019_leftImg8bit.png
dusseldorf/dusseldorf_000192_000019_leftImg8bit.png
dusseldorf/dusseldorf_000193_000019_leftImg8bit.png
dusseldorf/dusseldorf_000194_000019_leftImg8bit.png
dusseldorf/dusseldorf_000195_000019_leftImg8bit.png
dusseldorf/dusseldorf_000196_000019_leftImg8bit.png
dusseldorf/dusseldorf_000197_000019_leftImg8bit.png
dusseldorf/dusseldorf_000198_000019_leftImg8bit.png
dusseldorf/dusseldorf_000199_000019_leftImg8bit.png
dusseldorf/dusseldorf_000200_000019_leftImg8bit.png
dusseldorf/dusseldorf_000201_000019_leftImg8bit.png
dusseldorf/dusseldorf_000202_000019_leftImg8bit.png
dusseldorf/dusseldorf_000203_000019_leftImg8bit.png
dusseldorf/dusseldorf_000204_000019_leftImg8bit.png
dusseldorf/dusseldorf_000205_000019_leftImg8bit.png
dusseldorf/dusseldorf_000206_000019_leftImg8bit.png
dusseldorf/dusseldorf_000207_000019_leftImg8bit.png
dusseldorf/dusseldorf_000208_000019_leftImg8bit.png
dusseldorf/dusseldorf_000209_000019_leftImg8bit.png
dusseldorf/dusseldorf_000210_000019_leftImg8bit.png
dusseldorf/dusseldorf_000211_000019_leftImg8bit.png
dusseldorf/dusseldorf_000212_000019_leftImg8bit.png
dusseldorf/dusseldorf_000213_000019_leftImg8bit.png
dusseldorf/dusseldorf_000214_000019_leftImg8bit.png
dusseldorf/dusseldorf_000215_000019_leftImg8bit.png
dusseldorf/dusseldorf_000216_000019_leftImg8bit.png
dusseldorf/dusseldorf_000217_000019_leftImg8bit.png
dusseldorf/dusseldorf_000218_000019_leftImg8bit.png
dusseldorf/dusseldorf_000219_000019_leftImg8bit.png
dusseldorf/dusseldorf_000220_000019_leftImg8bit.png
erfurt/erfurt_000000_000019_leftImg8bit.png
erfurt/erfurt_000001_000019_leftImg8bit.png
erfurt/erfurt_000002_000019_leftImg8bit.png
erfurt/erfurt_000003_000019_leftImg8bit.png
erfurt/erfurt_000004_000019_leftImg8bit.png
erfurt/erfurt_000005_000019_leftImg8bit.png
erfurt/erfurt_000006_000019_leftImg8bit.png
erfurt/erfurt_000007_000019_leftImg8bit.png
erfurt/erfurt_000008_000019_leftImg8bit.png
erfurt/erfurt_000009_000019_leftImg8bit.png
erfurt/erfurt_000010_000019_leftImg8bit.png
erfurt/erfurt_000011_000019_leftImg8bit.png
erfurt/erfurt_000012_000019_leftImg8bit.png
erfurt/erfurt_000013_000019_leftImg8bit.png
erfurt/erfurt_000014_000019_leftImg8bit.png
erfurt/erfurt_000015_000019_leftImg8bit.png
erfurt/erfurt_000016_000019_leftImg8bit.png
erfurt/erfurt_000017_000019_leftImg8bit.png
erfurt/erfurt_000018_000019_leftImg8bit.png
erfurt/erfurt_000019_000019_leftImg8bit.png
erfurt/erfurt_000020_000019_leftImg8bit.png
erfurt/erfurt_000021_000019_leftImg8bit.png
erfurt/erfurt_000022_000019_leftImg8bit.png
erfurt/erfurt_000023_000019_leftImg8bit.png
erfurt/erfurt_000024_000019_leftImg8bit.png
erfurt/erfurt_000025_000019_leftImg8bit.png
erfurt/erfurt_000026_000019_leftImg8bit.png
erfurt/erfurt_000027_000019_leftImg8bit.png
erfurt/erfurt_000028_000019_leftImg8bit.png
erfurt/erfurt_000029_000019_leftImg8bit.png
erfurt/erfurt_000030_000019_leftImg8bit.png
erfurt/erfurt_000031_000019_leftImg8bit.png
erfurt/erfurt_000032_000019_leftImg8bit.png
erfurt/erfurt_000033_000019_leftImg8bit.png
erfurt/erfurt_000034_000019_leftImg8bit.png
erfurt/erfurt_000035_000019_leftImg8bit.png
erfurt/erfurt_000036_000019_leftImg8bit.png
erfurt/erfurt_000037_000019_leftImg8bit.png
erfurt/erfurt_000038_000019_leftImg8bit.png
erfurt/erfurt_000039_000019_leftImg8bit.png
erfurt/erfurt_000040_000019_leftImg8bit.png
erfurt/erfurt_000041_000019_leftImg8bit.png
erfurt/erfurt_000042_000019_leftImg8bit.png
erfurt/erfurt_000043_000019_leftImg8bit.png
erfurt/erfurt_000044_000019_leftImg8bit.png
erfurt/erfurt_000045_000019_leftImg8bit.png
erfurt/erfurt_000046_000019_leftImg8bit.png
erfurt/erfurt_000047_000019_leftImg8bit.png
erfurt/erfurt_000048_000019_leftImg8bit.png
erfurt/erfurt_000049_000019_leftImg8bit.png
erfurt/erfurt_000050_000019_leftImg8bit.png
erfurt/erfurt_000051_000019_leftImg8bit.png
erfurt/erfurt_000052_000019_leftImg8bit.png
erfurt/erfurt_000053_000019_leftImg8bit.png
erfurt/erfurt_000054_000019_leftImg8bit.png
erfurt/erfurt_000055_000019_leftImg8bit.png
erfurt/erfurt_000056_000019_leftImg8bit.png
erfurt/erfurt_000057_000019_leftImg8bit.png
erfurt/erfurt_000058_000019_leftImg8bit.png
erfurt/erfurt_000059_000019_leftImg8bit.png
erfurt/erfurt_000060_000019_leftImg8bit.png
erfurt/erfurt_000061_000019_leftImg8bit.png
erfurt/erfurt_000062_000019_leftImg8bit.png
erfurt/erfurt_000063_000019_leftImg8bit.png
erfurt/erfurt_000064_000019_leftImg8bit.png
erfurt/erfurt_000065_000019_leftImg8bit.png
erfurt/erfurt_000066_000019_leftImg8bit.png
erfurt/erfurt_000067_000019_leftImg8bit.png
erfurt/erfurt_000068_000019_leftImg8bit.png
erfurt/erfurt_000069_000019_leftImg8bit.png
erfurt/erfurt_000070_000019_leftImg8bit.png
erfurt/erfurt_000071_000019_leftImg8bit.png
erfurt/erfurt_000072_000019_leftImg8bit.png
erfurt/erfurt_000073_000019_leftImg8bit.png
erfurt/erfurt_000074_000019_leftImg8bit.png
erfurt/erfurt_000075_000019_leftImg8bit.png
erfurt/erfurt_000076_000019_leftImg8bit.png
erfurt/erfurt_000077_000019_leftImg8bit.png
erfurt/erfurt_000078_000019_leftImg8bit.png
erfurt/erfurt_000079_000019_leftImg8bit.png
erfurt/erfurt_000080_000019_leftImg8bit.png
erfurt/erfurt_000081_000019_leftImg8bit.png
erfurt/erfurt_000082_000019_leftImg8bit.png
erfurt/erfurt_000083_000019_leftImg8bit.png
erfurt/erfurt_000084_000019_leftImg8bit.png
erfurt/erfurt_000085_000019_leftImg8bit.png
erfurt/erfurt_000086_000019_leftImg8bit.png
erfurt/erfurt_000087_000019_leftImg8bit.png
erfurt/erfurt_000088_000019_leftImg8bit.png
erfurt/erfurt_000089_000019_leftImg8bit.png
erfurt/erfurt_000090_000019_leftImg8bit.png
erfurt/erfurt_000091_000019_leftImg8bit.png
erfurt/erfurt_000092_000019_leftImg8bit.png
erfurt/erfurt_000093_000019_leftImg8bit.png
erfurt/erfurt_000094_000019_leftImg8bit.png
erfurt/erfurt_000095_000019_leftImg8bit.png
erfurt/erfurt_000096_000019_leftImg8bit.png
erfurt/erfurt_000097_000019_leftImg8bit.png
erfurt/erfurt_000098_000019_leftImg8bit.png
erfurt/erfurt_000099_000019_leftImg8bit.png
erfurt/erfurt_000100_000019_leftImg8bit.png
erfurt/erfurt_000101_000019_leftImg8bit.png
erfurt/erfurt_000102_000019_leftImg8bit.png
erfurt/erfurt_000103_000019_leftImg8bit.png
erfurt/erfurt_000104_000019_leftImg8bit.png
erfurt/erfurt_000105_000019_leftImg8bit.png
erfurt/erfurt_000106_000019_leftImg8bit.png
erfurt/erfurt_000107_000019_leftImg8bit.png
erfurt/erfurt_000108_000019_leftImg8bit.png
hamburg/hamburg_000000_000042_leftImg8bit.png
hamburg/hamburg_000000_000629_leftImg8bit.png
hamburg/hamburg_000000_001106_leftImg8bit.png
hamburg/hamburg_000000_001613_leftImg8bit.png
hamburg/hamburg_000000_002095_leftImg8bit.png
hamburg/hamburg_000000_002338_leftImg8bit.png
hamburg/hamburg_000000_003488_leftImg8bit.png
hamburg/hamburg_000000_003904_leftImg8bit.png
hamburg/hamburg_000000_004985_leftImg8bit.png
hamburg/hamburg_000000_005639_leftImg8bit.png
hamburg/hamburg_000000_006192_leftImg8bit.png
hamburg/hamburg_000000_006322_leftImg8bit.png
hamburg/hamburg_000000_007737_leftImg8bit.png
hamburg/hamburg_000000_008221_leftImg8bit.png
hamburg/hamburg_000000_008494_leftImg8bit.png
hamburg/hamburg_000000_011641_leftImg8bit.png
hamburg/hamburg_000000_013577_leftImg8bit.png
hamburg/hamburg_000000_014030_leftImg8bit.png
hamburg/hamburg_000000_014940_leftImg8bit.png
hamburg/hamburg_000000_015350_leftImg8bit.png
hamburg/hamburg_000000_016447_leftImg8bit.png
hamburg/hamburg_000000_016691_leftImg8bit.png
hamburg/hamburg_000000_016928_leftImg8bit.png
hamburg/hamburg_000000_018592_leftImg8bit.png
hamburg/hamburg_000000_018878_leftImg8bit.png
hamburg/hamburg_000000_019373_leftImg8bit.png
hamburg/hamburg_000000_019760_leftImg8bit.png
hamburg/hamburg_000000_019892_leftImg8bit.png
hamburg/hamburg_000000_020211_leftImg8bit.png
hamburg/hamburg_000000_020563_leftImg8bit.png
hamburg/hamburg_000000_021353_leftImg8bit.png
hamburg/hamburg_000000_021961_leftImg8bit.png
hamburg/hamburg_000000_022524_leftImg8bit.png
hamburg/hamburg_000000_023472_leftImg8bit.png
hamburg/hamburg_000000_024251_leftImg8bit.png
hamburg/hamburg_000000_025802_leftImg8bit.png
hamburg/hamburg_000000_025986_leftImg8bit.png
hamburg/hamburg_000000_026675_leftImg8bit.png
hamburg/hamburg_000000_027304_leftImg8bit.png
hamburg/hamburg_000000_027857_leftImg8bit.png
hamburg/hamburg_000000_028056_leftImg8bit.png
hamburg/hamburg_000000_028439_leftImg8bit.png
hamburg/hamburg_000000_028608_leftImg8bit.png
hamburg/hamburg_000000_029144_leftImg8bit.png
hamburg/hamburg_000000_029378_leftImg8bit.png
hamburg/hamburg_000000_029676_leftImg8bit.png
hamburg/hamburg_000000_030279_leftImg8bit.png
hamburg/hamburg_000000_030953_leftImg8bit.png
hamburg/hamburg_000000_031971_leftImg8bit.png
hamburg/hamburg_000000_032266_leftImg8bit.png
hamburg/hamburg_000000_032460_leftImg8bit.png
hamburg/hamburg_000000_032719_leftImg8bit.png
hamburg/hamburg_000000_032906_leftImg8bit.png
hamburg/hamburg_000000_033506_leftImg8bit.png
hamburg/hamburg_000000_034049_leftImg8bit.png
hamburg/hamburg_000000_035568_leftImg8bit.png
hamburg/hamburg_000000_036003_leftImg8bit.png
hamburg/hamburg_000000_036427_leftImg8bit.png
hamburg/hamburg_000000_036527_leftImg8bit.png
hamburg/hamburg_000000_037036_leftImg8bit.png
hamburg/hamburg_000000_037161_leftImg8bit.png
hamburg/hamburg_000000_037279_leftImg8bit.png
hamburg/hamburg_000000_037741_leftImg8bit.png
hamburg/hamburg_000000_038446_leftImg8bit.png
hamburg/hamburg_000000_038511_leftImg8bit.png
hamburg/hamburg_000000_038729_leftImg8bit.png
hamburg/hamburg_000000_038915_leftImg8bit.png
hamburg/hamburg_000000_039264_leftImg8bit.png
hamburg/hamburg_000000_039420_leftImg8bit.png
hamburg/hamburg_000000_039546_leftImg8bit.png
hamburg/hamburg_000000_040021_leftImg8bit.png
hamburg/hamburg_000000_041667_leftImg8bit.png
hamburg/hamburg_000000_042505_leftImg8bit.png
hamburg/hamburg_000000_042885_leftImg8bit.png
hamburg/hamburg_000000_043944_leftImg8bit.png
hamburg/hamburg_000000_044251_leftImg8bit.png
hamburg/hamburg_000000_044400_leftImg8bit.png
hamburg/hamburg_000000_044747_leftImg8bit.png
hamburg/hamburg_000000_044996_leftImg8bit.png
hamburg/hamburg_000000_045437_leftImg8bit.png
hamburg/hamburg_000000_045704_leftImg8bit.png
hamburg/hamburg_000000_045908_leftImg8bit.png
hamburg/hamburg_000000_046078_leftImg8bit.png
hamburg/hamburg_000000_046510_leftImg8bit.png
hamburg/hamburg_000000_046566_leftImg8bit.png
hamburg/hamburg_000000_046619_leftImg8bit.png
hamburg/hamburg_000000_046872_leftImg8bit.png
hamburg/hamburg_000000_047057_leftImg8bit.png
hamburg/hamburg_000000_047108_leftImg8bit.png
hamburg/hamburg_000000_047157_leftImg8bit.png
hamburg/hamburg_000000_047220_leftImg8bit.png
hamburg/hamburg_000000_047390_leftImg8bit.png
hamburg/hamburg_000000_048138_leftImg8bit.png
hamburg/hamburg_000000_048494_leftImg8bit.png
hamburg/hamburg_000000_048750_leftImg8bit.png
hamburg/hamburg_000000_048960_leftImg8bit.png
hamburg/hamburg_000000_049558_leftImg8bit.png
hamburg/hamburg_000000_050160_leftImg8bit.png
hamburg/hamburg_000000_051855_leftImg8bit.png
hamburg/hamburg_000000_052122_leftImg8bit.png
hamburg/hamburg_000000_052904_leftImg8bit.png
hamburg/hamburg_000000_053086_leftImg8bit.png
hamburg/hamburg_000000_053486_leftImg8bit.png
hamburg/hamburg_000000_053563_leftImg8bit.png
hamburg/hamburg_000000_053776_leftImg8bit.png
hamburg/hamburg_000000_053886_leftImg8bit.png
hamburg/hamburg_000000_054029_leftImg8bit.png
hamburg/hamburg_000000_054220_leftImg8bit.png
hamburg/hamburg_000000_054555_leftImg8bit.png
hamburg/hamburg_000000_054850_leftImg8bit.png
hamburg/hamburg_000000_055039_leftImg8bit.png
hamburg/hamburg_000000_055414_leftImg8bit.png
hamburg/hamburg_000000_055894_leftImg8bit.png
hamburg/hamburg_000000_056229_leftImg8bit.png
hamburg/hamburg_000000_056508_leftImg8bit.png
hamburg/hamburg_000000_057487_leftImg8bit.png
hamburg/hamburg_000000_057678_leftImg8bit.png
hamburg/hamburg_000000_057816_leftImg8bit.png
hamburg/hamburg_000000_058591_leftImg8bit.png
hamburg/hamburg_000000_059339_leftImg8bit.png
hamburg/hamburg_000000_059720_leftImg8bit.png
hamburg/hamburg_000000_060215_leftImg8bit.png
hamburg/hamburg_000000_060586_leftImg8bit.png
hamburg/hamburg_000000_060907_leftImg8bit.png
hamburg/hamburg_000000_061048_leftImg8bit.png
hamburg/hamburg_000000_061468_leftImg8bit.png
hamburg/hamburg_000000_061790_leftImg8bit.png
hamburg/hamburg_000000_062039_leftImg8bit.png
hamburg/hamburg_000000_062371_leftImg8bit.png
hamburg/hamburg_000000_062710_leftImg8bit.png
hamburg/hamburg_000000_062964_leftImg8bit.png
hamburg/hamburg_000000_063403_leftImg8bit.png
hamburg/hamburg_000000_063698_leftImg8bit.png
hamburg/hamburg_000000_064269_leftImg8bit.png
hamburg/hamburg_000000_064825_leftImg8bit.png
hamburg/hamburg_000000_065055_leftImg8bit.png
hamburg/hamburg_000000_065604_leftImg8bit.png
hamburg/hamburg_000000_065843_leftImg8bit.png
hamburg/hamburg_000000_065983_leftImg8bit.png
hamburg/hamburg_000000_066424_leftImg8bit.png
hamburg/hamburg_000000_066706_leftImg8bit.png
hamburg/hamburg_000000_066988_leftImg8bit.png
hamburg/hamburg_000000_067223_leftImg8bit.png
hamburg/hamburg_000000_067338_leftImg8bit.png
hamburg/hamburg_000000_067587_leftImg8bit.png
hamburg/hamburg_000000_067799_leftImg8bit.png
hamburg/hamburg_000000_068693_leftImg8bit.png
hamburg/hamburg_000000_068916_leftImg8bit.png
hamburg/hamburg_000000_069096_leftImg8bit.png
hamburg/hamburg_000000_069177_leftImg8bit.png
hamburg/hamburg_000000_069289_leftImg8bit.png
hamburg/hamburg_000000_069417_leftImg8bit.png
hamburg/hamburg_000000_070334_leftImg8bit.png
hamburg/hamburg_000000_070444_leftImg8bit.png
hamburg/hamburg_000000_071016_leftImg8bit.png
hamburg/hamburg_000000_071150_leftImg8bit.png
hamburg/hamburg_000000_071675_leftImg8bit.png
hamburg/hamburg_000000_071942_leftImg8bit.png
hamburg/hamburg_000000_073314_leftImg8bit.png
hamburg/hamburg_000000_073389_leftImg8bit.png
hamburg/hamburg_000000_073549_leftImg8bit.png
hamburg/hamburg_000000_073672_leftImg8bit.png
hamburg/hamburg_000000_073758_leftImg8bit.png
hamburg/hamburg_000000_073999_leftImg8bit.png
hamburg/hamburg_000000_074139_leftImg8bit.png
hamburg/hamburg_000000_074267_leftImg8bit.png
hamburg/hamburg_000000_074425_leftImg8bit.png
hamburg/hamburg_000000_074545_leftImg8bit.png
hamburg/hamburg_000000_074694_leftImg8bit.png
hamburg/hamburg_000000_076392_leftImg8bit.png
hamburg/hamburg_000000_076966_leftImg8bit.png
hamburg/hamburg_000000_077144_leftImg8bit.png
hamburg/hamburg_000000_077642_leftImg8bit.png
hamburg/hamburg_000000_077756_leftImg8bit.png
hamburg/hamburg_000000_077927_leftImg8bit.png
hamburg/hamburg_000000_078407_leftImg8bit.png
hamburg/hamburg_000000_078579_leftImg8bit.png
hamburg/hamburg_000000_078842_leftImg8bit.png
hamburg/hamburg_000000_079376_leftImg8bit.png
hamburg/hamburg_000000_079657_leftImg8bit.png
hamburg/hamburg_000000_080169_leftImg8bit.png
hamburg/hamburg_000000_080438_leftImg8bit.png
hamburg/hamburg_000000_080674_leftImg8bit.png
hamburg/hamburg_000000_080878_leftImg8bit.png
hamburg/hamburg_000000_081299_leftImg8bit.png
hamburg/hamburg_000000_082187_leftImg8bit.png
hamburg/hamburg_000000_082301_leftImg8bit.png
hamburg/hamburg_000000_083586_leftImg8bit.png
hamburg/hamburg_000000_083696_leftImg8bit.png
hamburg/hamburg_000000_084746_leftImg8bit.png
hamburg/hamburg_000000_084865_leftImg8bit.png
hamburg/hamburg_000000_085073_leftImg8bit.png
hamburg/hamburg_000000_085321_leftImg8bit.png
hamburg/hamburg_000000_085413_leftImg8bit.png
hamburg/hamburg_000000_085645_leftImg8bit.png
hamburg/hamburg_000000_085982_leftImg8bit.png
hamburg/hamburg_000000_086499_leftImg8bit.png
hamburg/hamburg_000000_086636_leftImg8bit.png
hamburg/hamburg_000000_087216_leftImg8bit.png
hamburg/hamburg_000000_087822_leftImg8bit.png
hamburg/hamburg_000000_088054_leftImg8bit.png
hamburg/hamburg_000000_088197_leftImg8bit.png
hamburg/hamburg_000000_088627_leftImg8bit.png
hamburg/hamburg_000000_088783_leftImg8bit.png
hamburg/hamburg_000000_088939_leftImg8bit.png
hamburg/hamburg_000000_088983_leftImg8bit.png
hamburg/hamburg_000000_089491_leftImg8bit.png
hamburg/hamburg_000000_089696_leftImg8bit.png
hamburg/hamburg_000000_090398_leftImg8bit.png
hamburg/hamburg_000000_090742_leftImg8bit.png
hamburg/hamburg_000000_091038_leftImg8bit.png
hamburg/hamburg_000000_091155_leftImg8bit.png
hamburg/hamburg_000000_091900_leftImg8bit.png
hamburg/hamburg_000000_092476_leftImg8bit.png
hamburg/hamburg_000000_092850_leftImg8bit.png
hamburg/hamburg_000000_093325_leftImg8bit.png
hamburg/hamburg_000000_093572_leftImg8bit.png
hamburg/hamburg_000000_093787_leftImg8bit.png
hamburg/hamburg_000000_094185_leftImg8bit.png
hamburg/hamburg_000000_094717_leftImg8bit.png
hamburg/hamburg_000000_095561_leftImg8bit.png
hamburg/hamburg_000000_096063_leftImg8bit.png
hamburg/hamburg_000000_096624_leftImg8bit.png
hamburg/hamburg_000000_097086_leftImg8bit.png
hamburg/hamburg_000000_097447_leftImg8bit.png
hamburg/hamburg_000000_098061_leftImg8bit.png
hamburg/hamburg_000000_098400_leftImg8bit.png
hamburg/hamburg_000000_098616_leftImg8bit.png
hamburg/hamburg_000000_098862_leftImg8bit.png
hamburg/hamburg_000000_099109_leftImg8bit.png
hamburg/hamburg_000000_099368_leftImg8bit.png
hamburg/hamburg_000000_099902_leftImg8bit.png
hamburg/hamburg_000000_100300_leftImg8bit.png
hamburg/hamburg_000000_101724_leftImg8bit.png
hamburg/hamburg_000000_102379_leftImg8bit.png
hamburg/hamburg_000000_102574_leftImg8bit.png
hamburg/hamburg_000000_103075_leftImg8bit.png
hamburg/hamburg_000000_103186_leftImg8bit.png
hamburg/hamburg_000000_103367_leftImg8bit.png
hamburg/hamburg_000000_103541_leftImg8bit.png
hamburg/hamburg_000000_103856_leftImg8bit.png
hamburg/hamburg_000000_104428_leftImg8bit.png
hamburg/hamburg_000000_104857_leftImg8bit.png
hamburg/hamburg_000000_105123_leftImg8bit.png
hamburg/hamburg_000000_105296_leftImg8bit.png
hamburg/hamburg_000000_105464_leftImg8bit.png
hamburg/hamburg_000000_105724_leftImg8bit.png
hamburg/hamburg_000000_106102_leftImg8bit.png
hanover/hanover_000000_000164_leftImg8bit.png
hanover/hanover_000000_000381_leftImg8bit.png
hanover/hanover_000000_000712_leftImg8bit.png
hanover/hanover_000000_001173_leftImg8bit.png
hanover/hanover_000000_001620_leftImg8bit.png
hanover/hanover_000000_002140_leftImg8bit.png
hanover/hanover_000000_002357_leftImg8bit.png
hanover/hanover_000000_002458_leftImg8bit.png
hanover/hanover_000000_003224_leftImg8bit.png
hanover/hanover_000000_003411_leftImg8bit.png
hanover/hanover_000000_003853_leftImg8bit.png
hanover/hanover_000000_004230_leftImg8bit.png
hanover/hanover_000000_004646_leftImg8bit.png
hanover/hanover_000000_004752_leftImg8bit.png
hanover/hanover_000000_005175_leftImg8bit.png
hanover/hanover_000000_005288_leftImg8bit.png
hanover/hanover_000000_005599_leftImg8bit.png
hanover/hanover_000000_005732_leftImg8bit.png
hanover/hanover_000000_005970_leftImg8bit.png
hanover/hanover_000000_006355_leftImg8bit.png
hanover/hanover_000000_006922_leftImg8bit.png
hanover/hanover_000000_007342_leftImg8bit.png
hanover/hanover_000000_007780_leftImg8bit.png
hanover/hanover_000000_007897_leftImg8bit.png
hanover/hanover_000000_008017_leftImg8bit.png
hanover/hanover_000000_008200_leftImg8bit.png
hanover/hanover_000000_009004_leftImg8bit.png
hanover/hanover_000000_009128_leftImg8bit.png
hanover/hanover_000000_009420_leftImg8bit.png
hanover/hanover_000000_010403_leftImg8bit.png
hanover/hanover_000000_010553_leftImg8bit.png
hanover/hanover_000000_011170_leftImg8bit.png
hanover/hanover_000000_011471_leftImg8bit.png
hanover/hanover_000000_011971_leftImg8bit.png
hanover/hanover_000000_012347_leftImg8bit.png
hanover/hanover_000000_012675_leftImg8bit.png
hanover/hanover_000000_013094_leftImg8bit.png
hanover/hanover_000000_013205_leftImg8bit.png
hanover/hanover_000000_013814_leftImg8bit.png
hanover/hanover_000000_014319_leftImg8bit.png
hanover/hanover_000000_014537_leftImg8bit.png
hanover/hanover_000000_014713_leftImg8bit.png
hanover/hanover_000000_014919_leftImg8bit.png
hanover/hanover_000000_015587_leftImg8bit.png
hanover/hanover_000000_015849_leftImg8bit.png
hanover/hanover_000000_016038_leftImg8bit.png
hanover/hanover_000000_016558_leftImg8bit.png
hanover/hanover_000000_017041_leftImg8bit.png
hanover/hanover_000000_018213_leftImg8bit.png
hanover/hanover_000000_018546_leftImg8bit.png
hanover/hanover_000000_018800_leftImg8bit.png
hanover/hanover_000000_019116_leftImg8bit.png
hanover/hanover_000000_019282_leftImg8bit.png
hanover/hanover_000000_019456_leftImg8bit.png
hanover/hanover_000000_019672_leftImg8bit.png
hanover/hanover_000000_019938_leftImg8bit.png
hanover/hanover_000000_020089_leftImg8bit.png
hanover/hanover_000000_020655_leftImg8bit.png
hanover/hanover_000000_021337_leftImg8bit.png
hanover/hanover_000000_022645_leftImg8bit.png
hanover/hanover_000000_023239_leftImg8bit.png
hanover/hanover_000000_023276_leftImg8bit.png
hanover/hanover_000000_023614_leftImg8bit.png
hanover/hanover_000000_023881_leftImg8bit.png
hanover/hanover_000000_023975_leftImg8bit.png
hanover/hanover_000000_024136_leftImg8bit.png
hanover/hanover_000000_024276_leftImg8bit.png
hanover/hanover_000000_024441_leftImg8bit.png
hanover/hanover_000000_024719_leftImg8bit.png
hanover/hanover_000000_024989_leftImg8bit.png
hanover/hanover_000000_025335_leftImg8bit.png
hanover/hanover_000000_025437_leftImg8bit.png
hanover/hanover_000000_026014_leftImg8bit.png
hanover/hanover_000000_026183_leftImg8bit.png
hanover/hanover_000000_026356_leftImg8bit.png
hanover/hanover_000000_026743_leftImg8bit.png
hanover/hanover_000000_026804_leftImg8bit.png
hanover/hanover_000000_027007_leftImg8bit.png
hanover/hanover_000000_027282_leftImg8bit.png
hanover/hanover_000000_027390_leftImg8bit.png
hanover/hanover_000000_027481_leftImg8bit.png
hanover/hanover_000000_027561_leftImg8bit.png
hanover/hanover_000000_027650_leftImg8bit.png
hanover/hanover_000000_027766_leftImg8bit.png
hanover/hanover_000000_027998_leftImg8bit.png
hanover/hanover_000000_028202_leftImg8bit.png
hanover/hanover_000000_028460_leftImg8bit.png
hanover/hanover_000000_029043_leftImg8bit.png
hanover/hanover_000000_029325_leftImg8bit.png
hanover/hanover_000000_029404_leftImg8bit.png
hanover/hanover_000000_029455_leftImg8bit.png
hanover/hanover_000000_029769_leftImg8bit.png
hanover/hanover_000000_030276_leftImg8bit.png
hanover/hanover_000000_030346_leftImg8bit.png
hanover/hanover_000000_030546_leftImg8bit.png
hanover/hanover_000000_030781_leftImg8bit.png
hanover/hanover_000000_030889_leftImg8bit.png
hanover/hanover_000000_031144_leftImg8bit.png
hanover/hanover_000000_031856_leftImg8bit.png
hanover/hanover_000000_032210_leftImg8bit.png
hanover/hanover_000000_032351_leftImg8bit.png
hanover/hanover_000000_032559_leftImg8bit.png
hanover/hanover_000000_032681_leftImg8bit.png
hanover/hanover_000000_033457_leftImg8bit.png
hanover/hanover_000000_034015_leftImg8bit.png
hanover/hanover_000000_034141_leftImg8bit.png
hanover/hanover_000000_034347_leftImg8bit.png
hanover/hanover_000000_034560_leftImg8bit.png
hanover/hanover_000000_034720_leftImg8bit.png
hanover/hanover_000000_034935_leftImg8bit.png
hanover/hanover_000000_035491_leftImg8bit.png
hanover/hanover_000000_035606_leftImg8bit.png
hanover/hanover_000000_035768_leftImg8bit.png
hanover/hanover_000000_036051_leftImg8bit.png
hanover/hanover_000000_036562_leftImg8bit.png
hanover/hanover_000000_037039_leftImg8bit.png
hanover/hanover_000000_037298_leftImg8bit.png
hanover/hanover_000000_037516_leftImg8bit.png
hanover/hanover_000000_038773_leftImg8bit.png
hanover/hanover_000000_038855_leftImg8bit.png
hanover/hanover_000000_038927_leftImg8bit.png
hanover/hanover_000000_039021_leftImg8bit.png
hanover/hanover_000000_039470_leftImg8bit.png
hanover/hanover_000000_040051_leftImg8bit.png
hanover/hanover_000000_040133_leftImg8bit.png
hanover/hanover_000000_040221_leftImg8bit.png
hanover/hanover_000000_040294_leftImg8bit.png
hanover/hanover_000000_040456_leftImg8bit.png
hanover/hanover_000000_040793_leftImg8bit.png
hanover/hanover_000000_041232_leftImg8bit.png
hanover/hanover_000000_041493_leftImg8bit.png
hanover/hanover_000000_041610_leftImg8bit.png
hanover/hanover_000000_042255_leftImg8bit.png
hanover/hanover_000000_042382_leftImg8bit.png
hanover/hanover_000000_042581_leftImg8bit.png
hanover/hanover_000000_042770_leftImg8bit.png
hanover/hanover_000000_042992_leftImg8bit.png
hanover/hanover_000000_043102_leftImg8bit.png
hanover/hanover_000000_043236_leftImg8bit.png
hanover/hanover_000000_043550_leftImg8bit.png
hanover/hanover_000000_043653_leftImg8bit.png
hanover/hanover_000000_043822_leftImg8bit.png
hanover/hanover_000000_044085_leftImg8bit.png
hanover/hanover_000000_044195_leftImg8bit.png
hanover/hanover_000000_044344_leftImg8bit.png
hanover/hanover_000000_044622_leftImg8bit.png
hanover/hanover_000000_045004_leftImg8bit.png
hanover/hanover_000000_045188_leftImg8bit.png
hanover/hanover_000000_045446_leftImg8bit.png
hanover/hanover_000000_045657_leftImg8bit.png
hanover/hanover_000000_045841_leftImg8bit.png
hanover/hanover_000000_046200_leftImg8bit.png
hanover/hanover_000000_046398_leftImg8bit.png
hanover/hanover_000000_046572_leftImg8bit.png
hanover/hanover_000000_046646_leftImg8bit.png
hanover/hanover_000000_046732_leftImg8bit.png
hanover/hanover_000000_046954_leftImg8bit.png
hanover/hanover_000000_047499_leftImg8bit.png
hanover/hanover_000000_047629_leftImg8bit.png
hanover/hanover_000000_047870_leftImg8bit.png
hanover/hanover_000000_048274_leftImg8bit.png
hanover/hanover_000000_048379_leftImg8bit.png
hanover/hanover_000000_048508_leftImg8bit.png
hanover/hanover_000000_048765_leftImg8bit.png
hanover/hanover_000000_049005_leftImg8bit.png
hanover/hanover_000000_049269_leftImg8bit.png
hanover/hanover_000000_049465_leftImg8bit.png
hanover/hanover_000000_050228_leftImg8bit.png
hanover/hanover_000000_050398_leftImg8bit.png
hanover/hanover_000000_051059_leftImg8bit.png
hanover/hanover_000000_051152_leftImg8bit.png
hanover/hanover_000000_051271_leftImg8bit.png
hanover/hanover_000000_051536_leftImg8bit.png
hanover/hanover_000000_051842_leftImg8bit.png
hanover/hanover_000000_052013_leftImg8bit.png
hanover/hanover_000000_052512_leftImg8bit.png
hanover/hanover_000000_052649_leftImg8bit.png
hanover/hanover_000000_052729_leftImg8bit.png
hanover/hanover_000000_052887_leftImg8bit.png
hanover/hanover_000000_053027_leftImg8bit.png
hanover/hanover_000000_053437_leftImg8bit.png
hanover/hanover_000000_053604_leftImg8bit.png
hanover/hanover_000000_054276_leftImg8bit.png
hanover/hanover_000000_054965_leftImg8bit.png
hanover/hanover_000000_055124_leftImg8bit.png
hanover/hanover_000000_055592_leftImg8bit.png
hanover/hanover_000000_055800_leftImg8bit.png
hanover/hanover_000000_055937_leftImg8bit.png
hanover/hanover_000000_056142_leftImg8bit.png
hanover/hanover_000000_056361_leftImg8bit.png
hanover/hanover_000000_056457_leftImg8bit.png
hanover/hanover_000000_056601_leftImg8bit.png
hanover/hanover_000000_056800_leftImg8bit.png
hanover/hanover_000000_057532_leftImg8bit.png
hanover/hanover_000000_057710_leftImg8bit.png
hanover/hanover_000000_058189_leftImg8bit.png
jena/jena_000000_000019_leftImg8bit.png
jena/jena_000001_000019_leftImg8bit.png
jena/jena_000002_000019_leftImg8bit.png
jena/jena_000003_000019_leftImg8bit.png
jena/jena_000004_000019_leftImg8bit.png
jena/jena_000005_000019_leftImg8bit.png
jena/jena_000006_000019_leftImg8bit.png
jena/jena_000007_000019_leftImg8bit.png
jena/jena_000008_000019_leftImg8bit.png
jena/jena_000009_000019_leftImg8bit.png
jena/jena_000010_000019_leftImg8bit.png
jena/jena_000011_000019_leftImg8bit.png
jena/jena_000012_000019_leftImg8bit.png
jena/jena_000013_000019_leftImg8bit.png
jena/jena_000014_000019_leftImg8bit.png
jena/jena_000015_000019_leftImg8bit.png
jena/jena_000016_000019_leftImg8bit.png
jena/jena_000017_000019_leftImg8bit.png
jena/jena_000018_000019_leftImg8bit.png
jena/jena_000019_000019_leftImg8bit.png
jena/jena_000020_000019_leftImg8bit.png
jena/jena_000021_000019_leftImg8bit.png
jena/jena_000022_000019_leftImg8bit.png
jena/jena_000023_000019_leftImg8bit.png
jena/jena_000024_000019_leftImg8bit.png
jena/jena_000025_000019_leftImg8bit.png
jena/jena_000026_000019_leftImg8bit.png
jena/jena_000027_000019_leftImg8bit.png
jena/jena_000028_000019_leftImg8bit.png
jena/jena_000029_000019_leftImg8bit.png
jena/jena_000030_000019_leftImg8bit.png
jena/jena_000031_000019_leftImg8bit.png
jena/jena_000032_000019_leftImg8bit.png
jena/jena_000033_000019_leftImg8bit.png
jena/jena_000034_000019_leftImg8bit.png
jena/jena_000035_000019_leftImg8bit.png
jena/jena_000036_000019_leftImg8bit.png
jena/jena_000037_000019_leftImg8bit.png
jena/jena_000038_000019_leftImg8bit.png
jena/jena_000039_000019_leftImg8bit.png
jena/jena_000040_000019_leftImg8bit.png
jena/jena_000041_000019_leftImg8bit.png
jena/jena_000042_000019_leftImg8bit.png
jena/jena_000043_000019_leftImg8bit.png
jena/jena_000044_000019_leftImg8bit.png
jena/jena_000045_000019_leftImg8bit.png
jena/jena_000046_000019_leftImg8bit.png
jena/jena_000047_000019_leftImg8bit.png
jena/jena_000048_000019_leftImg8bit.png
jena/jena_000049_000019_leftImg8bit.png
jena/jena_000050_000019_leftImg8bit.png
jena/jena_000051_000019_leftImg8bit.png
jena/jena_000052_000019_leftImg8bit.png
jena/jena_000053_000019_leftImg8bit.png
jena/jena_000054_000019_leftImg8bit.png
jena/jena_000055_000019_leftImg8bit.png
jena/jena_000056_000019_leftImg8bit.png
jena/jena_000057_000019_leftImg8bit.png
jena/jena_000058_000019_leftImg8bit.png
jena/jena_000059_000019_leftImg8bit.png
jena/jena_000060_000019_leftImg8bit.png
jena/jena_000061_000019_leftImg8bit.png
jena/jena_000062_000019_leftImg8bit.png
jena/jena_000063_000019_leftImg8bit.png
jena/jena_000064_000019_leftImg8bit.png
jena/jena_000065_000019_leftImg8bit.png
jena/jena_000066_000019_leftImg8bit.png
jena/jena_000067_000019_leftImg8bit.png
jena/jena_000068_000019_leftImg8bit.png
jena/jena_000069_000019_leftImg8bit.png
jena/jena_000070_000019_leftImg8bit.png
jena/jena_000071_000019_leftImg8bit.png
jena/jena_000072_000019_leftImg8bit.png
jena/jena_000073_000019_leftImg8bit.png
jena/jena_000074_000019_leftImg8bit.png
jena/jena_000075_000019_leftImg8bit.png
jena/jena_000076_000019_leftImg8bit.png
jena/jena_000077_000019_leftImg8bit.png
jena/jena_000078_000019_leftImg8bit.png
jena/jena_000079_000019_leftImg8bit.png
jena/jena_000080_000019_leftImg8bit.png
jena/jena_000081_000019_leftImg8bit.png
jena/jena_000082_000019_leftImg8bit.png
jena/jena_000083_000019_leftImg8bit.png
jena/jena_000084_000019_leftImg8bit.png
jena/jena_000085_000019_leftImg8bit.png
jena/jena_000086_000019_leftImg8bit.png
jena/jena_000087_000019_leftImg8bit.png
jena/jena_000088_000019_leftImg8bit.png
jena/jena_000089_000019_leftImg8bit.png
jena/jena_000090_000019_leftImg8bit.png
jena/jena_000091_000019_leftImg8bit.png
jena/jena_000092_000019_leftImg8bit.png
jena/jena_000093_000019_leftImg8bit.png
jena/jena_000094_000019_leftImg8bit.png
jena/jena_000095_000019_leftImg8bit.png
jena/jena_000096_000019_leftImg8bit.png
jena/jena_000097_000019_leftImg8bit.png
jena/jena_000098_000019_leftImg8bit.png
jena/jena_000099_000019_leftImg8bit.png
jena/jena_000100_000019_leftImg8bit.png
jena/jena_000101_000019_leftImg8bit.png
jena/jena_000102_000019_leftImg8bit.png
jena/jena_000103_000019_leftImg8bit.png
jena/jena_000104_000019_leftImg8bit.png
jena/jena_000105_000019_leftImg8bit.png
jena/jena_000106_000019_leftImg8bit.png
jena/jena_000107_000019_leftImg8bit.png
jena/jena_000108_000019_leftImg8bit.png
jena/jena_000109_000019_leftImg8bit.png
jena/jena_000110_000019_leftImg8bit.png
jena/jena_000111_000019_leftImg8bit.png
jena/jena_000112_000019_leftImg8bit.png
jena/jena_000113_000019_leftImg8bit.png
jena/jena_000114_000019_leftImg8bit.png
jena/jena_000115_000019_leftImg8bit.png
jena/jena_000116_000019_leftImg8bit.png
jena/jena_000117_000019_leftImg8bit.png
jena/jena_000118_000019_leftImg8bit.png
krefeld/krefeld_000000_000108_leftImg8bit.png
krefeld/krefeld_000000_000316_leftImg8bit.png
krefeld/krefeld_000000_000442_leftImg8bit.png
krefeld/krefeld_000000_000926_leftImg8bit.png
krefeld/krefeld_000000_001566_leftImg8bit.png
krefeld/krefeld_000000_001908_leftImg8bit.png
krefeld/krefeld_000000_002083_leftImg8bit.png
krefeld/krefeld_000000_003096_leftImg8bit.png
krefeld/krefeld_000000_003707_leftImg8bit.png
krefeld/krefeld_000000_003937_leftImg8bit.png
krefeld/krefeld_000000_004447_leftImg8bit.png
krefeld/krefeld_000000_004608_leftImg8bit.png
krefeld/krefeld_000000_005252_leftImg8bit.png
krefeld/krefeld_000000_005503_leftImg8bit.png
krefeld/krefeld_000000_006274_leftImg8bit.png
krefeld/krefeld_000000_006686_leftImg8bit.png
krefeld/krefeld_000000_007325_leftImg8bit.png
krefeld/krefeld_000000_008239_leftImg8bit.png
krefeld/krefeld_000000_008305_leftImg8bit.png
krefeld/krefeld_000000_008584_leftImg8bit.png
krefeld/krefeld_000000_009404_leftImg8bit.png
krefeld/krefeld_000000_009574_leftImg8bit.png
krefeld/krefeld_000000_009926_leftImg8bit.png
krefeld/krefeld_000000_010160_leftImg8bit.png
krefeld/krefeld_000000_010329_leftImg8bit.png
krefeld/krefeld_000000_010653_leftImg8bit.png
krefeld/krefeld_000000_011483_leftImg8bit.png
krefeld/krefeld_000000_011655_leftImg8bit.png
krefeld/krefeld_000000_012353_leftImg8bit.png
krefeld/krefeld_000000_012505_leftImg8bit.png
krefeld/krefeld_000000_013139_leftImg8bit.png
krefeld/krefeld_000000_013257_leftImg8bit.png
krefeld/krefeld_000000_013766_leftImg8bit.png
krefeld/krefeld_000000_014146_leftImg8bit.png
krefeld/krefeld_000000_014673_leftImg8bit.png
krefeld/krefeld_000000_014886_leftImg8bit.png
krefeld/krefeld_000000_015116_leftImg8bit.png
krefeld/krefeld_000000_015494_leftImg8bit.png
krefeld/krefeld_000000_015687_leftImg8bit.png
krefeld/krefeld_000000_015868_leftImg8bit.png
krefeld/krefeld_000000_016342_leftImg8bit.png
krefeld/krefeld_000000_016863_leftImg8bit.png
krefeld/krefeld_000000_017042_leftImg8bit.png
krefeld/krefeld_000000_017342_leftImg8bit.png
krefeld/krefeld_000000_017489_leftImg8bit.png
krefeld/krefeld_000000_018004_leftImg8bit.png
krefeld/krefeld_000000_018514_leftImg8bit.png
krefeld/krefeld_000000_018747_leftImg8bit.png
krefeld/krefeld_000000_018866_leftImg8bit.png
krefeld/krefeld_000000_019125_leftImg8bit.png
krefeld/krefeld_000000_019697_leftImg8bit.png
krefeld/krefeld_000000_019791_leftImg8bit.png
krefeld/krefeld_000000_020033_leftImg8bit.png
krefeld/krefeld_000000_020334_leftImg8bit.png
krefeld/krefeld_000000_020624_leftImg8bit.png
krefeld/krefeld_000000_020873_leftImg8bit.png
krefeld/krefeld_000000_020933_leftImg8bit.png
krefeld/krefeld_000000_021000_leftImg8bit.png
krefeld/krefeld_000000_021222_leftImg8bit.png
krefeld/krefeld_000000_021553_leftImg8bit.png
krefeld/krefeld_000000_021814_leftImg8bit.png
krefeld/krefeld_000000_022162_leftImg8bit.png
krefeld/krefeld_000000_023143_leftImg8bit.png
krefeld/krefeld_000000_023338_leftImg8bit.png
krefeld/krefeld_000000_023510_leftImg8bit.png
krefeld/krefeld_000000_023698_leftImg8bit.png
krefeld/krefeld_000000_024276_leftImg8bit.png
krefeld/krefeld_000000_024362_leftImg8bit.png
krefeld/krefeld_000000_024604_leftImg8bit.png
krefeld/krefeld_000000_024921_leftImg8bit.png
krefeld/krefeld_000000_025434_leftImg8bit.png
krefeld/krefeld_000000_025812_leftImg8bit.png
krefeld/krefeld_000000_026269_leftImg8bit.png
krefeld/krefeld_000000_026580_leftImg8bit.png
krefeld/krefeld_000000_026919_leftImg8bit.png
krefeld/krefeld_000000_027075_leftImg8bit.png
krefeld/krefeld_000000_027596_leftImg8bit.png
krefeld/krefeld_000000_027954_leftImg8bit.png
krefeld/krefeld_000000_028378_leftImg8bit.png
krefeld/krefeld_000000_028638_leftImg8bit.png
krefeld/krefeld_000000_029050_leftImg8bit.png
krefeld/krefeld_000000_029704_leftImg8bit.png
krefeld/krefeld_000000_030111_leftImg8bit.png
krefeld/krefeld_000000_030221_leftImg8bit.png
krefeld/krefeld_000000_030400_leftImg8bit.png
krefeld/krefeld_000000_030560_leftImg8bit.png
krefeld/krefeld_000000_030701_leftImg8bit.png
krefeld/krefeld_000000_031257_leftImg8bit.png
krefeld/krefeld_000000_032390_leftImg8bit.png
krefeld/krefeld_000000_032614_leftImg8bit.png
krefeld/krefeld_000000_032845_leftImg8bit.png
krefeld/krefeld_000000_033478_leftImg8bit.png
krefeld/krefeld_000000_034156_leftImg8bit.png
krefeld/krefeld_000000_034231_leftImg8bit.png
krefeld/krefeld_000000_034389_leftImg8bit.png
krefeld/krefeld_000000_034686_leftImg8bit.png
krefeld/krefeld_000000_035124_leftImg8bit.png
krefeld/krefeld_000000_035398_leftImg8bit.png
krefeld/krefeld_000000_036299_leftImg8bit.png
monchengladbach/monchengladbach_000000_000076_leftImg8bit.png
monchengladbach/monchengladbach_000000_000383_leftImg8bit.png
monchengladbach/monchengladbach_000000_001068_leftImg8bit.png
monchengladbach/monchengladbach_000000_001294_leftImg8bit.png
monchengladbach/monchengladbach_000000_002255_leftImg8bit.png
monchengladbach/monchengladbach_000000_002478_leftImg8bit.png
monchengladbach/monchengladbach_000000_002972_leftImg8bit.png
monchengladbach/monchengladbach_000000_003442_leftImg8bit.png
monchengladbach/monchengladbach_000000_004580_leftImg8bit.png
monchengladbach/monchengladbach_000000_005138_leftImg8bit.png
monchengladbach/monchengladbach_000000_005686_leftImg8bit.png
monchengladbach/monchengladbach_000000_005876_leftImg8bit.png
monchengladbach/monchengladbach_000000_006169_leftImg8bit.png
monchengladbach/monchengladbach_000000_006518_leftImg8bit.png
monchengladbach/monchengladbach_000000_007098_leftImg8bit.png
monchengladbach/monchengladbach_000000_007695_leftImg8bit.png
monchengladbach/monchengladbach_000000_007851_leftImg8bit.png
monchengladbach/monchengladbach_000000_009191_leftImg8bit.png
monchengladbach/monchengladbach_000000_009615_leftImg8bit.png
monchengladbach/monchengladbach_000000_009690_leftImg8bit.png
monchengladbach/monchengladbach_000000_009930_leftImg8bit.png
monchengladbach/monchengladbach_000000_010280_leftImg8bit.png
monchengladbach/monchengladbach_000000_010505_leftImg8bit.png
monchengladbach/monchengladbach_000000_010733_leftImg8bit.png
monchengladbach/monchengladbach_000000_010860_leftImg8bit.png
monchengladbach/monchengladbach_000000_011383_leftImg8bit.png
monchengladbach/monchengladbach_000000_012376_leftImg8bit.png
monchengladbach/monchengladbach_000000_012672_leftImg8bit.png
monchengladbach/monchengladbach_000000_013228_leftImg8bit.png
monchengladbach/monchengladbach_000000_013352_leftImg8bit.png
monchengladbach/monchengladbach_000000_014685_leftImg8bit.png
monchengladbach/monchengladbach_000000_015126_leftImg8bit.png
monchengladbach/monchengladbach_000000_015561_leftImg8bit.png
monchengladbach/monchengladbach_000000_015685_leftImg8bit.png
monchengladbach/monchengladbach_000000_015928_leftImg8bit.png
monchengladbach/monchengladbach_000000_017950_leftImg8bit.png
monchengladbach/monchengladbach_000000_018114_leftImg8bit.png
monchengladbach/monchengladbach_000000_018294_leftImg8bit.png
monchengladbach/monchengladbach_000000_018445_leftImg8bit.png
monchengladbach/monchengladbach_000000_018575_leftImg8bit.png
monchengladbach/monchengladbach_000000_018720_leftImg8bit.png
monchengladbach/monchengladbach_000000_019142_leftImg8bit.png
monchengladbach/monchengladbach_000000_019500_leftImg8bit.png
monchengladbach/monchengladbach_000000_019682_leftImg8bit.png
monchengladbach/monchengladbach_000000_019901_leftImg8bit.png
monchengladbach/monchengladbach_000000_020303_leftImg8bit.png
monchengladbach/monchengladbach_000000_020596_leftImg8bit.png
monchengladbach/monchengladbach_000000_020856_leftImg8bit.png
monchengladbach/monchengladbach_000000_021104_leftImg8bit.png
monchengladbach/monchengladbach_000000_021663_leftImg8bit.png
monchengladbach/monchengladbach_000000_022361_leftImg8bit.png
monchengladbach/monchengladbach_000000_022748_leftImg8bit.png
monchengladbach/monchengladbach_000000_023052_leftImg8bit.png
monchengladbach/monchengladbach_000000_023375_leftImg8bit.png
monchengladbach/monchengladbach_000000_023489_leftImg8bit.png
monchengladbach/monchengladbach_000000_023856_leftImg8bit.png
monchengladbach/monchengladbach_000000_024243_leftImg8bit.png
monchengladbach/monchengladbach_000000_024637_leftImg8bit.png
monchengladbach/monchengladbach_000000_024964_leftImg8bit.png
monchengladbach/monchengladbach_000000_025215_leftImg8bit.png
monchengladbach/monchengladbach_000000_026006_leftImg8bit.png
monchengladbach/monchengladbach_000000_026305_leftImg8bit.png
monchengladbach/monchengladbach_000000_026602_leftImg8bit.png
monchengladbach/monchengladbach_000000_026908_leftImg8bit.png
monchengladbach/monchengladbach_000000_027628_leftImg8bit.png
monchengladbach/monchengladbach_000000_028216_leftImg8bit.png
monchengladbach/monchengladbach_000000_028563_leftImg8bit.png
monchengladbach/monchengladbach_000000_028883_leftImg8bit.png
monchengladbach/monchengladbach_000000_029240_leftImg8bit.png
monchengladbach/monchengladbach_000000_029526_leftImg8bit.png
monchengladbach/monchengladbach_000000_030010_leftImg8bit.png
monchengladbach/monchengladbach_000000_030662_leftImg8bit.png
monchengladbach/monchengladbach_000000_031005_leftImg8bit.png
monchengladbach/monchengladbach_000000_031360_leftImg8bit.png
monchengladbach/monchengladbach_000000_031623_leftImg8bit.png
monchengladbach/monchengladbach_000000_032540_leftImg8bit.png
monchengladbach/monchengladbach_000000_033454_leftImg8bit.png
monchengladbach/monchengladbach_000000_033683_leftImg8bit.png
monchengladbach/monchengladbach_000000_034302_leftImg8bit.png
monchengladbach/monchengladbach_000000_034621_leftImg8bit.png
monchengladbach/monchengladbach_000000_034930_leftImg8bit.png
monchengladbach/monchengladbach_000000_035083_leftImg8bit.png
monchengladbach/monchengladbach_000000_035364_leftImg8bit.png
monchengladbach/monchengladbach_000000_035650_leftImg8bit.png
monchengladbach/monchengladbach_000000_035718_leftImg8bit.png
monchengladbach/monchengladbach_000000_036139_leftImg8bit.png
monchengladbach/monchengladbach_000001_000054_leftImg8bit.png
monchengladbach/monchengladbach_000001_000168_leftImg8bit.png
monchengladbach/monchengladbach_000001_000537_leftImg8bit.png
monchengladbach/monchengladbach_000001_000876_leftImg8bit.png
monchengladbach/monchengladbach_000001_001531_leftImg8bit.png
monchengladbach/monchengladbach_000001_001936_leftImg8bit.png
monchengladbach/monchengladbach_000001_002229_leftImg8bit.png
monchengladbach/monchengladbach_000001_002353_leftImg8bit.png
strasbourg/strasbourg_000000_000065_leftImg8bit.png
strasbourg/strasbourg_000000_000295_leftImg8bit.png
strasbourg/strasbourg_000000_000751_leftImg8bit.png
strasbourg/strasbourg_000000_001278_leftImg8bit.png
strasbourg/strasbourg_000000_002183_leftImg8bit.png
strasbourg/strasbourg_000000_002553_leftImg8bit.png
strasbourg/strasbourg_000000_003632_leftImg8bit.png
strasbourg/strasbourg_000000_003846_leftImg8bit.png
strasbourg/strasbourg_000000_004112_leftImg8bit.png
strasbourg/strasbourg_000000_004248_leftImg8bit.png
strasbourg/strasbourg_000000_004383_leftImg8bit.png
strasbourg/strasbourg_000000_004660_leftImg8bit.png
strasbourg/strasbourg_000000_004951_leftImg8bit.png
strasbourg/strasbourg_000000_005249_leftImg8bit.png
strasbourg/strasbourg_000000_005912_leftImg8bit.png
strasbourg/strasbourg_000000_005995_leftImg8bit.png
strasbourg/strasbourg_000000_006106_leftImg8bit.png
strasbourg/strasbourg_000000_006264_leftImg8bit.png
strasbourg/strasbourg_000000_006483_leftImg8bit.png
strasbourg/strasbourg_000000_006621_leftImg8bit.png
strasbourg/strasbourg_000000_006995_leftImg8bit.png
strasbourg/strasbourg_000000_007441_leftImg8bit.png
strasbourg/strasbourg_000000_007727_leftImg8bit.png
strasbourg/strasbourg_000000_007813_leftImg8bit.png
strasbourg/strasbourg_000000_008603_leftImg8bit.png
strasbourg/strasbourg_000000_008677_leftImg8bit.png
strasbourg/strasbourg_000000_008784_leftImg8bit.png
strasbourg/strasbourg_000000_009110_leftImg8bit.png
strasbourg/strasbourg_000000_009619_leftImg8bit.png
strasbourg/strasbourg_000000_010049_leftImg8bit.png
strasbourg/strasbourg_000000_010372_leftImg8bit.png
strasbourg/strasbourg_000000_010816_leftImg8bit.png
strasbourg/strasbourg_000000_011225_leftImg8bit.png
strasbourg/strasbourg_000000_011880_leftImg8bit.png
strasbourg/strasbourg_000000_012070_leftImg8bit.png
strasbourg/strasbourg_000000_012934_leftImg8bit.png
strasbourg/strasbourg_000000_013223_leftImg8bit.png
strasbourg/strasbourg_000000_013322_leftImg8bit.png
strasbourg/strasbourg_000000_013574_leftImg8bit.png
strasbourg/strasbourg_000000_013654_leftImg8bit.png
strasbourg/strasbourg_000000_013863_leftImg8bit.png
strasbourg/strasbourg_000000_013944_leftImg8bit.png
strasbourg/strasbourg_000000_014066_leftImg8bit.png
strasbourg/strasbourg_000000_014101_leftImg8bit.png
strasbourg/strasbourg_000000_014235_leftImg8bit.png
strasbourg/strasbourg_000000_014416_leftImg8bit.png
strasbourg/strasbourg_000000_014503_leftImg8bit.png
strasbourg/strasbourg_000000_014584_leftImg8bit.png
strasbourg/strasbourg_000000_014743_leftImg8bit.png
strasbourg/strasbourg_000000_014931_leftImg8bit.png
strasbourg/strasbourg_000000_015131_leftImg8bit.png
strasbourg/strasbourg_000000_015506_leftImg8bit.png
strasbourg/strasbourg_000000_015602_leftImg8bit.png
strasbourg/strasbourg_000000_015764_leftImg8bit.png
strasbourg/strasbourg_000000_016024_leftImg8bit.png
strasbourg/strasbourg_000000_016247_leftImg8bit.png
strasbourg/strasbourg_000000_016311_leftImg8bit.png
strasbourg/strasbourg_000000_016436_leftImg8bit.png
strasbourg/strasbourg_000000_017044_leftImg8bit.png
strasbourg/strasbourg_000000_017081_leftImg8bit.png
strasbourg/strasbourg_000000_017159_leftImg8bit.png
strasbourg/strasbourg_000000_017283_leftImg8bit.png
strasbourg/strasbourg_000000_017450_leftImg8bit.png
strasbourg/strasbourg_000000_017593_leftImg8bit.png
strasbourg/strasbourg_000000_017761_leftImg8bit.png
strasbourg/strasbourg_000000_018153_leftImg8bit.png
strasbourg/strasbourg_000000_018358_leftImg8bit.png
strasbourg/strasbourg_000000_018616_leftImg8bit.png
strasbourg/strasbourg_000000_018874_leftImg8bit.png
strasbourg/strasbourg_000000_019050_leftImg8bit.png
strasbourg/strasbourg_000000_019229_leftImg8bit.png
strasbourg/strasbourg_000000_019355_leftImg8bit.png
strasbourg/strasbourg_000000_019617_leftImg8bit.png
strasbourg/strasbourg_000000_019891_leftImg8bit.png
strasbourg/strasbourg_000000_020432_leftImg8bit.png
strasbourg/strasbourg_000000_020653_leftImg8bit.png
strasbourg/strasbourg_000000_021231_leftImg8bit.png
strasbourg/strasbourg_000000_021651_leftImg8bit.png
strasbourg/strasbourg_000000_022067_leftImg8bit.png
strasbourg/strasbourg_000000_022489_leftImg8bit.png
strasbourg/strasbourg_000000_023064_leftImg8bit.png
strasbourg/strasbourg_000000_023694_leftImg8bit.png
strasbourg/strasbourg_000000_023854_leftImg8bit.png
strasbourg/strasbourg_000000_024179_leftImg8bit.png
strasbourg/strasbourg_000000_024945_leftImg8bit.png
strasbourg/strasbourg_000000_025089_leftImg8bit.png
strasbourg/strasbourg_000000_025268_leftImg8bit.png
strasbourg/strasbourg_000000_025351_leftImg8bit.png
strasbourg/strasbourg_000000_025491_leftImg8bit.png
strasbourg/strasbourg_000000_025772_leftImg8bit.png
strasbourg/strasbourg_000000_025907_leftImg8bit.png
strasbourg/strasbourg_000000_026316_leftImg8bit.png
strasbourg/strasbourg_000000_026575_leftImg8bit.png
strasbourg/strasbourg_000000_026611_leftImg8bit.png
strasbourg/strasbourg_000000_026741_leftImg8bit.png
strasbourg/strasbourg_000000_026882_leftImg8bit.png
strasbourg/strasbourg_000000_026998_leftImg8bit.png
strasbourg/strasbourg_000000_027156_leftImg8bit.png
strasbourg/strasbourg_000000_027233_leftImg8bit.png
strasbourg/strasbourg_000000_027771_leftImg8bit.png
strasbourg/strasbourg_000000_028240_leftImg8bit.png
strasbourg/strasbourg_000000_028556_leftImg8bit.png
strasbourg/strasbourg_000000_028628_leftImg8bit.png
strasbourg/strasbourg_000000_028822_leftImg8bit.png
strasbourg/strasbourg_000000_028912_leftImg8bit.png
strasbourg/strasbourg_000000_029020_leftImg8bit.png
strasbourg/strasbourg_000000_029051_leftImg8bit.png
strasbourg/strasbourg_000000_029179_leftImg8bit.png
strasbourg/strasbourg_000000_029281_leftImg8bit.png
strasbourg/strasbourg_000000_029339_leftImg8bit.png
strasbourg/strasbourg_000000_029400_leftImg8bit.png
strasbourg/strasbourg_000000_029481_leftImg8bit.png
strasbourg/strasbourg_000000_029577_leftImg8bit.png
strasbourg/strasbourg_000000_029729_leftImg8bit.png
strasbourg/strasbourg_000000_029839_leftImg8bit.png
strasbourg/strasbourg_000000_029915_leftImg8bit.png
strasbourg/strasbourg_000000_030017_leftImg8bit.png
strasbourg/strasbourg_000000_030122_leftImg8bit.png
strasbourg/strasbourg_000000_030324_leftImg8bit.png
strasbourg/strasbourg_000000_030435_leftImg8bit.png
strasbourg/strasbourg_000000_030706_leftImg8bit.png
strasbourg/strasbourg_000000_030941_leftImg8bit.png
strasbourg/strasbourg_000000_031067_leftImg8bit.png
strasbourg/strasbourg_000000_031223_leftImg8bit.png
strasbourg/strasbourg_000000_031323_leftImg8bit.png
strasbourg/strasbourg_000000_031602_leftImg8bit.png
strasbourg/strasbourg_000000_032186_leftImg8bit.png
strasbourg/strasbourg_000000_032346_leftImg8bit.png
strasbourg/strasbourg_000000_032962_leftImg8bit.png
strasbourg/strasbourg_000000_033062_leftImg8bit.png
strasbourg/strasbourg_000000_033129_leftImg8bit.png
strasbourg/strasbourg_000000_033425_leftImg8bit.png
strasbourg/strasbourg_000000_033747_leftImg8bit.png
strasbourg/strasbourg_000000_033838_leftImg8bit.png
strasbourg/strasbourg_000000_034040_leftImg8bit.png
strasbourg/strasbourg_000000_034097_leftImg8bit.png
strasbourg/strasbourg_000000_034387_leftImg8bit.png
strasbourg/strasbourg_000000_034652_leftImg8bit.png
strasbourg/strasbourg_000000_035008_leftImg8bit.png
strasbourg/strasbourg_000000_035255_leftImg8bit.png
strasbourg/strasbourg_000000_035571_leftImg8bit.png
strasbourg/strasbourg_000000_035713_leftImg8bit.png
strasbourg/strasbourg_000000_035942_leftImg8bit.png
strasbourg/strasbourg_000000_036016_leftImg8bit.png
strasbourg/strasbourg_000001_000113_leftImg8bit.png
strasbourg/strasbourg_000001_000508_leftImg8bit.png
strasbourg/strasbourg_000001_000710_leftImg8bit.png
strasbourg/strasbourg_000001_000778_leftImg8bit.png
strasbourg/strasbourg_000001_001072_leftImg8bit.png
strasbourg/strasbourg_000001_001449_leftImg8bit.png
strasbourg/strasbourg_000001_001722_leftImg8bit.png
strasbourg/strasbourg_000001_001901_leftImg8bit.png
strasbourg/strasbourg_000001_002081_leftImg8bit.png
strasbourg/strasbourg_000001_002216_leftImg8bit.png
strasbourg/strasbourg_000001_002354_leftImg8bit.png
strasbourg/strasbourg_000001_002519_leftImg8bit.png
strasbourg/strasbourg_000001_002644_leftImg8bit.png
strasbourg/strasbourg_000001_002949_leftImg8bit.png
strasbourg/strasbourg_000001_003159_leftImg8bit.png
strasbourg/strasbourg_000001_003489_leftImg8bit.png
strasbourg/strasbourg_000001_003676_leftImg8bit.png
strasbourg/strasbourg_000001_003991_leftImg8bit.png
strasbourg/strasbourg_000001_004106_leftImg8bit.png
strasbourg/strasbourg_000001_004260_leftImg8bit.png
strasbourg/strasbourg_000001_004745_leftImg8bit.png
strasbourg/strasbourg_000001_004983_leftImg8bit.png
strasbourg/strasbourg_000001_005219_leftImg8bit.png
strasbourg/strasbourg_000001_005289_leftImg8bit.png
strasbourg/strasbourg_000001_005666_leftImg8bit.png
strasbourg/strasbourg_000001_005876_leftImg8bit.png
strasbourg/strasbourg_000001_006153_leftImg8bit.png
strasbourg/strasbourg_000001_006386_leftImg8bit.png
strasbourg/strasbourg_000001_006562_leftImg8bit.png
strasbourg/strasbourg_000001_006916_leftImg8bit.png
strasbourg/strasbourg_000001_007148_leftImg8bit.png
strasbourg/strasbourg_000001_007524_leftImg8bit.png
strasbourg/strasbourg_000001_007657_leftImg8bit.png
strasbourg/strasbourg_000001_007864_leftImg8bit.png
strasbourg/strasbourg_000001_008310_leftImg8bit.png
strasbourg/strasbourg_000001_008576_leftImg8bit.png
strasbourg/strasbourg_000001_008771_leftImg8bit.png
strasbourg/strasbourg_000001_009097_leftImg8bit.png
strasbourg/strasbourg_000001_009246_leftImg8bit.png
strasbourg/strasbourg_000001_009333_leftImg8bit.png
strasbourg/strasbourg_000001_009471_leftImg8bit.png
strasbourg/strasbourg_000001_009618_leftImg8bit.png
strasbourg/strasbourg_000001_009795_leftImg8bit.png
strasbourg/strasbourg_000001_010162_leftImg8bit.png
strasbourg/strasbourg_000001_010445_leftImg8bit.png
strasbourg/strasbourg_000001_010640_leftImg8bit.png
strasbourg/strasbourg_000001_010755_leftImg8bit.png
strasbourg/strasbourg_000001_011617_leftImg8bit.png
strasbourg/strasbourg_000001_011775_leftImg8bit.png
strasbourg/strasbourg_000001_011990_leftImg8bit.png
strasbourg/strasbourg_000001_012956_leftImg8bit.png
strasbourg/strasbourg_000001_013266_leftImg8bit.png
strasbourg/strasbourg_000001_013767_leftImg8bit.png
strasbourg/strasbourg_000001_013914_leftImg8bit.png
strasbourg/strasbourg_000001_014033_leftImg8bit.png
strasbourg/strasbourg_000001_014258_leftImg8bit.png
strasbourg/strasbourg_000001_014629_leftImg8bit.png
strasbourg/strasbourg_000001_015220_leftImg8bit.png
strasbourg/strasbourg_000001_015605_leftImg8bit.png
strasbourg/strasbourg_000001_015974_leftImg8bit.png
strasbourg/strasbourg_000001_016253_leftImg8bit.png
strasbourg/strasbourg_000001_016376_leftImg8bit.png
strasbourg/strasbourg_000001_016481_leftImg8bit.png
strasbourg/strasbourg_000001_016681_leftImg8bit.png
strasbourg/strasbourg_000001_017469_leftImg8bit.png
strasbourg/strasbourg_000001_017540_leftImg8bit.png
strasbourg/strasbourg_000001_017675_leftImg8bit.png
strasbourg/strasbourg_000001_017844_leftImg8bit.png
strasbourg/strasbourg_000001_018155_leftImg8bit.png
strasbourg/strasbourg_000001_018432_leftImg8bit.png
strasbourg/strasbourg_000001_018742_leftImg8bit.png
strasbourg/strasbourg_000001_018872_leftImg8bit.png
strasbourg/strasbourg_000001_019247_leftImg8bit.png
strasbourg/strasbourg_000001_019698_leftImg8bit.png
strasbourg/strasbourg_000001_020904_leftImg8bit.png
strasbourg/strasbourg_000001_020956_leftImg8bit.png
strasbourg/strasbourg_000001_021951_leftImg8bit.png
strasbourg/strasbourg_000001_022151_leftImg8bit.png
strasbourg/strasbourg_000001_022363_leftImg8bit.png
strasbourg/strasbourg_000001_022560_leftImg8bit.png
strasbourg/strasbourg_000001_022836_leftImg8bit.png
strasbourg/strasbourg_000001_023271_leftImg8bit.png
strasbourg/strasbourg_000001_023515_leftImg8bit.png
strasbourg/strasbourg_000001_024152_leftImg8bit.png
strasbourg/strasbourg_000001_024379_leftImg8bit.png
strasbourg/strasbourg_000001_024701_leftImg8bit.png
strasbourg/strasbourg_000001_025426_leftImg8bit.png
strasbourg/strasbourg_000001_025833_leftImg8bit.png
strasbourg/strasbourg_000001_026106_leftImg8bit.png
strasbourg/strasbourg_000001_026355_leftImg8bit.png
strasbourg/strasbourg_000001_026606_leftImg8bit.png
strasbourg/strasbourg_000001_026856_leftImg8bit.png
strasbourg/strasbourg_000001_027097_leftImg8bit.png
strasbourg/strasbourg_000001_028379_leftImg8bit.png
strasbourg/strasbourg_000001_028852_leftImg8bit.png
strasbourg/strasbourg_000001_029178_leftImg8bit.png
strasbourg/strasbourg_000001_029696_leftImg8bit.png
strasbourg/strasbourg_000001_029980_leftImg8bit.png
strasbourg/strasbourg_000001_030120_leftImg8bit.png
strasbourg/strasbourg_000001_030269_leftImg8bit.png
strasbourg/strasbourg_000001_030539_leftImg8bit.png
strasbourg/strasbourg_000001_030725_leftImg8bit.png
strasbourg/strasbourg_000001_030839_leftImg8bit.png
strasbourg/strasbourg_000001_030997_leftImg8bit.png
strasbourg/strasbourg_000001_031116_leftImg8bit.png
strasbourg/strasbourg_000001_031272_leftImg8bit.png
strasbourg/strasbourg_000001_031427_leftImg8bit.png
strasbourg/strasbourg_000001_031582_leftImg8bit.png
strasbourg/strasbourg_000001_031683_leftImg8bit.png
strasbourg/strasbourg_000001_031976_leftImg8bit.png
strasbourg/strasbourg_000001_032315_leftImg8bit.png
strasbourg/strasbourg_000001_032660_leftImg8bit.png
strasbourg/strasbourg_000001_033027_leftImg8bit.png
strasbourg/strasbourg_000001_033448_leftImg8bit.png
strasbourg/strasbourg_000001_033925_leftImg8bit.png
strasbourg/strasbourg_000001_034375_leftImg8bit.png
strasbourg/strasbourg_000001_034494_leftImg8bit.png
strasbourg/strasbourg_000001_034633_leftImg8bit.png
strasbourg/strasbourg_000001_034923_leftImg8bit.png
strasbourg/strasbourg_000001_035276_leftImg8bit.png
strasbourg/strasbourg_000001_035562_leftImg8bit.png
strasbourg/strasbourg_000001_035689_leftImg8bit.png
strasbourg/strasbourg_000001_036232_leftImg8bit.png
strasbourg/strasbourg_000001_036480_leftImg8bit.png
strasbourg/strasbourg_000001_036697_leftImg8bit.png
strasbourg/strasbourg_000001_036937_leftImg8bit.png
strasbourg/strasbourg_000001_037090_leftImg8bit.png
strasbourg/strasbourg_000001_037645_leftImg8bit.png
strasbourg/strasbourg_000001_037776_leftImg8bit.png
strasbourg/strasbourg_000001_037906_leftImg8bit.png
strasbourg/strasbourg_000001_038281_leftImg8bit.png
strasbourg/strasbourg_000001_039114_leftImg8bit.png
strasbourg/strasbourg_000001_039231_leftImg8bit.png
strasbourg/strasbourg_000001_039374_leftImg8bit.png
strasbourg/strasbourg_000001_039446_leftImg8bit.png
strasbourg/strasbourg_000001_039558_leftImg8bit.png
strasbourg/strasbourg_000001_039703_leftImg8bit.png
strasbourg/strasbourg_000001_040564_leftImg8bit.png
strasbourg/strasbourg_000001_040620_leftImg8bit.png
strasbourg/strasbourg_000001_040761_leftImg8bit.png
strasbourg/strasbourg_000001_040981_leftImg8bit.png
strasbourg/strasbourg_000001_041215_leftImg8bit.png
strasbourg/strasbourg_000001_042235_leftImg8bit.png
strasbourg/strasbourg_000001_042309_leftImg8bit.png
strasbourg/strasbourg_000001_042434_leftImg8bit.png
strasbourg/strasbourg_000001_042558_leftImg8bit.png
strasbourg/strasbourg_000001_042869_leftImg8bit.png
strasbourg/strasbourg_000001_043080_leftImg8bit.png
strasbourg/strasbourg_000001_043748_leftImg8bit.png
strasbourg/strasbourg_000001_043886_leftImg8bit.png
strasbourg/strasbourg_000001_044219_leftImg8bit.png
strasbourg/strasbourg_000001_045135_leftImg8bit.png
strasbourg/strasbourg_000001_045481_leftImg8bit.png
strasbourg/strasbourg_000001_045880_leftImg8bit.png
strasbourg/strasbourg_000001_046324_leftImg8bit.png
strasbourg/strasbourg_000001_047336_leftImg8bit.png
strasbourg/strasbourg_000001_047619_leftImg8bit.png
strasbourg/strasbourg_000001_047702_leftImg8bit.png
strasbourg/strasbourg_000001_047755_leftImg8bit.png
strasbourg/strasbourg_000001_047955_leftImg8bit.png
strasbourg/strasbourg_000001_048121_leftImg8bit.png
strasbourg/strasbourg_000001_048605_leftImg8bit.png
strasbourg/strasbourg_000001_049143_leftImg8bit.png
strasbourg/strasbourg_000001_049399_leftImg8bit.png
strasbourg/strasbourg_000001_049776_leftImg8bit.png
strasbourg/strasbourg_000001_049977_leftImg8bit.png
strasbourg/strasbourg_000001_050098_leftImg8bit.png
strasbourg/strasbourg_000001_051134_leftImg8bit.png
strasbourg/strasbourg_000001_051317_leftImg8bit.png
strasbourg/strasbourg_000001_051448_leftImg8bit.png
strasbourg/strasbourg_000001_051574_leftImg8bit.png
strasbourg/strasbourg_000001_051661_leftImg8bit.png
strasbourg/strasbourg_000001_051877_leftImg8bit.png
strasbourg/strasbourg_000001_051934_leftImg8bit.png
strasbourg/strasbourg_000001_052050_leftImg8bit.png
strasbourg/strasbourg_000001_052198_leftImg8bit.png
strasbourg/strasbourg_000001_052297_leftImg8bit.png
strasbourg/strasbourg_000001_052430_leftImg8bit.png
strasbourg/strasbourg_000001_052497_leftImg8bit.png
strasbourg/strasbourg_000001_052544_leftImg8bit.png
strasbourg/strasbourg_000001_052840_leftImg8bit.png
strasbourg/strasbourg_000001_052979_leftImg8bit.png
strasbourg/strasbourg_000001_053222_leftImg8bit.png
strasbourg/strasbourg_000001_053579_leftImg8bit.png
strasbourg/strasbourg_000001_053976_leftImg8bit.png
strasbourg/strasbourg_000001_054275_leftImg8bit.png
strasbourg/strasbourg_000001_054639_leftImg8bit.png
strasbourg/strasbourg_000001_055273_leftImg8bit.png
strasbourg/strasbourg_000001_055698_leftImg8bit.png
strasbourg/strasbourg_000001_055860_leftImg8bit.png
strasbourg/strasbourg_000001_055934_leftImg8bit.png
strasbourg/strasbourg_000001_056142_leftImg8bit.png
strasbourg/strasbourg_000001_056330_leftImg8bit.png
strasbourg/strasbourg_000001_056857_leftImg8bit.png
strasbourg/strasbourg_000001_057129_leftImg8bit.png
strasbourg/strasbourg_000001_057191_leftImg8bit.png
strasbourg/strasbourg_000001_057517_leftImg8bit.png
strasbourg/strasbourg_000001_057811_leftImg8bit.png
strasbourg/strasbourg_000001_057930_leftImg8bit.png
strasbourg/strasbourg_000001_058105_leftImg8bit.png
strasbourg/strasbourg_000001_058373_leftImg8bit.png
strasbourg/strasbourg_000001_058954_leftImg8bit.png
strasbourg/strasbourg_000001_059433_leftImg8bit.png
strasbourg/strasbourg_000001_059675_leftImg8bit.png
strasbourg/strasbourg_000001_059914_leftImg8bit.png
strasbourg/strasbourg_000001_060061_leftImg8bit.png
strasbourg/strasbourg_000001_060173_leftImg8bit.png
strasbourg/strasbourg_000001_060821_leftImg8bit.png
strasbourg/strasbourg_000001_061285_leftImg8bit.png
strasbourg/strasbourg_000001_061384_leftImg8bit.png
strasbourg/strasbourg_000001_061472_leftImg8bit.png
strasbourg/strasbourg_000001_061685_leftImg8bit.png
strasbourg/strasbourg_000001_062362_leftImg8bit.png
strasbourg/strasbourg_000001_062542_leftImg8bit.png
strasbourg/strasbourg_000001_062691_leftImg8bit.png
strasbourg/strasbourg_000001_063385_leftImg8bit.png
strasbourg/strasbourg_000001_063808_leftImg8bit.png
strasbourg/strasbourg_000001_064224_leftImg8bit.png
strasbourg/strasbourg_000001_064393_leftImg8bit.png
strasbourg/strasbourg_000001_065214_leftImg8bit.png
strasbourg/strasbourg_000001_065572_leftImg8bit.png
stuttgart/stuttgart_000000_000019_leftImg8bit.png
stuttgart/stuttgart_000001_000019_leftImg8bit.png
stuttgart/stuttgart_000002_000019_leftImg8bit.png
stuttgart/stuttgart_000003_000019_leftImg8bit.png
stuttgart/stuttgart_000004_000019_leftImg8bit.png
stuttgart/stuttgart_000005_000019_leftImg8bit.png
stuttgart/stuttgart_000006_000019_leftImg8bit.png
stuttgart/stuttgart_000007_000019_leftImg8bit.png
stuttgart/stuttgart_000008_000019_leftImg8bit.png
stuttgart/stuttgart_000009_000019_leftImg8bit.png
stuttgart/stuttgart_000010_000019_leftImg8bit.png
stuttgart/stuttgart_000011_000019_leftImg8bit.png
stuttgart/stuttgart_000012_000019_leftImg8bit.png
stuttgart/stuttgart_000013_000019_leftImg8bit.png
stuttgart/stuttgart_000014_000019_leftImg8bit.png
stuttgart/stuttgart_000015_000019_leftImg8bit.png
stuttgart/stuttgart_000016_000019_leftImg8bit.png
stuttgart/stuttgart_000017_000019_leftImg8bit.png
stuttgart/stuttgart_000018_000019_leftImg8bit.png
stuttgart/stuttgart_000019_000019_leftImg8bit.png
stuttgart/stuttgart_000020_000019_leftImg8bit.png
stuttgart/stuttgart_000021_000019_leftImg8bit.png
stuttgart/stuttgart_000022_000019_leftImg8bit.png
stuttgart/stuttgart_000023_000019_leftImg8bit.png
stuttgart/stuttgart_000024_000019_leftImg8bit.png
stuttgart/stuttgart_000025_000019_leftImg8bit.png
stuttgart/stuttgart_000026_000019_leftImg8bit.png
stuttgart/stuttgart_000027_000019_leftImg8bit.png
stuttgart/stuttgart_000028_000019_leftImg8bit.png
stuttgart/stuttgart_000029_000019_leftImg8bit.png
stuttgart/stuttgart_000030_000019_leftImg8bit.png
stuttgart/stuttgart_000031_000019_leftImg8bit.png
stuttgart/stuttgart_000032_000019_leftImg8bit.png
stuttgart/stuttgart_000033_000019_leftImg8bit.png
stuttgart/stuttgart_000034_000019_leftImg8bit.png
stuttgart/stuttgart_000035_000019_leftImg8bit.png
stuttgart/stuttgart_000036_000019_leftImg8bit.png
stuttgart/stuttgart_000037_000019_leftImg8bit.png
stuttgart/stuttgart_000038_000019_leftImg8bit.png
stuttgart/stuttgart_000039_000019_leftImg8bit.png
stuttgart/stuttgart_000040_000019_leftImg8bit.png
stuttgart/stuttgart_000041_000019_leftImg8bit.png
stuttgart/stuttgart_000042_000019_leftImg8bit.png
stuttgart/stuttgart_000043_000019_leftImg8bit.png
stuttgart/stuttgart_000044_000019_leftImg8bit.png
stuttgart/stuttgart_000045_000019_leftImg8bit.png
stuttgart/stuttgart_000046_000019_leftImg8bit.png
stuttgart/stuttgart_000047_000019_leftImg8bit.png
stuttgart/stuttgart_000048_000019_leftImg8bit.png
stuttgart/stuttgart_000049_000019_leftImg8bit.png
stuttgart/stuttgart_000050_000019_leftImg8bit.png
stuttgart/stuttgart_000051_000019_leftImg8bit.png
stuttgart/stuttgart_000052_000019_leftImg8bit.png
stuttgart/stuttgart_000053_000019_leftImg8bit.png
stuttgart/stuttgart_000054_000019_leftImg8bit.png
stuttgart/stuttgart_000055_000019_leftImg8bit.png
stuttgart/stuttgart_000056_000019_leftImg8bit.png
stuttgart/stuttgart_000057_000019_leftImg8bit.png
stuttgart/stuttgart_000058_000019_leftImg8bit.png
stuttgart/stuttgart_000059_000019_leftImg8bit.png
stuttgart/stuttgart_000060_000019_leftImg8bit.png
stuttgart/stuttgart_000061_000019_leftImg8bit.png
stuttgart/stuttgart_000062_000019_leftImg8bit.png
stuttgart/stuttgart_000063_000019_leftImg8bit.png
stuttgart/stuttgart_000064_000019_leftImg8bit.png
stuttgart/stuttgart_000065_000019_leftImg8bit.png
stuttgart/stuttgart_000066_000019_leftImg8bit.png
stuttgart/stuttgart_000067_000019_leftImg8bit.png
stuttgart/stuttgart_000068_000019_leftImg8bit.png
stuttgart/stuttgart_000069_000019_leftImg8bit.png
stuttgart/stuttgart_000070_000019_leftImg8bit.png
stuttgart/stuttgart_000071_000019_leftImg8bit.png
stuttgart/stuttgart_000072_000019_leftImg8bit.png
stuttgart/stuttgart_000073_000019_leftImg8bit.png
stuttgart/stuttgart_000074_000019_leftImg8bit.png
stuttgart/stuttgart_000075_000019_leftImg8bit.png
stuttgart/stuttgart_000076_000019_leftImg8bit.png
stuttgart/stuttgart_000077_000019_leftImg8bit.png
stuttgart/stuttgart_000078_000019_leftImg8bit.png
stuttgart/stuttgart_000079_000019_leftImg8bit.png
stuttgart/stuttgart_000080_000019_leftImg8bit.png
stuttgart/stuttgart_000081_000019_leftImg8bit.png
stuttgart/stuttgart_000082_000019_leftImg8bit.png
stuttgart/stuttgart_000083_000019_leftImg8bit.png
stuttgart/stuttgart_000084_000019_leftImg8bit.png
stuttgart/stuttgart_000085_000019_leftImg8bit.png
stuttgart/stuttgart_000086_000019_leftImg8bit.png
stuttgart/stuttgart_000087_000019_leftImg8bit.png
stuttgart/stuttgart_000088_000019_leftImg8bit.png
stuttgart/stuttgart_000089_000019_leftImg8bit.png
stuttgart/stuttgart_000090_000019_leftImg8bit.png
stuttgart/stuttgart_000091_000019_leftImg8bit.png
stuttgart/stuttgart_000092_000019_leftImg8bit.png
stuttgart/stuttgart_000093_000019_leftImg8bit.png
stuttgart/stuttgart_000094_000019_leftImg8bit.png
stuttgart/stuttgart_000095_000019_leftImg8bit.png
stuttgart/stuttgart_000096_000019_leftImg8bit.png
stuttgart/stuttgart_000097_000019_leftImg8bit.png
stuttgart/stuttgart_000098_000019_leftImg8bit.png
stuttgart/stuttgart_000099_000019_leftImg8bit.png
stuttgart/stuttgart_000100_000019_leftImg8bit.png
stuttgart/stuttgart_000101_000019_leftImg8bit.png
stuttgart/stuttgart_000102_000019_leftImg8bit.png
stuttgart/stuttgart_000103_000019_leftImg8bit.png
stuttgart/stutt
gitextract_uic_0g2j/
├── BDL.py
├── LICENSE
├── README.md
├── SSL.py
├── cyclegan/
│ ├── cycle_gan_model.py
│ ├── deeplab.py
│ ├── networks.py
│ └── readme.md
├── data/
│ ├── __init__.py
│ ├── cityscapes_dataset.py
│ ├── cityscapes_dataset_label.py
│ ├── gta5_dataset.py
│ └── synthia_dataset.py
├── dataset/
│ ├── cityscapes_list/
│ │ ├── info.json
│ │ ├── label.txt
│ │ ├── train.txt
│ │ └── val.txt
│ ├── gta5_list/
│ │ └── train.txt
│ └── synthia_list/
│ └── train.txt
├── evaluation.py
├── model/
│ ├── __init__.py
│ ├── deeplab.py
│ ├── discriminator.py
│ └── fcn8s.py
├── options/
│ ├── __init__.py
│ ├── test_options.py
│ └── train_options.py
└── utils/
├── __init__.py
└── timer.py
SYMBOL INDEX (138 symbols across 18 files)
FILE: BDL.py
function main (line 15) | def main():
FILE: SSL.py
function main (line 14) | def main():
FILE: cyclegan/cycle_gan_model.py
class CycleGANModel (line 10) | class CycleGANModel(BaseModel):
method name (line 11) | def name(self):
method modify_commandline_options (line 15) | def modify_commandline_options(parser, is_train=True):
method initialize (line 27) | def initialize(self, opt):
method set_input (line 87) | def set_input(self, input):
method forward (line 93) | def forward(self):
method backward_D_basic (line 107) | def backward_D_basic(self, netD, real, fake):
method backward_D_A (line 120) | def backward_D_A(self):
method backward_D_B (line 124) | def backward_D_B(self):
method backward_G (line 128) | def backward_G(self):
method optimize_parameters (line 166) | def optimize_parameters(self):
method compute_semantic_loss (line 181) | def compute_semantic_loss(self, img_feat, target_feat):
method compute_semantic_feat (line 184) | def compute_semantic_feat(self, img):
method img_preprocess (line 189) | def img_preprocess(self, batch):
FILE: cyclegan/deeplab.py
function outS (line 11) | def outS(i):
function conv3x3 (line 19) | def conv3x3(in_planes, out_planes, stride=1):
class BasicBlock (line 25) | class BasicBlock(nn.Module):
method __init__ (line 28) | def __init__(self, inplanes, planes, stride=1, downsample=None):
method forward (line 38) | def forward(self, x):
class Bottleneck (line 57) | class Bottleneck(nn.Module):
method __init__ (line 60) | def __init__(self, inplanes, planes, stride=1, dilation=1, downsample=...
method forward (line 81) | def forward(self, x):
class Classifier_Module (line 104) | class Classifier_Module(nn.Module):
method __init__ (line 105) | def __init__(self, inplanes, dilation_series, padding_series, num_clas...
method forward (line 115) | def forward(self, x):
class ResNet101 (line 122) | class ResNet101(nn.Module):
method __init__ (line 123) | def __init__(self, block, layers, num_classes, phase):
method _make_layer (line 150) | def _make_layer(self, block, planes, blocks, stride=1, dilation=1):
method _make_pred_layer (line 167) | def _make_pred_layer(self, block, inplanes, dilation_series, padding_s...
method forward (line 170) | def forward(self, x, ssl=False, lbl=None):
function Deeplab (line 185) | def Deeplab(num_classes=21, init_weights=None, restore_from=None, phase=...
FILE: cyclegan/networks.py
function get_norm_layer (line 16) | def get_norm_layer(norm_type='instance'):
function get_scheduler (line 28) | def get_scheduler(optimizer, opt):
function init_weights (line 43) | def init_weights(net, init_type='normal', gain=0.02):
function init_net (line 67) | def init_net(net, init_type='normal', init_gain=0.02, gpu_ids=[]):
function define_G (line 76) | def define_G(input_nc, output_nc, ngf, which_model_netG, norm='batch', u...
function define_D (line 93) | def define_D(input_nc, ndf, which_model_netD,
function semantic (line 109) | def semantic(init_weights=None, gpu_ids=0):
class GANLoss (line 131) | class GANLoss(nn.Module):
method __init__ (line 132) | def __init__(self, use_lsgan=True, target_real_label=1.0, target_fake_...
method get_target_tensor (line 141) | def get_target_tensor(self, input, target_is_real):
method __call__ (line 148) | def __call__(self, input, target_is_real):
class ResnetGenerator (line 157) | class ResnetGenerator(nn.Module):
method __init__ (line 158) | def __init__(self, input_nc, output_nc, ngf=64, norm_layer=nn.BatchNor...
method forward (line 201) | def forward(self, input):
class ResnetBlock (line 206) | class ResnetBlock(nn.Module):
method __init__ (line 207) | def __init__(self, dim, padding_type, norm_layer, use_dropout, use_bias):
method build_conv_block (line 211) | def build_conv_block(self, dim, padding_type, norm_layer, use_dropout,...
method forward (line 243) | def forward(self, x):
class UnetGenerator (line 252) | class UnetGenerator(nn.Module):
method __init__ (line 253) | def __init__(self, input_nc, output_nc, num_downs, ngf=64,
method forward (line 268) | def forward(self, input):
class UnetSkipConnectionBlock (line 275) | class UnetSkipConnectionBlock(nn.Module):
method __init__ (line 276) | def __init__(self, outer_nc, inner_nc, input_nc=None,
method forward (line 321) | def forward(self, x):
class NLayerDiscriminator (line 329) | class NLayerDiscriminator(nn.Module):
method __init__ (line 330) | def __init__(self, input_nc, ndf=64, n_layers=3, norm_layer=nn.BatchNo...
method forward (line 372) | def forward(self, input):
class PixelDiscriminator (line 376) | class PixelDiscriminator(nn.Module):
method __init__ (line 377) | def __init__(self, input_nc, ndf=64, norm_layer=nn.BatchNorm2d, use_si...
method forward (line 397) | def forward(self, input):
class CrossEntropy2d (line 402) | class CrossEntropy2d(nn.Module):
method __init__ (line 404) | def __init__(self, size_average=True, ignore_label=255):
method forward (line 409) | def forward(self, predict, target, weight=None):
FILE: data/__init__.py
function CreateSrcDataLoader (line 11) | def CreateSrcDataLoader(args):
function CreateTrgDataLoader (line 25) | def CreateTrgDataLoader(args):
function CreateTrgDataSSLLoader (line 47) | def CreateTrgDataSSLLoader(args):
FILE: data/cityscapes_dataset.py
class cityscapesDataSet (line 12) | class cityscapesDataSet(data.Dataset):
method __init__ (line 13) | def __init__(self, root, list_path, max_iters=None, crop_size=(321, 32...
method __len__ (line 24) | def __len__(self):
method __getitem__ (line 27) | def __getitem__(self, index):
FILE: data/cityscapes_dataset_label.py
class cityscapesDataSetLabel (line 12) | class cityscapesDataSetLabel(data.Dataset):
method __init__ (line 13) | def __init__(self, root, list_path, max_iters=None, crop_size=(321, 32...
method __len__ (line 24) | def __len__(self):
method __getitem__ (line 27) | def __getitem__(self, index):
FILE: data/gta5_dataset.py
class GTA5DataSet (line 13) | class GTA5DataSet(data.Dataset):
method __init__ (line 14) | def __init__(self, root, list_path, max_iters=None, crop_size=(321, 32...
method __len__ (line 28) | def __len__(self):
method __getitem__ (line 32) | def __getitem__(self, index):
FILE: data/synthia_dataset.py
class SYNDataSet (line 13) | class SYNDataSet(data.Dataset):
method __init__ (line 14) | def __init__(self, root, list_path, max_iters=None, crop_size=(321, 32...
method __len__ (line 28) | def __len__(self):
method __getitem__ (line 32) | def __getitem__(self, index):
FILE: evaluation.py
function colorize_mask (line 21) | def colorize_mask(mask):
function fast_hist (line 27) | def fast_hist(a, b, n):
function per_class_iu (line 32) | def per_class_iu(hist):
function label_mapping (line 36) | def label_mapping(input, mapping):
function compute_mIoU (line 42) | def compute_mIoU(gt_dir, pred_dir, devkit_dir='', restore_from=''):
function main (line 85) | def main():
FILE: model/__init__.py
function CreateModel (line 7) | def CreateModel(args):
function CreateDiscriminator (line 34) | def CreateDiscriminator(args):
function CreateSSLModel (line 43) | def CreateSSLModel(args):
FILE: model/deeplab.py
function outS (line 11) | def outS(i):
function conv3x3 (line 19) | def conv3x3(in_planes, out_planes, stride=1):
class BasicBlock (line 25) | class BasicBlock(nn.Module):
method __init__ (line 28) | def __init__(self, inplanes, planes, stride=1, downsample=None):
method forward (line 38) | def forward(self, x):
class Bottleneck (line 57) | class Bottleneck(nn.Module):
method __init__ (line 60) | def __init__(self, inplanes, planes, stride=1, dilation=1, downsample=...
method forward (line 81) | def forward(self, x):
class Classifier_Module (line 104) | class Classifier_Module(nn.Module):
method __init__ (line 105) | def __init__(self, inplanes, dilation_series, padding_series, num_clas...
method forward (line 115) | def forward(self, x):
class ResNet101 (line 122) | class ResNet101(nn.Module):
method __init__ (line 123) | def __init__(self, block, layers, num_classes, phase):
method _make_layer (line 150) | def _make_layer(self, block, planes, blocks, stride=1, dilation=1):
method _make_pred_layer (line 167) | def _make_pred_layer(self, block, inplanes, dilation_series, padding_s...
method forward (line 170) | def forward(self, x, ssl=False, lbl=None):
method get_1x_lr_params_NOscale (line 188) | def get_1x_lr_params_NOscale(self):
method get_10x_lr_params (line 207) | def get_10x_lr_params(self):
method optim_parameters (line 216) | def optim_parameters(self, args):
method adjust_learning_rate (line 220) | def adjust_learning_rate(self, args, optimizer, i):
method CrossEntropy2d (line 226) | def CrossEntropy2d(self, predict, target, weight=None, size_average=Tr...
function Deeplab (line 244) | def Deeplab(num_classes=21, init_weights=None, restore_from=None, phase=...
FILE: model/discriminator.py
class FCDiscriminator (line 7) | class FCDiscriminator(nn.Module):
method __init__ (line 9) | def __init__(self, num_classes, ndf = 64):
method forward (line 22) | def forward(self, x, lbl):
method adjust_learning_rate (line 36) | def adjust_learning_rate(self, args, optimizer, i):
FILE: model/fcn8s.py
class FCN8s (line 8) | class FCN8s(nn.Module):
method __init__ (line 9) | def __init__(self, num_classes=21):
method _initialize_weights (line 75) | def _initialize_weights(self):
method get_upsampling_weight (line 87) | def get_upsampling_weight(self, in_channels, out_channels, kernel_size):
method forward (line 102) | def forward(self, x, ssl=False, lbl=None):
method get_parameters (line 163) | def get_parameters(self, bias=False):
method adjust_learning_rate (line 187) | def adjust_learning_rate(self, args, optimizer, i):
method CrossEntropy2d (line 192) | def CrossEntropy2d(self, predict, target, weight=None, size_average=Tr...
function VGG16_FCN8s (line 209) | def VGG16_FCN8s(num_classes=21, init_weights=None, restore_from=None):
FILE: options/test_options.py
class TestOptions (line 3) | class TestOptions():
method initialize (line 4) | def initialize(self):
FILE: options/train_options.py
class TrainOptions (line 3) | class TrainOptions():
method initialize (line 4) | def initialize(self):
method print_options (line 34) | def print_options(self, args):
FILE: utils/timer.py
class Timer (line 3) | class Timer(object):
method __init__ (line 5) | def __init__(self):
method tic (line 12) | def tic(self):
method toc (line 15) | def toc(self, average=True):
Condensed preview — 29 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (724K chars).
[
{
"path": "BDL.py",
"chars": 4461,
"preview": "import torch\nfrom torch.autograd import Variable\nimport torch.backends.cudnn as cudnn\nimport torch.nn.functional as F\nfr"
},
{
"path": "LICENSE",
"chars": 1126,
"preview": "MIT License\n\nCopyright (c) 2019 Bidirectional Learning for Domain Adaptation of Semantic Segmentation\n\nPermission is her"
},
{
"path": "README.md",
"chars": 4253,
"preview": "# Bidirectional Learning for Domain Adaptation of Semantic Segmentation (CVPR 2019)\nA [pytorch](http://pytorch.org/) imp"
},
{
"path": "SSL.py",
"chars": 2382,
"preview": "import torch\nimport torch.nn as nn\nfrom torch.autograd import Variable\nfrom torch.utils import data\nfrom options.test_op"
},
{
"path": "cyclegan/cycle_gan_model.py",
"chars": 10384,
"preview": "import torch\nimport itertools\nfrom util.image_pool import ImagePool\nfrom .base_model import BaseModel\nfrom . import netw"
},
{
"path": "cyclegan/deeplab.py",
"chars": 6511,
"preview": "import torch.nn as nn\nimport torch.nn.functional as F\nimport math\nimport torch.utils.model_zoo as model_zoo\nimport torch"
},
{
"path": "cyclegan/networks.py",
"chars": 17932,
"preview": "import torch\nimport torch.nn as nn\nfrom torch.nn import init\nimport functools\nfrom torch.optim import lr_scheduler\nfrom "
},
{
"path": "cyclegan/readme.md",
"chars": 1051,
"preview": "# CycleGAN with semantic loss\nDownload [CycleGAN](https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix) and replace t"
},
{
"path": "data/__init__.py",
"chars": 2904,
"preview": "from data.gta5_dataset import GTA5DataSet\nfrom data.cityscapes_dataset import cityscapesDataSet\nfrom data.synthia_datase"
},
{
"path": "data/cityscapes_dataset.py",
"chars": 1265,
"preview": "import os\nimport os.path as osp\nimport numpy as np\nimport random\n#import matplotlib.pyplot as plt\nimport collections\nimp"
},
{
"path": "data/cityscapes_dataset_label.py",
"chars": 1478,
"preview": "import os\nimport os.path as osp\nimport numpy as np\nimport random\n#import matplotlib.pyplot as plt\nimport collections\nimp"
},
{
"path": "data/gta5_dataset.py",
"chars": 1855,
"preview": "import os\nimport os.path as osp\nimport numpy as np\nimport random\n#import matplotlib.pyplot as plt\nimport collections\nimp"
},
{
"path": "data/synthia_dataset.py",
"chars": 1930,
"preview": "import os\nimport os.path as osp\nimport numpy as np\nimport random\nimport matplotlib.pyplot as plt\nimport collections\nimpo"
},
{
"path": "dataset/cityscapes_list/info.json",
"chars": 1313,
"preview": "{\n \"classes\":19,\n \"label2train\":[\n [0, 255],\n [1, 255],\n [2, 255],\n [3, 255],\n [4, 255],\n [5, 255],\n"
},
{
"path": "dataset/cityscapes_list/label.txt",
"chars": 25950,
"preview": "frankfurt/frankfurt_000001_007973_gtFine_labelIds.png\nfrankfurt/frankfurt_000001_025921_gtFine_labelIds.png\nfrankfurt/fr"
},
{
"path": "dataset/cityscapes_list/train.txt",
"chars": 139890,
"preview": "aachen/aachen_000000_000019_leftImg8bit.png\naachen/aachen_000001_000019_leftImg8bit.png\naachen/aachen_000002_000019_left"
},
{
"path": "dataset/cityscapes_list/val.txt",
"chars": 23950,
"preview": "frankfurt/frankfurt_000001_007973_leftImg8bit.png\nfrankfurt/frankfurt_000001_025921_leftImg8bit.png\nfrankfurt/frankfurt_"
},
{
"path": "dataset/gta5_list/train.txt",
"chars": 249660,
"preview": "00001.png\n00002.png\n00003.png\n00004.png\n00005.png\n00006.png\n00007.png\n00008.png\n00009.png\n00010.png\n00011.png\n00012.png\n"
},
{
"path": "dataset/synthia_list/train.txt",
"chars": 150400,
"preview": "RGB/0000000.png\nRGB/0000001.png\nRGB/0000002.png\nRGB/0000003.png\nRGB/0000004.png\nRGB/0000005.png\nRGB/0000006.png\nRGB/0000"
},
{
"path": "evaluation.py",
"chars": 5126,
"preview": "import torch\nimport torch.nn as nn\nfrom torch.autograd import Variable\nfrom options.test_options import TestOptions\nfrom"
},
{
"path": "model/__init__.py",
"chars": 2069,
"preview": "from model.deeplab import Deeplab\nfrom model.fcn8s import VGG16_FCN8s\nfrom model.discriminator import FCDiscriminator\nim"
},
{
"path": "model/deeplab.py",
"chars": 9485,
"preview": "import torch.nn as nn\nimport torch.nn.functional as F\nimport math\nimport torch.utils.model_zoo as model_zoo\nimport torch"
},
{
"path": "model/discriminator.py",
"chars": 1770,
"preview": "import torch.nn as nn\nimport torch.nn.functional as F\nfrom torch.autograd import Variable\nimport torch\n\n\nclass FCDiscrim"
},
{
"path": "model/fcn8s.py",
"chars": 8293,
"preview": "import os.path as osp\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport numpy as np\n\n\nclass FCN8"
},
{
"path": "options/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "options/test_options.py",
"chars": 1635,
"preview": "import argparse\nimport os.path as osp\nclass TestOptions():\n def initialize(self):\n parser = argparse.ArgumentP"
},
{
"path": "options/train_options.py",
"chars": 3843,
"preview": "import argparse\nimport os.path as osp\nclass TrainOptions():\n def initialize(self):\n parser = argparse.Argument"
},
{
"path": "utils/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "utils/timer.py",
"chars": 579,
"preview": "import time\n\nclass Timer(object):\n \"\"\"A simple timer.\"\"\"\n def __init__(self):\n self.total_time = 0.\n "
}
]
About this extraction
This page contains the full source code of the liyunsheng13/BDL GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 29 files (665.5 KB), approximately 259.2k tokens, and a symbol index with 138 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.