基于 PaddleOCR,整理《明日方舟》所有文本生成数据集进行训练
本项目主要提供生成数据集的脚本,以及训练完的模型产物
目前仅有 rec(识别)模型,检测模型可以直接用飞桨官方的。需要将对应的 rec 模型文件和 keys.txt 替换成 release 包里的
可选使用方法:
- 最简单:使用 PaddleOCR 推理,参考 使用方法
- 最推荐:使用 FastDeploy 部署,可自由选择 ONNX Runtime, Paddle Inference, TensorRT, OpenVINO 等后端进行推理
- 最折腾:使用 Paddle2ONNX 转换为 ONNX 模型,使用 RapidOCR + ONNX Runtime 进行推理
如果你不需要重新训练,请忽略该内容
推荐在 Linux 或 WSL2 中进行,Windows 也能跑,但很慢,所以不推荐
-
安装 CUDA, CUDNN
没啥好说的,自己 Google(
-
安装 PaddlePaddle
-
搭建 PaddleOCR 环境
git clone https://github.com/PaddlePaddle/PaddleOCR.git pip install -r PaddleOCR/requirements.txt
-
整理你自己的数据集
如果想增加某些场景的识别率,参考 my_data,把额外的数据集放进来
(没有自己数据集的可以忽略这一步) -
生成数据集
# 默认只生成简中数据,其他语言改下开头的变量即可 sh ./steps.sh
-
开始训练
# 简中的,其他语言请替换成对应的配置 python PaddleOCR/tools/train.py -c ch_PP-OCRv3_rec_distillation.yml
一些配置文件中可能要修改的项:
num_workers
: 读取数据集的进程数。不能大于你的 CPU 线程数,但是太大了也没意义,不造成性能瓶颈就行,一般 4 或者 8 就差不多了。Windows 不支持这项,调也没用,所以很慢batch_size_per_card
: batch size, 一般来说越大越快,但会吃更多显存,自己看着调lr.values
/learning_rate
: 学习率,原则上要和 batch size 等比例调整
-
断点训练
把配置文件中
checkpoints
那项去掉注释 -
导出模型
python PaddleOCR/tools/export_model.py -c ch_PP-OCRv3_rec_distillation.yml -o Global.checkpoints=./output/ja_JP/model/epoch/latest/best_accuracy
只是个大致的流程,都还是 PaddleOCR 的那套,更多详细的参数等请参考 PaddleOCR 的文档
如果你是用恰好有 nvidia-docker 并且不想折腾环境可以试试 Docker, 本教程假设你知道一些常用的 Docker 命令
- 依赖
docker
以及nvidia-docker
具体安装流程参考 Nvidia文档- 对应版本的 CUDA, 本仓库提供的 Dockerfile 默认版本支持 nvidia 驱动版本 >= 515 (CUDA >= 11.7)
-
获取镜像
docker build -t maa_train . \ # 以下为可选参数 --build-arg VERSION=22.05 \ # Nvdia 镜像的版本,默认为22.05, 可选的版本参考之前的链接 --build-arg OCR_LANG=zh_CN \ # 训练数据集的语言,docker将拷贝对应语言数据集到镜像,默认zh_CN, 可选`zh_CN | ja_JP | zh_TW | en_US` --build_arg PRETRAINED_MODEL=ch_PP-OCRv3_rec_distillation # 预训练模型权重名称, 默认为简中知识蒸馏模型
-
运行镜像
# 如果启动失败,可尝试删除 --ulimit memlock=-1 或者添加 sudo 运行 docker --gpus all --shm-size=1g --ulimit memlock=-1 run -it maa_train /bin/bash
进入容器后,将第六步中PaddleOCR的位置替换为
../PaddleOCR
,即python ../PaddleOCR/tools/train.py -c ch_PP-OCRv3_rec_distillation.yml
- PaddleOCR: Awesome multilingual OCR toolkits based on PaddlePaddle
- ArknightsGameData: 《明日方舟》游戏数据
- text_renderer: Generate text images for training deep learning ocr model
- source-han-sans: Source Han Sans | 思源黑体 | 思源黑體 | 思源黑體 香港 | 源ノ角ゴシック | 본고딕