自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

【多模態(tài)&文檔智能】OCR-free感知多模態(tài)大模型技術鏈路及訓練數(shù)據(jù)細節(jié)

人工智能
GOT是Vary的后續(xù),GOT通過三個階段的訓練,模型能夠逐步提升其在各種OCR任務上的性能,從基礎的純文本識別到處理更復雜的格式化和通用OCR任務。

目前的一些多模態(tài)大模型的工作傾向于使用MLLM進行推理任務,然而,純OCR任務偏向于模型的感知能力,對于文檔場景,由于文字密度較高,現(xiàn)有方法往往通過增加圖像token的數(shù)量來提升性能。這種策略在增加新的語言時,需要重新進行訓練,計算開銷較大,成本較高。因此,本文再來看看vary和got這兩個銜接工作,看看其完整的技術鏈路。

Vary

傳統(tǒng)的vlm做法和vary傳統(tǒng)的vlm做法和vary

技術點:

  • 新視覺詞匯表的生成:設計了一個詞匯網(wǎng)絡和一個小型解碼器Transformer,通過自回歸生成所需的詞匯表。具體使用SAM預訓練的ViTDet(base scale)作為新詞匯網(wǎng)絡的主要部分,并在其最后一層后添加兩個卷積層,以將特征形狀轉換為與CLIP-L輸出匹配的形狀。

添加了兩個卷積層,以使輸出與CLIP相似添加了兩個卷積層,以使輸出與CLIP相似

  • 數(shù)據(jù):在生成階段,使用手動文檔和圖表數(shù)據(jù)作為正樣本,自然圖像作為負樣本,通過自回歸方式訓練詞匯網(wǎng)絡。文檔數(shù)據(jù)包括從arXiv和CC-MAIN-2021-31-PDF-UNTRUNCATED收集的英文和中文字檔,圖表數(shù)據(jù)包括使用matplotlib和pyecharts渲染的圖表。
  • 詞匯表融合:在生成新詞匯表后,將其添加到原始LVLMs中,引入新特征。在這個過程中,凍結新舊詞匯網(wǎng)絡的權重,解凍其他模塊的權重。新詞匯表與原始CLIP-VIT并行,各自擁有獨立的輸入嵌入層,在LLM之前集成。

訓練方法

圖片圖片

整體分為兩個階段:Vary-tiny和Vary-base

1.Vary-tiny

  • 首先構建了一個具有新視覺詞匯表(vision vocabulary)的視覺Transformer(ViT),命名為Vary-tiny。采用了SAM預訓練的ViTDet作為Vary-tiny的主要組成部分,并在其后添加了兩個卷積層,以便將特征形狀調整為與CLIP-VIT的輸出相匹配。接下來,將一個全連接層和一個文本解碼器OPT-125M(這里也可以使用更大的大型語言模型(LLM)來替代OPT-125M。)連接到Vary-tiny上。
  • 為了訓練Vary-tiny,需要構造正負樣本的圖像-文本對。正樣本包括需要進行OCR處理的圖像及其OCR結果(如密集文本和Python字典風格的圖表結果)。負樣本則來自COCO數(shù)據(jù)集,包含自然圖像以及與之對應的文本“This is an natural image”。

2.Vary-base

  • Vary-base 是基于 Vary-tiny 的改進版本,它將 Vary-tiny 與原始的 CLIP-L ViT 并行運行。這兩個視覺變換器(ViT)的輸出嵌入首先分別輸入到它們各自的線性層,然后將這兩個線性層的輸出連接起來,最后輸入到LLM中。在 Vary-base 中,Vary-tiny 的輸入圖片分辨率為 1024×1024,而其最后一層輸出的特征圖尺寸為 64×64×256。這與 CLIP-L 的輸出尺寸不匹配,因此在 Vary-tiny 中添加了兩個卷積層來進行特征轉換,以確保尺寸的一致性。在訓練 Vary-base 的過程中,會凍結兩個 ViT 的權重,只更新線性投影層和 LLM 的參數(shù)。訓練數(shù)據(jù)包括自然場景和 OCR 場景的視覺問答(VQA),以便讓模型能夠在這些場景下表現(xiàn)出更好的性能。

訓練數(shù)據(jù)

1.Vary-tiny(學習新的視覺詞匯表)

  • 文檔數(shù)據(jù):從arXiv和CC-MAIN-2021-31-PDF-UNTRUNCATED收集的高分辨率文檔圖像文本對。英文部分:從arXiv的開放獲取文章中收集PDF格式的文檔。中文部分:從互聯(lián)網(wǎng)上的電子書籍中收集。處理方式:

使用PyMuPDF庫提取每頁PDF中的文本信息。

使用pdf2image庫將每頁轉換為PNG圖像。

構建了100萬張中文和100萬張英文的文檔圖像文本對用于訓練。

  • 圖表數(shù)據(jù):使用matplotlib和pyecharts作為渲染工具生成圖表圖像文本對。matplotlib風格:構建了25萬張中英文圖表圖像文本對。pyecharts風格:構建了50萬張中英文圖表圖像文本對。處理方式:

圖片圖片

       將圖表中的文本(如標題、x軸和y軸標簽)隨機從互聯(lián)網(wǎng)下載的自然語言處理(NLP)語料庫中選擇,并轉換為Python字典格式。

  • 負樣本自然圖像:從COCO數(shù)據(jù)集中提取自然圖像及其對應的文本。文本:隨機選擇以下句子:“It's an image of nature”、“Here's a nature picture”、“It's a nature photo”、“This is a natural image”、“That's a shot from nature”。目的:確保新引入的詞匯不會對CLIP-VIT擅長的自然圖像數(shù)據(jù)造成干擾。

1.Vary-base(合并后再訓練)

  • 文檔數(shù)據(jù):除了文檔數(shù)據(jù)外,還需要支持公式和表格等格式的數(shù)據(jù)。 處理方式:

從arxiv收集一些.tex源文件,使用正則表達式提取表格、數(shù)學公式和純文本。

使用pdflatex重新渲染這些內容,并收集100萬張英文頁面和40萬張中文頁面。

將每個文檔頁的文本基準轉換為mathpix markdown格式,以統(tǒng)一格式。

  • 圖表數(shù)據(jù):使用GPT-4生成相關語料庫,并利用高質量的語料庫渲染20萬張圖表數(shù)據(jù)用于Vary-base訓練。處理方式:
  • 使用GPT-4生成圖表,確保圖表中的文本(如標題、x軸和y軸值)具有強相關性。
  • 通用數(shù)據(jù):使用LAION-COCO數(shù)據(jù)集隨機提取自然圖像文本對(400萬對圖像文本對)。在預訓練和微調階段使用這些數(shù)據(jù)進行訓練。

格式遵循LLaVA-MPT sft格式:

<|im_start|>user: <img>"<image>"</img> "texts
input"<|im_end|> <|im_start|>assistant: "texts output" <|im_end|>

實驗

圖片圖片

圖片圖片

GOT-OCR

GOT-OCR是Vary的后續(xù),提出了通用OCR理論(OCR-2.0)及其模型GOT,用于解決OCR-1.0系統(tǒng)的局限性和LVLMs的不適用性問題。GOT模型采用統(tǒng)一的端到端架構,包括一個高壓縮率的編碼器和一個長上下文長度的解碼器。編碼器使用VitDet結構,具有約80M參數(shù),能夠處理1024x1024的輸入圖像。解碼器使用Qwen模型,具有約0.5B參數(shù),支持8K的最大長度tokens,以確保能夠處理長上下文場景。

圖片圖片

模型架構上分三部分:vision encoder +線性層 +LLM。注意這里的encoder是一個80M的小模型(VitDet結構),并非CLIP,需要從頭訓練。

GOT的訓練分為三個階段:

  • 預訓練階段:使用Tiny OPT-125M(為了節(jié)省GPU資源)對視覺編碼器進行純文本識別任務的預訓練。輸入圖像被調整為1024x1024的方形,并使用自然場景和裁剪切片進行訓練。
  • 聯(lián)合訓練階段:將預訓練的視覺編碼器連接到更大的Qwen-0.5B解碼器,并使用更多的通用OCR數(shù)據(jù)進行訓練,如樂譜、數(shù)學公式和幾何形狀。
  • 后訓練階段:通過細粒度、多裁剪/頁面的合成數(shù)據(jù)進一步改進GOT的泛化能力和適用性,支持區(qū)域提示OCR、超大圖像OCR和批量PDF OCR特征。

下面展開看一下:

階段一:純文本識別任務的預訓練(Pre-training of the Vision Encoder)

在第一個階段,主要目標是預訓練視覺編碼器(vision encoder),以便它能夠有效地處理常見的場景文本和文檔級字符。

方法:為了提高訓練效率和節(jié)省GPU資源,選擇了一個小型的解碼器(例如OPT-125M)來傳遞梯度給編碼器。將包含場景文本的圖像和包含文檔級字符的手動圖像輸入到模型中。這樣可以讓編碼器學習到兩種最常見的字符編碼能力。由于高分辨率圖像的計算成本較高,選擇了具有局部注意力機制的VitDet(base版本,約80M參數(shù))作為編碼器結構。該編碼器可以將1024x1024x3的輸入圖像轉換為256x1024的圖像標記。最后通過一個1024x768的線性層,將這些圖像標記投影到語言模型(如OPT-125M)的維度。

數(shù)據(jù):

  • 自然場景數(shù)據(jù):英文圖像:來自Laion-2B數(shù)據(jù)集。中文圖像:來自Wukong數(shù)據(jù)集。使用PaddleOCR工具從這些多樣化真實場景中捕獲偽GT??偣搏@得200萬(2M)數(shù)據(jù),其中一半是中文,一半是英文。
  • 文檔級數(shù)據(jù):從Common Crawl收集開源PDF樣式文件。 使用Fitz Python包提取相應的密集文本內容。 獲得120萬(1.2M)全頁PDF樣式圖像-文本對和80萬(0.8M)圖像切片數(shù)據(jù)。 切片數(shù)據(jù)包括行級和段落級,通過解析邊界框從PDF圖像中裁剪出來。

處理過程:對于自然場景數(shù)據(jù),進行兩種類型的處理:

  • 移除邊界框并按從上到下、從左到右的順序合并每個文本內容。
  • 根據(jù)邊界框從原始圖像中裁剪文本區(qū)域并保存為圖像切片。

后一種方法獲得了另外100萬(1M)切片類型圖像-文本對。

階段二:多任務聯(lián)合訓練(Joint-training of the Encoder with a New Decoder)

在第二個階段,目標是通過連接預訓練的視覺編碼器到一個新的、更大的解碼器來擴展GOT的知識,以處理更通用的OCR任務。

方法:將第一階段預訓練的視覺編碼器連接到具有更強能力的更大語言模型(例如Qwen-0.5B,500M參數(shù))上,構建GOT的最終架構。將連接器(即線性嵌入層)的維度調整為1024x1024,以與Qwen-0.5B的輸入通道對齊(1024*1024的圖像最終被壓縮為256個tokens再輸入到LLM)。這個過程中,準備大量更通用的OCR數(shù)據(jù)(如樂譜、數(shù)學/分子公式和幾何形狀),以擴展OCR-2.0知識。

數(shù)據(jù):

圖片圖片

  • 普通OCR數(shù)據(jù):使用前一階段的數(shù)據(jù),并添加手寫文本識別子任務,涉及不同語言的各種手寫字體。上一階段數(shù)據(jù)的80%(300萬(3M)場景文本OCR數(shù)據(jù)和200萬(2M)文檔OCR數(shù)據(jù))用于這階段,并追加手寫場景的OCR,數(shù)據(jù)來自Chinese CASIA-HWDB2 [ 1], English IAM [2], and Norwegian NorHand-v3,原數(shù)據(jù)的line-level slice會被6到8個地組合在一起當作longer-text。
  • 數(shù)學公式數(shù)據(jù):從Arxiv爬取大量LATEX源.tex文件,提取約100萬(1M)公式片段。 將公式源轉換為Mathpix格式,并使用Chrome-driver調用Mathpix-markdown-it工具將其渲染為HTML格式。 將HTML文件轉換為SVG并保存為PNG圖像。
  • 分子公式數(shù)據(jù):下載ChEMBL_25文件,包含200萬(2M)smile源。 使用Mathpix-markdown-it工具和rdkit.Chem包收集約100萬(1M)分子公式圖像-文本對。
  • 表格數(shù)據(jù):從爬取的.tex文件中提取約30萬(0.3M)表格源,并將其渲染為圖像。使用IATEX作為渲染工具,因為其對高級表格的渲染效果更好。
  • 全頁數(shù)據(jù):使用Nougat方法獲得約50萬(0.5M)英文markdown PDF文本對。參照Vary方法,收集另外50萬(0.5M)中文markdown對,并將其內容轉換為Mathpix格式。還添加了20萬(0.2M)內部數(shù)據(jù),這些數(shù)據(jù)是使用Mathpix直接標記的,包括書籍、論文和財務報告。
  • 更通用的OCR數(shù)據(jù):樂譜數(shù)據(jù):選擇GrandStaff數(shù)據(jù)集作為源進行渲染。從音樂摘錄中提取Humdrum kern轉錄,生成約50萬(0.5M)樣本。幾何形狀數(shù)據(jù):使用TikZ風格的點和線,構造簡單的幾何形狀和函數(shù)曲線,生成約100萬(1M)幾何Tikz數(shù)據(jù)。圖表數(shù)據(jù):使用Matplotlib和Pyecharts工具渲染圖表圖像-文本對,生成200萬(2M)圖表數(shù)據(jù),其中一半來自Matplotlib,另一半來自Pyecharts。

階段三:解碼器的進一步后訓練(Further Post-training of the Decoder)

二階段訓練后GOT已經(jīng)能進行多場景OCR了?,F(xiàn)在只對解碼器部分進行后訓練來定制GOT以啟用三個新特性,即細粒度、多頁面和動態(tài)分辨率OCR。在第三個階段,目標是進一步提高GOT的泛化能力和適用性,通過后訓練解碼器來定制新的OCR特征。

方法:在不修改視覺編碼器的情況下,通過后訓練解碼器來定制GOT,以支持細粒度、多頁和動態(tài)分辨率OCR等新功能。

數(shù)據(jù):生成細粒度的交互式OCR數(shù)據(jù)、多頁OCR數(shù)據(jù)和動態(tài)分辨率數(shù)據(jù),以支持區(qū)域提示OCR、超大圖像OCR和批量PDF OCR功能。

  • 細粒度數(shù)據(jù):

自然細粒度OCR:數(shù)據(jù)集:RCTW、ReCTS、ShopSign和COCO-Text。這些數(shù)據(jù)集提供文本邊界框,可以直接用于生成細粒度(區(qū)域/顏色提示)OCR數(shù)據(jù)。

文檔級細粒度OCR:從下載的PDF文件中過濾出掃描格式的文件,使用Python包(Fitz/PDFminer)解析左側部分。記錄頁面級圖像、每行/段落的邊界框及相應文本,生成box-guided OCR子任務的GT。每個坐標值首先標準化,然后放大1000倍。選擇紅色、綠色和藍色作為最常用的顏色框架,并在原始圖像上繪制它們。

  • 多裁剪數(shù)據(jù):支持1024x1024輸入分辨率,適用于常見OCR任務。使用InternVL-1.5裁剪方法,最大瓷磚數(shù)為12。使用單頁PDF數(shù)據(jù)合成超高分辨率圖像,包括水平和垂直拼接。通過這種方法,獲得50萬(50萬)圖像-文本對。
  • 多頁數(shù)據(jù):從Mathpix格式的PDF數(shù)據(jù)中隨機采樣2-8頁,組成單個OCR任務。每個選定的頁面包含的文本少于650個標記,以確??傞L度不超過8K。生成約20萬(20萬)多頁OCR數(shù)據(jù),大部分是中文和英文頁面交替的。

實驗

圖片圖片

圖片圖片

圖片圖片

圖片圖片

總結

筆者關注vary和GOT已久,抽空做了下技術思路記錄,GOT是Vary的后續(xù),GOT通過三個階段的訓練,模型能夠逐步提升其在各種OCR任務上的性能,從基礎的純文本識別到處理更復雜的格式化和通用OCR任務。每個階段的訓練都注重不同的數(shù)據(jù)類型和任務,確保模型在多樣化的應用場景中都能表現(xiàn)出色。筆者在折騰過程中,這個鏈路的一階段的數(shù)據(jù)搞起來太傷身了,可以直接在開源權重上進行post-train,二/三階段微調后發(fā)現(xiàn)效果也達不到落地的效果,數(shù)據(jù)質量和數(shù)量都需要進一步的提升。目前該技術鏈路可以是多模態(tài)OCR-free模型打樣。

參考文獻

  • Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models,https://arxiv.org/abs/2312.06109
  • General OCR Theory: Towards OCR-2.0 via a Unified End-to-end Model,https://arxiv.org/abs/2409.01704
責任編輯:武曉燕 來源: 大模型自然語言處理
相關推薦

2024-12-18 18:57:58

2025-01-08 08:21:16

2025-04-07 00:00:00

多模態(tài)大模型

2024-11-13 09:39:13

2024-11-11 15:11:23

2024-03-25 12:40:19

訓練模型

2024-12-30 00:01:00

多模態(tài)大模型Python

2024-05-21 07:54:30

視頻多模態(tài)語義檢索算法

2025-02-27 01:00:00

大模型OLMOCRrag

2024-09-10 12:11:18

2024-03-25 12:30:18

AI訓練開源

2024-09-25 14:53:00

2025-04-28 02:03:00

多模態(tài)大模型EVEv2

2023-12-25 13:24:00

模型OCR頁面

2025-03-19 09:30:00

2024-04-02 09:17:50

AI數(shù)據(jù)開源

2025-03-10 02:00:00

2024-05-17 16:02:00

2024-11-12 10:20:00

模型數(shù)據(jù)
點贊
收藏

51CTO技術棧公眾號