{"notes":[{"id":"text-recognition/vocabulary-reliance","category":"text-recognition","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"Vocabulary Reliance","subtitle":"背单词的副作用","author":"Z. Yuan","paperDate":"2020-05-08","publishedOn":"2026-03-26","paperTitle":"On Vocabulary Reliance in Scene Text Recognition","paperUrl":"https://arxiv.org/abs/2005.03959","bibliography":{"title":"On Vocabulary Reliance in Scene Text Recognition","authors":["Zhaoyi Wan","Jielei Zhang","Liang Zhang","Jiebo Luo","Cong Yao"],"url":"https://arxiv.org/abs/2005.03959","pdfUrl":"https://arxiv.org/pdf/2005.03959v1","codeUrl":null,"preprint":{"id":"2005.03959","submittedOn":"2020-05-08","url":"https://arxiv.org/abs/2005.03959"},"publication":{"venue":"CVPR","year":2020,"kind":"conference","url":"https://openaccess.thecvf.com/content_CVPR_2020/html/Wan_On_Vocabulary_Reliance_in_Scene_Text_Recognition_CVPR_2020_paper.html"},"citation":"@misc{textrecognitionvocabularyreliance2020,\n  title = {{On Vocabulary Reliance in Scene Text Recognition}},\n  author = {Zhaoyi Wan and Jielei Zhang and Liang Zhang and Jiebo Luo and Cong Yao},\n  year = {2020},\n  eprint = {2005.03959},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2005.03959}\n}\n","citationPath":"/content/papers/citations/text-recognition/vocabulary-reliance.5acdb6f80bed.bib"},"thumbnail":{"src":"/content/papers/assets/566d359ce201c95044d8eb677291acf879055af5097aafccc62b096bb2e720ff.png","width":633,"height":233},"locale":"zh-hans","path":"/content/papers/zh-hans/text-recognition/vocabulary-reliance.7b96b935ce02.md","headings":[{"id":"定义问题","text":"定义问题","depth":2},{"id":"解决问题","text":"解决问题","depth":2},{"id":"拆成四个阶段","text":"拆成四个阶段","depth":3},{"id":"三份可以控制词汇的训练数据","text":"三份可以控制词汇的训练数据","depth":3},{"id":"四个指标","text":"四个指标","depth":3},{"id":"讨论","text":"讨论","depth":2},{"id":"混入随机字符串模型就没那么依赖词汇","text":"混入随机字符串，模型就没那么依赖词汇","depth":3},{"id":"三种预测层","text":"三种预测层","depth":3},{"id":"上下文模块和预测层绑在一起","text":"上下文模块和预测层绑在一起","depth":3},{"id":"让两种模型互相学习","text":"让两种模型互相学习","depth":3},{"id":"读这篇时要知道的事","text":"读这篇时要知道的事","depth":3},{"id":"结论","text":"结论","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"text-recognition/wwwstr","relation":"referenced","topic":""}]},{"id":"text-recognition/wwwstr","category":"text-recognition","legacyPath":"text-recognition/1904-wwwstr","legacySlug":"1904-wwwstr","legacyPaths":[],"title":"WWWSTR","subtitle":"数据与模型分析","author":"Z. Yuan","paperDate":"2019-04-03","publishedOn":"2024-10-10","paperTitle":"What Is Wrong With Scene Text Recognition Model Comparisons? Dataset and Model Analysis","paperUrl":"https://arxiv.org/abs/1904.01906","bibliography":{"title":"What Is Wrong With Scene Text Recognition Model Comparisons? Dataset and Model Analysis","authors":["Jeonghun Baek","Geewook Kim","Junyeop Lee","Sungrae Park","Dongyoon Han","Sangdoo Yun","Seong Joon Oh","Hwalsuk Lee"],"url":"https://arxiv.org/abs/1904.01906","pdfUrl":"https://arxiv.org/pdf/1904.01906","codeUrl":null,"preprint":{"id":"1904.01906","submittedOn":"2019-04-03","url":"https://arxiv.org/abs/1904.01906"},"publication":{"venue":"ICCV","year":2019,"kind":"conference","url":"https://arxiv.org/abs/1904.01906"},"citation":"@misc{textrecognitionwwwstr2019,\n  title = {{What Is Wrong With Scene Text Recognition Model Comparisons? Dataset and Model Analysis}},\n  author = {Jeonghun Baek and Geewook Kim and Junyeop Lee and Sungrae Park and Dongyoon Han and Sangdoo Yun and Seong Joon Oh and Hwalsuk Lee},\n  year = {2019},\n  eprint = {1904.01906},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1904.01906}\n}\n","citationPath":"/content/papers/citations/text-recognition/wwwstr.4537315eda97.bib"},"thumbnail":{"src":"/content/papers/assets/3c14afb4e2ad3bd5c433008345218e2aa4c6c6157b4ef4c546eb632039e4c6a7.jpg","width":1980,"height":220},"locale":"zh-hans","path":"/content/papers/zh-hans/text-recognition/wwwstr.755751c32b51.md","headings":[{"id":"数据集分析","text":"数据集分析","depth":2},{"id":"训练数据集","text":"训练数据集","depth":3},{"id":"测试数据集","text":"测试数据集","depth":3},{"id":"版本差异","text":"版本差异","depth":3},{"id":"架构分析","text":"架构分析","depth":2},{"id":"转换阶段","text":"转换阶段","depth":3},{"id":"特征提取阶段","text":"特征提取阶段","depth":3},{"id":"序列建模阶段","text":"序列建模阶段","depth":3},{"id":"预测阶段","text":"预测阶段","depth":3},{"id":"实验配置","text":"实验配置","depth":2},{"id":"讨论","text":"讨论","depth":2},{"id":"准确率-时间权衡分析","text":"准确率-时间权衡分析","depth":3},{"id":"准确率-内存权衡分析","text":"准确率-内存权衡分析","depth":3},{"id":"模块分析","text":"模块分析","depth":3},{"id":"失败案例分析","text":"失败案例分析","depth":3},{"id":"结论","text":"结论","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"text-recognition/yatr","relation":"next","topic":"文字识别的训练数据与泛化"}]}],"text":"场景文字识别的分数，在 2010 年代后半段涨得飞快。论文开头举了一个例子：IIIT-5k 在不提供词典的设置下，准确率在很短的时间内从 78.2% 升到 96.0%。\n\n分数这么高，模型真的把字看清楚了吗？\n\n这篇来自旷视（Megvii）、中国矿业大学与罗切斯特大学的论文发现，最强的那些模型，读「训练时见过的单词」特别准，读「没见过的单词」就差了一截，而且这个差距和图像质量无关。作者把这个现象叫做**词汇依赖**（vocabulary reliance）。\n\n论文发表于 CVPR 2020，本文依据 arXiv v1 阅读。\n\n## 定义问题\n\n[![四张场景文字图片与识别结果：左边模糊的 BEAUTY、everyday 被正确读出；右边清晰的 UNIVERSITI 被读成 UNIVERSITY，QINGYUANLU 被读成 AINGYUANLU，错误字母以红色标示](/content/papers/assets/566d359ce201c95044d8eb677291acf879055af5097aafccc62b096bb2e720ff.png)](/content/papers/assets/566d359ce201c95044d8eb677291acf879055af5097aafccc62b096bb2e720ff.png)\n\n*原论文 Figure 1，取自 [**v1 PDF 第 1 页**](https://arxiv.org/pdf/2005.03959v1#page=1)。左侧为词汇内的单词，右侧为词汇外的单词；红字为识别错误。*\n\n先看这四张图。左边两张很模糊，BEAUTY 的右半边几乎看不见，模型还是读对了。右边两张清楚得多，模型却读错了：招牌上的 UNIVERSITI 被读成 UNIVERSITY，路牌上的 QINGYUANLU 被读成 AINGYUANLU。\n\n图里用的是当时表现最好的识别器之一 ASTER。作者的解读是，它的循环记忆机制是一把双刃剑：见过的单词，即使图像受损也能读回来；没见过的单词，即使图像清晰也可能读错。\n\n这是个别案例，还是普遍现象？作者用同样的 ResNet-50 骨干网络与 SynthText 训练数据，复现了四种代表性方法，再把 IIIT-5k 的测试图片按单词是否在词汇中分成两组：\n\n| 方法 | 全部 | 词汇内 | 词汇外 |\n| --- | ---: | ---: | ---: |\n| CRNN | 86.8 | 91.1 | 68.7 |\n| FAN | 89.9 | 93.1 | 75.3 |\n| CA-FCN | 89.3 | 91.6 | 76.3 |\n| ASTER | 89.2 | 92.9 | 74.6 |\n\n*表：原论文 Table 1，IIIT-5k 准确率（%）。*\n\n四种方法在词汇外都掉了大约 15 到 22 个百分点。作者的结论是：**词汇依赖普遍存在，只是程度不同**。\n\n## 解决问题\n\n要比较「程度不同」，得先有一套能把变量拆开的实验框架。\n\n### 拆成四个阶段\n\n作者沿用 [What Is Wrong With Scene Text Recognition Model Comparisons?](https://arxiv.org/abs/1904.01906) 的拆分方式，把一个识别模型分成四段：**图像变换**（TRAN）、**特征提取**（FEAT）、**上下文建模**（CNTX）、**预测**（PRED）。\n\n和词汇依赖关系最大的是后两段，所以前两段全部固定：不做图像变换，骨干网络一律用 ResNet-50。后两段则有三种预测层、三种上下文模块可以组合：\n\n- **预测层**：\n  - **注意力解码器**（Atten.）：一个字一个字往后输出，每一步都参考已经输出的字。\n  - **CTC**：每一列特征各自输出一个字符，再合并重复、删除空白。\n  - **分割式**（Seg.）：对每个字符做分割，从分割图中找出字符及其位置，类似 CA-FCN。\n- **上下文模块**：\n  - 不加（None）。\n  - **双向 LSTM**（BLSTM）：沿特征序列从左到右、从右到左各扫一遍。\n  - **金字塔池化**（PPM）：把特征图池化成几种不同尺寸，再放大回原尺寸拼接起来，补上不同范围的全局信息。分割式方法与 BLSTM 不兼容，所以用 PPM。\n\n\n> [!TIP]\n> \n> 这套四段拆分，以及它如何让不同模型可以公平比较，可以参考我们的笔记：\n> \n> - **[[19.04] WWWSTR：数据与模型分析](/blog/papers/text-recognition/wwwstr)**\n\n\n### 三份可以控制词汇的训练数据\n\nSynthText 的词汇来自一个很大的文本语料，有几万个单词，看不出词汇的影响。作者改用自己合成的数据。\n\n他们把 IC13、IC15、SVT、SVTP、CUTE 五个测试集的标准答案收集起来，共 3,172 个不重复的单词，作为「词汇」。IIIT-5k 不参与收集，按单词是否在这份词汇中，分成 IIIT-I（1,354 张）与 IIIT-O（1,646 张）。\n\n接着用 SynthText 的合成引擎，做出三份各约 700 万张的训练数据：\n\n- **LexiconSynth（LS）**：单词全部取自这 3,172 个词。\n- **RandomSynth（RS）**：由随机字符组成的假单词，长度分布和 LS 相同，字母、数字、标点约为 6:3:1。\n- **MixedSynth（MS）**：LS 与 RS 按比例 $r$ 混合，默认 $r=0.5$。\n\n每个单词都渲染成全大写、全小写、首字母大写三种形式，并有 10% 的概率加上标点。\n\n### 四个指标\n\n有了这三份数据，就能分别衡量模型的不同能力：\n\n- **OA**（Observation Ability，观察能力）：用 RS 训练，在所有测试图片上的准确率。没有词汇可背，分数全靠看。\n- **VA**（Vocabulary Learning Ability，词汇学习能力）：用 LS 训练，在词汇内的五个测试集上的准确率。\n- **VG**（Vocabulary Generalization，词汇泛化）：用 LS 训练时，模型在 IIIT-I 与 IIIT-O 之间的差距，减去用 RS 训练时的差距。\n- **HM**：三者的调和平均，作为总分。\n\nVG 的设计很巧妙，值得停下来算一遍。IIIT-I 与 IIIT-O 两组图片本身的难度可能不同，这个差距和词汇无关。用 RS 训练的模型没见过任何真正的单词，它在两组上的差距，就可以当成图片本身的难度差：\n\n$$\nVG=1-\\big(\\mathrm{Gap}(LS)-\\mathrm{Gap}(RS)\\big)\n$$\n\n拿没有上下文模块的注意力模型来算。Table 3 里，它用 LS 训练时，IIIT-I 与 IIIT-O 分别是 93.7% 与 61.0%，差 32.7 个百分点；用 RS 训练时差 9.8。代进去：$1-(0.327-0.098)=0.771$，正是 Table 5 的 77.1。\n\n同样不加上下文模块的 CTC，两个差距是 18.0 与 10.3：$1-(0.180-0.103)\\approx0.923$，泛化好得多。\n\n## 讨论\n\n### 混入随机字符串，模型就没那么依赖词汇\n\n作者先验证数据的效果。把 RS 按比例混入 LS，没有上下文模块的注意力模型在 IIIT-5k 上的准确率从 77.8% 升到 84.4%；比例到 0.5 左右就不再上升。Figure 4 也显示，混入 RS 以后，模型「把答案说成词汇内单词」的概率随之下降。\n\n但词汇也不能完全拿掉。作者认为，模型仍需要足够比例的真实单词，才能学到对识别有帮助的词汇知识。\n\n### 三种预测层\n\n| 编号 | 预测层 | 上下文 | VA | VG | OA | HM |\n| --- | --- | --- | ---: | ---: | ---: | ---: |\n| ① | Atten. | None | 85.7 | 77.1 | 69.6 | 76.9 |\n| ③ | Atten. | BLSTM | 87.0 | 79.1 | 69.8 | 78.0 |\n| ④ | CTC | None | 77.8 | 92.4 | 65.8 | 77.1 |\n| ⑥ | CTC | BLSTM | 79.9 | 90.2 | 67.6 | 78.1 |\n| ⑦ | Seg. | None | 79.7 | 97.3 | 69.9 | 80.8 |\n\n*表：节选自原论文 Table 5。HM 可以用同一行的 VA、VG、OA 重新算出来核对。*\n\n从表上可以读出三件事：\n\n1. **注意力解码器最会背单词**，VA 最高，VG 最低。它每一步都把前面输出的字当成输入，词汇自然就被学了进去。\n2. **分割式泛化最好**，VG 97.3，观察能力也和注意力解码器差不多。\n3. **CTC 两头都不突出**。作者说它的表现大致被另外两种覆盖，观察能力也最弱。\n\n### 上下文模块和预测层绑在一起\n\n加不加上下文模块，效果要看和谁搭配。\n\n对注意力解码器来说，它本来就会学词汇，再加上下文模块变化不大。CTC 的情况就不同了：加上 PPM，VA 从 77.8 升到 84.8；加上 BLSTM 也有提升（79.9）。与此同时，VG 从 92.4 降到 89.5 与 90.2。作者的解释是，CTC 解码本身缺少上下文建模，前面的模块替它补上了这一块，也顺带引入了词汇依赖。\n\n所以作者的建议是：VA 与 VG 之间存在取舍。注意力解码器配 BLSTM，适合测试词汇大多落在训练范围内的应用；需要读大量没见过的单词时，就选类似 CA-FCN 的分割式架构。\n\n### 让两种模型互相学习\n\n最后，作者提出一种训练方法，想把注意力解码器的词汇能力和分割式的泛化能力结合起来。\n\n做法参考了知识蒸馏与 deep mutual learning：两个模型从头一起训练，除了各自的损失，再加上一项 KL 散度，让两者的输出分布互相靠近。分割式模型比较依赖视觉特征，它的预测对注意力解码器来说，就像一种额外的视觉正则化。\n\n效果相当明显。注意力解码器的 VG 从 77.1% 升到 93.6%，HM 从 76.9 升到 82.6；用 LS 训练时，词汇内外的差距从 32.7 个百分点几乎减半，降到 16.9。\n\n### 读这篇时要知道的事\n\n1. **训练数据全是合成的**。LS 的词汇只有 3,172 个单词，比实际应用小得多，作用是把词汇效应放大，不能直接换算成一般模型的错误率。\n2. **模型是 2020 年的**。之后的识别器大多用上了更大的预训练语言模型，论文的分组结论需要重新验证。\n3. **没有真实的随机字符串测试集**。作者也提到，评估随机字符串本身就可以当成一种指标，但当时没有一份具备真实图像复杂度、内容却是纯随机标签的标准数据，因此没有纳入。\n4. **表格有小矛盾**。Table 6 对同一组模型列出的 VA 和 Table 5 不同（例如 ① 为 83.2 对 85.7），正文说 PPM 让 CTC 的 VA 提升 10.5%，也和 Table 5 的数字对不上。Table 5 的 HM 能由 VA、VG、OA 重新算出，本文以它为准。\n\n## 结论\n\n这篇论文把一个大家隐约感觉得到、却没人量过的问题量了出来：\n\n1. **词汇依赖普遍存在**。四种代表性方法在没见过的单词上，都掉了大约 15 到 22 个百分点。\n2. **预测层决定了依赖的程度**。注意力解码器最会背、最难泛化；分割式泛化最好。\n3. **上下文模块会把词汇带进来**，对 CTC 尤其明显。\n4. **混入随机字符串或互相学习，可以减轻依赖**，而且不必牺牲太多准确率。\n\n论文最有用的地方，是那个用随机字符串扣掉图像难度的指标。六年后，识别器换成了整页生成的视觉语言模型，2026 年有研究把文档内容换成随机字母来测，看到的是同一件事，只是规模大得多。\n","imageSizes":{"/content/papers/assets/566d359ce201c95044d8eb677291acf879055af5097aafccc62b096bb2e720ff.png":{"width":633,"height":233}}}
