{"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-hant","path":"/content/papers/zh-hant/text-recognition/vocabulary-reliance.1a485aaefb98.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-hant","path":"/content/papers/zh-hant/text-recognition/wwwstr.9aa0888715bc.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}}}
