🚀 Florence-2-large-ft
Florence-2-large-ft是在imageinwords
數據集上針對MORE_DETAILED_CAPTION
任務進行訓練的模型,可用於圖像到文本的轉換任務,能為圖像生成更詳細的描述。
🚀 快速開始
單張圖像處理
from PIL import Image
from transformers import AutoProcessor, AutoModelForCausalLM
name = "yayayaaa/florence-2-large-ft-moredetailed"
model = AutoModelForCausalLM.from_pretrained(name, trust_remote_code=True).to("cuda").eval()
processor = AutoProcessor.from_pretrained(name, trust_remote_code=True)
prompt = "<MORE_DETAILED_CAPTION>"
filename = 'test.jpg'
image = Image.open(filename).convert('RGB')
inputs = processor(text=prompt, images=image, return_tensors="pt").to("cuda")
generated_ids = model.generate(
input_ids=inputs["input_ids"],
pixel_values=inputs["pixel_values"],
max_new_tokens=1024,
do_sample=False,
)
print(processor.batch_decode(generated_ids, skip_special_tokens=True)[0])
批量處理
安裝accelerate
庫以支持device_map
。對於24GB顯存的設備,可以設置批量大小為28。
import sys
import torch
from tqdm import tqdm
from pathlib import Path
from PIL import Image
from transformers import AutoProcessor, AutoModelForCausalLM
from torch.utils.data import Dataset, DataLoader
task = "<MORE_DETAILED_CAPTION>"
name="yayayaaa/florence-2-large-ft-moredetailed"
model = AutoModelForCausalLM.from_pretrained(name, trust_remote_code=True, device_map="auto")
processor = AutoProcessor.from_pretrained(name, trust_remote_code=True, device_map="auto")
batch_size=28
directory = Path(sys.argv[1])
patterns = ['**/*.jpg', '**/*.jpeg', '**/*.png']
patterns += [p.upper() for p in patterns]
filenames = [str(fn) for pattern in patterns for fn in directory.glob(pattern)]
class Data(Dataset):
def __init__(self, data):
self.name="Data"
self.data=data
def __len__(self):
return len(self.data)
def __getitem__(self, idx):
return self.data[idx]
data = DataLoader(Data(filenames), batch_size=batch_size, num_workers=0, shuffle=False)
@torch.inference_mode()
def process_images(images):
inputs = processor(text=[task]*len(images), images=images, return_tensors="pt").to("cuda")
generated_ids = model.generate(
input_ids=inputs["input_ids"],
pixel_values=inputs["pixel_values"],
max_new_tokens=1024,
do_sample=False,
)
generated_texts = processor.batch_decode(generated_ids, skip_special_tokens=True)
return generated_texts
for batch in tqdm(data):
images = [Image.open(filename).convert("RGB") for filename in batch]
generated_texts = process_images(images)
for i, caption in enumerate(generated_texts):
filename = Path(batch[i])
with open(filename.with_suffix(".txt"), "w") as text_file:
text_file.write(caption)
📄 許可證
本項目採用MIT許可證。
📦 模型信息
屬性 |
詳情 |
模型類型 |
Florence-2-large-ft |
基礎模型 |
microsoft/Florence-2-large-ft |
訓練數據 |
google/imageinwords |
庫名稱 |
transformers |
任務類型 |
圖像到文本 |