🚀 Florence-2-large-TableDetection
このプロジェクトは、画像とテキストの入力に基づいて表を検出する多モーダル言語モデルです。微調整により、画像内の表を正確に位置特定することができ、文書処理やデータ抽出などの分野に幅広く応用できます。
🚀 クイックスタート
Transformersでは、以下のようにモデルをロードして推論を行うことができます。(注意:このモデルを実行するには、trust_remote_code=True
を設定する必要があります。これにより、元のHuggingFaceM4/Florence - 2 - DocVQAから外部のカスタムコードがダウンロードされます。)
from transformers import AutoProcessor, AutoModelForCausalLM
import matplotlib.pyplot as plt
import matplotlib.patches as patches
model_id = "ucsahin/Florence-2-large-TableDetection"
model = AutoModelForCausalLM.from_pretrained(model_id, trust_remote_code=True, device_map="cuda")
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
def run_example(task_prompt, image, max_new_tokens=128):
prompt = task_prompt
inputs = processor(text=prompt, images=image, return_tensors="pt")
generated_ids = model.generate(
input_ids=inputs["input_ids"].cuda(),
pixel_values=inputs["pixel_values"].cuda(),
max_new_tokens=max_new_tokens,
early_stopping=False,
do_sample=False,
num_beams=3,
)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=False)[0]
parsed_answer = processor.post_process_generation(
generated_text,
task=task_prompt,
image_size=(image.width, image.height)
)
return parsed_answer
def plot_bbox(image, data):
fig, ax = plt.subplots()
ax.imshow(image)
for bbox, label in zip(data['bboxes'], data['labels']):
x1, y1, x2, y2 = bbox
rect = patches.Rectangle((x1, y1), x2-x1, y2-y1, linewidth=1, edgecolor='r', facecolor='none')
ax.add_patch(rect)
plt.text(x1, y1, label, color='white', fontsize=8, bbox=dict(facecolor='red', alpha=0.5))
ax.axis('off')
plt.show()
from datasets import load_dataset
dataset = load_dataset("ucsahin/pubtables-detection-1500-samples")
example_id = 5
image = dataset["train"][example_id]["image"]
parsed_answer = run_example("<OD>", image=image)
plot_bbox(image, parsed_answer["<OD>"])
✨ 主な機能
- これは多モーダル言語モデルで、与えられたテキストプロンプトに基づいて画像内の表を検出するタスクに対して微調整されています。このモデルは画像とテキストの入力を組み合わせて、提供された画像内の表の周囲のバウンディングボックスを予測します。
- このモデルの主な目的は、画像内の表の検出プロセスを自動化することを支援することです。文書処理、データ抽出、画像分析など、画像内の表を識別することが重要な様々なアプリケーションに使用できます。
📚 ドキュメント
モデルの説明
- このモデルは多モーダル言語モデルで、与えられたテキストプロンプトに基づいて画像内の表を検出するタスクに対して微調整されています。このモデルは画像とテキストの入力を組み合わせて、提供された画像内の表の周囲のバウンディングボックスを予測します。
- このモデルの主な用途は、画像内の表の検出プロセスを自動化することを支援することです。文書処理、データ抽出、画像分析など、画像内の表を識別することが不可欠な様々なシナリオに適用できます。
学習ハイパーパラメータ
学習過程では以下のハイパーパラメータが使用されました。
- 学習率:1e - 06
- 学習バッチサイズ:8
- 評価バッチサイズ:8
- 乱数シード:42
- オプティマイザ:Adam(β1 = 0.9,β2 = 0.999,ε = 1e - 08)
- 学習率スケジューラのタイプ:線形
- 学習エポック数:10
学習結果
学習損失 |
エポック数 |
ステップ数 |
検証損失 |
1.3199 |
1.0 |
169 |
1.0372 |
0.7922 |
2.0 |
338 |
0.9169 |
0.6824 |
3.0 |
507 |
0.8411 |
0.6109 |
4.0 |
676 |
0.8168 |
0.5752 |
5.0 |
845 |
0.7915 |
0.5605 |
6.0 |
1014 |
0.7862 |
0.5291 |
7.0 |
1183 |
0.7740 |
0.517 |
8.0 |
1352 |
0.7683 |
0.5139 |
9.0 |
1521 |
0.7642 |
0.5005 |
10.0 |
1690 |
0.7601 |
フレームワークのバージョン
- Transformers 4.42.0.dev0
- Pytorch 2.3.0+cu121
- Datasets 2.20.0
- Tokenizers 0.19.1
📄 ライセンス
このプロジェクトはMITライセンスを採用しています。
その他の説明
microsoft/Florence - 2 - large - ftは、ゼロショット設定でタスクプロンプト“”を使用して、さまざまなオブジェクトを検出することができます。Florence - 2モデルを推論で使用する方法については、Florence - 2 - largeサンプル推論を参照してください。ただし、ft - baseモデルは、与えられた画像上で表を検出することはできません。
以下のColabノートブックは、カスタムデータを使用してモデルを微調整してオブジェクトを検出する方法を示しています。
Florence2 - Object Detection - Finetuning - HF - Trainer.ipynb