代码:https://github.com/Ucas-HaoranWei/GOT-OCR2.0?tab=readme-ov-file
在线demo:https://huggingface.co/spaces/stepfun-ai/GOT_official_online_demo
0.前言
最早做ocr的时候,就在想如何能做一个端到端的模型,就不用先检测再识别,最起码只用只用维护一个模型。现在他来了。而且鲁棒性,适用面都很强。但是部署。。。
1.效果实测
可以通过在线demo实测,效果强的可怕。
2.论文解读
2.1 主要贡献
- 实现了一种端到端的OCR模型。
- 多样的输入,多样的输出,还支持交互式。
- 在输入端,该模型支持切片和整页样式中常用的场景和文档样式图像。在输出端,GOT 可以通过简单的提示生成普通或格式化的结果(markdown/tikz/smiles/kern)。此外,该模型具有交互式OCR特征,即由坐标或颜色引导的区域级识别。此外,我们还将动态分辨率和多页OCR技术应用于GOT,以获得更好的实用性
2.2 网络结构
encoder :编码器结构是 VitDet基本版本,参数约为 80M,它将 1024×1024×3 输入图像转移到 256×1024 图像token,然后,这些图像标记通过 1024×768 线性层投影到语言模型。
qwen-0.5B:大语言模型
2.3 训练细节
第一阶段:encoder训练:
受 LVLM 设计的启发,解码器可以通过训练有素的语言模型进行初始化。然而,我们没有为 OCR-2.0 模型找到合适的预训练编码器,所以我们必须自己训练一个。我们希望新的OCR编码器能够很好地处理各种输入形状(切片和整个页面)中常用的场景和文档文本识别。
编码器结构是 VitDet基本版本,再接一个小的decoder OPT-125M
第二阶段:微调大预言decoder
在视觉编码器的预训练步骤之后,我们将其连接到更强大的语言模型,以构建 GOT 的最终架构。在这里,我们采用 Qwen-0.5B作为解码器,因为它的参数数量相对较少,同时结合了多种语言的先验知识。连接器的尺寸(即线性嵌入层)调整为 1024×1024,以与 Qwen-0.5B 的输入通道对齐。因此,GOT 具有无缝的编码器-解码器范式,总共有大约 580M 的参数,这在计算上更友好,更容易部署在具有 4G 内存的消费级 GPU 上。编码器的高压缩率(1024×1024 光像素到 256 个图像标记)为解码器节省了大量标记空间以生成新的标记。同时,解码器的令人满意的解码上下文长度(我们使用大约 8K max-length)确保 GOT 可以有效地输出密集场景下的 OCR 结果
第三阶段:prompt微调
作为高交互特征,细粒度OCR是由空间坐标或颜色控制的区域级视觉感知。用户可以在问题提示中添加框坐标(框引导的 OCR)或颜色文本(颜色引导的 OCR),以请求感兴趣区域 (RoI) 内的识别,避免其他不相关字符的输出
2.4 实验结果
- open-source Fox benchmark上的结果
- 论文中效果图
3. other
- 核心就是一个encoder+decoder模式的ocr,这和最开始的end2end ocr的核心是一样的,只是以前是用cnn+transformer,或者transformer+transformer,现在encoder,decoder都用了更大的模型,更多的数据。