【第20篇】像人类一样阅读:自主、双向和迭代语言 场景文本识别建模

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

3.2.2、双向表示

给定一个文本字符串 y = ( y 1 , … , y n ) \boldsymbol{y}=\left(y_{1}, \ldots, y_{n}\right) y=(y1​,…,yn​),文本长度为 n,类别数为 c,双向和单向模型中 y i y_{i} yi​ 的条件概率为 P ( y i ∣ y n , … , y i + 1 , y i − 1 , … , y 1 ) P\left(y_{i} \mid y_{n}, \ldots, y_{i+1}, y_{i-1}, \ldots, y_{1}\right) P(yi​∣yn​,…,yi+1​,yi−1​,…,y1​)和 P ( y i ∣ y i − 1 , … , y 1 ) P\left(y_{i} \mid y_{i-1}, \ldots, y_{1}\right) P(yi​∣yi−1​,…,y1​) 分别。 从信息论的角度来看,双向表示的可用熵可以量化为 H y = ( n − 1 ) log ⁡ c . H_{y}=(n-1) \log c . Hy​=(n−1)logc.。 然而,对于单向表示,信息是 1 n ∑ i = 1 n ( i − 1 ) log ⁡ c = 1 2 H y \frac{1}{n} \sum_{i=1}^{n}(i-1) \log c=\frac{1}{2} H_{y} n1​∑i=1n​(i−1)logc=21​Hy​。 我们的见解是,以前的方法通常使用两个单向模型的集成模型,这本质上是单向表示。 单向表示基本上捕获了 1 2 H y \frac{1}{2} H_{y} 21​Hy​ 信息,导致与双向表示相比,特征抽象能力有限。

受益于第 3.2.1 节中的自主设计,可以转移具有拼写校正能力的现成 NLP 模型。 一种可行的方法是利用 BERT [5] 中的掩码语言模型 (MLM),将 yi 替换为令牌 [MASK]。 但是,我们注意到这是不可接受的,因为 MLM 应该为每个文本实例单独调用 n 次,导致效率极低。 我们没有屏蔽输入字符,而是通过指定注意掩码来提出 BCN。

image-20211114001333514

总的来说,BCN 是 L 层转换器解码器的变体。 BCN的每一层都是一系列多头注意力和前馈网络[39],然后是残差连接[10]和层归一化[1],如图4所示。 与vanilla Transformer不同的是,特征向量被馈送 进入多头注意力块而不是第一层网络。 此外,多头注意力中的注意力掩码旨在防止“看到自己”。 此外,在 BCN 中没有使用 self-attention 以避免泄漏 跨时间步长的信息。 多头区块内的注意力操作可以形式化为:

M i j = { 0 , i ≠ j − ∞ , i = j K i = V i = P ( y i ) W l F m h a = softmax ⁡ ( Q K ⊤ C + M ) V \begin{aligned} \mathbf{M}_{i j} &= \begin{cases}0, & i \neq j \\ -\infty, & i=j\end{cases} \\ \mathbf{K}_{i} &=\mathbf{V}_{i}=P\left(y_{i}\right) \mathbf{W}_{l} \\ \mathbf{F}_{m h a} &=\operatorname{softmax}\left(\frac{\mathbf{Q K}^{\top}}{\sqrt{C}}+\mathbf{M}\right) \mathbf{V} \end{aligned} Mij​Ki​Fmha​​={0,−∞,​i​=ji=j​=Vi​=P(yi​)Wl​=softmax(C ​QK⊤​+M)V​

其中 Q ∈ R T × C \mathbf{Q} \in \mathbb{R}^{T \times C} Q∈RT×C 是第一层中字符顺序的位置编码,否则为最后一层的输出。 K , V ∈ R T × C \mathbf{K},\mathbf{V} \in \mathbb{R}^{T \times C} K,V∈RT×C 由字符概率 P ( y i ) ∈ R c P\left(y_{i}\right) \in \mathbb{R}^{c} P(yi​)∈Rc 得到, W l ∈ R c × C \mathbf{W}_{l} \in \mathbb{R}^{c \times C} Wl​∈Rc×C为线性映射矩阵。 M ∈ R T × T \mathbf{M} \in \mathbb{R}^{T \times T} M∈RT×T是防止关注当前字符的注意力掩码矩阵。 在将 BCN 层堆叠成深层架构后,确定了文本 y 的双向表示 F l F_{l} Fl​。

通过以完形填空方式指定注意力掩码,BCN 能够优雅地学习比单向表示的集成更强大的双向表示。 此外,受益于类似 Transformer 的架构,BCN 可以独立并行地执行计算。 此外,它比集成模型更有效,因为只需要一半的计算和参数。

3.2.3、迭代修正

Transformer 的并行预测采用噪声输入,这些输入通常是视觉预测 [49] 或视觉特征 [25] 的近似值。 具体来说,如图2所示的双向表示的例子,P(“O”)的理想条件是“SH-WING”。 然而,由于环境模糊和遮挡,从VM获得的实际情况是“SH-VING”,其中“V”变成了噪声,损害了预测的可信度。 随着 VM 中错误预测的增加,它往往对 LM 更具敌意。

为了解决噪声输入的问题,我们提出了迭代 LM(如图 2 所示)。 LM 以不同的 y 分配重复执行 M 次。 对于第一次迭代,yi=1 是来自 VM 的概率预测。 对于后续迭代,yi≥2 是上次迭代中融合模型(第 3.3 节)的概率预测。 通过这种方式,LM 能够迭代地纠正视觉预测。

另一个观察结果是,基于 Transformer 的方法通常存在未对齐的长度问题 [49],这表明如果字符数与地面实况不一致,则 Transformer 很难纠正视觉预测。 未对齐长度问题是由填充掩码的不可避免的实现引起的,该掩码是固定的,用于过滤文本长度之外的上下文。 我们的迭代 LM 可以缓解这个问题,因为视觉特征和语言特征被多次融合,因此预测的文本长度也逐渐细化

3.3、融合


从概念上讲,在图像上训练的视觉模型和在文本上训练的语言模型来自不同的模态。 为了对齐视觉特征和语言特征,我们简单地使用门控机制 [49, 50] 进行最终决策:

G = σ ( [ F v , F l ] W f ) F f = G ⊙ F v + ( 1 − G ) ⊙ F l \begin{aligned} \mathbf{G} &=\sigma\left(\left[\mathbf{F}_{v}, \mathbf{F}_{l}\right] \mathbf{W}_{f}\right) \\ \mathbf{F}_{f} &=\mathbf{G} \odot \mathbf{F}_{v}+(1-\mathbf{G}) \odot \mathbf{F}_{l} \end{aligned} GFf​​=σ([Fv​,Fl​]Wf​)=G⊙Fv​+(1−G)⊙Fl​​

其中 W f ∈ R 2 C × C \mathbf{W}_{f} \in \mathbb{R}^{2 C \times C} Wf​∈R2C×C 和 G ∈ R T × C \mathbf{G} \in \mathbb{R}^{T \times C} G∈RT×C.

3.4、有监督训练


ABINet 使用以下多任务目标进行端到端训练:

L = λ v L v + λ l M ∑ i = 1 M L l i + 1 M ∑ i = 1 M L f i \mathcal{L}=\lambda_{v} \mathcal{L}_{v}+\frac{\lambda_{l}}{M} \sum_{i=1}^{M} \mathcal{L}_{l}^{i}+\frac{1}{M} \sum_{i=1}^{M} \mathcal{L}_{f}^{i} L=λv​Lv​+Mλl​​i=1∑M​Lli​+M1​i=1∑M​Lfi​

其中 L v 、 L l \mathcal{L}_{v}、\mathcal{L}_{l} Lv​、Ll​ 和 L f \mathcal{L}_{f} Lf​ 是 m a t h b f F v 的交叉熵损失、、、 m a t h b f F l \\mathbf{F}_{v} 的交叉熵损失 、 、 、\\mathbf{F}_{l} mathbfFv的交叉熵损失、、、mathbfFl 和 F f \mathbf{F}_{f} Ff​ 分别。 具体来说, L l i \mathcal{L}_{l}^{i} Lli​ 和 L f i \mathcal{L}_{f}^{i} Lfi​ 是第 i i i 次迭代的损失。 λ v \lambda_{v} λv​ 和 λ l \lambda_{l} λl​ 是平衡因子。

image-20211114001422741

3.5、半监督集成自训练


为了进一步探索我们的迭代模型的优越性,我们提出了一种基于自我训练的半监督学习方法 [46] 和迭代预测的集合。 自训练的基本思想是首先由模型本身生成伪标签,然后使用额外的伪标签重新训练模型。 因此,关键问题在于构建高质量的伪标签。

为了过滤噪声伪标签,我们提出以下方法:1)选择文本实例中字符的最小置信度作为文本确定性。 2)每个字符的迭代预测被视为一个整体,以平滑噪声标签的影响。 因此,我们定义过滤函数如下:

{ C = min ⁡ 1 ≤ t ≤ T e E [ log ⁡ P ( y t ) ] P ( y t ) = max ⁡ 1 ≤ m ≤ M P m ( y t ) \left\{\begin{array}{l} \mathcal{C}=\min _{1 \leq t \leq T} e^{\mathbb{E}\left[\log P\left(y_{t}\right)\right]} \\ P\left(y_{t}\right)=\max _{1 \leq m \leq M} P_{m}\left(y_{t}\right) \end{array}\right. {C=min1≤t≤T​eE[logP(yt​)]P(yt​)=max1≤m≤M​Pm​(yt​)​

其中 C \mathcal{C} C 是文本实例的最小确定性, P m ( y t ) P_{m}\left(y_{t}\right) Pm​(yt​) 是 m m m-th 次迭代中 t t t-th 个字符的概率分布 . 训练过程如算法 1 所示,其中 Q Q Q 是阈值。 B l , B u B_{l}, B_{u} Bl​,Bu​ 是来自标记和未标记数据的训练批次。 N max ⁡ N_{\max } Nmax​ 是最大训练步数, N u p l N_{u p l} Nupl​ 是更新伪标签的步数。

4、实验

===============================================================

4.1、数据集和实验细节


为了公平比较,按照[49]的设置进行实验。 具体来说,训练数据集是两个合成数据集 MJSynth (MJ) [13, 15] 和 SynthText (ST) [9]。 六个标准基准包括 ICDAR 2013 (IC13) [18]、ICDAR 2015 (IC15) [17]、IIIT 5KWords (IIIT) [27]、街景文本 (SVT) [42]、街景文本透视 (SVTP) [ 30] 和 CUTE80 (CUTE) [31] 作为测试数据集。 这些数据集的详细信息可以在以前的作品中找到 [49]。 此外,Uber-Text [52] 去除标签被用作未标记的数据集来评估半监督方法。

模型尺寸 C C C 始终设置为 512。 BCN 有 4 层,每层有 8 个注意力头。 平衡因子 λ v , λ l \lambda_{v}, \lambda_{l} λv​,λl​ 分别设置为 1,1。 图像通过几何变换(即旋转、仿射和透视)、图像质量恶化和颜色抖动等数据增强直接调整为 32 × 128 32 \times 128 32×128。 我们使用 4 个 NVIDIA 1080Ti GPU 来训练我们的批量大小的模型 384.采用ADAM优化器,初始学习率为1e-4,6个epoch后衰减为1e-5。

4.2、消融研究


4.2.1、视觉模型

image-20211114001449204

首先,我们从特征提取和序列建模两个方面讨论VM的性能。 实验结果记录在表中。 1.并行注意力是一种流行的注意力方法[25, 49],并且提出的位置注意力具有更强大的键/值向量表示。 从统计数据我们可以得出结论:1)简单地升级VM将导致准确性的巨大提升,但以参数和速度为代价。 2)为了升级VM,我们可以在特征提取中使用位置注意力,在序列建模中使用更深的transformer。

4.2.2、语言模型

自主策略。 为了分析自治模型,我们分别采用 LV 和 BCN 作为 VM 和 LM。 从表中的结果来看。 2 我们可以观察到:1) 预训练 VM 很有用,平均提高了约 0.6%-0.7% 的准确率; 2)在训练数据集(即 MJ 和 ST)上预训练 LM 的好处可以忽略不计; 3)同时从额外的未标记数据集(例如 WikiText-103)预训练 LM 是有帮助的,即使基础模型具有高精度。 上述观察表明,STR 对 VM 和 LM 进行预训练是有用的。 在额外的未标记数据集上预训练 LM 比在训练数据集上更有效,因为有限的文本多样性和有偏见的数据分布无法促进性能良好的 LM 的学习。 此外,在未标记的数据集上预训练 LM 很便宜,因为额外的数据很容易获得。

image-20211114001518835

此外,通过允许 VM 和 LM 之间的梯度流(AGF),性能平均下降 0.9%(表 2。我们还注意到 AGF 的训练损失急剧减少到较低的值。这表明过度拟合发生在 LM 作为 VM 有助于在训练中作弊,这也可能发生在隐式语言建模中。因此,强制 LM 通过 BGF 独立学习至关重要。我们注意到 SRN [49] 在 VM 之后使用 argmax 操作,这本质上是一个特殊的 BGF 的情况,因为 argmax 是不可微的。另一个优点是自治策略使模型具有更好的可解释性,因为我们可以深入了解 LM 的性能(例如,表 4),这在隐式语言建模中是不可行的。

image-20211114001622511

双向表示。 由于 BCN 是 Transformer 的变体,我们将 BCN 与其对应的 SRN 进行比较。 基于 Transformer 的 SRN [49] 表现出优越的性能,它是单向表示的集合。 为了公平比较,实验在除网络之外的相同条件下进行。 我们使用 SV 和 LV 作为 VM 来验证不同精度下的有效性 水平。 如表3所示,虽然BCN具有与SRN(SRN-U)的单向版本相似的参数和推理速度,但它在不同VM下的准确性方面取得了竞争优势。 此外,与集成中的双向 SRN 相比,BCN 表现出更好的性能,尤其是在 IC15 和 CUTE 等具有挑战性的数据集上。 此外,配备 BCN 的 ABINet 比 SRN 快约 20%-25%,这对于大规模任务是实用的。

image-20211114001604699

3.2.1 节认为 LM 可以被视为独立的单元来估计拼写纠正的概率分布,因此我们从这个角度进行实验。 训练集是来自 MJ 和 ST 的文本。 为了模拟拼写错误,测试集是随机选择的 20000 个项目,其中我们为 20% 的文本添加或删除一个字符,为 60% 的文本替换一个字符并保留 其余文本不变。 从表中的结果来看。 4,我们可以看到BCN在字符准确度和单词准确度上分别优于SRN 4.5%和14.3%,这表明BCN在字符级语言建模方面具有更强大的能力。

image-20211114001733601

为了更好地理解 BCN 在 ABINet 中的工作原理,我们将图 5 中的 top-5 概率可视化,以“今天”为例。 一方面,由于“today”是一个带有语义信息的字符串,以“-oday”和“tod-y”为输入,BCN可以高置信度地预测“t”和“a”,并有助于最终的融合预测。 另一方面,由于错误字符“l”和“o”是其余预测的噪声,BCN 变得不那么自信并且对最终预测几乎没有影响。 此外,如果有多个错误字符,由于缺乏足够的上下文,BCN 很难恢复正确的文本。

image-20211114001822575

迭代修正。 我们再次将 SV 和 LV 与 BCN 一起应用,以展示不同级别的迭代校正的性能。 实验结果见表5,其中在训练和测试中迭代次数设置为 1、2 和 3。 从结果可以看出,迭代3次BCN可以分别将准确率提高0.4%,平均提高0.3%。 具体来说,IIIT 是一个相对简单的数据集,具有清晰的字符外观,几乎没有收益。 然而,当涉及到其他更难的数据集,如 IC15、SVT 和 SVTP 时,迭代校正稳定地提高了准确度,并分别对 SV 和 LV 的 SVT 提高了 1.3% 和 1.0%。 还应注意,推理时间随迭代次数线性增加。

image-20211114001846424

我们进一步探讨了训练和测试之间迭代的差异。 图 6 中平均精度的波动表明: 1) 在测试中直接应用迭代校正也效果良好; 2)在训练中迭代是有益的,因为它为LM提供了额外的训练样本; 3)模型迭代3次以上准确率达到饱和状态,因此不需要大的迭代次数。

image-20211114001903028

为了对迭代校正有一个全面的认知,我们将图 7 中的中间预测可视化。通常,视觉预测可以修改为接近真实情况,但在某些情况下仍然存在错误。 经过多次迭代,最终可以对预测进行修正。 此外,我们还观察到迭代校正能够缓解未对齐长度问题,如图 7 的最后一列所示。

从消融研究中我们可以得出结论:1)双向 BCN 是一个强大的 LM,可以有效地提高准确性和速度的性能。 2)通过进一步为 BCN 配备迭代校正,可以减轻噪声输入问题,建议以增量计算为代价来处理低质量图像等具有挑战性的示例。

4.3、与最先进技术的比较


image-20211114001944501

通常,直接使用报告的统计数据 [2] 与其他方法进行公平比较并不是一件容易的事,因为主干(即 CNN 结构和参数)、数据处理(即图像校正和数据增强)和训练技巧等。为了严格执行公平比较,我们重现了与 ABINet 共享相同实验配置的 SOTA 算法 SRN,如表 6 所示。两个重新实现的 SRN-SV 和 SRN-LV 与报告的模型略有不同,通过替换 VM、消除多尺度训练的副作用、应用衰减的学习率等。请注意,由于 SRN-SV 的表现略好于 SRN以上技巧。从比较中可以看出,我们的 ABINet-SV 在 IC13、SVT、IIIT、IC15、SVTP 和 CUTE 数据集上分别以 0.5%、2.3%、0.4%、1.4%、0.6%、1.4% 的性能优于 SRN-SV。此外,具有更强大 VM 的 ABINet-LV 在 IC13、SVT、IC15、SVTP 和 CUTE 基准上比其对应物提高了 0.6%、1.2%、1.8%、1.4%、1.0%。

与最近在 MJ 和 ST 上训练的 SOTA 作品相比,ABINet 也表现出令人印象深刻的表现(表 6)。 特别是 ABINet 在 SVT、SVTP 和 IC15 上具有突出的优势,因为这些数据集包含大量低质量的图像,如噪声和模糊图像,VM 无法自信地识别这些图像。 此外,我们还发现具有异常字体和不规则文本的图像可以被成功识别,因为语言信息是视觉特征的重要补充。 因此,即使没有图像校正,ABINet 也可以在 CUTE 上获得第二好的结果。

4.4、半监督训练


为了进一步推动准确阅读的边界,我们探索了一种半监督方法,该方法利用 MJ 和 ST 作为标记数据集,将 Uber-Text 作为未标记数据集。 3.5节的阈值Q设置为0.9,Bl和Bu的batch size分别为256和128。实验结果见表。图 6 表明,所提出的自训练方法 ABINet-LVst 可以轻松地在所有基准数据集上优于 ABINet-LV。此外,集成自训练 ABINet-LVest 通过提高数据利用效率显示出更稳定的性能。观察提升后的结果,我们发现字体稀少和外观模糊的硬样本也可以被频繁识别(图 8),这表明探索半无监督学习方法是场景文本识别的一个有前途的方向。

image-20211114002008886

5、结论

===============================================================
文末有福利领取哦~

👉一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-CE05PRyb-1713437513767)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 19
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值