赞
踩
在实现安卓项目的时候, 发现识别问题差强人意, 但对于不同图片就出现了总体效果不好的结果.
可以很明显的发现对于很多图片出现了大部分文字无法检测到的问题.
在最开始考虑进行图片增强的操作, 发现对检测效果提升微乎其微.
正好 PaddleOCR 更新了版本并添加了新的检测算法 DB++. 以此为导向来对这个项目进行优化.
我是基于百度的 AI Studio 平台进行训练的模型. 这个平台提供高算力显卡, 但是在某些方面并不是很方便, 比如使用 Notebook 时最多只能后台运行 2 小时, 使用脚本运行虽然可以后台运行 72 小时, 但是有很多
在训练前需要下载数据集和预训练模型(下载地址).
数据集可以在 AI Studio 中获得, 也可以单独下载 (ICDAR2015)
# 单机单卡训练 r50_db++ 模型
python3 tools/train.py -c configs/det/det_r50_db++_icdar15.yml \
-o Global.pretrained_model=./pretrain_models/ResNet50_dcn_asf_synthtext_pretrained.pdparams
# 混合精度训练, 可以加快训练速度
python3 tools/train.py -c configs/det/det_r50_db++_icdar15.yml \
-o Global.pretrained_model=./pretrain_models/ResNet50_dcn_asf_synthtext_pretrained.pdparams \
Global.use_amp=True Global.scale_loss=1024.0 Global.use_dynamic_loss_scaling=True
python3 tools/train.py -c configs/det/det_r50_db++_icdar15.yml -o Global.checkpoints=./your/trained/model
弥补了 AI Studio 中 Notebook 的缺点 (避免 PC 过热蓝屏造成与 AI Studio 断联)
不过这个功能还没有测试过. 直到写这篇文章, 才发现到这项命令.
当时发现自己出现问题的时候就直接开始了重新训练, 非常浪费时间. 因为训练一个模型, 使用 Nvidia Tesla V100 也会高达 20 小时左右.
# 加载配置文件`det_r50_db++_icdar15.yml`,从`output/det_db`目录下加载`best_accuracy`模型,inference模型保存在`./output/det_db_inference`目录下
python3 tools/export_model.py -c configs/det/det_r50_db++_icdar15.yml -o Global.pretrained_model="./output/det_db/best_accuracy" Global.save_inference_dir="./output/det_db_inference/"
效果惨不忍睹, 比不上任何一个现有模型的检测效果. 所以使用新算法训练新模型这个想法暂时搁置.
在最开始调研中就提到可以进行检测、识别和分类的模型替换. 虽然没有新模型的加入, 但是可以把现有模型中最好的部分进行组合来提高检测或者是之后需要考虑的识别率.
经过测试发现 en_PPOCRv3_slim 的检测模型效果最好.
但是对于部分图片还是会出现不能识别的情况.
有一个需要注意到的点, 图片中不能检测到部分并不是因为无法检测, 而是整张图片文字密度高。
对不能检测到的部分进行手动放大然后裁剪图片之后是能够检测到的.
比如对上面对英文图片中不能检测的部分进行手动处理后可以得到如下图
这里可以暂时作为对图片处理方向的一个点.
对图片质量好坏上的判断大多都是以提升分辨率为方向, 但是在同一图片中分辨率相同但是检测效果差异很大.
在竞品和最近发现的夸克扫描在对图片处理上都有一个对图片矫正的功能. 这里以夸克扫描为例.
可以很明显看出, 这里对照片进行了处理, 使得倾斜变形的文字变得几乎水平.
弥补了因为用户操作不当而造成了图片效果不好的问题.
使用夸克扫描中的图片增强功能处理后再进行使用 PaddleOCR 模型检测得到下面检测图片.
可以看到对图片增强后实现了完美检测. 目前还没有对夸克扫描中图片增强的算法进行了解分析, 这会是后面工作的一个方向.
因为夸克扫描还是属于商用产品, 需要寻找开源代码来进行替换.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。