Gmgge / TrOCR-Seal-Recognition

基于transformer的ocr识别,在公章(印章识别, seal recognition)拓展应用
121 stars 24 forks source link

如何分享数据? #15

Closed UnstoppableCurry closed 2 months ago

UnstoppableCurry commented 8 months ago

您好我看到共享数据的 计划,想问一下如何联系。

Gmgge commented 8 months ago

我最近将要构建印章数据页面,每个想要共享的人都可以把链接分享在该页面中,并且可以直观的看到大家的贡献。

基于如此,我将在未来首先会持续公开真实印章与生成的印章数据,以共同推动该方向的发展。

UnstoppableCurry commented 7 months ago

好的。 不过有一个问题,可能大家都会遇到 手上的样本太敏感,无法真正做到开源。。 这个问题要如何解决? 还是当前我们之开源 可以开源的部分? 问题一 已经完毕 下一个问题 讨论一些想法 有没有可能大家一起做一个 生成式的开源项目 用于生成合成印章样本 更加逼近真实数据。 1.我用风格迁移的通用模型试了试,合成样本 迁移到真实印章样本的风格很困难。 或许需要微调通用模型 才会有效果 2.或许用GAN 的方式来生成样本会更好一些,再有限的样本数量内,鉴别器能发挥比较好的效果。 3.扩散模型去实现 或许效果也不错,有人用来消除水印,或许也可以用来生成印章 (虽然难度更大) 4.类似anyText 的思路,使用阿里开源的模型测试过 模型的文字修改,一般本文行的效果 一般。 弯曲文本行 生成的字 都不对。但是这个思路是不错的。通过可控文本生成的方式不仅可以生成样本, 训练过程中的text embeddeding 或者是编码器 是训练结果的副产品,对齐字典后 可以用于 trocr 的识别

Gmgge commented 7 months ago
  1. 数据共享:由于数据敏感的问题,如果是图像中其他数据敏感,我正在构建印章区域提取部分,可以单独将公章切分出来共享。如果这部分也存在敏感性的话,我建议是作为私人数据集不再共享。后续我将从互联网逐渐收集印章数据集并使用自动化工具构建成数据共享给大家,如果任何人在互联网上发现印章数据也可以提供线索。
  2. 印章生成部分,我建议构建印章生成代码,因为本身就是人造产物。如果你会使用GIMP、PS,也可以使用这些工具生成印章数据。使用的时候只要加上随机纹理、噪声、旋转、背景等增强手段即可。
UnstoppableCurry commented 7 months ago

所以您的意思是说 第二点 trocr 有能力通过 合成数据与训练后 使用真实样本微调 达到理想的性能吗

Gmgge commented 7 months ago

目前结论是可以的,而且没必要搞二次微调,直接放一起训练就好。 1.经过测试结果验证,针对清晰的印章识别泛化性达到使用标准(保证字典范围覆盖,CER 90%+)。 2.模糊印章识别准确率下降,刨去各种噪声带来的影响,我推测可能是数据增强还是无法覆盖真实印章的噪声特征范围,因为在部分模糊情况下的准确率直逼清晰印章。

UnstoppableCurry commented 7 months ago

感谢博主 学到了。 对于第二点,有一个问题。您指的模糊具体指的是那些。背景文字与前景印章重合 还是 指的像素密度太低 导致的图片模糊的这个意思? 我最近做实验发现 样本A: 彩色->灰度->彩色 样本B:彩色 样本C: 样本A+样本B 对于检测-分割任务 训练样本为全部为样本A时 拟合与 最终性能 优于 样本B 与样本C (训练集上全部为合成样本,验证集上位合成样本与真实样本)

有时间的话可以验证一下在识别任务上,是不是同样也是这样子的存在。 怀疑是灰度合成样本更接近真实样本。

Gmgge commented 7 months ago

我修正了上面的描述,真实数据不是存在很多种情况的噪声吗?有的时印泥情况造成印章颜色过深、过浅、扫描不清晰、背景文字干扰、印章重叠、像素过低等等,如果你的数据增强能够覆盖足够多的情况下,有可能会解决部分噪音情况的真实数据缺失情况。

合成样本的效果通常来说取决与你合成的策略、样本集特征范围等。

UnstoppableCurry commented 7 months ago

好的

zhuyang2356 commented 4 months ago

您好,我想共享数据,但是没有自动化打标签工具,方便的话请告知打标工具等,或者可以组织一个群之类的东西。方便有志于此的同志。

我修正了上面的描述,真实数据不是存在很多种情况的噪声吗?有的时印泥情况造成印章颜色过深、过浅、扫描不清晰、背景文字干扰、印章重叠、像素过低等等,如果你的数据增强能够覆盖足够多的情况下,有可能会解决部分噪音情况的真实数据缺失情况。

合成样本的效果通常来说取决与你合成的策略、样本集特征范围等。

Gmgge commented 4 months ago

自动化打标签通常来说有两种方案 1.使用付费api来打标签,性价比极高; 2.在构建一定的数据集之后,训练模型,使用自己的模型进行打标。

zhuyang2356 commented 4 months ago

自动化打标签通常来说有两种方案 1.使用付费api来打标签,性价比极高; 2.在构建一定的数据集之后,训练模型,使用自己的模型进行打标。

谢谢,我想加入您的项目,有什么办法协作么

Gmgge commented 4 months ago

非常期待大家参与合作,这是开源项目,任何有效的修复、维护、拓展等都可以提交pr,通过审核之后合入即可成为协作者,无需任何其他的批准要求!

freebooterish commented 3 months ago

自动化打标签通常来说有两种方案 1.使用付费api来打标签,性价比极高; 2.在构建一定的数据集之后,训练模型,使用自己的模型进行打标。

您好!请问使用付费api来打标签这种方式,能分享以下具体方式吗?如何付费等等,谢谢您的开源项目! 分享一个数据集: 链接: https://pan.baidu.com/s/1iOciAjii82nXNyKrbbXciQ?pwd=q6a7 提取码: q6a7 --来自百度网盘超级会员v8的分享

dc6273632 commented 2 months ago

作者您好,使用您的方法训练印章识别模型,我看好像都不需要标注出文字的位置,直接就标注文字的内容就可以了?

Gmgge commented 2 months ago

@freebooterish 百度印章识别、阿里印章识别、合合信息印章识别等。

Gmgge commented 2 months ago

@dc6273632 嗯呢,这个是端到端的算法,不需要标注字符位置。

dc6273632 commented 2 months ago

如果要在自己的数据集上训练印章识别模型,需要下载哪一个预训练模型?

dc6273632 commented 2 months ago

在训练或者推理的时候如果将印章图片转正,识别率是不是会高很多?对于印章转正有什么好的办法吗?

Gmgge commented 2 months ago

@dc6273632 1.通常来说可以下载预训练模型,不过你也可以参考issue里面另一个小伙伴的网络配置,重新训练,他的线上精度98%,相当优秀的表现! 2.不需要,添加旋转数据增强就好,端到端策略就是为了去除各种人工设定的处理逻辑,让模型自己去学习。

dc6273632 commented 2 months ago

@dc6273632 1.通常来说可以下载预训练模型,不过你也可以参考issue里面另一个小伙伴的网络配置,重新训练,他的线上精度98%,相当优秀的表现! 2.不需要,添加旋转数据增强就好,端到端策略就是为了去除各种人工设定的处理逻辑,让模型自己去学习。

主要我想知道的是如果送给模型的样本都是转正的,推理的时候也都是转正的,这样识别精度会不会比未转正训练推理的精度要高一些呢?哪怕只高个2%-3%也是好的,说明前置的转正处理事有意义的,如果没有精度的提升,那这个就是无用功了。

Gmgge commented 2 months ago

@dc6273632 你好,这是个值得做的消融实验,可以降低任务的复杂度,从而降低对模型的要求。在同等规模的模型下,也许是可以提升精度,因为相当于把一部分工作前移到方向预测模型了,简化了后续模型的识别任务。

dc6273632 commented 2 months ago

@dc6273632 你好,这是个值得做的消融实验,可以降低任务的复杂度,从而降低对模型的要求。在同等规模的模型下,也许是可以提升精度,因为相当于把一部分工作前移到方向预测模型了,简化了后续模型的识别任务。

好的,谢谢老师的解答!还有一个问题,就是一些生僻字在训练样本中出现的次数少,然后在推理的时候会出现识别不出的情况,像这种的是否可以将出现该生僻字的样本多复制几份,重新训练来解决?

Gmgge commented 2 months ago

可以直接复制,但是更建议这边用到的生僻字作为字典,生成一些印章数据进行训练。

dc6273632 commented 2 months ago

可以直接复制,但是更建议这边用到的生僻字作为字典,生成一些印章数据进行训练。

好的,了解了,老师。我发现主要就是因为这些出现次数较少的字影响了模型最终的精度,如果能平衡字符出现次数,估计模型的精度会上一个台阶。

dc6273632 commented 2 months ago

可以直接复制,但是更建议这边用到的生僻字作为字典,生成一些印章数据进行训练。

老师,问个问题,是不是如果我的数据集的字符数量超过了预训练模型的字符数量,就没办法使用预训练模型了?