🔥 解耦作者和字符风格的手写生成
📢 简介
- 提出的风格解耦Transformer (SDT)可以生成具有条件内容和风格的在线手写。
- 现有的基于RNN的方法主要关注捕捉一个人的整体书写风格,忽视了同一个人写的不同字符之间细微的风格不一致。鉴于此,SDT从单个手写样本中解耦作者级和字符级的风格表示,以提高模仿效果。
- 我们扩展了SDT并引入了一个离线到离线的框架,以提高离线中文手写的生成质量。
我们的SDT概览
三个在线字符样本及其书写顺序
📅 新闻
- [2024/07/01] 🎉🎉🎉 一种名为One-DM的手写文本生成新型最先进方法被ECCV 2024接收。
- [2024/01/07] 添加了使用用户自定义风格合成手写的教程和代码,更多信息可以在这里找到。
- [2023/12/15] 🎉🎉🎉 本工作被一个拥有270万粉丝的顶级B站视频博主报道,获得近百万次观看。
- [2023/10/10] 作者应邀在CSIG(中国图像图形学学会)进行了一次演讲(中文)。
- [2023/06/14] 本工作被机器之心报道。
- [2023/04/12] 首次发布数据集、预训练模型、训练和测试代码。
- [2023/02/28] 🎉🎉🎉 我们的SDT被CVPR 2023接收。
📺 手写生成结果
-
在线中文手写生成
-
应用于各种文字
-
离线中文手写生成扩展
🔨 环境要求
conda create -n sdt python=3.8 -y
conda activate sdt
# 安装所有依赖
pip install -r requirements.txt
📂 文件夹结构
SDT/
│
├── train.py - 开始训练的主脚本
├── test.py - 通过训练好的模型生成字符
├── evaluate.py - 评估生成的样本
│
├── configs/*.yml - 包含训练配置
├── parse_config.py - 处理配置文件的类
│
├── data_loader/ - 数据加载相关的所有内容都在这里
│ └── loader.py
│
├── model_zoo/ - 预训练的内容编码器模型
│
├── data/ - 存储实验数据集的默认目录
│
├── model/ - 网络、模型和损失函数
│ ├── encoder.py
│ ├── gmm.py
│ ├── loss.py
│ ├── model.py
│ └── transformer.py
│
├── saved/
│ ├── models/ - 训练好的模型保存在这里
│ ├── tborad/ - tensorboard可视化
│ └── samples/ - 训练过程中的可视化样本
│
├── trainer/ - 训练器
│ └── trainer.py
│
└── utils/ - 小型实用函数
├── util.py
└── logger.py - 为tensorboard和日志输出设置日志目录
💿 数据集
我们在Google Drive | 百度网盘 提供中文、日文和英文数据集。密码:xu9u。请下载这些数据集,解压并将解压后的文件移动到/data。
🍔 预训练模型
- 我们在Google Drive | 百度网盘 提供预训练的内容编码器模型。密码:xu9u。请下载并将其放到/model_zoo。
- 我们在Google Drive | 百度网盘 提供训练好的SDT模型。密码:xu9u。这样用户可以避免重新训练,直接使用。
🚀 训练 & 测试
训练
- 要在中文数据集上训练SDT,运行以下命令:
python train.py --cfg configs/CHINESE_CASIA.yml --log Chinese_log
- 要在日文数据集上训练SDT,运行以下命令:
python train.py --cfg configs/Japanese_TUATHANDS.yml --log Japanese_log
- 要在英文数据集上训练SDT,运行以下命令:
python train.py --cfg configs/English_CASIA.yml --log English_log
定性测试
- 要使用我们的SDT生成中文手写,运行以下命令:
python test.py --pretrained_model checkpoint_path --store_type online --sample_size 500 --dir Generated/Chinese
- 要使用我们的SDT生成日文手写,运行以下命令:
python test.py --pretrained_model checkpoint_path --store_type online --sample_size 500 --dir Generated/Japanese
- 要使用我们的SDT生成英文手写,运行以下命令:
python test.py --pretrained_model checkpoint_path --store_type online --sample_size 500 --dir Generated/English
定量评估
- 要评估生成的手写,您需要将
data_path
设置为生成的手写路径(例如,Generated/Chinese),并运行以下命令:
python evaluate.py --data_path Generated/Chinese
🏰 实际应用
我们很高兴发现**P0etry-rain**提出了一个流程,首先将我们SDT生成的结果转换为TTF格式,然后开发软件以灵活调整段落、行和字符之间的间距。以下是TTF文件、软件界面和打印结果。更多详情可以在#78中查看。
-
TTF文件
-
软件界面
-
打印结果
❤️ 引用
如果您觉得我们的工作有启发或在您的研究中使用了我们的代码库,请引用我们的工作:
@inproceedings{dai2023disentangling,
title={Disentangling Writer and Character Styles for Handwriting Generation},
author={Dai, Gang and Zhang, Yifan and Wang, Qingfeng and Du, Qing and Yu, Zhuliang and Liu, Zhuoman and Huang, Shuangping},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition,
pages={5977--5986},
year={2023}
}