Paligemma 3b Mix 448 Ft TableDetection
P
Paligemma 3b Mix 448 Ft TableDetection
由ucsahin開發
基於google/paligemma-3b-mix-448微調的多模態表格檢測模型,專用於識別圖像中的表格區域
下載量 19
發布時間 : 5/25/2024
模型概述
該模型通過結合圖像和文本輸入來預測圖像中表格的邊界框座標,適用於文檔處理和數據提取等場景
模型特點
多模態輸入處理
支持同時處理圖像和文本輸入,實現視覺-語言聯合理解
高精度表格檢測
在pubtables-detection數據集上微調,專門優化表格區域識別能力
標準化輸出格式
輸出規範化座標值,便於轉換為多種邊界框格式
模型能力
圖像中的表格檢測
邊界框座標預測
多模態理解
使用案例
文檔處理
PDF表格提取
從掃描文檔中自動定位表格區域
輸出標準化座標便於後續OCR處理
數據採集
網頁截圖分析
識別截圖中的表格結構
為數據爬蟲提供定位參考
🚀 paligemma-3b-mix-448-ft-TableDetection
本模型是 google/paligemma-3b-mix-448 在 ucsahin/pubtables-detection-1500-samples 數據集上進行混合精度微調後的版本。該模型在評估集上取得了以下結果:
- 損失值:1.3544
✨ 主要特性
- 這是一個多模態語言模型,針對給定文本提示檢測圖像中表格的任務進行了微調。模型結合圖像和文本輸入,預測給定圖像中表格的邊界框。
- 該模型的主要用途是協助自動化圖像中表格的檢測過程。它可用於各種應用程序,如文檔處理、數據提取和圖像分析,在這些應用中,識別圖像中的表格至關重要。
🚀 快速開始
模型加載
在 Transformers 中,你可以按以下方式加載模型:
from transformers import PaliGemmaForConditionalGeneration, PaliGemmaProcessor
import torch
model_id = "ucsahin/paligemma-3b-mix-448-ft-TableDetection"
device = "cuda:0"
dtype = torch.bfloat16
model = PaliGemmaForConditionalGeneration.from_pretrained(
model_id,
torch_dtype=dtype,
device_map=device
)
processor = PaliGemmaProcessor.from_pretrained(model_id)
推理過程
進行推理時,你可以使用以下代碼:
# # 指示模型檢測表格
prompt = "detect table"
model_inputs = processor(text=prompt, images=image, return_tensors="pt").to(device)
input_len = model_inputs["input_ids"].shape[-1]
with torch.inference_mode():
generation = model.generate(**model_inputs, max_new_tokens=128, do_sample=False)
generation = generation[0][input_len:]
bbox_text = processor.decode(generation, skip_special_tokens=True)
print(bbox_text)
量化模型加載
你還可以使用 bitsandbytes
加載 4 位或 8 位量化模型。不過要注意,模型生成的輸出可能需要進一步的後處理,例如可能會出現五個位置標籤 "<loc[value]>" 而不是四個,以及除 "table" 之外的不同標籤。提供的後處理腳本應該可以處理第一種情況。
使用以下代碼加載 4 位量化模型:
from transformers import PaliGemmaForConditionalGeneration, PaliGemmaProcessor, BitsAndBytesConfig
import torch
model_id = "ucsahin/paligemma-3b-mix-448-ft-TableDetection"
device = "cuda:0"
dtype = torch.bfloat16
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=dtype
)
model = PaliGemmaForConditionalGeneration.from_pretrained(
model_id,
torch_dtype=dtype,
device_map=device,
quantization_config=bnb_config
)
processor = PaliGemmaProcessor.from_pretrained(model_id)
💻 使用示例
基礎用法
# 模型加載代碼
from transformers import PaliGemmaForConditionalGeneration, PaliGemmaProcessor
import torch
model_id = "ucsahin/paligemma-3b-mix-448-ft-TableDetection"
device = "cuda:0"
dtype = torch.bfloat16
model = PaliGemmaForConditionalGeneration.from_pretrained(
model_id,
torch_dtype=dtype,
device_map=device
)
processor = PaliGemmaProcessor.from_pretrained(model_id)
# 推理代碼
prompt = "detect table"
model_inputs = processor(text=prompt, images=image, return_tensors="pt").to(device)
input_len = model_inputs["input_ids"].shape[-1]
with torch.inference_mode():
generation = model.generate(**model_inputs, max_new_tokens=128, do_sample=False)
generation = generation[0][input_len:]
bbox_text = processor.decode(generation, skip_special_tokens=True)
print(bbox_text)
高級用法
# 後處理代碼
import re
def post_process(bbox_text, image_width, image_height):
loc_values_str = [bbox.strip() for bbox in bbox_text.split(";")]
converted_bboxes = []
for loc_value_str in loc_values_str:
loc_values = re.findall(r'<loc(\d+)>', loc_value_str)
loc_values = [int(x) for x in loc_values]
loc_values = loc_values[:4]
loc_values = [value/1024 for value in loc_values]
# convert to (xmin, ymin, xmax, ymax)
loc_values = [
int(loc_values[1]*image_width), int(loc_values[0]*image_height),
int(loc_values[3]*image_width), int(loc_values[2]*image_height),
]
converted_bboxes.append(loc_values)
return converted_bboxes
🔧 技術細節
輸入
- 圖像:模型需要包含一個或多個表格的圖像作為輸入。圖像應採用標準格式,如 JPEG 或 PNG。
- 文本提示:此外,需要一個文本提示來引導模型關注表格檢測任務。提示應明確指出所需的操作。請使用 "detect table" 作為你的文本提示。
輸出
- 邊界框:模型以特殊的
<loc[value]>
標記形式輸出邊界框座標的位置,其中 value 是一個表示歸一化座標的數字。每個檢測結果由四個位置座標按 y_min、x_min、y_max、x_max 的順序表示,後面跟著該框中檢測到的標籤。要將值轉換為座標,首先需要將數字除以 1024,然後將 y 乘以圖像高度,將 x 乘以圖像寬度。這將為你提供相對於原始圖像大小的邊界框座標。 如果一切順利,模型將根據圖像中檢測到的表格數量輸出類似於 "<loc[value]><loc[value]><loc[value]><loc[value]> table; <loc[value]><loc[value]><loc[value]><loc[value]> table" 的文本。然後,你可以使用以下腳本將文本輸出轉換為 PASCAL VOC 格式的邊界框。
訓練超參數
以下是訓練期間使用的超參數:
屬性 | 詳情 |
---|---|
學習率 | 0.0001 |
訓練批次大小 | 4 |
評估批次大小 | 4 |
隨機種子 | 42 |
梯度累積步數 | 4 |
混合精度 | True (bf16) |
總訓練批次大小 | 16 |
優化器 | Adam(beta=(0.9, 0.999),epsilon=1e-08) |
學習率調度器類型 | 線性 |
學習率調度器熱身步數 | 5 |
訓練輪數 | 3 |
訓練結果
訓練損失 | 輪數 | 步數 | 驗證損失 |
---|---|---|---|
2.957 | 0.1775 | 15 | 2.1300 |
1.9656 | 0.3550 | 30 | 1.8421 |
1.6716 | 0.5325 | 45 | 1.6898 |
1.5514 | 0.7101 | 60 | 1.5803 |
1.5851 | 0.8876 | 75 | 1.5271 |
1.4134 | 1.0651 | 90 | 1.4771 |
1.3566 | 1.2426 | 105 | 1.4528 |
1.3093 | 1.4201 | 120 | 1.4227 |
1.2897 | 1.5976 | 135 | 1.4115 |
1.256 | 1.7751 | 150 | 1.4007 |
1.2666 | 1.9527 | 165 | 1.3678 |
1.2213 | 2.1302 | 180 | 1.3744 |
1.0999 | 2.3077 | 195 | 1.3633 |
1.1931 | 2.4852 | 210 | 1.3606 |
1.0722 | 2.6627 | 225 | 1.3619 |
1.1485 | 2.8402 | 240 | 1.3544 |
框架版本
- PEFT 0.11.1
- Transformers 4.42.0.dev0
- Pytorch 2.3.0+cu121
- Datasets 2.19.1
- Tokenizers 0.19.1
📄 許可證
本模型使用 gemma 許可證。
⚠️ 重要提示
你可以使用
bitsandbytes
加載量化的 4 位或 8 位模型。但要注意,模型生成的輸出可能需要進一步的後處理,例如可能會出現五個位置標籤 "<loc[value]>" 而不是四個,以及除 "table" 之外的不同標籤。提供的後處理腳本應該可以處理第一種情況。
💡 使用建議
請使用 "detect table" 作為文本提示,以引導模型關注表格檢測任務。
Clip Vit Large Patch14
CLIP是由OpenAI開發的視覺-語言模型,通過對比學習將圖像和文本映射到共享的嵌入空間,支持零樣本圖像分類
圖像生成文本
C
openai
44.7M
1,710
Clip Vit Base Patch32
CLIP是由OpenAI開發的多模態模型,能夠理解圖像和文本之間的關係,支持零樣本圖像分類任務。
圖像生成文本
C
openai
14.0M
666
Siglip So400m Patch14 384
Apache-2.0
SigLIP是基於WebLi數據集預訓練的視覺語言模型,採用改進的sigmoid損失函數,優化了圖像-文本匹配任務。
圖像生成文本
Transformers

S
google
6.1M
526
Clip Vit Base Patch16
CLIP是由OpenAI開發的多模態模型,通過對比學習將圖像和文本映射到共享的嵌入空間,實現零樣本圖像分類能力。
圖像生成文本
C
openai
4.6M
119
Blip Image Captioning Base
Bsd-3-clause
BLIP是一個先進的視覺-語言預訓練模型,擅長圖像描述生成任務,支持條件式和非條件式文本生成。
圖像生成文本
Transformers

B
Salesforce
2.8M
688
Blip Image Captioning Large
Bsd-3-clause
BLIP是一個統一的視覺-語言預訓練框架,擅長圖像描述生成任務,支持條件式和無條件式圖像描述生成。
圖像生成文本
Transformers

B
Salesforce
2.5M
1,312
Openvla 7b
MIT
OpenVLA 7B是一個基於Open X-Embodiment數據集訓練的開源視覺-語言-動作模型,能夠根據語言指令和攝像頭圖像生成機器人動作。
圖像生成文本
Transformers 英語

O
openvla
1.7M
108
Llava V1.5 7b
LLaVA 是一款開源多模態聊天機器人,基於 LLaMA/Vicuna 微調,支持圖文交互。
圖像生成文本
Transformers

L
liuhaotian
1.4M
448
Vit Gpt2 Image Captioning
Apache-2.0
這是一個基於ViT和GPT2架構的圖像描述生成模型,能夠為輸入圖像生成自然語言描述。
圖像生成文本
Transformers

V
nlpconnect
939.88k
887
Blip2 Opt 2.7b
MIT
BLIP-2是一個視覺語言模型,結合了圖像編碼器和大型語言模型,用於圖像到文本的生成任務。
圖像生成文本
Transformers 英語

B
Salesforce
867.78k
359
精選推薦AI模型
Llama 3 Typhoon V1.5x 8b Instruct
專為泰語設計的80億參數指令模型,性能媲美GPT-3.5-turbo,優化了應用場景、檢索增強生成、受限生成和推理任務
大型語言模型
Transformers 支持多種語言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一個基於SODA數據集訓練的超小型對話模型,專為邊緣設備推理設計,體積僅為Cosmo-3B模型的2%左右。
對話系統
Transformers 英語

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基於RoBERTa架構的中文抽取式問答模型,適用於從給定文本中提取答案的任務。
問答系統 中文
R
uer
2,694
98