- 制作数据集
- 这里用的是text-render制作的数据集, 这个开源项目可以制作包含中英文字符的数据,但是这里我们想要制作包含希腊字母的数据,项目本身不支持希腊字母,因此首先需要下载支持希腊字母的字体,我下载的是Gentium和arial-unicode-ms,下载完之后还需要制作一个包含要生成希腊字符的txt文件greek.txt。我的文件里不仅包含希腊字符还包含了数学符号和英文字母。到时候生成数据的时候就是从这个txt里随机选取字符。同时还要注意将额外添加的希腊字母添加到./data/label_cn.txt中否则无法生成图片
- 具体操作指令见这里, 最后生成的图片会./output/greek/路径下,除了图片还有有一个label.txt文件,文件中包含了图片名字,以及图片字符在./data/label_cn中对应的id(位置)
- 处理数据
- 将./output/greek/路径下的图片分为train和text,同时生成一个train.txt和text.txt文件, 最后整理得到一个含有图片和txt的文件夹greek-dataset,文件内容包括 greek, train.txt, test.txt
- 执行makefile数据处理的步骤,gen-lst和gen-rec
ATA_ROOT_DIR = data/sample-data
REC_DATA_ROOT_DIR = data/sample-data-lst
EMB_MODEL_TYPE = densenet-lite
SEQ_MODEL_TYPE = fc
MODEL_NAME = $(EMB_MODEL_TYPE)-$(SEQ_MODEL_TYPE)
gen-lst:
python scripts/im2rec.py --list --num-label 20 --chunks 1 \
--train-idx-fp $(DATA_ROOT_DIR)/train.txt --test-idx-fp $(DATA_ROOT_DIR)/test.txt --prefix
$(REC_DATA_ROOT_DIR)/sample-data
gen-rec:
python scripts/im2rec.py --pack-label --color 1 --num-thread 1 --prefix $(REC_DATA_ROOT_DIR) --root examples
- finetune
python scripts/cnocr_train.py --gpu 0\
--emb_model_type $(EMB_MODEL_TYPE) \
--seq_model_type $(SEQ_MODEL_TYPE) \
--epoch 20 --lr 1e-4 \
--train_file $(REC_DATA_ROOT_DIR)/sample-data_train \
--test_file $(REC_DATA_ROOT_DIR)/sample-data_test \
--load_epoch 0040 --out_model_dir path/to/cn_ocr_model/
作者提供的train指令是从头开始训练的指令,如果想finetune的话需要执行上边的指令. 如果需要在GPU上训练,把上面命令中的参数 --gpu 0改为--gpu <num_gpu>,其中的<num_gpu> 为使用的GPU数量。
- 注意,使用GPU训练需要安装mxnet的GPU版本,如mxnet-cu90。在安装的时候要注意
pip install cnocr
会自动安装cpu版本mxnet,之后如果自己再安装gpu版本的mxnet, 运行的时候会报错。经多次尝试发现发现要先分别安装gluoncv和对应CUDA版本下的mxnet,再去除依赖直接安装cnocr。 安装顺序如下(顺序不要乱!)conda install -c anaconda cudatoolkit==9.0
pip install gluoncv
pip install mxnet-cu101
pip install cnocr --no-dependencies
- 给字典添加额外字符
- 当我们给字典添加额外字符后,需要修改
https://github.com/breezedeus/cnocr/blob/master/cnocr/hyperparams/cn_hyperparams.py
中的self._num_classes
的值, 将其改为目前字典中的字数+1,此外还要调整网络结构,更改网络最后的fc层的输出数目, 具体可以参看这篇文章link
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端