InternVL 由 OpenGVLab 開發,是一個開源的多模態對話模型, 其效能接近商業化的 GPT-4V 模型。
GPT-4V 是 OpenAI 去年推出的多模態模型,使用它你可以分析所需的任何型別的影像並獲取有關該影像的資訊。
1. InternVL 開源模型
而今天的主角研究成果 InternVL 釋出在 CVPR 2024 上,並提供了多種模型版本以適應不同的套用場景,如 InternVL−Chat−V1.5 支持 4K 影像和強大的光學字元辨識(OCR)功能。
開源地址:https://github.com/OpenGVLab/InternVL
2. 支持特性
InternVL 家族透過提供多種模型版本,支持從影像分類到多模態對話的多種功能。 以下是一些關鍵特性:
多語言支持: InternV L 能夠支持超過 110 種語言的生成。
高效能: 在多個基準測試中,InternVL-Chat-V1.5 接近 GPT-4V 和 Gemini Pro 的效能。
多種模型選擇: 提供了不同參數規模的模型,從 6B 到 19B 不等,以適應不同的計算資源和套用需求。
跨模態檢索: 支持英文和 中文的零樣本影像-文本檢索,以及多語言零樣本影像-文本檢索。
以下是 InternVL 在不同任務上的效能對比圖:
3. 效果怎麽樣?
我把上圖給到開源模型,讓他自己介紹一下圖片中的內容:
算個數學題:
還能感知顏色:
智慧 OCR:
4. 程式碼範例
以下是使用 InternVL-Chat 模型進行單輪對話的範例程式碼:
from transformers import AutoTokenizer, AutoModel
import torch
import torchvision.transforms as T
from PIL import Image
IMAGENET_MEAN = (0.485, 0.456, 0.406)
IMAGENET_STD = (0.229, 0.224, 0.225)
defbuild_transform(input_size):
MEAN, STD = IMAGENET_MEAN, IMAGENET_STD
transform = T.Compose([
T.Lambda(lambda img: img.convert('RGB') if img.mode != 'RGB'else img),
T.Resize((input_size, input_size), interpolation=T.InterpolationMode.BICUBIC),
T.ToTensor(),
T.Normalize(mean=MEAN, std=STD)
])
return transform
# 省略部份程式碼...
model = AutoModel.from_pretrained(
"OpenGVLab/InternVL-Chat-V1-5",
torch_dtype=torch.bfloat16,
low_cpu_mem_usage=True,
trust_remote_code=True).eval().cuda()
tokenizer = AutoTokenizer.from_pretrained("OpenGVLab/InternVL-Chat-V1-5", trust_remote_code=True)
pixel_values = load_image('./examples/image1.jpg', max_num=6).to(torch.bfloat16).cuda()
generation_config = dict(
num_beams=1,
max_new_tokens=512,
do_sample=False,
)
# 單輪對話
question = "請詳細描述圖片"# Please describe the picture in detail
response = model.chat(tokenizer, pixel_values, question, generation_config)
print(question, response)
歷史盤點
逛逛 GitHub 每天推薦一個好玩有趣的開源計畫。 歷史推薦的開源計畫已經收錄到 GitHub 計畫,歡迎 Star:
地址:https://github.com/Wechat-ggGitHub/Awesome-GitHub-Repo
推薦閱讀
1.
2.
3.
4.