项目简介
YuzuMarker.FontDetection
YuzuMarker.FontDetection 是一个用于识别中日韩(CJK)字体的模型。这是首个专注于中日韩字体识别的项目,具有划时代的意义,尤其是在处理这些亚洲文字时。
项目背景和意义
在图像处理中,识别文本字体是一项复杂而重要的任务。不同的字体类型在视觉传达和设计中扮演着重要的角色。YuzuMarker.FontDetection 通过结合现代深度学习技术,为中日韩文字的字体检测提供了高效且准确的解决方案。
数据集生成
场景文本字体数据集生成
该项目不仅涉及模型的开发,还包括自动生成具有不同字体的场景文本图像数据集。这个数据集的生成依赖于VCB-Studio的CJK字体包和来自 pixiv.net 的数千张背景图片。
数据准备过程
- 下载CJK字体包,并将其解压到
dataset/fonts
目录。 - 准备背景数据,并存放到
dataset/pixivimages
目录。 - 使用提供的脚本清理文件名:
python dataset_filename_preprocess.py
数据生成脚本
准备完成后,可以使用以下命令生成数据集:
python font_ds_generate_script.py 1 1
这套脚本可以将任务划分为多个部分并行执行,以加速数据生成过程。最后生成的数据集将被保存在 dataset/font_img
目录中。
错误图像检测与修复
脚本提供了缓存机制,以防止任务意外中断时重复生成相同的图像。此外,还有检测已生成数据集中损坏图像和标签的功能:
python font_ds_detect_broken.py
运行此脚本后,可以重新运行数据生成脚本以补全被移除的损坏文件。
模型训练
在准备好数据集后,模型训练便可以开始。该项目支持使用多个不同的模型结构,如 ResNet 和 DeepFont,参数配置灵活:
$ python train.py -h
这将显示所有可选参数,包括设备选择、批量大小、模型类型、是否使用预训练模型、数据增广策略等。
字体分类实验结果
在实验过程中,多种模型架构和参数组合被用来评估字体识别的准确性。以下是部分实验结果的展示:
- ResNet-18 开启数据增广后的准确率最高可达约38.87%。
- 模型的表现依赖于不同的输入尺寸、学习率和数据增广策略。
演示部署
方法一:本地部署
用户可通过以下步骤来部署本地演示:
- 生成字体样本图像(如果有字体数据集):
python generate_font_sample_image.py
- 启动演示服务器:
python demo.py -h
方法二:Docker 部署
如果机器上安装了 Docker,可以通过 Docker 快速部署:
- 构建 Docker 镜像:
docker build -t yuzumarker.fontdetection .
- 运行 Docker 容器:
docker run -it -p 7860:7860 yuzumarker.fontdetection
在线演示
项目已部署在 Huggingface Space 上,用户可以通过远程访问体验模型的实际效果。
相关文献与资源
此项目的开发借鉴于行业内的一些相关研究,例如 DeepFont、SwordNet 等。为使用 YuzuMarker.FontDetection 进行学术研究与引用,用户可以参考文献目录中的正确引用格式。
总结
YuzuMarker.FontDetection 是一个功能强大的字体识别工具,支持对中日韩文字的自动检测和分类。该工具不但具备生成多样化训练数据集的功能,其优化的训练策略也可支持大规模并行处理,是文本图像识别中一个不可或缺的利器。