# 合成美观的布局
这是论文的官方 Pytorch 实现:
通过内容感知布局推断的美学文本徽标合成。 CVPR 2022。
论文:[arxiv](https://arxiv.org/abs/2204.02701)
补充:[链接](./dataset/intro/CVPR_22_textlogolayout_SM.pdf)
## 演示
我们的模型将字形图像及其相应的文本作为输入,并自动为它们合成美观的布局。
英文成绩:
<div 对齐=中心>
<img src="dataset/intro/demo_eng_res.jpg">
</div>
中文结果:
<div 对齐=中心>
<img src="dataset/intro/demo_chn_res.jpg">
</div>
## 数据集
### TextLogo3K 数据集
我们通过从中国领先的在线视频平台之一腾讯视频收集数据,构建了一个名为 TextLogo3K 的文本徽标数据集。
该数据集包含 3,470 个精心挑选的文本徽标图像,这些图像是从电影、电视剧和漫画的海报/封面中提取的。
<div 对齐=中心>
<img src="dataset/intro/textlogo3k_logos.jpg">
</div>
我们为这些文本徽标中的每个字符手动注释边界框、像素级掩码和类别。
<div 对齐=中心>
<img src="dataset/intro/textlogo3k_annos.jpg">
</div>
下载链接:【Google Drive】(https://drive.google.com/drive/folders/1FofGxAbpXp2Jjfz-mROsqwpOvL8SKpuE?usp=sharing)、【北大磁盘】(https://disk.pku.edu.cn:443/ 链接/7201CADEA4E0A3B977D71228B5CCABE8)(密码:1VEn)
请下载并解压,然后将文件夹“TextLogo3K”放在“./dataset/”下。
**请注意,此数据集只能用于学术目的。**
除了我们论文中解决的布局合成问题外,我们的数据集还可以用于许多任务,例如 (1) **文本检测/分割**,(2) **纹理传输**,(3) * *艺术文字识别**,以及 (4) **艺术字体生成**。
### 英语数据集
我们使用的英文数据集来自 TextSeg(Rethinking Text Segmentation: A Novel Dataset and A Text-Specific Refinement Approach, CVPR 2021)。
请按照其[主页](https://github.com/SHI-Labs/Rethinking-Text-Segmentation)中的说明来请求数据集。
## 安装
### 要求
- **蟒蛇3.8 **
- **Pytorch 1.9.0**(它可能适用于某些较低或较高的版本,但未经过测试)
请使用[Anaconda](https://docs.anaconda.com/anaconda/install/linux/)搭建环境:
```外壳
conda create -n tll python=3.8
源激活 tll
```
通过 [说明](https://pytorch.org/get-started/locally/) 安装 pytorch。
- 其他的
```外壳
conda 安装 tensorboardX scikit-image jieba
```
## 训练和测试
### 训练
训练我们的模型:
```外壳
python train.py --experiment_name base_model
```
训练日志会写在`./experiments/base_model/logs`中,可以通过Tensorboard可视化。
检查点将保存在 ./experiments/base_model/checkpoints 中。
所有超参数都可以在 options.py 中找到。
我们的代码支持多GPU训练,如果你的单GPU显存不够,检查`options.py`中的`multi_gpu`是否为`True`然后运行:
```外壳
CUDA_VISIBLE_DEVICES=0,1,2...,n python train.py --experiment_name 基础模型
```
### 预训练模型
我们训练有素的检查点(第 600 轮)可以在 [Google Drive](https://drive.google.com/drive/folders/1wpfvpv37ja2e5zpUvfU_YT1AQHhaUZN5?usp=sharing) 和 [PKU Disk](https://disk.pku .edu.cn:443/link/B793615E0997A4B82CC3B74E22C3CAB5)。 我们发现不同步骤的检查点可能会给出不同的风格,建议自己训练模型并测试更多的检查点。
### 测试
在 TextLogo3K 测试数据集上测试我们的模型:
```外壳
python test.py --experiment_name base_model --test_sample_times 10 --test_epoch 600
```
结果将保存在 ./experiments/base_model/results 中。
### 测试你自己的数据
(此功能正在开发中,即将升级)
要在您自己的案例中测试我们的模型:
首先,从[Chinese-Word-Vectors](https://github.com/Embedding/Chinese-Word-Vectors)下载中文嵌入,即sgns.baidubaike.bigram-char,放在'./dataset/下 嵌入'。
然后,从输入文本和字体文件生成数据:
```外壳
python gen_data.py --input_text 你好世界 --ttf_path ./dataset/ttfs/FZShengSKSJW.TTF --output_dir ./dataset/YourDataSet/
```
最后,使用我们的模型来推断:
```外壳
python test.py --experiment_name base_model --test_sample_times 10 --test_epoch 500 --data_name YourDataSet --mode test
```
结果将写入`./experiments/base_model/results/500/YourDataSet/`
##致谢
- [Chinese-Word-Vectors](https://github.com/Embedding/Chinese-Word-Vectors)
- [pytorch-fid](https://github.com/mseitzer/pytorch-fid)
- [TextSeg](https://github.com/SHI-Labs/Rethinking-Text-Segmentation)