Commit 01db7703 authored by mashun1's avatar mashun1
Browse files

taming-transformer

parents
Pipeline #801 canceled with stages
*pyc*
celebahq
ffhq
sample_for_test
nohup*
logs/
results
*.egg*
sample*
imagenet_depth
\ No newline at end of file
FROM image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.10.0-centos7.6-dtk-23.04-py38-latest
\ No newline at end of file
Copyright (c) 2020 Patrick Esser and Robin Rombach and Björn Ommer
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./
# taming-transformers
VQGAN
## 论文
**Taming Transformers for High-Resolution Image Synthesis**
* https://arxiv.org/abs/2012.09841
## 模型结构
该模型的主体结构为加入了离散编码本的`AutoEncoder`结构,具体如下图所示,其中`E`(CNN Encoder)用于压缩提取图像中的信息,`Z`(编码本Codebook)记录图像特征,`G`(Decoder)用于生成图像,`D`(CNN Discriminator)判断生成图像的真假,`Transformer`根据现有特征预测接下来的特征(编码本索引)。
![Alt text](readme_imgs/image-1.png)
## 算法原理
该算法结合了CNN与Transformer,可用于高清图像的生成,具体如下,
1、CNN + Transformer
使用卷积神经网络(CNN)架构对成分(纹理、形状、物体以及其他视觉特征)进行建模,并使用Transformer架构对它们的组合进行建模,充分发挥了它们的互补优势。
![Alt text](readme_imgs/R-C.gif)
![Alt text](readme_imgs/image-2.png)
## 环境配置
### Docker(方法一)
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.10.0-centos7.6-dtk-23.04-py38-latest
docker run --shm-size 10g --network=host --name=taming_transformer --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v 项目地址(绝对路径):/home/ -it <your IMAGE ID> bash
pip install -r requirements.txt
### Dockerfile(方法二)
# 需要在对应的目录下
docker build -t <IMAGE_NAME>:<TAG> .
# <your IMAGE ID>用以上拉取的docker的镜像ID替换
docker run -it --shm-size 10g --network=host --name=taming_transformer --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined <your IMAGE ID> bash
pip install -r requirements.txt
### Anaconda (方法三)
1、关于本项目DCU显卡所需的特殊深度学习库可从光合开发者社区下载安装:
https://developer.hpccube.com/tool/
DTK驱动:dtk23.04
python:python3.8
torch:1.10.0
torchvision:0.11.1
Tips:以上dtk驱动、python、torch等DCU相关工具版本需要严格一一对应
2、其它非特殊库参照requirements.txt安装
pip install -r requirements.txt
## 数据集
|名称|URL|存放位置|
|:----|:----|:----|
|ImageNet|https://openxlab.org.cn/datasets/OpenDataLab/ImageNet-1K/tree/main|
|CelebA-HQ|https://aistudio.baidu.com/datasetdetail/49050/0|data/celebahq|
|FFHQ|https://github.com/NVlabs/ffhq-dataset|data/ffhq|
|COCO|https://openxlab.org.cn/datasets/OpenDataLab/COCO_2017/tree/main|data/coco|
|COCO-Stuff|http://calvin.inf.ed.ac.uk/wp-content/uploads/data/cocostuffdataset/stuffthingmaps_trainval2017.zip|data/cocostuffthings|
|ADE20k|https://openxlab.org.cn/datasets/OpenDataLab/ADE20K_2016|data/ade20k_root|
|OpenImages-V7|https://github.com/cvdfoundation/open-images-dataset#download-full-dataset-with-google-storage-transfer|
我们也提供了用于测试的tiny数据集,链接:https://pan.baidu.com/s/1UFK-CsMBrnOEsGCNN_P9sA
提取码:kwai
上述数据集按需下载并放入`data`中。
### 数据处理
#### ImageNet
首先将数据以该结构进行存放,其中${XDG_CACHE}默认为`~/.cache``split`表示`train``validation`
${XDG_CACHE}/autoencoders/data/ILSVRC2012_{split}/data/
├── n01440764
│ ├── n01440764_10026.JPEG
│ ├── n01440764_10027.JPEG
│ ├── ...
├── n01443537
│ ├── n01443537_10007.JPEG
│ ├── n01443537_10014.JPEG
│ ├── ...
├── ...
注意:您可以将`ILSVRC2012_img_train.tar或ILSVRC2012_img_val.tar`放入`${XDG_CACHE}/autoencoders/data/ILSVRC2012_train/ 或 ${XDG_CACHE}/autoencoders/data/ILSVRC2012_validation/`,仅当文件夹 `${XDG_CACHE}/autoencoders/data/ILSVRC2012_{split}/data/` 和文件 `${XDG_CACHE}/autoencoders/data/ILSVRC2012_{split}/.ready` 都不存在时,数据才会自动处理为上述结构。
您需要使用MiDaS准备深度数据。创建一个符号链接data/imagenet_depth,指向一个包含两个子文件夹train和val的文件夹,每个子文件夹的结构都与上面描述的相应的ImageNet文件夹相同,并包含一个为ImageNet的每个JPEG文件编码的png文件。该png文件作为RGBA图像,编码从MiDaS获得的float32深度值。我们提供了生成此数据的脚本scripts/extract_depth.py。
imagenet_depth/
├── train
│   ├── n01440764
│   │   └── n01440764_10043.png
│   ├── n01443537
│   │   └── n01443537_10482.png
│   ├── n01484850
│   │   └── n01484850_10160.png
│   ├── n01491361
│   │   └── n01491361_10353.png
├── val
├── n01440764
│   └── ILSVRC2012_val_00000293.png
├── n01443537
│   └── ILSVRC2012_val_00002848.png
├── n01484850
│   └── ILSVRC2012_val_00002338.png
├── n01491361
│   └── ILSVRC2012_val_00002922.png
├── n01494475
│   └── ILSVRC2012_val_00004417.png
├── n01496331
│   └── ILSVRC2012_val_00004698.png
├── n01498041
│   └── ILSVRC2012_val_00002284.png
├── n01514668
│   └── ILSVRC2012_val_00000329.png
注意:若无法正常运行,您还需要下载`https://heibox.uni-heidelberg.de/f/9f28e956cd304264bb82/?dl=1` 并放入 `${XDG_CACHE}/autoencoders/data/ILSVRC2012_{split}/synset_human.txt`,下载`https://heibox.uni-heidelberg.de/f/d835d5b6ceda4d3aa910/?dl=1`并放入`${XDG_CACHE}/autoencoders/data/index_synset.yaml`,同时还需要创建`filelist.txt`其中包含`${XDG_CACHE}/autoencoders/data/ILSVRC2012_{split}/data`中的相对文件路径(`n01234/n01234_xxxx.JPEG`)。
#### FacesHQ
该数据集包含`CelebaHQ``FFHQ`,并无特定文件结构,仅需生成相应的文件列表文件即可。具体参考`data`目录下的`celebahqtrain.txt``celebahqvalidation.txt``ffhqtrain.txt`以及`ffhqvalidation.txt`,如需修改数据加载方式,可在`taming/data/faceshq.py`中进行修改。
## 训练
### FacesHQ
1.训练VQGAN
python main.py --base configs/faceshq_vqgan.yaml -t True --gpus 0,
2.训练transformer
python main.py --base configs/faceshq_transformer.yaml -t True --gpus 0,
### D-RIN
1.训练VQGAN
python main.py --base configs/imagenet_vqgan.yaml -t True --gpus 0,
python main.py --base configs/imagenetdepth_vqgan.yaml -t True --gpus 0,
2.训练transformer
python main.py --base configs/drin_transformer.yaml -t True --gpus 0,
注意:在训练transformer前需要修改`configs``model.params.first_stage_config.params.ckpt_path`以及`model.params.cond_stage_config.params.ckpt_path`(如果存在)的值(vqgan路径)。
## 推理
### 模型下载
|名称|URL|
|:-------|:----|
|S-FLCKR | https://heibox.uni-heidelberg.de/d/73487ab6e5314cb5adba/ |
|ImageNet | https://k00.fr/s511rwcv|
|FFHQ |https://k00.fr/yndvfu95|
|CelebA-HQ |https://k00.fr/2xkmielf|
|FacesHQ |https://k00.fr/qqfl2do8|
|D-RIN |https://k00.fr/39jcugc5|
|COCO |https://k00.fr/2zz6i2ce|
|ADE20k |https://k00.fr/ot46cksa|
|Scene Image Synthesis| https://drive.google.com/file/d/1FEK-Z7hyWJBvFWQF50pzSK9y1W_CJEig/view?usp=sharing <br> https://heibox.uni-heidelberg.de/f/0d0b2594e9074c7e9a33/ <br> https://drive.google.com/file/d/1bInd49g2YulTJBjU32Awyt5qnzxxG5U9/
文件结构:
logs/
└── 2020-11-09T13-31-51_sflckr
├── checkpoints
│ └── last.ckpt
└── configs
├── 2020-11-09T13-31-51-lightning.yaml
└── 2020-11-09T13-31-51-project.yaml
注意:上述模型按需下载。
### 命令
# S-FLCKR
streamlit run scripts/sample_conditional.py -- -r logs/2020-11-09T13-31-51_sflckr/
# ImageNet
# 为ImageNet的每个1000个类别生成50个样本,使用top-k采样中的k=600,nucleus采样中的p=0.92,温度t=1.0。
python scripts/sample_fast.py -r logs/2021-04-03T19-39-50_cin_transformer/ -n 50 -k 600 -t 1.0 -p 0.92 --batch_size 25
# classes用于指定生成类型(如猫,狗,鸟等)
python scripts/sample_fast.py -r logs/2021-04-03T19-39-50_cin_transformer/ -n 50 -k 600 -t 1.0 -p 0.92 --batch_size 25 --classes 9,232,901
# FFHQ
# 为了生成50000个样本,使用top-k采样中的k=250,nucleus采样中的p=1.0,温度t=1.0。
python scripts/sample_fast.py -r logs/2021-04-23T18-19-01_ffhq_transformer/
# CelebA-HQ
python scripts/sample_fast.py -r logs/2021-04-23T18-11-19_celebahq_transformer/
# FacesHQ
streamlit run scripts/sample_conditional.py -- -r logs/2020-11-13T21-41-45_faceshq_transformer/
# D-RIN
# demo数据
streamlit run scripts/sample_conditional.py -- -r logs/2020-11-20T12-54-32_drin_transformer/ --ignore_base_data data="{target: main.DataModuleFromConfig, params: {batch_size: 1, validation: {target: taming.data.imagenet.DRINExamples}}}"
# 所有validation数据(需要准备相应的ImageNet数据集,参考`训练/数据准备`)
streamlit run scripts/sample_conditional.py -- -r logs/2020-11-20T12-54-32_drin_transformer/
# COCO
streamlit run scripts/sample_conditional.py -- -r logs/2021-01-20T16-04-20_coco_transformer/ --ignore_base_data data="{target: main.DataModuleFromConfig, params: {batch_size: 1, validation: {target: taming.data.coco.Examples}}}"
# ADE20k
streamlit run scripts/sample_conditional.py -- -r logs/2020-11-20T21-45-44_ade20k_transformer/ --ignore_base_data data="{target: main.DataModuleFromConfig, params: {batch_size: 1, validation: {target: taming.data.ade20k.Examples}}}"
### Scene Image Synthesis
#### 模型下载
|名称|URL|
|:----|:-----|
|COCO-8k-VQGAN|https://heibox.uni-heidelberg.de/f/78dea9589974474c97c1/|
| COCO/Open-Images-8k-VQGAN | https://heibox.uni-heidelberg.de/f/461d9a9f4fcf48ab84f4/|
|Open Images 1 billion parameter model| https://drive.google.com/file/d/1FEK-Z7hyWJBvFWQF50pzSK9y1W_CJEig/view?usp=sharing|
|Open Images distilled version|https://drive.google.com/file/d/1xf89g0mc78J3d8Bx5YhbK4tNRNlOoYaO|
|COCO 30 epochs| https://heibox.uni-heidelberg.de/f/0d0b2594e9074c7e9a33/|
|COCO 60 epochs|https://drive.google.com/file/d/1bInd49g2YulTJBjU32Awyt5qnzxxG5U9/|
注意:上述模型中`COCO-8k-VQGAN`以及`COCO/Open-Images-8k-VQGAN`为第一阶段预训练模型,需要进一步训练后使用,这需要下载`COCO/OpenImage`的所有数据集,并修改相应配置文件`configs/xxx.yaml`中的模型和数据路径。
#### 命令
# 继续训练
# coco
python main.py --base configs/coco_scene_images_transformer.yaml -t True --gpus 0
# openimage
python main.py --base configs/open_images_scene_images_transformer.yaml -t True --gpus 0
# 推理
python scripts/make_scene_samples.py --outdir=/some/outdir -r /path/to/pretrained/model --resolution=512,512
注意:需要下载`arialuni.ttf`字体文件,并放入`taming/data/conditional_builder/font/`目录下。
## result
S-FLCKR
![Alt text](readme_imgs/image-3.png)
### 精度
指标:FID(越小越好)
数据集:FacesHQ
||nopix(随机采样)|half(补全)|
|:---|:---:|:---:|
|DCU|48.98|24.39|
|GPU|49.57|28.03|
## 应用场景
### 算法类别
`AIGC`
### 热点应用行业
`教育,科研,媒体`
## 源码仓库及问题反馈
* https://developer.hpccube.com/codes/modelzoo/taming-transformers_pytorch
## 参考资料
* https://github.com/CompVis/taming-transformers
\ No newline at end of file
# Taming Transformers for High-Resolution Image Synthesis
##### CVPR 2021 (Oral)
![teaser](assets/mountain.jpeg)
[**Taming Transformers for High-Resolution Image Synthesis**](https://compvis.github.io/taming-transformers/)<br/>
[Patrick Esser](https://github.com/pesser)\*,
[Robin Rombach](https://github.com/rromb)\*,
[Björn Ommer](https://hci.iwr.uni-heidelberg.de/Staff/bommer)<br/>
\* equal contribution
**tl;dr** We combine the efficiancy of convolutional approaches with the expressivity of transformers by introducing a convolutional VQGAN, which learns a codebook of context-rich visual parts, whose composition is modeled with an autoregressive transformer.
![teaser](assets/teaser.png)
[arXiv](https://arxiv.org/abs/2012.09841) | [BibTeX](#bibtex) | [Project Page](https://compvis.github.io/taming-transformers/)
### News
#### 2022
- More pretrained VQGANs (e.g. a f8-model with only 256 codebook entries) are available in our new work on [Latent Diffusion Models](https://github.com/CompVis/latent-diffusion).
- Added scene synthesis models as proposed in the paper [High-Resolution Complex Scene Synthesis with Transformers](https://arxiv.org/abs/2105.06458), see [this section](#scene-image-synthesis).
#### 2021
- Thanks to [rom1504](https://github.com/rom1504) it is now easy to [train a VQGAN on your own datasets](#training-on-custom-data).
- Included a bugfix for the quantizer. For backward compatibility it is
disabled by default (which corresponds to always training with `beta=1.0`).
Use `legacy=False` in the quantizer config to enable it.
Thanks [richcmwang](https://github.com/richcmwang) and [wcshin-git](https://github.com/wcshin-git)!
- Our paper received an update: See https://arxiv.org/abs/2012.09841v3 and the corresponding changelog.
- Added a pretrained, [1.4B transformer model](https://k00.fr/s511rwcv) trained for class-conditional ImageNet synthesis, which obtains state-of-the-art FID scores among autoregressive approaches and outperforms BigGAN.
- Added pretrained, unconditional models on [FFHQ](https://k00.fr/yndvfu95) and [CelebA-HQ](https://k00.fr/2xkmielf).
- Added accelerated sampling via caching of keys/values in the self-attention operation, used in `scripts/sample_fast.py`.
- Added a checkpoint of a [VQGAN](https://heibox.uni-heidelberg.de/d/2e5662443a6b4307b470/) trained with f8 compression and Gumbel-Quantization.
See also our updated [reconstruction notebook](https://colab.research.google.com/github/CompVis/taming-transformers/blob/master/scripts/reconstruction_usage.ipynb).
- We added a [colab notebook](https://colab.research.google.com/github/CompVis/taming-transformers/blob/master/scripts/reconstruction_usage.ipynb) which compares two VQGANs and OpenAI's [DALL-E](https://github.com/openai/DALL-E). See also [this section](#more-resources).
- We now include an overview of pretrained models in [Tab.1](#overview-of-pretrained-models). We added models for [COCO](#coco) and [ADE20k](#ade20k).
- The streamlit demo now supports image completions.
- We now include a couple of examples from the D-RIN dataset so you can run the
[D-RIN demo](#d-rin) without preparing the dataset first.
- You can now jump right into sampling with our [Colab quickstart notebook](https://colab.research.google.com/github/CompVis/taming-transformers/blob/master/scripts/taming-transformers.ipynb).
## Requirements
A suitable [conda](https://conda.io/) environment named `taming` can be created
and activated with:
```
conda env create -f environment.yaml
conda activate taming
```
## Overview of pretrained models
The following table provides an overview of all models that are currently available.
FID scores were evaluated using [torch-fidelity](https://github.com/toshas/torch-fidelity).
For reference, we also include a link to the recently released autoencoder of the [DALL-E](https://github.com/openai/DALL-E) model.
See the corresponding [colab
notebook](https://colab.research.google.com/github/CompVis/taming-transformers/blob/master/scripts/reconstruction_usage.ipynb)
for a comparison and discussion of reconstruction capabilities.
| Dataset | FID vs train | FID vs val | Link | Samples (256x256) | Comments
| ------------- | ------------- | ------------- |------------- | ------------- |------------- |
| FFHQ (f=16) | 9.6 | -- | [ffhq_transformer](https://k00.fr/yndvfu95) | [ffhq_samples](https://k00.fr/j626x093) |
| CelebA-HQ (f=16) | 10.2 | -- | [celebahq_transformer](https://k00.fr/2xkmielf) | [celebahq_samples](https://k00.fr/j626x093) |
| ADE20K (f=16) | -- | 35.5 | [ade20k_transformer](https://k00.fr/ot46cksa) | [ade20k_samples.zip](https://heibox.uni-heidelberg.de/f/70bb78cbaf844501b8fb/) [2k] | evaluated on val split (2k images)
| COCO-Stuff (f=16) | -- | 20.4 | [coco_transformer](https://k00.fr/2zz6i2ce) | [coco_samples.zip](https://heibox.uni-heidelberg.de/f/a395a9be612f4a7a8054/) [5k] | evaluated on val split (5k images)
| ImageNet (cIN) (f=16) | 15.98/15.78/6.59/5.88/5.20 | -- | [cin_transformer](https://k00.fr/s511rwcv) | [cin_samples](https://k00.fr/j626x093) | different decoding hyperparameters |
| | | | || |
| FacesHQ (f=16) | -- | -- | [faceshq_transformer](https://k00.fr/qqfl2do8)
| S-FLCKR (f=16) | -- | -- | [sflckr](https://heibox.uni-heidelberg.de/d/73487ab6e5314cb5adba/)
| D-RIN (f=16) | -- | -- | [drin_transformer](https://k00.fr/39jcugc5)
| | | | | || |
| VQGAN ImageNet (f=16), 1024 | 10.54 | 7.94 | [vqgan_imagenet_f16_1024](https://heibox.uni-heidelberg.de/d/8088892a516d4e3baf92/) | [reconstructions](https://k00.fr/j626x093) | Reconstruction-FIDs.
| VQGAN ImageNet (f=16), 16384 | 7.41 | 4.98 |[vqgan_imagenet_f16_16384](https://heibox.uni-heidelberg.de/d/a7530b09fed84f80a887/) | [reconstructions](https://k00.fr/j626x093) | Reconstruction-FIDs.
| VQGAN OpenImages (f=8), 256 | -- | 1.49 |https://ommer-lab.com/files/latent-diffusion/vq-f8-n256.zip | --- | Reconstruction-FIDs. Available via [latent diffusion](https://github.com/CompVis/latent-diffusion).
| VQGAN OpenImages (f=8), 16384 | -- | 1.14 |https://ommer-lab.com/files/latent-diffusion/vq-f8.zip | --- | Reconstruction-FIDs. Available via [latent diffusion](https://github.com/CompVis/latent-diffusion)
| VQGAN OpenImages (f=8), 8192, GumbelQuantization | 3.24 | 1.49 |[vqgan_gumbel_f8](https://heibox.uni-heidelberg.de/d/2e5662443a6b4307b470/) | --- | Reconstruction-FIDs.
| | | | | || |
| DALL-E dVAE (f=8), 8192, GumbelQuantization | 33.88 | 32.01 | https://github.com/openai/DALL-E | [reconstructions](https://k00.fr/j626x093) | Reconstruction-FIDs.
## Running pretrained models
The commands below will start a streamlit demo which supports sampling at
different resolutions and image completions. To run a non-interactive version
of the sampling process, replace `streamlit run scripts/sample_conditional.py --`
by `python scripts/make_samples.py --outdir <path_to_write_samples_to>` and
keep the remaining command line arguments.
To sample from unconditional or class-conditional models,
run `python scripts/sample_fast.py -r <path/to/config_and_checkpoint>`.
We describe below how to use this script to sample from the ImageNet, FFHQ, and CelebA-HQ models,
respectively.
### S-FLCKR
![teaser](assets/sunset_and_ocean.jpg)
You can also [run this model in a Colab
notebook](https://colab.research.google.com/github/CompVis/taming-transformers/blob/master/scripts/taming-transformers.ipynb),
which includes all necessary steps to start sampling.
Download the
[2020-11-09T13-31-51_sflckr](https://heibox.uni-heidelberg.de/d/73487ab6e5314cb5adba/)
folder and place it into `logs`. Then, run
```
streamlit run scripts/sample_conditional.py -- -r logs/2020-11-09T13-31-51_sflckr/
```
### ImageNet
![teaser](assets/imagenet.png)
Download the [2021-04-03T19-39-50_cin_transformer](https://k00.fr/s511rwcv)
folder and place it into logs. Sampling from the class-conditional ImageNet
model does not require any data preparation. To produce 50 samples for each of
the 1000 classes of ImageNet, with k=600 for top-k sampling, p=0.92 for nucleus
sampling and temperature t=1.0, run
```
python scripts/sample_fast.py -r logs/2021-04-03T19-39-50_cin_transformer/ -n 50 -k 600 -t 1.0 -p 0.92 --batch_size 25
```
To restrict the model to certain classes, provide them via the `--classes` argument, separated by
commas. For example, to sample 50 *ostriches*, *border collies* and *whiskey jugs*, run
```
python scripts/sample_fast.py -r logs/2021-04-03T19-39-50_cin_transformer/ -n 50 -k 600 -t 1.0 -p 0.92 --batch_size 25 --classes 9,232,901
```
We recommended to experiment with the autoregressive decoding parameters (top-k, top-p and temperature) for best results.
### FFHQ/CelebA-HQ
Download the [2021-04-23T18-19-01_ffhq_transformer](https://k00.fr/yndvfu95) and
[2021-04-23T18-11-19_celebahq_transformer](https://k00.fr/2xkmielf)
folders and place them into logs.
Again, sampling from these unconditional models does not require any data preparation.
To produce 50000 samples, with k=250 for top-k sampling,
p=1.0 for nucleus sampling and temperature t=1.0, run
```
python scripts/sample_fast.py -r logs/2021-04-23T18-19-01_ffhq_transformer/
```
for FFHQ and
```
python scripts/sample_fast.py -r logs/2021-04-23T18-11-19_celebahq_transformer/
```
to sample from the CelebA-HQ model.
For both models it can be advantageous to vary the top-k/top-p parameters for sampling.
### FacesHQ
![teaser](assets/faceshq.jpg)
Download [2020-11-13T21-41-45_faceshq_transformer](https://k00.fr/qqfl2do8) and
place it into `logs`. Follow the data preparation steps for
[CelebA-HQ](#celeba-hq) and [FFHQ](#ffhq). Run
```
streamlit run scripts/sample_conditional.py -- -r logs/2020-11-13T21-41-45_faceshq_transformer/
```
### D-RIN
![teaser](assets/drin.jpg)
Download [2020-11-20T12-54-32_drin_transformer](https://k00.fr/39jcugc5) and
place it into `logs`. To run the demo on a couple of example depth maps
included in the repository, run
```
streamlit run scripts/sample_conditional.py -- -r logs/2020-11-20T12-54-32_drin_transformer/ --ignore_base_data data="{target: main.DataModuleFromConfig, params: {batch_size: 1, validation: {target: taming.data.imagenet.DRINExamples}}}"
```
To run the demo on the complete validation set, first follow the data preparation steps for
[ImageNet](#imagenet) and then run
```
streamlit run scripts/sample_conditional.py -- -r logs/2020-11-20T12-54-32_drin_transformer/
```
### COCO
Download [2021-01-20T16-04-20_coco_transformer](https://k00.fr/2zz6i2ce) and
place it into `logs`. To run the demo on a couple of example segmentation maps
included in the repository, run
```
streamlit run scripts/sample_conditional.py -- -r logs/2021-01-20T16-04-20_coco_transformer/ --ignore_base_data data="{target: main.DataModuleFromConfig, params: {batch_size: 1, validation: {target: taming.data.coco.Examples}}}"
```
### ADE20k
Download [2020-11-20T21-45-44_ade20k_transformer](https://k00.fr/ot46cksa) and
place it into `logs`. To run the demo on a couple of example segmentation maps
included in the repository, run
```
streamlit run scripts/sample_conditional.py -- -r logs/2020-11-20T21-45-44_ade20k_transformer/ --ignore_base_data data="{target: main.DataModuleFromConfig, params: {batch_size: 1, validation: {target: taming.data.ade20k.Examples}}}"
```
## Scene Image Synthesis
![teaser](assets/scene_images_samples.svg)
Scene image generation based on bounding box conditionals as done in our CVPR2021 AI4CC workshop paper [High-Resolution Complex Scene Synthesis with Transformers](https://arxiv.org/abs/2105.06458) (see talk on [workshop page](https://visual.cs.brown.edu/workshops/aicc2021/#awards)). Supporting the datasets COCO and Open Images.
### Training
Download first-stage models [COCO-8k-VQGAN](https://heibox.uni-heidelberg.de/f/78dea9589974474c97c1/) for COCO or [COCO/Open-Images-8k-VQGAN](https://heibox.uni-heidelberg.de/f/461d9a9f4fcf48ab84f4/) for Open Images.
Change `ckpt_path` in `data/coco_scene_images_transformer.yaml` and `data/open_images_scene_images_transformer.yaml` to point to the downloaded first-stage models.
Download the full COCO/OI datasets and adapt `data_path` in the same files, unless working with the 100 files provided for training and validation suits your needs already.
Code can be run with
`python main.py --base configs/coco_scene_images_transformer.yaml -t True --gpus 0,`
or
`python main.py --base configs/open_images_scene_images_transformer.yaml -t True --gpus 0,`
### Sampling
Train a model as described above or download a pre-trained model:
- [Open Images 1 billion parameter model](https://drive.google.com/file/d/1FEK-Z7hyWJBvFWQF50pzSK9y1W_CJEig/view?usp=sharing) available that trained 100 epochs. On 256x256 pixels, FID 41.48±0.21, SceneFID 14.60±0.15, Inception Score 18.47±0.27. The model was trained with 2d crops of images and is thus well-prepared for the task of generating high-resolution images, e.g. 512x512.
- [Open Images distilled version of the above model with 125 million parameters](https://drive.google.com/file/d/1xf89g0mc78J3d8Bx5YhbK4tNRNlOoYaO) allows for sampling on smaller GPUs (4 GB is enough for sampling 256x256 px images). Model was trained for 60 epochs with 10% soft loss, 90% hard loss. On 256x256 pixels, FID 43.07±0.40, SceneFID 15.93±0.19, Inception Score 17.23±0.11.
- [COCO 30 epochs](https://heibox.uni-heidelberg.de/f/0d0b2594e9074c7e9a33/)
- [COCO 60 epochs](https://drive.google.com/file/d/1bInd49g2YulTJBjU32Awyt5qnzxxG5U9/) (find model statistics for both COCO versions in `assets/coco_scene_images_training.svg`)
When downloading a pre-trained model, remember to change `ckpt_path` in `configs/*project.yaml` to point to your downloaded first-stage model (see ->Training).
Scene image generation can be run with
`python scripts/make_scene_samples.py --outdir=/some/outdir -r /path/to/pretrained/model --resolution=512,512`
## Training on custom data
Training on your own dataset can be beneficial to get better tokens and hence better images for your domain.
Those are the steps to follow to make this work:
1. install the repo with `conda env create -f environment.yaml`, `conda activate taming` and `pip install -e .`
1. put your .jpg files in a folder `your_folder`
2. create 2 text files a `xx_train.txt` and `xx_test.txt` that point to the files in your training and test set respectively (for example `find $(pwd)/your_folder -name "*.jpg" > train.txt`)
3. adapt `configs/custom_vqgan.yaml` to point to these 2 files
4. run `python main.py --base configs/custom_vqgan.yaml -t True --gpus 0,1` to
train on two GPUs. Use `--gpus 0,` (with a trailing comma) to train on a single GPU.
## Data Preparation
### ImageNet
The code will try to download (through [Academic
Torrents](http://academictorrents.com/)) and prepare ImageNet the first time it
is used. However, since ImageNet is quite large, this requires a lot of disk
space and time. If you already have ImageNet on your disk, you can speed things
up by putting the data into
`${XDG_CACHE}/autoencoders/data/ILSVRC2012_{split}/data/` (which defaults to
`~/.cache/autoencoders/data/ILSVRC2012_{split}/data/`), where `{split}` is one
of `train`/`validation`. It should have the following structure:
```
${XDG_CACHE}/autoencoders/data/ILSVRC2012_{split}/data/
├── n01440764
│ ├── n01440764_10026.JPEG
│ ├── n01440764_10027.JPEG
│ ├── ...
├── n01443537
│ ├── n01443537_10007.JPEG
│ ├── n01443537_10014.JPEG
│ ├── ...
├── ...
```
If you haven't extracted the data, you can also place
`ILSVRC2012_img_train.tar`/`ILSVRC2012_img_val.tar` (or symlinks to them) into
`${XDG_CACHE}/autoencoders/data/ILSVRC2012_train/` /
`${XDG_CACHE}/autoencoders/data/ILSVRC2012_validation/`, which will then be
extracted into above structure without downloading it again. Note that this
will only happen if neither a folder
`${XDG_CACHE}/autoencoders/data/ILSVRC2012_{split}/data/` nor a file
`${XDG_CACHE}/autoencoders/data/ILSVRC2012_{split}/.ready` exist. Remove them
if you want to force running the dataset preparation again.
You will then need to prepare the depth data using
[MiDaS](https://github.com/intel-isl/MiDaS). Create a symlink
`data/imagenet_depth` pointing to a folder with two subfolders `train` and
`val`, each mirroring the structure of the corresponding ImageNet folder
described above and containing a `png` file for each of ImageNet's `JPEG`
files. The `png` encodes `float32` depth values obtained from MiDaS as RGBA
images. We provide the script `scripts/extract_depth.py` to generate this data.
**Please note** that this script uses [MiDaS via PyTorch
Hub](https://pytorch.org/hub/intelisl_midas_v2/). When we prepared the data,
the hub provided the [MiDaS
v2.0](https://github.com/intel-isl/MiDaS/releases/tag/v2) version, but now it
provides a v2.1 version. We haven't tested our models with depth maps obtained
via v2.1 and if you want to make sure that things work as expected, you must
adjust the script to make sure it explicitly uses
[v2.0](https://github.com/intel-isl/MiDaS/releases/tag/v2)!
### CelebA-HQ
Create a symlink `data/celebahq` pointing to a folder containing the `.npy`
files of CelebA-HQ (instructions to obtain them can be found in the [PGGAN
repository](https://github.com/tkarras/progressive_growing_of_gans)).
### FFHQ
Create a symlink `data/ffhq` pointing to the `images1024x1024` folder obtained
from the [FFHQ repository](https://github.com/NVlabs/ffhq-dataset).
### S-FLCKR
Unfortunately, we are not allowed to distribute the images we collected for the
S-FLCKR dataset and can therefore only give a description how it was produced.
There are many resources on [collecting images from the
web](https://github.com/adrianmrit/flickrdatasets) to get started.
We collected sufficiently large images from [flickr](https://www.flickr.com)
(see `data/flickr_tags.txt` for a full list of tags used to find images)
and various [subreddits](https://www.reddit.com/r/sfwpornnetwork/wiki/network)
(see `data/subreddits.txt` for all subreddits that were used).
Overall, we collected 107625 images, and split them randomly into 96861
training images and 10764 validation images. We then obtained segmentation
masks for each image using [DeepLab v2](https://arxiv.org/abs/1606.00915)
trained on [COCO-Stuff](https://arxiv.org/abs/1612.03716). We used a [PyTorch
reimplementation](https://github.com/kazuto1011/deeplab-pytorch) and include an
example script for this process in `scripts/extract_segmentation.py`.
### COCO
Create a symlink `data/coco` containing the images from the 2017 split in
`train2017` and `val2017`, and their annotations in `annotations`. Files can be
obtained from the [COCO webpage](https://cocodataset.org/). In addition, we use
the [Stuff+thing PNG-style annotations on COCO 2017
trainval](http://calvin.inf.ed.ac.uk/wp-content/uploads/data/cocostuffdataset/stuffthingmaps_trainval2017.zip)
annotations from [COCO-Stuff](https://github.com/nightrome/cocostuff), which
should be placed under `data/cocostuffthings`.
### ADE20k
Create a symlink `data/ade20k_root` containing the contents of
[ADEChallengeData2016.zip](http://data.csail.mit.edu/places/ADEchallenge/ADEChallengeData2016.zip)
from the [MIT Scene Parsing Benchmark](http://sceneparsing.csail.mit.edu/).
## Training models
### FacesHQ
Train a VQGAN with
```
python main.py --base configs/faceshq_vqgan.yaml -t True --gpus 0,
```
Then, adjust the checkpoint path of the config key
`model.params.first_stage_config.params.ckpt_path` in
`configs/faceshq_transformer.yaml` (or download
[2020-11-09T13-33-36_faceshq_vqgan](https://k00.fr/uxy5usa9) and place into `logs`, which
corresponds to the preconfigured checkpoint path), then run
```
python main.py --base configs/faceshq_transformer.yaml -t True --gpus 0,
```
### D-RIN
Train a VQGAN on ImageNet with
```
python main.py --base configs/imagenet_vqgan.yaml -t True --gpus 0,
```
or download a pretrained one from [2020-09-23T17-56-33_imagenet_vqgan](https://k00.fr/u0j2dtac)
and place under `logs`. If you trained your own, adjust the path in the config
key `model.params.first_stage_config.params.ckpt_path` of
`configs/drin_transformer.yaml`.
Train a VQGAN on Depth Maps of ImageNet with
```
python main.py --base configs/imagenetdepth_vqgan.yaml -t True --gpus 0,
```
or download a pretrained one from [2020-11-03T15-34-24_imagenetdepth_vqgan](https://k00.fr/55rlxs6i)
and place under `logs`. If you trained your own, adjust the path in the config
key `model.params.cond_stage_config.params.ckpt_path` of
`configs/drin_transformer.yaml`.
To train the transformer, run
```
python main.py --base configs/drin_transformer.yaml -t True --gpus 0,
```
## More Resources
### Comparing Different First Stage Models
The reconstruction and compression capabilities of different fist stage models can be analyzed in this [colab notebook](https://colab.research.google.com/github/CompVis/taming-transformers/blob/master/scripts/reconstruction_usage.ipynb).
In particular, the notebook compares two VQGANs with a downsampling factor of f=16 for each and codebook dimensionality of 1024 and 16384,
a VQGAN with f=8 and 8192 codebook entries and the discrete autoencoder of OpenAI's [DALL-E](https://github.com/openai/DALL-E) (which has f=8 and 8192
codebook entries).
![firststages1](assets/first_stage_squirrels.png)
![firststages2](assets/first_stage_mushrooms.png)
### Other
- A [video summary](https://www.youtube.com/watch?v=o7dqGcLDf0A&feature=emb_imp_woyt) by [Two Minute Papers](https://www.youtube.com/channel/UCbfYPyITQ-7l4upoX8nvctg).
- A [video summary](https://www.youtube.com/watch?v=-wDSDtIAyWQ) by [Gradient Dude](https://www.youtube.com/c/GradientDude/about).
- A [weights and biases report summarizing the paper](https://wandb.ai/ayush-thakur/taming-transformer/reports/-Overview-Taming-Transformers-for-High-Resolution-Image-Synthesis---Vmlldzo0NjEyMTY)
by [ayulockin](https://github.com/ayulockin).
- A [video summary](https://www.youtube.com/watch?v=JfUTd8fjtX8&feature=emb_imp_woyt) by [What's AI](https://www.youtube.com/channel/UCUzGQrN-lyyc0BWTYoJM_Sg).
- Take a look at [ak9250's notebook](https://github.com/ak9250/taming-transformers/blob/master/tamingtransformerscolab.ipynb) if you want to run the streamlit demos on Colab.
### Text-to-Image Optimization via CLIP
VQGAN has been successfully used as an image generator guided by the [CLIP](https://github.com/openai/CLIP) model, both for pure image generation
from scratch and image-to-image translation. We recommend the following notebooks/videos/resources:
- [Advadnouns](https://twitter.com/advadnoun/status/1389316507134357506) Patreon and corresponding LatentVision notebooks: https://www.patreon.com/patronizeme
- The [notebook]( https://colab.research.google.com/drive/1L8oL-vLJXVcRzCFbPwOoMkPKJ8-aYdPN) of [Rivers Have Wings](https://twitter.com/RiversHaveWings).
- A [video](https://www.youtube.com/watch?v=90QDe6DQXF4&t=12s) explanation by [Dot CSV](https://www.youtube.com/channel/UCy5znSnfMsDwaLlROnZ7Qbg) (in Spanish, but English subtitles are available)
![txt2img](assets/birddrawnbyachild.png)
Text prompt: *'A bird drawn by a child'*
## Shout-outs
Thanks to everyone who makes their code and models available. In particular,
- The architecture of our VQGAN is inspired by [Denoising Diffusion Probabilistic Models](https://github.com/hojonathanho/diffusion)
- The very hackable transformer implementation [minGPT](https://github.com/karpathy/minGPT)
- The good ol' [PatchGAN](https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix) and [Learned Perceptual Similarity (LPIPS)](https://github.com/richzhang/PerceptualSimilarity)
## BibTeX
```
@misc{esser2020taming,
title={Taming Transformers for High-Resolution Image Synthesis},
author={Patrick Esser and Robin Rombach and Björn Ommer},
year={2020},
eprint={2012.09841},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
```
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with matplotlib (https://matplotlib.org/) -->
<svg
height="362.97781pt"
version="1.1"
viewBox="0 0 1437.4859 362.97781"
width="1437.486pt"
id="svg1096"
sodipodi:docname="coco_scene_images_training.svg"
inkscape:version="1.1.1 (1:1.1+202109281949+c3084ef5ed)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<sodipodi:namedview
id="namedview1098"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="pt"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="0.50026752"
inkscape:cx="894.5214"
inkscape:cy="198.89358"
inkscape:window-width="1848"
inkscape:window-height="1016"
inkscape:window-x="72"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg1096" />
<metadata
id="metadata2">
<rdf:RDF>
<cc:Work>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:date>2021-10-07T13:59:09.893851</dc:date>
<dc:format>image/svg+xml</dc:format>
<dc:creator>
<cc:Agent>
<dc:title>Matplotlib v3.3.3, https://matplotlib.org/</dc:title>
</cc:Agent>
</dc:creator>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6">
<style
type="text/css"
id="style4">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
<defs
id="defs763">
<path
d="m 823.67934,-327.12787 v 6.93277 l 46.22212,137.87623 46.22212,69.03418 46.22212,23.923739 46.2231,14.917821 46.2221,17.951624 v -1.928158 0 l -46.2221,-18.018131 -46.2231,-14.878344 -46.22212,-23.851891 -46.22212,-71.19433 z"
id="m89ce144a55"
style="stroke:#55a868;stroke-opacity:0.2" />
</defs>
<defs
id="defs488">
<path
d="m 466.9032,-72.871147 v 16.379641 l 46.22212,-114.342964 46.22212,-69.913 46.22212,-47.62635 46.22312,6.68524 46.22212,-30.44176 v -14.99753 0 l -46.22212,33.92022 -46.22312,-3.90068 -46.22212,43.80921 -46.22212,70.3262 z"
id="m04b1e6744d"
style="stroke:#dd8452;stroke-opacity:0.2" />
</defs>
<defs
id="defs1009">
<path
d="m 1180.4555,-327.12787 v 3.64642 l 46.2221,157.71249 46.2221,56.82011 46.2221,24.224828 46.2232,18.115524 46.2221,10.116992 v -0.61253 0 l -46.2221,-10.321702 -46.2232,-18.755096 -46.2221,-24.966616 -46.2221,-57.44056 z"
id="m867c8604a3"
style="stroke:#c44e52;stroke-opacity:0.2" />
</defs>
<defs
id="defs282">
<path
d="M 52,44.1875 Q 55.375,50.25 60.0625,53.125 64.75,56 71.09375,56 q 8.546875,0 13.1875,-5.984375 4.640625,-5.96875 4.640625,-17 V 0 h -9.03125 v 32.71875 q 0,7.859375 -2.796875,11.65625 -2.78125,3.8125 -8.484375,3.8125 -6.984375,0 -11.046875,-4.640625 -4.046875,-4.625 -4.046875,-12.640625 V 0 h -9.03125 v 32.71875 q 0,7.90625 -2.78125,11.6875 -2.78125,3.78125 -8.59375,3.78125 -6.890625,0 -10.953125,-4.65625 -4.046875,-4.65625 -4.046875,-12.625 V 0 h -9.03125 v 54.6875 h 9.03125 v -8.5 q 3.078125,5.03125 7.375,7.421875 Q 29.78125,56 35.6875,56 41.65625,56 45.828125,52.96875 50,49.953125 52,44.1875 Z"
id="DejaVuSans-109" />
<path
d="M 18.3125,70.21875 V 54.6875 h 18.5 v -6.984375 h -18.5 v -29.6875 q 0,-6.6875 1.828125,-8.59375 1.828125,-1.90625 7.453125,-1.90625 H 36.8125 V 0 H 27.59375 Q 17.1875,0 13.234375,3.875 9.28125,7.765625 9.28125,18.015625 v 29.6875 H 2.6875 V 54.6875 h 6.59375 v 15.53125 z"
id="DejaVuSans-116" />
<path
d="m 41.109375,46.296875 q -1.515625,0.875 -3.296875,1.28125 Q 36.03125,48 33.890625,48 26.265625,48 22.1875,43.046875 18.109375,38.09375 18.109375,28.8125 V 0 h -9.03125 v 54.6875 h 9.03125 v -8.5 q 2.84375,4.984375 7.375,7.390625 Q 30.03125,56 36.53125,56 q 0.921875,0 2.046875,-0.125 1.125,-0.109375 2.484375,-0.359375 z"
id="DejaVuSans-114" />
<path
d="M 9.421875,54.6875 H 18.40625 V 0 H 9.421875 Z m 0,21.296875 H 18.40625 V 64.59375 H 9.421875 Z"
id="DejaVuSans-105" />
<path
id="DejaVuSans-32"
d="" />
<path
d="M 10.59375,45.40625 H 73.1875 V 37.203125 H 10.59375 Z m 0,-19.921875 H 73.1875 V 17.1875 H 10.59375 Z"
id="DejaVuSans-61" />
<path
d="M 25.390625,72.90625 H 33.6875 L 8.296875,-9.28125 H 0 Z"
id="DejaVuSans-47" />
<path
d="m 44.28125,53.078125 v -8.5 Q 40.484375,46.53125 36.375,47.5 q -4.09375,0.984375 -8.5,0.984375 -6.6875,0 -10.03125,-2.046875 Q 14.5,44.390625 14.5,40.28125 q 0,-3.125 2.390625,-4.90625 2.390625,-1.78125 9.625,-3.390625 l 3.078125,-0.6875 Q 39.15625,29.25 43.1875,25.515625 47.21875,21.78125 47.21875,15.09375 q 0,-7.625 -6.03125,-12.078125 -6.03125,-4.4375 -16.578125,-4.4375 -4.390625,0 -9.15625,0.859375 Q 10.6875,0.296875 5.421875,2 v 9.28125 q 4.984375,-2.59375 9.8125,-3.890625 4.828125,-1.28125 9.578125,-1.28125 6.34375,0 9.75,2.171875 3.421875,2.171875 3.421875,6.125 0,3.65625 -2.46875,5.609375 -2.453125,1.953125 -10.8125,3.765625 l -3.125,0.734375 q -8.34375,1.75 -12.0625,5.390625 -3.703125,3.640625 -3.703125,9.984375 0,7.71875 5.46875,11.90625 Q 16.75,56 26.8125,56 q 4.96875,0 9.359375,-0.734375 4.40625,-0.71875 8.109375,-2.1875 z"
id="DejaVuSans-115" />
</defs>
<defs
id="defs506">
<path
d="M 54.890625,33.015625 V 0 H 45.90625 v 32.71875 q 0,7.765625 -3.03125,11.609375 -3.03125,3.859375 -9.078125,3.859375 -7.28125,0 -11.484375,-4.640625 -4.203125,-4.625 -4.203125,-12.640625 V 0 h -9.03125 v 54.6875 h 9.03125 v -8.5 q 3.234375,4.9375 7.59375,7.375 4.375,2.4375 10.09375,2.4375 9.421875,0 14.25,-5.828125 4.84375,-5.828125 4.84375,-17.15625 z"
id="DejaVuSans-110" />
<path
d="m 50.984375,-16.609375 v -6.96875 h -51.96875 v 6.96875 z"
id="DejaVuSans-95" />
</defs>
<defs
id="defs781">
<path
d="M 37.109375,75.984375 V 68.5 h -8.59375 q -4.828125,0 -6.71875,-1.953125 -1.875,-1.953125 -1.875,-7.03125 V 54.6875 H 34.71875 V 47.703125 H 19.921875 V 0 h -9.03125 V 47.703125 H 2.296875 V 54.6875 h 8.59375 V 58.5 q 0,9.125 4.25,13.296875 4.25,4.1875 13.46875,4.1875 z"
id="DejaVuSans-102" />
<path
d="m 45.40625,46.390625 v 29.59375 h 8.984375 V 0 H 45.40625 v 8.203125 q -2.828125,-4.875 -7.15625,-7.25 -4.3125,-2.375 -10.375,-2.375 -9.90625,0 -16.140625,7.90625 -6.21875,7.921875 -6.21875,20.8125 0,12.890625 6.21875,20.796875 Q 17.96875,56 27.875,56 q 6.0625,0 10.375,-2.375 4.328125,-2.359375 7.15625,-7.234375 z M 14.796875,27.296875 q 0,-9.90625 4.078125,-15.546875 4.078125,-5.640625 11.203125,-5.640625 7.125,0 11.21875,5.640625 4.109375,5.640625 4.109375,15.546875 0,9.90625 -4.109375,15.546875 -4.09375,5.640625 -11.21875,5.640625 -7.125,0 -11.203125,-5.640625 -4.078125,-5.640625 -4.078125,-15.546875 z"
id="DejaVuSans-100" />
</defs>
</defs>
<path
d="M 0,362.97781 H 1437.486 V 0 H 0 Z"
style="fill:#ffffff"
id="path8" />
<path
d="M 49.807187,320.01812 H 359.95763 V 22.318125 H 49.807187 Z"
style="fill:#eaeaf2"
id="path11" />
<g
id="line2d_1">
<path
clip-path="url(#p33d8bb518f)"
d="M 59.283714,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path14" />
</g>
<g
id="text_1">
<!-- 0 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,55.784339,337.87641)"
id="g22">
<defs
id="defs18">
<path
d="m 31.78125,66.40625 q -7.609375,0 -11.453125,-7.5 Q 16.5,51.421875 16.5,36.375 q 0,-14.984375 3.828125,-22.484375 3.84375,-7.5 11.453125,-7.5 7.671875,0 11.5,7.5 3.84375,7.5 3.84375,22.484375 0,15.046875 -3.84375,22.53125 -3.828125,7.5 -11.5,7.5 z m 0,7.8125 q 12.265625,0 18.734375,-9.703125 6.46875,-9.6875 6.46875,-28.140625 0,-18.40625 -6.46875,-28.109375 -6.46875,-9.6875 -18.734375,-9.6875 -12.25,0 -18.71875,9.6875 Q 6.59375,17.96875 6.59375,36.375 q 0,18.453125 6.46875,28.140625 6.46875,9.703125 18.71875,9.703125 z"
id="DejaVuSans-48" />
</defs>
<use
xlink:href="#DejaVuSans-48"
id="use20"
x="0"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_2">
<path
clip-path="url(#p33d8bb518f)"
d="M 106.27604,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path26" />
</g>
<g
id="text_2">
<!-- 10 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,99.27729,337.87641)"
id="g36">
<defs
id="defs30">
<path
d="m 12.40625,8.296875 h 16.109375 v 55.625 L 10.984375,60.40625 v 8.984375 l 17.4375,3.515625 H 38.28125 V 8.296875 H 54.390625 V 0 H 12.40625 Z"
id="DejaVuSans-49" />
</defs>
<use
xlink:href="#DejaVuSans-49"
id="use32"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use34"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_3">
<path
clip-path="url(#p33d8bb518f)"
d="M 153.26837,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path40" />
</g>
<g
id="text_3">
<!-- 20 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,146.26962,337.87641)"
id="g50">
<defs
id="defs44">
<path
d="M 19.1875,8.296875 H 53.609375 V 0 H 7.328125 v 8.296875 q 5.609375,5.8125 15.296875,15.59375 9.703125,9.796875 12.1875,12.640625 4.734375,5.3125 6.609375,9 1.890625,3.6875 1.890625,7.25 0,5.8125 -4.078125,9.46875 -4.078125,3.671875 -10.625,3.671875 -4.640625,0 -9.796875,-1.609375 -5.140625,-1.609375 -11,-4.890625 v 9.96875 Q 13.765625,71.78125 18.9375,73 q 5.1875,1.21875 9.484375,1.21875 11.328125,0 18.0625,-5.671875 6.734375,-5.65625 6.734375,-15.125 0,-4.5 -1.6875,-8.53125 Q 49.859375,40.875 45.40625,35.40625 44.1875,33.984375 37.640625,27.21875 31.109375,20.453125 19.1875,8.296875 Z"
id="DejaVuSans-50" />
</defs>
<use
xlink:href="#DejaVuSans-50"
id="use46"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use48"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_4">
<path
clip-path="url(#p33d8bb518f)"
d="M 200.26069,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path54" />
</g>
<g
id="text_4">
<!-- 30 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,193.26194,337.87641)"
id="g64">
<defs
id="defs58">
<path
d="M 40.578125,39.3125 Q 47.65625,37.796875 51.625,33 q 3.984375,-4.78125 3.984375,-11.8125 0,-10.78125 -7.421875,-16.703125 -7.421875,-5.90625 -21.09375,-5.90625 -4.578125,0 -9.4375,0.90625 -4.859375,0.90625 -10.03125,2.71875 v 9.515625 q 4.09375,-2.390625 8.96875,-3.609375 4.890625,-1.21875 10.21875,-1.21875 9.265625,0 14.125,3.65625 4.859375,3.65625 4.859375,10.640625 0,6.453125 -4.515625,10.078125 -4.515625,3.640625 -12.5625,3.640625 h -8.5 v 8.109375 h 8.890625 q 7.265625,0 11.125,2.90625 3.859375,2.90625 3.859375,8.375 0,5.609375 -3.984375,8.609375 -3.96875,3.015625 -11.390625,3.015625 -4.0625,0 -8.703125,-0.890625 Q 15.375,64.15625 9.8125,62.3125 v 8.78125 q 5.625,1.5625 10.53125,2.34375 4.90625,0.78125 9.25,0.78125 11.234375,0 17.765625,-5.109375 6.546875,-5.09375 6.546875,-13.78125 0,-6.0625 -3.46875,-10.234375 -3.46875,-4.171875 -9.859375,-5.78125 z"
id="DejaVuSans-51" />
</defs>
<use
xlink:href="#DejaVuSans-51"
id="use60"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use62"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_5">
<path
clip-path="url(#p33d8bb518f)"
d="M 247.25302,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path68" />
</g>
<g
id="text_5">
<!-- 40 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,240.25427,337.87641)"
id="g78">
<defs
id="defs72">
<path
d="M 37.796875,64.3125 12.890625,25.390625 h 24.90625 z m -2.59375,8.59375 h 12.40625 V 25.390625 h 10.40625 V 17.1875 H 47.609375 V 0 h -9.8125 V 17.1875 H 4.890625 v 9.515625 z"
id="DejaVuSans-52" />
</defs>
<use
xlink:href="#DejaVuSans-52"
id="use74"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use76"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_6">
<path
clip-path="url(#p33d8bb518f)"
d="M 294.24534,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path82" />
</g>
<g
id="text_6">
<!-- 50 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,287.2466,337.87641)"
id="g92">
<defs
id="defs86">
<path
d="m 10.796875,72.90625 h 38.71875 v -8.3125 h -29.6875 V 46.734375 q 2.140625,0.734375 4.28125,1.09375 2.15625,0.359375 4.3125,0.359375 Q 40.625,48.1875 47.75,41.5 54.890625,34.8125 54.890625,23.390625 54.890625,11.625 47.5625,5.09375 40.234375,-1.421875 26.90625,-1.421875 q -4.59375,0 -9.359375,0.78125 -4.75,0.78125 -9.828125,2.34375 V 11.625 q 4.390625,-2.390625 9.078125,-3.5625 4.6875,-1.171875 9.90625,-1.171875 8.453125,0 13.375,4.4375 4.9375,4.4375 4.9375,12.0625 0,7.609375 -4.9375,12.046875 -4.921875,4.453125 -13.375,4.453125 -3.953125,0 -7.890625,-0.875 -3.921875,-0.875 -8.015625,-2.734375 z"
id="DejaVuSans-53" />
</defs>
<use
xlink:href="#DejaVuSans-53"
id="use88"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use90"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_7">
<path
clip-path="url(#p33d8bb518f)"
d="M 341.23767,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path96" />
</g>
<g
id="text_7">
<!-- 60 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,334.23892,337.87641)"
id="g106">
<defs
id="defs100">
<path
d="m 33.015625,40.375 q -6.640625,0 -10.53125,-4.546875 -3.875,-4.53125 -3.875,-12.4375 0,-7.859375 3.875,-12.4375 3.890625,-4.5625 10.53125,-4.5625 6.640625,0 10.515625,4.5625 3.875,4.578125 3.875,12.4375 0,7.90625 -3.875,12.4375 Q 39.65625,40.375 33.015625,40.375 Z M 52.59375,71.296875 V 62.3125 q -3.71875,1.75 -7.5,2.671875 -3.78125,0.9375 -7.5,0.9375 -9.765625,0 -14.921875,-6.59375 -5.140625,-6.59375 -5.875,-19.921875 2.875,4.25 7.21875,6.515625 4.359375,2.265625 9.578125,2.265625 10.984375,0 17.359375,-6.671875 6.375,-6.65625 6.375,-18.125 0,-11.234375 -6.640625,-18.03125 -6.640625,-6.78125 -17.671875,-6.78125 -12.65625,0 -19.34375,9.6875 -6.6875,9.703125 -6.6875,28.109375 0,17.28125 8.203125,27.5625 8.203125,10.28125 22.015625,10.28125 3.71875,0 7.5,-0.734375 3.78125,-0.734375 7.890625,-2.1875 z"
id="DejaVuSans-54" />
</defs>
<use
xlink:href="#DejaVuSans-54"
id="use102"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use104"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
style="fill:#262626"
transform="matrix(0.12,0,0,-0.12,186.60866,353.28219)"
id="g127">
<defs
id="defs115">
<path
d="m 56.203125,29.59375 v -4.390625 h -41.3125 q 0.59375,-9.28125 5.59375,-14.140625 5,-4.859375 13.9375,-4.859375 5.171875,0 10.03125,1.265625 4.859375,1.265625 9.65625,3.8125 v -8.5 q -4.84375,-2.046875 -9.921875,-3.125 -5.078125,-1.078125 -10.296875,-1.078125 -13.09375,0 -20.734375,7.609375 -7.640625,7.625 -7.640625,20.625 0,13.421875 7.25,21.296875 Q 20.015625,56 32.328125,56 q 11.03125,0 17.453125,-7.109375 6.421875,-7.09375 6.421875,-19.296875 z m -8.984375,2.640625 q -0.09375,7.359375 -4.125,11.75 -4.03125,4.40625 -10.671875,4.40625 -7.515625,0 -12.03125,-4.25 -4.515625,-4.25 -5.203125,-11.96875 z"
id="DejaVuSans-101" />
<path
d="m 18.109375,8.203125 v -29 H 9.078125 V 54.6875 h 9.03125 v -8.296875 q 2.84375,4.875 7.15625,7.234375 Q 29.59375,56 35.59375,56 q 9.96875,0 16.1875,-7.90625 6.234375,-7.90625 6.234375,-20.796875 0,-12.890625 -6.234375,-20.8125 -6.21875,-7.90625 -16.1875,-7.90625 -6,0 -10.328125,2.375 -4.3125,2.375 -7.15625,7.25 z M 48.6875,27.296875 q 0,9.90625 -4.078125,15.546875 -4.078125,5.640625 -11.203125,5.640625 -7.140625,0 -11.21875,-5.640625 -4.078125,-5.640625 -4.078125,-15.546875 0,-9.90625 4.078125,-15.546875 4.078125,-5.640625 11.21875,-5.640625 7.125,0 11.203125,5.640625 4.078125,5.640625 4.078125,15.546875 z"
id="DejaVuSans-112" />
<path
d="m 30.609375,48.390625 q -7.21875,0 -11.421875,-5.640625 -4.203125,-5.640625 -4.203125,-15.453125 0,-9.8125 4.171875,-15.453125 4.1875,-5.640625 11.453125,-5.640625 7.1875,0 11.375,5.65625 4.203125,5.671875 4.203125,15.4375 0,9.71875 -4.203125,15.40625 -4.1875,5.6875 -11.375,5.6875 z m 0,7.609375 q 11.71875,0 18.40625,-7.625 6.703125,-7.609375 6.703125,-21.078125 0,-13.421875 -6.703125,-21.078125 -6.6875,-7.640625 -18.40625,-7.640625 -11.765625,0 -18.4375,7.640625 -6.65625,7.65625 -6.65625,21.078125 0,13.46875 6.65625,21.078125 Q 18.84375,56 30.609375,56 Z"
id="DejaVuSans-111" />
<path
d="M 48.78125,52.59375 V 44.1875 q -3.8125,2.109375 -7.640625,3.15625 -3.828125,1.046875 -7.734375,1.046875 -8.75,0 -13.59375,-5.546875 -4.828125,-5.53125 -4.828125,-15.546875 0,-10.015625 4.828125,-15.5625 4.84375,-5.53125 13.59375,-5.53125 3.90625,0 7.734375,1.046875 3.828125,1.046875 7.640625,3.15625 v -8.3125 q -3.765625,-1.75 -7.796875,-2.625 -4.015625,-0.890625 -8.5625,-0.890625 -12.359375,0 -19.640625,7.765625 -7.265625,7.765625 -7.265625,20.953125 0,13.375 7.34375,21.03125 Q 20.21875,56 33.015625,56 q 4.140625,0 8.09375,-0.859375 3.953125,-0.84375 7.671875,-2.546875 z"
id="DejaVuSans-99" />
<path
d="M 54.890625,33.015625 V 0 H 45.90625 v 32.71875 q 0,7.765625 -3.03125,11.609375 -3.03125,3.859375 -9.078125,3.859375 -7.28125,0 -11.484375,-4.640625 -4.203125,-4.625 -4.203125,-12.640625 V 0 h -9.03125 v 75.984375 h 9.03125 V 46.1875 q 3.234375,4.9375 7.59375,7.375 4.375,2.4375 10.09375,2.4375 9.421875,0 14.25,-5.828125 4.84375,-5.828125 4.84375,-17.15625 z"
id="DejaVuSans-104" />
</defs>
<use
xlink:href="#DejaVuSans-101"
id="use117"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="61.523438"
xlink:href="#DejaVuSans-112"
id="use119"
y="0"
width="100%"
height="100%" />
<use
x="125"
xlink:href="#DejaVuSans-111"
id="use121"
y="0"
width="100%"
height="100%" />
<use
x="186.18164"
xlink:href="#DejaVuSans-99"
id="use123"
y="0"
width="100%"
height="100%" />
<use
x="241.16211"
xlink:href="#DejaVuSans-104"
id="use125"
y="0"
width="100%"
height="100%" />
</g>
<g
id="line2d_8">
<path
clip-path="url(#p33d8bb518f)"
d="M 49.807187,297.68048 H 359.95763"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path131" />
</g>
<g
id="text_9">
<!-- 5.0 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,22.81375,301.85962)"
id="g143">
<defs
id="defs135">
<path
d="M 10.6875,12.40625 H 21 V 0 H 10.6875 Z"
id="DejaVuSans-46" />
</defs>
<use
xlink:href="#DejaVuSans-53"
id="use137"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-46"
id="use139"
y="0"
width="100%"
height="100%" />
<use
x="95.410156"
xlink:href="#DejaVuSans-48"
id="use141"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_9">
<path
clip-path="url(#p33d8bb518f)"
d="M 49.807187,261.98413 H 359.95763"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path147" />
</g>
<g
id="text_10">
<!-- 5.1 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,22.81375,266.16327)"
id="g156">
<use
xlink:href="#DejaVuSans-53"
id="use150"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-46"
id="use152"
y="0"
width="100%"
height="100%" />
<use
x="95.410156"
xlink:href="#DejaVuSans-49"
id="use154"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_10">
<path
clip-path="url(#p33d8bb518f)"
d="M 49.807187,226.28778 H 359.95763"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path160" />
</g>
<g
id="text_11">
<!-- 5.2 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,22.81375,230.46692)"
id="g169">
<use
xlink:href="#DejaVuSans-53"
id="use163"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-46"
id="use165"
y="0"
width="100%"
height="100%" />
<use
x="95.410156"
xlink:href="#DejaVuSans-50"
id="use167"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_11">
<path
clip-path="url(#p33d8bb518f)"
d="M 49.807187,190.59142 H 359.95763"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path173" />
</g>
<g
id="text_12">
<!-- 5.3 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,22.81375,194.77056)"
id="g182">
<use
xlink:href="#DejaVuSans-53"
id="use176"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-46"
id="use178"
y="0"
width="100%"
height="100%" />
<use
x="95.410156"
xlink:href="#DejaVuSans-51"
id="use180"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_12">
<path
clip-path="url(#p33d8bb518f)"
d="M 49.807187,154.89507 H 359.95763"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path186" />
</g>
<g
id="text_13">
<!-- 5.4 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,22.81375,159.07421)"
id="g195">
<use
xlink:href="#DejaVuSans-53"
id="use189"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-46"
id="use191"
y="0"
width="100%"
height="100%" />
<use
x="95.410156"
xlink:href="#DejaVuSans-52"
id="use193"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_13">
<path
clip-path="url(#p33d8bb518f)"
d="M 49.807187,119.19872 H 359.95763"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path199" />
</g>
<g
id="text_14">
<!-- 5.5 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,22.81375,123.37786)"
id="g208">
<use
xlink:href="#DejaVuSans-53"
id="use202"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-46"
id="use204"
y="0"
width="100%"
height="100%" />
<use
x="95.410156"
xlink:href="#DejaVuSans-53"
id="use206"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_14">
<path
clip-path="url(#p33d8bb518f)"
d="M 49.807187,83.502363 H 359.95763"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path212" />
</g>
<g
id="text_15">
<!-- 5.6 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,22.81375,87.681504)"
id="g221">
<use
xlink:href="#DejaVuSans-53"
id="use215"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-46"
id="use217"
y="0"
width="100%"
height="100%" />
<use
x="95.410156"
xlink:href="#DejaVuSans-54"
id="use219"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_15">
<path
clip-path="url(#p33d8bb518f)"
d="M 49.807187,47.80601 H 359.95763"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path225" />
</g>
<g
id="text_16">
<!-- 5.7 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,22.81375,51.985151)"
id="g237">
<defs
id="defs229">
<path
d="m 8.203125,72.90625 h 46.875 V 68.703125 L 28.609375,0 H 18.3125 L 43.21875,64.59375 H 8.203125 Z"
id="DejaVuSans-55" />
</defs>
<use
xlink:href="#DejaVuSans-53"
id="use231"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-46"
id="use233"
y="0"
width="100%"
height="100%" />
<use
x="95.410156"
xlink:href="#DejaVuSans-55"
id="use235"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
style="fill:#262626"
transform="matrix(0,-0.12,-0.12,0,16.318125,187.5575)"
id="g257">
<defs
id="defs245">
<path
d="M 2.984375,54.6875 H 12.5 L 29.59375,8.796875 46.6875,54.6875 h 9.515625 L 35.6875,0 H 23.484375 Z"
id="DejaVuSans-118" />
<path
d="m 34.28125,27.484375 q -10.890625,0 -15.09375,-2.484375 -4.203125,-2.484375 -4.203125,-8.5 0,-4.78125 3.15625,-7.59375 3.15625,-2.796875 8.5625,-2.796875 7.484375,0 12,5.296875 4.515625,5.296875 4.515625,14.078125 v 2 z m 17.921875,3.71875 V 0 H 43.21875 v 8.296875 q -3.078125,-4.96875 -7.671875,-7.34375 -4.59375,-2.375 -11.234375,-2.375 -8.390625,0 -13.359375,4.71875 Q 6,8.015625 6,15.921875 q 0,9.21875 6.171875,13.90625 6.1875,4.6875 18.4375,4.6875 H 43.21875 v 0.890625 q 0,6.203125 -4.078125,9.59375 -4.078125,3.390625 -11.453125,3.390625 -4.6875,0 -9.140625,-1.125 -4.4375,-1.125 -8.53125,-3.375 v 8.3125 q 4.921875,1.90625 9.5625,2.84375 Q 24.21875,56 28.609375,56 q 11.875,0 17.734375,-6.15625 5.859375,-6.140625 5.859375,-18.640625 z"
id="DejaVuSans-97" />
<path
d="M 9.421875,75.984375 H 18.40625 V 0 H 9.421875 Z"
id="DejaVuSans-108" />
<path
d="M 8.5,21.578125 V 54.6875 h 8.984375 V 21.921875 q 0,-7.765625 3.015625,-11.65625 3.03125,-3.875 9.09375,-3.875 7.265625,0 11.484375,4.640625 4.234375,4.640625 4.234375,12.65625 v 31 h 8.984375 V 0 H 45.3125 V 8.40625 Q 42.046875,3.421875 37.71875,1 33.40625,-1.421875 27.6875,-1.421875 18.265625,-1.421875 13.375,4.4375 8.5,10.296875 8.5,21.578125 Z M 31.109375,56 Z"
id="DejaVuSans-117" />
</defs>
<use
xlink:href="#DejaVuSans-118"
id="use247"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="59.179688"
xlink:href="#DejaVuSans-97"
id="use249"
y="0"
width="100%"
height="100%" />
<use
x="120.45898"
xlink:href="#DejaVuSans-108"
id="use251"
y="0"
width="100%"
height="100%" />
<use
x="148.24219"
xlink:href="#DejaVuSans-117"
id="use253"
y="0"
width="100%"
height="100%" />
<use
x="211.62109"
xlink:href="#DejaVuSans-101"
id="use255"
y="0"
width="100%"
height="100%" />
</g>
<path
clip-path="url(#p33d8bb518f)"
d="m 63.904935,35.849943 4.622212,70.484717 4.622212,37.27556 4.622213,26.9259 4.622212,23.17967 4.622212,18.83923 4.622213,16.11683 4.622212,11.36533 4.622209,10.39647 4.62222,8.80378 4.62221,6.86845 4.62221,5.26436 4.62221,6.56208 4.62221,4.53499 4.62222,4.67883 4.62221,3.60716 4.62221,3.17789 4.62221,1.52171 4.62222,3.18912 4.62221,3.13227 4.62221,0.48119 4.62221,1.01039 4.62221,2.27439 4.62222,-10e-4 4.62221,-0.57005 4.62221,1.51712 4.62221,-2.51338 4.62222,-2.42009 4.62221,-3.04018 4.62221,-1.37329 4.62221,-4.74231 4.62221,-0.75711 4.62222,-4.57806 4.62221,-2.99287 4.62221,-1.57669 4.62221,-8.81212 4.62222,-1.62571 4.62221,-4.43644 4.62221,-4.00819 4.62221,-5.73858 4.62222,-1.44272 4.62221,-11.37622 4.62221,0.10247 4.62221,-3.82623 4.62222,-9.55323 4.62221,-1.48358 4.62221,-7.98489 4.62221,-5.8979 4.62221,-3.39507 4.62222,-5.52445 4.62221,-6.30284 4.62221,-4.8744 4.62221,-5.53381 4.62221,-9.06932 4.62222,-8.08735 4.62221,0.70945 4.62221,-10.70694 4.62221,-5.5864 4.62222,-5.58556 4.62221,-2.93618 4.62221,-3.76342 4.62221,-8.89808"
style="fill:none;stroke:#4c72b0;stroke-width:1.5;stroke-linecap:round"
id="path261" />
<path
d="M 49.807187,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-width:1.25;stroke-linecap:square;stroke-linejoin:miter"
id="path268" />
<path
d="M 49.807187,320.01812 H 359.95763"
style="fill:none;stroke:#ffffff;stroke-width:1.25;stroke-linecap:square;stroke-linejoin:miter"
id="path271" />
<use
x="322.02148"
xlink:href="#DejaVuSans-32"
id="use296"
y="0"
width="100%"
height="100%"
transform="matrix(0.12,0,0,-0.12,154.21428,16.318125)"
style="fill:#262626" />
<use
x="437.59766"
xlink:href="#DejaVuSans-32"
id="use300"
y="0"
width="100%"
height="100%"
transform="matrix(0.12,0,0,-0.12,154.21428,16.318125)"
style="fill:#262626" />
<path
d="M 406.58333,320.01812 H 716.73377 V 22.318125 H 406.58333 Z"
style="fill:#eaeaf2"
id="path322" />
<g
id="line2d_21">
<path
clip-path="url(#pc9aebdb348)"
d="M 416.05985,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path325" />
</g>
<g
id="text_19">
<!-- 0 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,412.56048,337.87641)"
id="g330">
<use
xlink:href="#DejaVuSans-48"
id="use328"
x="0"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_22">
<path
clip-path="url(#pc9aebdb348)"
d="M 463.05218,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path334" />
</g>
<g
id="text_20">
<!-- 10 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,456.05343,337.87641)"
id="g341">
<use
xlink:href="#DejaVuSans-49"
id="use337"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use339"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_23">
<path
clip-path="url(#pc9aebdb348)"
d="M 510.04451,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path345" />
</g>
<g
id="text_21">
<!-- 20 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,503.04575,337.87641)"
id="g352">
<use
xlink:href="#DejaVuSans-50"
id="use348"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use350"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_24">
<path
clip-path="url(#pc9aebdb348)"
d="M 557.03683,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path356" />
</g>
<g
id="text_22">
<!-- 30 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,550.03808,337.87641)"
id="g363">
<use
xlink:href="#DejaVuSans-51"
id="use359"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use361"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_25">
<path
clip-path="url(#pc9aebdb348)"
d="M 604.02916,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path367" />
</g>
<g
id="text_23">
<!-- 40 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,597.03041,337.87641)"
id="g374">
<use
xlink:href="#DejaVuSans-52"
id="use370"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use372"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_26">
<path
clip-path="url(#pc9aebdb348)"
d="M 651.02148,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path378" />
</g>
<g
id="text_24">
<!-- 50 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,644.02273,337.87641)"
id="g385">
<use
xlink:href="#DejaVuSans-53"
id="use381"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use383"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_27">
<path
clip-path="url(#pc9aebdb348)"
d="M 698.01381,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path389" />
</g>
<g
id="text_25">
<!-- 60 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,691.01506,337.87641)"
id="g396">
<use
xlink:href="#DejaVuSans-54"
id="use392"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use394"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
style="fill:#262626"
transform="matrix(0.12,0,0,-0.12,543.3848,353.28219)"
id="g410">
<use
xlink:href="#DejaVuSans-101"
id="use400"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="61.523438"
xlink:href="#DejaVuSans-112"
id="use402"
y="0"
width="100%"
height="100%" />
<use
x="125"
xlink:href="#DejaVuSans-111"
id="use404"
y="0"
width="100%"
height="100%" />
<use
x="186.18164"
xlink:href="#DejaVuSans-99"
id="use406"
y="0"
width="100%"
height="100%" />
<use
x="241.16211"
xlink:href="#DejaVuSans-104"
id="use408"
y="0"
width="100%"
height="100%" />
</g>
<g
id="line2d_28">
<path
clip-path="url(#pc9aebdb348)"
d="M 406.58333,305.94571 H 716.73377"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path414" />
</g>
<g
id="text_27">
<!-- 16 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,383.08583,310.12485)"
id="g421">
<use
xlink:href="#DejaVuSans-49"
id="use417"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-54"
id="use419"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_29">
<path
clip-path="url(#pc9aebdb348)"
d="M 406.58333,256.40552 H 716.73377"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path425" />
</g>
<g
id="text_28">
<!-- 17 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,383.08583,260.58466)"
id="g432">
<use
xlink:href="#DejaVuSans-49"
id="use428"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-55"
id="use430"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_30">
<path
clip-path="url(#pc9aebdb348)"
d="M 406.58333,206.86533 H 716.73377"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path436" />
</g>
<g
id="text_29">
<!-- 18 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,383.08583,211.04447)"
id="g446">
<defs
id="defs440">
<path
d="m 31.78125,34.625 q -7.03125,0 -11.0625,-3.765625 -4.015625,-3.765625 -4.015625,-10.34375 0,-6.59375 4.015625,-10.359375 4.03125,-3.765625 11.0625,-3.765625 7.03125,0 11.078125,3.78125 4.0625,3.796875 4.0625,10.34375 0,6.578125 -4.03125,10.34375 Q 38.875,34.625 31.78125,34.625 Z m -9.859375,4.1875 Q 15.578125,40.375 12.03125,44.71875 8.5,49.078125 8.5,55.328125 q 0,8.734375 6.21875,13.8125 6.234375,5.078125 17.0625,5.078125 10.890625,0 17.09375,-5.078125 6.203125,-5.078125 6.203125,-13.8125 0,-6.25 -3.546875,-10.609375 Q 48,40.375 41.703125,38.8125 q 7.125,-1.65625 11.09375,-6.5 3.984375,-4.828125 3.984375,-11.796875 0,-10.609375 -6.46875,-16.28125 -6.46875,-5.65625 -18.53125,-5.65625 -12.046875,0 -18.53125,5.65625 -6.46875,5.671875 -6.46875,16.28125 0,6.96875 4,11.796875 4.015625,4.84375 11.140625,6.5 z M 18.3125,54.390625 q 0,-5.65625 3.53125,-8.828125 3.546875,-3.171875 9.9375,-3.171875 6.359375,0 9.9375,3.171875 3.59375,3.171875 3.59375,8.828125 0,5.671875 -3.59375,8.84375 -3.578125,3.171875 -9.9375,3.171875 -6.390625,0 -9.9375,-3.171875 Q 18.3125,60.0625 18.3125,54.390625 Z"
id="DejaVuSans-56" />
</defs>
<use
xlink:href="#DejaVuSans-49"
id="use442"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-56"
id="use444"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_31">
<path
clip-path="url(#pc9aebdb348)"
d="M 406.58333,157.32514 H 716.73377"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path450" />
</g>
<g
id="text_30">
<!-- 19 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,383.08583,161.50428)"
id="g460">
<defs
id="defs454">
<path
d="M 10.984375,1.515625 V 10.5 Q 14.703125,8.734375 18.5,7.8125 q 3.8125,-0.921875 7.484375,-0.921875 9.765625,0 14.90625,6.5625 5.15625,6.5625 5.890625,19.953125 -2.828125,-4.203125 -7.1875,-6.453125 -4.34375,-2.25 -9.609375,-2.25 -10.9375,0 -17.3125,6.609375 -6.375,6.625 -6.375,18.109375 0,11.21875 6.640625,18 6.640625,6.796875 17.671875,6.796875 12.65625,0 19.3125,-9.703125 6.671875,-9.6875 6.671875,-28.140625 0,-17.234375 -8.1875,-27.515625 -8.171875,-10.28125 -21.984375,-10.28125 -3.71875,0 -7.53125,0.734375 -3.796875,0.734375 -7.90625,2.203125 z m 19.625,30.90625 q 6.640625,0 10.515625,4.53125 3.890625,4.546875 3.890625,12.46875 0,7.859375 -3.890625,12.421875 -3.875,4.5625 -10.515625,4.5625 -6.640625,0 -10.515625,-4.5625 -3.875,-4.5625 -3.875,-12.421875 0,-7.921875 3.875,-12.46875 3.875,-4.53125 10.515625,-4.53125 z"
id="DejaVuSans-57" />
</defs>
<use
xlink:href="#DejaVuSans-49"
id="use456"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-57"
id="use458"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_32">
<path
clip-path="url(#pc9aebdb348)"
d="M 406.58333,107.78495 H 716.73377"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path464" />
</g>
<g
id="text_31">
<!-- 20 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,383.08583,111.96409)"
id="g471">
<use
xlink:href="#DejaVuSans-50"
id="use467"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use469"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_33">
<path
clip-path="url(#pc9aebdb348)"
d="M 406.58333,58.244763 H 716.73377"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path475" />
</g>
<g
id="text_32">
<!-- 21 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,383.08583,62.423903)"
id="g482">
<use
xlink:href="#DejaVuSans-50"
id="use478"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-49"
id="use480"
y="0"
width="100%"
height="100%" />
</g>
</g>
<use
style="fill:#dd8452;fill-opacity:0.2;stroke:#dd8452;stroke-opacity:0.2"
x="0"
xlink:href="#m04b1e6744d"
y="362.97781"
id="use490"
width="100%"
height="100%" />
<path
clip-path="url(#pc9aebdb348)"
d="m 466.9032,298.24152 46.22212,-112.55207 46.22212,-69.94726 46.22212,-45.493385 46.22312,4.861021 46.22212,-31.726114"
style="fill:none;stroke:#dd8452;stroke-width:1.5;stroke-linecap:round"
id="path495" />
<path
d="M 406.58333,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-width:1.25;stroke-linecap:square;stroke-linejoin:miter"
id="path498" />
<path
d="M 406.58333,320.01812 H 716.73377"
style="fill:none;stroke:#ffffff;stroke-width:1.25;stroke-linecap:square;stroke-linejoin:miter"
id="path501" />
<use
x="322.02148"
xlink:href="#DejaVuSans-32"
id="use520"
y="0"
width="100%"
height="100%"
transform="matrix(0.12,0,0,-0.12,480.36511,16.318125)"
style="fill:#262626" />
<use
x="437.59766"
xlink:href="#DejaVuSans-32"
id="use524"
y="0"
width="100%"
height="100%"
transform="matrix(0.12,0,0,-0.12,480.36511,16.318125)"
style="fill:#262626" />
<path
d="M 763.35946,320.01812 H 1073.5099 V 22.318125 H 763.35946 Z"
style="fill:#eaeaf2"
id="path564" />
<g
id="line2d_35">
<path
clip-path="url(#p802a2bf9b6)"
d="M 772.83599,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path567" />
</g>
<g
id="text_34">
<!-- 0 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,769.33662,337.87641)"
id="g572">
<use
xlink:href="#DejaVuSans-48"
id="use570"
x="0"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_36">
<path
clip-path="url(#p802a2bf9b6)"
d="M 819.82832,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path576" />
</g>
<g
id="text_35">
<!-- 10 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,812.82957,337.87641)"
id="g583">
<use
xlink:href="#DejaVuSans-49"
id="use579"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use581"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_37">
<path
clip-path="url(#p802a2bf9b6)"
d="M 866.82064,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path587" />
</g>
<g
id="text_36">
<!-- 20 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,859.82189,337.87641)"
id="g594">
<use
xlink:href="#DejaVuSans-50"
id="use590"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use592"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_38">
<path
clip-path="url(#p802a2bf9b6)"
d="M 913.81297,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path598" />
</g>
<g
id="text_37">
<!-- 30 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,906.81422,337.87641)"
id="g605">
<use
xlink:href="#DejaVuSans-51"
id="use601"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use603"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_39">
<path
clip-path="url(#p802a2bf9b6)"
d="M 960.8053,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path609" />
</g>
<g
id="text_38">
<!-- 40 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,953.80655,337.87641)"
id="g616">
<use
xlink:href="#DejaVuSans-52"
id="use612"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use614"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_40">
<path
clip-path="url(#p802a2bf9b6)"
d="M 1007.7976,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path620" />
</g>
<g
id="text_39">
<!-- 50 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,1000.7989,337.87641)"
id="g627">
<use
xlink:href="#DejaVuSans-53"
id="use623"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use625"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_41">
<path
clip-path="url(#p802a2bf9b6)"
d="M 1054.7899,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path631" />
</g>
<g
id="text_40">
<!-- 60 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,1047.7912,337.87641)"
id="g638">
<use
xlink:href="#DejaVuSans-54"
id="use634"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use636"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
style="fill:#262626"
transform="matrix(0.12,0,0,-0.12,900.16094,353.28219)"
id="g652">
<use
xlink:href="#DejaVuSans-101"
id="use642"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="61.523438"
xlink:href="#DejaVuSans-112"
id="use644"
y="0"
width="100%"
height="100%" />
<use
x="125"
xlink:href="#DejaVuSans-111"
id="use646"
y="0"
width="100%"
height="100%" />
<use
x="186.18164"
xlink:href="#DejaVuSans-99"
id="use648"
y="0"
width="100%"
height="100%" />
<use
x="241.16211"
xlink:href="#DejaVuSans-104"
id="use650"
y="0"
width="100%"
height="100%" />
</g>
<g
id="line2d_42">
<path
clip-path="url(#p802a2bf9b6)"
d="M 763.35946,287.1221 H 1073.5099"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path656" />
</g>
<g
id="text_42">
<!-- 35.0 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,729.36728,291.30124)"
id="g667">
<use
xlink:href="#DejaVuSans-51"
id="use659"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-53"
id="use661"
y="0"
width="100%"
height="100%" />
<use
x="127.24609"
xlink:href="#DejaVuSans-46"
id="use663"
y="0"
width="100%"
height="100%" />
<use
x="159.0332"
xlink:href="#DejaVuSans-48"
id="use665"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_43">
<path
clip-path="url(#p802a2bf9b6)"
d="M 763.35946,249.05892 H 1073.5099"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path671" />
</g>
<g
id="text_43">
<!-- 37.5 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,729.36728,253.23807)"
id="g682">
<use
xlink:href="#DejaVuSans-51"
id="use674"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-55"
id="use676"
y="0"
width="100%"
height="100%" />
<use
x="127.24609"
xlink:href="#DejaVuSans-46"
id="use678"
y="0"
width="100%"
height="100%" />
<use
x="159.0332"
xlink:href="#DejaVuSans-53"
id="use680"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_44">
<path
clip-path="url(#p802a2bf9b6)"
d="M 763.35946,210.99575 H 1073.5099"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path686" />
</g>
<g
id="text_44">
<!-- 40.0 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,729.36728,215.17489)"
id="g697">
<use
xlink:href="#DejaVuSans-52"
id="use689"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use691"
y="0"
width="100%"
height="100%" />
<use
x="127.24609"
xlink:href="#DejaVuSans-46"
id="use693"
y="0"
width="100%"
height="100%" />
<use
x="159.0332"
xlink:href="#DejaVuSans-48"
id="use695"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_45">
<path
clip-path="url(#p802a2bf9b6)"
d="M 763.35946,172.93257 H 1073.5099"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path701" />
</g>
<g
id="text_45">
<!-- 42.5 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,729.36728,177.11171)"
id="g712">
<use
xlink:href="#DejaVuSans-52"
id="use704"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-50"
id="use706"
y="0"
width="100%"
height="100%" />
<use
x="127.24609"
xlink:href="#DejaVuSans-46"
id="use708"
y="0"
width="100%"
height="100%" />
<use
x="159.0332"
xlink:href="#DejaVuSans-53"
id="use710"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_46">
<path
clip-path="url(#p802a2bf9b6)"
d="M 763.35946,134.86939 H 1073.5099"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path716" />
</g>
<g
id="text_46">
<!-- 45.0 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,729.36728,139.04854)"
id="g727">
<use
xlink:href="#DejaVuSans-52"
id="use719"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-53"
id="use721"
y="0"
width="100%"
height="100%" />
<use
x="127.24609"
xlink:href="#DejaVuSans-46"
id="use723"
y="0"
width="100%"
height="100%" />
<use
x="159.0332"
xlink:href="#DejaVuSans-48"
id="use725"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_47">
<path
clip-path="url(#p802a2bf9b6)"
d="M 763.35946,96.806218 H 1073.5099"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path731" />
</g>
<g
id="text_47">
<!-- 47.5 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,729.36728,100.98536)"
id="g742">
<use
xlink:href="#DejaVuSans-52"
id="use734"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-55"
id="use736"
y="0"
width="100%"
height="100%" />
<use
x="127.24609"
xlink:href="#DejaVuSans-46"
id="use738"
y="0"
width="100%"
height="100%" />
<use
x="159.0332"
xlink:href="#DejaVuSans-53"
id="use740"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_48">
<path
clip-path="url(#p802a2bf9b6)"
d="M 763.35946,58.743042 H 1073.5099"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path746" />
</g>
<g
id="text_48">
<!-- 50.0 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,729.36728,62.922182)"
id="g757">
<use
xlink:href="#DejaVuSans-53"
id="use749"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use751"
y="0"
width="100%"
height="100%" />
<use
x="127.24609"
xlink:href="#DejaVuSans-46"
id="use753"
y="0"
width="100%"
height="100%" />
<use
x="159.0332"
xlink:href="#DejaVuSans-48"
id="use755"
y="0"
width="100%"
height="100%" />
</g>
</g>
<use
style="fill:#55a868;fill-opacity:0.2;stroke:#55a868;stroke-opacity:0.2"
x="0"
xlink:href="#m89ce144a55"
y="362.97781"
id="use765"
width="100%"
height="100%" />
<path
clip-path="url(#p802a2bf9b6)"
d="m 823.67934,39.29376 46.22212,139.28081 46.22212,70.10897 46.22212,23.95389 46.2231,14.91079 46.2221,17.98692"
style="fill:none;stroke:#55a868;stroke-width:1.5;stroke-linecap:round"
id="path770" />
<path
d="M 763.35946,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-width:1.25;stroke-linecap:square;stroke-linejoin:miter"
id="path773" />
<path
d="M 763.35946,320.01812 H 1073.5099"
style="fill:none;stroke:#ffffff;stroke-width:1.25;stroke-linecap:square;stroke-linejoin:miter"
id="path776" />
<use
x="322.02148"
xlink:href="#DejaVuSans-32"
id="use795"
y="0"
width="100%"
height="100%"
transform="matrix(0.12,0,0,-0.12,857.31531,16.318125)"
style="fill:#262626" />
<use
x="437.59766"
xlink:href="#DejaVuSans-32"
id="use799"
y="0"
width="100%"
height="100%"
transform="matrix(0.12,0,0,-0.12,857.31531,16.318125)"
style="fill:#262626" />
<path
d="M 1120.1356,320.01812 H 1430.286 V 22.318125 h -310.1504 z"
style="fill:#eaeaf2"
id="path827" />
<g
id="line2d_50">
<path
clip-path="url(#p3d5e40a9df)"
d="M 1129.6121,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path830" />
</g>
<g
id="text_50">
<!-- 0 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,1126.1128,337.87641)"
id="g835">
<use
xlink:href="#DejaVuSans-48"
id="use833"
x="0"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_51">
<path
clip-path="url(#p3d5e40a9df)"
d="M 1176.6045,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path839" />
</g>
<g
id="text_51">
<!-- 10 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,1169.6057,337.87641)"
id="g846">
<use
xlink:href="#DejaVuSans-49"
id="use842"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use844"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_52">
<path
clip-path="url(#p3d5e40a9df)"
d="M 1223.5968,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path850" />
</g>
<g
id="text_52">
<!-- 20 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,1216.598,337.87641)"
id="g857">
<use
xlink:href="#DejaVuSans-50"
id="use853"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use855"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_53">
<path
clip-path="url(#p3d5e40a9df)"
d="M 1270.5891,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path861" />
</g>
<g
id="text_53">
<!-- 30 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,1263.5904,337.87641)"
id="g868">
<use
xlink:href="#DejaVuSans-51"
id="use864"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use866"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_54">
<path
clip-path="url(#p3d5e40a9df)"
d="M 1317.5814,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path872" />
</g>
<g
id="text_54">
<!-- 40 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,1310.5827,337.87641)"
id="g879">
<use
xlink:href="#DejaVuSans-52"
id="use875"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use877"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_55">
<path
clip-path="url(#p3d5e40a9df)"
d="M 1364.5738,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path883" />
</g>
<g
id="text_55">
<!-- 50 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,1357.575,337.87641)"
id="g890">
<use
xlink:href="#DejaVuSans-53"
id="use886"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use888"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_56">
<path
clip-path="url(#p3d5e40a9df)"
d="M 1411.5661,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path894" />
</g>
<g
id="text_56">
<!-- 60 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,1404.5673,337.87641)"
id="g901">
<use
xlink:href="#DejaVuSans-54"
id="use897"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use899"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
style="fill:#262626"
transform="matrix(0.12,0,0,-0.12,1256.9371,353.28219)"
id="g915">
<use
xlink:href="#DejaVuSans-101"
id="use905"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="61.523438"
xlink:href="#DejaVuSans-112"
id="use907"
y="0"
width="100%"
height="100%" />
<use
x="125"
xlink:href="#DejaVuSans-111"
id="use909"
y="0"
width="100%"
height="100%" />
<use
x="186.18164"
xlink:href="#DejaVuSans-99"
id="use911"
y="0"
width="100%"
height="100%" />
<use
x="241.16211"
xlink:href="#DejaVuSans-104"
id="use913"
y="0"
width="100%"
height="100%" />
</g>
<g
id="line2d_57">
<path
clip-path="url(#p3d5e40a9df)"
d="M 1120.1356,289.97586 H 1430.286"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path919" />
</g>
<g
id="text_58">
<!-- 10 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,1096.6381,294.155)"
id="g926">
<use
xlink:href="#DejaVuSans-49"
id="use922"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use924"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_58">
<path
clip-path="url(#p3d5e40a9df)"
d="M 1120.1356,254.57701 H 1430.286"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path930" />
</g>
<g
id="text_59">
<!-- 12 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,1096.6381,258.75615)"
id="g937">
<use
xlink:href="#DejaVuSans-49"
id="use933"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-50"
id="use935"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_59">
<path
clip-path="url(#p3d5e40a9df)"
d="M 1120.1356,219.17816 H 1430.286"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path941" />
</g>
<g
id="text_60">
<!-- 14 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,1096.6381,223.3573)"
id="g948">
<use
xlink:href="#DejaVuSans-49"
id="use944"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-52"
id="use946"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_60">
<path
clip-path="url(#p3d5e40a9df)"
d="M 1120.1356,183.77931 H 1430.286"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path952" />
</g>
<g
id="text_61">
<!-- 16 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,1096.6381,187.95845)"
id="g959">
<use
xlink:href="#DejaVuSans-49"
id="use955"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-54"
id="use957"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_61">
<path
clip-path="url(#p3d5e40a9df)"
d="M 1120.1356,148.38046 H 1430.286"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path963" />
</g>
<g
id="text_62">
<!-- 18 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,1096.6381,152.5596)"
id="g970">
<use
xlink:href="#DejaVuSans-49"
id="use966"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-56"
id="use968"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_62">
<path
clip-path="url(#p3d5e40a9df)"
d="M 1120.1356,112.98161 H 1430.286"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path974" />
</g>
<g
id="text_63">
<!-- 20 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,1096.6381,117.16075)"
id="g981">
<use
xlink:href="#DejaVuSans-50"
id="use977"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-48"
id="use979"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_63">
<path
clip-path="url(#p3d5e40a9df)"
d="M 1120.1356,77.582761 H 1430.286"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path985" />
</g>
<g
id="text_64">
<!-- 22 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,1096.6381,81.761901)"
id="g992">
<use
xlink:href="#DejaVuSans-50"
id="use988"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-50"
id="use990"
y="0"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_64">
<path
clip-path="url(#p3d5e40a9df)"
d="M 1120.1356,42.183912 H 1430.286"
style="fill:none;stroke:#ffffff;stroke-linecap:round"
id="path996" />
</g>
<g
id="text_65">
<!-- 24 -->
<g
style="fill:#262626"
transform="matrix(0.11,0,0,-0.11,1096.6381,46.363052)"
id="g1003">
<use
xlink:href="#DejaVuSans-50"
id="use999"
x="0"
y="0"
width="100%"
height="100%" />
<use
x="63.623047"
xlink:href="#DejaVuSans-52"
id="use1001"
y="0"
width="100%"
height="100%" />
</g>
</g>
<use
style="fill:#c44e52;fill-opacity:0.2;stroke:#c44e52;stroke-opacity:0.2"
x="0"
xlink:href="#m867c8604a3"
y="362.97781"
id="use1011"
width="100%"
height="100%" />
<path
clip-path="url(#p3d5e40a9df)"
d="m 1180.4555,37.721093 46.2221,158.052587 46.2221,57.14264 46.2221,24.61652 46.2232,18.40299 46.2221,10.22851"
style="fill:none;stroke:#c44e52;stroke-width:1.5;stroke-linecap:round"
id="path1016" />
<path
d="M 1120.1356,320.01812 V 22.318125"
style="fill:none;stroke:#ffffff;stroke-width:1.25;stroke-linecap:square;stroke-linejoin:miter"
id="path1019" />
<path
d="M 1120.1356,320.01812 H 1430.286"
style="fill:none;stroke:#ffffff;stroke-width:1.25;stroke-linecap:square;stroke-linejoin:miter"
id="path1022" />
<use
x="322.02148"
xlink:href="#DejaVuSans-32"
id="use1037"
y="0"
width="100%"
height="100%"
transform="matrix(0.12,0,0,-0.12,1193.4805,16.318125)"
style="fill:#262626" />
<use
x="437.59766"
xlink:href="#DejaVuSans-32"
id="use1041"
y="0"
width="100%"
height="100%"
transform="matrix(0.12,0,0,-0.12,1193.4805,16.318125)"
style="fill:#262626" />
<defs
id="defs1094">
<clipPath
id="p33d8bb518f">
<rect
height="297.70001"
width="310.15045"
x="49.807186"
y="22.318125"
id="rect1082" />
</clipPath>
<clipPath
id="pc9aebdb348">
<rect
height="297.70001"
width="310.15045"
x="406.58331"
y="22.318125"
id="rect1085" />
</clipPath>
<clipPath
id="p802a2bf9b6">
<rect
height="297.70001"
width="310.15045"
x="763.35944"
y="22.318125"
id="rect1088" />
</clipPath>
<clipPath
id="p3d5e40a9df">
<rect
height="297.70001"
width="310.15045"
x="1120.1356"
y="22.318125"
id="rect1091" />
</clipPath>
</defs>
<text
xml:space="preserve"
style="font-size:12px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.75"
x="174.39751"
y="12.123849"
id="text5545"><tspan
sodipodi:role="line"
id="tspan5543"
style="stroke-width:0.75"
x="174.39751"
y="12.123849">NLL loss</tspan></text>
<text
xml:space="preserve"
style="font-size:12px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.75"
x="519.08502"
y="12.123849"
id="text5717"><tspan
sodipodi:role="line"
id="tspan5715"
style="stroke-width:0.75"
x="519.08502"
y="12.123849">Inception score</tspan></text>
<text
xml:space="preserve"
style="font-size:12px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.75"
x="914.9425"
y="12.123849"
id="text6933"><tspan
sodipodi:role="line"
id="tspan6931"
style="stroke-width:0.75"
x="914.9425"
y="12.123849">FID</tspan></text>
<text
xml:space="preserve"
style="font-size:12px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.75"
x="1257.3514"
y="12.123849"
id="text7819"><tspan
sodipodi:role="line"
id="tspan7817"
style="stroke-width:0.75"
x="1257.3514"
y="12.123849">SceneFID</tspan></text>
</svg>
This source diff could not be displayed because it is too large. You can view the blob instead.
model:
base_learning_rate: 4.5e-06
target: taming.models.vqgan.VQSegmentationModel
params:
embed_dim: 256
n_embed: 1024
image_key: "segmentation"
n_labels: 183
ddconfig:
double_z: false
z_channels: 256
resolution: 256
in_channels: 183
out_ch: 183
ch: 128
ch_mult:
- 1
- 1
- 2
- 2
- 4
num_res_blocks: 2
attn_resolutions:
- 16
dropout: 0.0
lossconfig:
target: taming.modules.losses.segmentation.BCELossWithQuant
params:
codebook_weight: 1.0
data:
target: main.DataModuleFromConfig
params:
batch_size: 12
train:
target: taming.data.coco.CocoImagesAndCaptionsTrain
params:
size: 296
crop_size: 256
onehot_segmentation: true
use_stuffthing: true
validation:
target: taming.data.coco.CocoImagesAndCaptionsValidation
params:
size: 256
crop_size: 256
onehot_segmentation: true
use_stuffthing: true
model:
base_learning_rate: 4.5e-06
target: taming.models.cond_transformer.Net2NetTransformer
params:
cond_stage_key: objects_bbox
transformer_config:
target: taming.modules.transformer.mingpt.GPT
params:
vocab_size: 8192
block_size: 348 # = 256 + 92 = dim(vqgan_latent_space,16x16) + dim(conditional_builder.embedding_dim)
n_layer: 40
n_head: 16
n_embd: 1408
embd_pdrop: 0.1
resid_pdrop: 0.1
attn_pdrop: 0.1
first_stage_config:
target: taming.models.vqgan.VQModel
params:
ckpt_path: ./logs/coco_8k_vqgan/coco_epoch117.ckpt # https://heibox.uni-heidelberg.de/f/78dea9589974474c97c1/
embed_dim: 256
n_embed: 8192
ddconfig:
double_z: false
z_channels: 256
resolution: 256
in_channels: 3
out_ch: 3
ch: 128
ch_mult:
- 1
- 1
- 2
- 2
- 4
num_res_blocks: 2
attn_resolutions:
- 16
dropout: 0.0
lossconfig:
target: taming.modules.losses.DummyLoss
cond_stage_config:
target: taming.models.dummy_cond_stage.DummyCondStage
params:
conditional_key: objects_bbox
data:
target: main.DataModuleFromConfig
params:
batch_size: 6
train:
target: taming.data.annotated_objects_coco.AnnotatedObjectsCoco
params:
data_path: data/coco_annotations_100 # substitute with path to full dataset
split: train
keys: [image, objects_bbox, file_name, annotations]
no_tokens: 8192
target_image_size: 256
min_object_area: 0.00001
min_objects_per_image: 2
max_objects_per_image: 30
crop_method: random-1d
random_flip: true
use_group_parameter: true
encode_crop: true
validation:
target: taming.data.annotated_objects_coco.AnnotatedObjectsCoco
params:
data_path: data/coco_annotations_100 # substitute with path to full dataset
split: validation
keys: [image, objects_bbox, file_name, annotations]
no_tokens: 8192
target_image_size: 256
min_object_area: 0.00001
min_objects_per_image: 2
max_objects_per_image: 30
crop_method: center
random_flip: false
use_group_parameter: true
encode_crop: true
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment