asysbang

 找回密码
 立即注册
查看: 3126|回复: 2
打印 上一主题 下一主题

中文增量训练4.0

[复制链接]

520

主题

2

好友

6551

积分

管理员

Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

最佳新人 活跃会员 热心会员 推广达人 宣传达人 灌水之王 突出贡献 优秀版主 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2019-11-13 11:56:43 |只看该作者 |倒序浏览
#在官方中文训练结果的基础上,做增量训练

#背景
几张中文图片,用官方的chi_sim识别效果不理想,需要自己训练,提高识别准确率

#步骤
1.搭建训练环境
   按照官方或者网上教程有很多可以参考,目标是保证tesstrain.sh , lstmtraining等命令可以正确执行

2.生成测试图片并用官方chi_sim识别,记录识别结果作为对比参数
  图片是“实现可持续发展道路发展” (一种手写体),用官方识别的结果是 “实 规 可 持 缠 发 赉 道 路 发 厚”
  text2image --find_fonts --fonts_dir ${base}/fonts --text ${base}/fine.training_text --min_coverage .9  --outputbase ${base}/tifs/fine

3.创建文件夹
  eval:评估数据,增量训练用不到
  fonts:训练用的字体,这里采用几种手写体
  langdata:例子中没用到,用官方的langdata_lstm 代替,训练的文本参数,包括chi_sim.config,chi_sim.numbers,chi_sim.punc,chi_sim.training_text,chi_sim.wordlist
  models:训练过程中的结果,可以用来增量训练,最终的识别文件也是通过这里的文件生成的
  tessdata:训练模型,configs文件夹,tessconfigs文件夹,chi_sim.traineddata ,chi_sim_vert.traineddata, eng.traineddata
  tifs:文本生成的tif文件,只是用来生成测试图片,训练过程用不到
  train:训练数据
   
4.设置根目录环境变量
   export base=/home/tess/fine
   修改training/tesstrain_utils.sh  run_command tesseract “-l chi_sim”,
   建议tlog "\n=== Phase E: Generating ${ext} files ==="   也修改一下log,保证用的是自己修改的sh

5.生成训练文本
  在一段新闻的文字内插入大量的"实现","可持续","发展道路","发展"
  替换官方的langdata_lstm/chi_sim/chi_sim.training_text

6.生成训练数据
  training/tesstrain.sh --fonts_dir ${base}/fonts --lang chi_sim --linedata_only --noextract_font_properties  /
   --langdata_dir /home/tess/40_train/langdata_lstm --tessdata_dir ${base}/tessdata --output_dir ${base}/train --fontlist  "HaTian-SuiXing"
   这里用的官方的langdata_lstm 目录


7.转换官方训练数据
  training/combine_tessdata -e /home/tess/40_train/tessdata_best/chi_sim.traineddata   ${base}/train/chi_sim.lstm

8.增量训练
  lstmtraining --model_output ${base}/models/model --continue_from ${base}/train/chi_sim.lstm --traineddata ${base}/train/chi_sim/chi_sim.traineddata \
  --old_traineddata /home/tess/40_train/tessdata_best/chi_sim.traineddata \
  --train_listfile ${base}/train/chi_sim.training_files.txt \
  --max_iterations 1300

9.合并模型
  training/lstmtraining --stop_training --continue_from ${base}/models/model_checkpoint --traineddata ${base}/train/chi_sim/chi_sim.traineddata --model_output ${base}/fine.traineddata

10.验证
  tesseract -l fine test.png test_fine
  查看识别结果 “实现 可 持续 发 展 道路 发 展”

github:https://github.com/asysbang/tesseract   参考fine目录

PS:因为训练的数据过少,会导致原本可以识别的文字无法识别了。。。。。。那么增量训练还有意义吗????
     如果训练完一种手写字体A,再去训练手写字体B,那岂不是B准确了之后A又不准确了?????需要实际验证下


============
同字体下其他文字的增量训练
1.修改langdata_lstm/chi_sim/chi_sim.training_text t添加增量的文本

2.删除并重新生成训练数据
  training/tesstrain.sh --fonts_dir ${base}/fonts --lang chi_sim --linedata_only --noextract_font_properties  --langdata_dir /home/tess/40_train/langdata_lstm --tessdata_dir ${base}/tessdata --output_dir ${base}/train --fontlist  "HaTian-SuiXing"

3.转换上次训练的结果 (要用上次生成的fine.traineddata)
    training/combine_tessdata -e ${base}/fine.traineddata   ${base}/train/chi_sim.lstm

4.增量训练(old_traineddata 要用上次生成的fine.traineddata)
  lstmtraining --model_output ${base}/models/model --continue_from ${base}/train/chi_sim.lstm --traineddata ${base}/train/chi_sim/chi_sim.traineddata \
  --old_traineddata ${base}/fine.traineddata \
  --train_listfile ${base}/train/chi_sim.training_files.txt \
  --max_iterations 2300

5.合并模型
  training/lstmtraining --stop_training --continue_from ${base}/models/model_checkpoint --traineddata ${base}/train/chi_sim/chi_sim.traineddata --model_output ${base}/fine1.traineddata

6.验证
   test1.png 识别结果“大 批 能 习 负 重 的 仓储 机 器 人”

=======
其他字体识别
1.删除并重新生成训练数据
  training/tesstrain.sh --fonts_dir ${base}/fonts --lang chi_sim --linedata_only --noextract_font_properties  --langdata_dir /home/tess/40_train/langdata_lstm --tessdata_dir ${base}/tessdata --output_dir ${base}/train --fontlist  "陈继世潇洒体"

2.转换上次训练的结果 (要用上次生成的fine1.traineddata)
    training/combine_tessdata -e ${base}/fine1.traineddata   ${base}/train/chi_sim.lstm


3.增量训练(old_traineddata 要用上次生成的fine1.traineddata)
  lstmtraining --model_output ${base}/models/model --continue_from ${base}/train/chi_sim.lstm --traineddata ${base}/train/chi_sim/chi_sim.traineddata \
  --old_traineddata ${base}/fine1.traineddata \
  --train_listfile ${base}/train/chi_sim.training_files.txt \
  --max_iterations 2300



不同字体训练
1.删除并重新生成训练数据(之前的models目录也要清空)
  training/tesstrain.sh --fonts_dir ${base}/fonts --lang chi_sim --linedata_only --noextract_font_properties  --langdata_dir /home/tess/40_train/langdata_lstm --tessdata_dir ${base}/tessdata --output_dir ${base}/train --fontlist  "陈继世潇洒体"

2.转换上次训练的结果 (要用上次生成的fine1.traineddata)
    training/combine_tessdata -e ${base}/fine1.traineddata   ${base}/train/chi_sim.lstm


3.增量训练(old_traineddata 要用上次生成的fine1.traineddata)
  lstmtraining --model_output ${base}/models/model --continue_from ${base}/train/chi_sim.lstm --traineddata ${base}/train/chi_sim/chi_sim.traineddata \
  --old_traineddata ${base}/fine1.traineddata \
  --train_listfile ${base}/train/chi_sim.training_files.txt \
  --max_iterations 16300

4.合并模型
training/lstmtraining --stop_training --continue_from ${base}/models/model_checkpoint --traineddata ${base}/train/chi_sim/chi_sim.traineddata --model_output ${base}/fine_new.traineddata


6.测试验证
   test3.png 识别结果“大 批 能 够 负重 的 仓储 机 器 人”
PS:之前test1的识别有些影响,但总的来说效果提升
回复

使用道具 举报

520

主题

2

好友

6551

积分

管理员

Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

最佳新人 活跃会员 热心会员 推广达人 宣传达人 灌水之王 突出贡献 优秀版主 荣誉管理 论坛元老

沙发
发表于 2019-11-14 18:20:58 |只看该作者
5.0比较坑,有图片大小限制"Image too large to learn!! Size = 2591x48"
需要手动修改
The default value for images output by text2image can be reduced during running tesstrain.sh by modifying tesstrain_utils.sh

    common_args+=" --leading=${LEADING} --xsize 2550"

./lstm/lstmrecognizer.cpp:269:
const int kMaxImageWidth = 2560
tesstrain_utils.sh
X_SIZE=3600

所以需要修改tesstrain_utils.sh 文件 把X_SIZE的默认值改成2560


增量训练必须要有old_traineddata
回复

使用道具 举报

520

主题

2

好友

6551

积分

管理员

Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

最佳新人 活跃会员 热心会员 推广达人 宣传达人 灌水之王 突出贡献 优秀版主 荣誉管理 论坛元老

板凳
发表于 2019-11-15 10:13:50 |只看该作者
待研究问题
1.如何脱离官方训练数据,从0开始
2.神经网络如何优化
3.流程细化研究
参考网址
https://www.jianshu.com/p/7a2c40dd6560
https://www.jianshu.com/p/b219ea55f130
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|aSys-帮 ( 京ICP备13033689号 )

GMT+8, 2026-1-28 22:58 , Processed in 0.039995 second(s), 18 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部