截图公式,预测结果完全不一致
cqvip-jq opened this issue · comments
训练结果:
2019-11-22 01:07:01,930:INFO: - Eval: BLEU-4 is 86.85 || ExactMatchScore is 32.83 || EditDistance is 90.11 || perplexity is -1.22
2019-11-22 01:07:01,930:INFO: - New best score (19.76)!
2019-11-22 01:07:01,930:INFO: - Saving model...
2019-11-22 01:07:02,388:INFO: - Saved model in results/full/model_weights/
从训练集里挑一些png,识别效果非常好。
从网上截图一段公式,非常简单的公式识别都有问题,我的猜测是需要对图片做处理(比如二值化,对比度等)。
请问需要对截图做哪些处理才能提高预测效果呢?
截图识别效果如下(界面稍有调整):
predict.py里缺少预处理过程,这是已知bug,正在处理
要修复这个问题,可以参考model.utils.images下相关代码。预处理我在这里大概描述一下。
- crop_image 把空白部分去掉,裁剪剩公式内容
- pad_image 加空白填充,上下左右填充 8 个像素后用 bucket 确定最终大小,左上角空 8 个像素,填入公式内容的那些像素
- downsample_image 下采样
好的,谢谢
要修复这个问题,可以参考model.utils.images下相关代码。预处理我在这里大概描述一下。
1. crop_image 把空白部分去掉,裁剪剩公式内容 2. pad_image 加空白填充,上下左右填充 8 个像素后用 bucket 确定最终大小,左上角空 8 个像素,填入公式内容的那些像素 3. downsample_image 下采样
事情并没有这么简单吧
生成的公式图片字体和测试图片的字体不一样,latex排版格式不一样都会影响结果
要修复这个问题,可以参考model.utils.images下相关代码。预处理我在这里大概描述一下。
1. crop_image 把空白部分去掉,裁剪剩公式内容 2. pad_image 加空白填充,上下左右填充 8 个像素后用 bucket 确定最终大小,左上角空 8 个像素,填入公式内容的那些像素 3. downsample_image 下采样
事情并没有这么简单吧
生成的公式图片字体和测试图片的字体不一样,latex排版格式不一样都会影响结果
确实有这样的问题,我的理解,可以通过扩大样本集,把不同的字体/排版加进训练集,效果会更好
要修复这个问题,可以参考model.utils.images下相关代码。预处理我在这里大概描述一下。
1. crop_image 把空白部分去掉,裁剪剩公式内容 2. pad_image 加空白填充,上下左右填充 8 个像素后用 bucket 确定最终大小,左上角空 8 个像素,填入公式内容的那些像素 3. downsample_image 下采样
事情并没有这么简单吧
生成的公式图片字体和测试图片的字体不一样,latex排版格式不一样都会影响结果确实有这样的问题,我的理解,可以通过扩大样本集,把不同的字体/排版加进训练集,效果会更好
要修复这个问题,可以参考model.utils.images下相关代码。预处理我在这里大概描述一下。
1. crop_image 把空白部分去掉,裁剪剩公式内容 2. pad_image 加空白填充,上下左右填充 8 个像素后用 bucket 确定最终大小,左上角空 8 个像素,填入公式内容的那些像素 3. downsample_image 下采样
事情并没有这么简单吧
生成的公式图片字体和测试图片的字体不一样,latex排版格式不一样都会影响结果确实有这样的问题,我的理解,可以通过扩大样本集,把不同的字体/排版加进训练集,效果会更好
这个需要 @LinXueyuanStdio 解答,我的理解不同字体,放在一起训练,相似的符号可能会出现冲突,但是每种字体独立训练各自模型是可以的,不过又得前置一个字体识别,又搞复杂了。
这个模型是支持手写体的,模型自己会无视字体差异进行识别,神经网络的这种特性就叫鲁棒性或者泛化性。简单地说,增大数据集就行了。当然,在给定参数量的情况下,数据集里各种字体种类越丰富,数据量越大,则模型泛化性能越好,但是平均识别成功率下降。然后又要增大模型参数量以提高识别成功率,如此往复。。。
想猥琐一点,可以针对各种字体构建多个模型进行模型融合。预处理的话,传统图像算法有能解决字体问题的吗?不还是靠神经网络。。。这样也就相当于在现有模型里加几层,四舍五入就是简单增加现有模型的参数量而已。。。这些都是应用层面的,如果单模自己都太菜的话,应用层再强也提升有限。
真正能解决问题的还是新方法新模型,需要一个强到识别率上90%的那种,那时的应用层面的手段才有意义。不过这不是本项目关心的范围了。