VARCO VISION 14B
VARCO-VISION-14B 是一款强大的英韩视觉语言模型(VLM),支持图像和文本输入,生成文本输出,具备定位、引用和OCR能力。
下载量 1,022
发布时间 : 11/25/2024
模型简介
VARCO-VISION-14B 是一款多模态视觉语言模型,支持英语和韩语,能够处理图像和文本输入,生成文本输出。该模型具备定位、引用和OCR等特殊功能,适用于多种视觉语言任务。
模型特点
多模态支持
支持图像和文本输入,生成文本输出,实现视觉语言理解与生成。
定位功能
能够识别图像中的特定位置,并生成包含边界框信息的响应。
引用功能
通过边界框处理位置特定的问题,专注于指定位置的对象。
OCR能力
支持光学字符识别,能够识别图像中的文本并提取相关信息。
多语言支持
支持英语和韩语,适用于跨语言视觉语言任务。
模型能力
图像理解
文本生成
定位
引用
OCR
多语言处理
使用案例
视觉问答
图像描述生成
输入一张图像,模型生成详细的描述文本。
生成包含图像中对象和场景的详细描述。
位置特定问答
针对图像中特定位置的对象进行问答。
准确回答关于指定位置对象的问题。
OCR应用
文本提取
从图像中提取文本信息。
准确识别并提取图像中的文本内容。
🚀 VARCO-VISION-14B
VARCO-VISION-14B 是一款强大的英韩双语视觉语言模型(VLM)。该模型的训练流程包含四个阶段:特征对齐预训练、基础监督微调、高级监督微调以及偏好优化。在多模态和纯文本基准测试中,VARCO-VISION-14B 不仅在性能上超越了其他同规模模型,还取得了与专有模型相当的分数。该模型目前接受单张图像和文本作为输入,并生成文本输出,支持定位、指称以及 OCR(光学字符识别)。
🚀 快速开始
直接使用
要加载 VARCO-VISION-14B,首先需要克隆并安装 LLaVA-NeXT:
git clone https://github.com/LLaVA-VL/LLaVA-NeXT
cd LLaVA-NeXT
pip install -e ".[train]"
安装 LLaVA-NeXT 后,你可以使用以下代码加载 VARCO-VISION-14B:
import torch
from transformers import AutoTokenizer
from llava.model.language_model.llava_qwen import LlavaQwenForCausalLM
from llava.mm_utils import tokenizer_image_token, process_images
model_name = "NCSOFT/VARCO-VISION-14B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = LlavaQwenForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
attn_implementation="flash_attention_2",
low_cpu_mem_usage=True,
device_map="auto"
)
vision_tower = model.get_vision_tower()
image_processor = vision_tower.image_processor
准备一张图像和一个文本输入,你需要对图像进行预处理并对文本进行分词,然后将处理后的输入传递给模型以生成预测结果。
import requests
from PIL import Image
# Define a chat history and use `apply_chat_template` to get correctly formatted prompt
# Each value in "content" has to be a list of dicts with types ("text", "image")
conversation = [
{
"role": "user",
"content": [
{"type": "text", "text": "Describe this image."},
{"type": "image"},
],
},
]
prompt = tokenizer.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
IMAGE_TOKEN_INDEX = -200
EOS_TOKEN = "<|im_end|>"
input_ids = tokenizer_image_token(prompt, tokenizer, IMAGE_TOKEN_INDEX, return_tensors="pt")
input_ids = input_ids.unsqueeze(0).to(model.device)
image_url = "http://images.cocodataset.org/val2017/000000039769.jpg"
raw_image = Image.open(requests.get(image_url, stream=True).raw)
image_tensors = process_images([raw_image], image_processor, model.config)
image_tensors = [image_tensor.half().to(model.device) for image_tensor in image_tensors]
image_sizes = [raw_image.size]
with torch.inference_mode():
output_ids = model.generate(
input_ids,
images=image_tensors,
image_sizes=image_sizes,
do_sample=False,
max_new_tokens=1024,
use_cache=True,
)
outputs = tokenizer.batch_decode(output_ids)[0]
if outputs.endswith(EOS_TOKEN):
outputs = outputs[: -len(EOS_TOKEN)]
outputs = outputs.strip()
print(outputs)
✨ 主要特性
专业特性
如果问题基于边界框或需要边界框作为输出,请在输入文本中包含特殊标记。 以下特殊标记用于为模型定义特定任务、输入和输出:
<gro>
:表示模型的响应应包含边界框信息。<ocr>
:指定用于识别图像中文本的 OCR 任务。<char>
和</char>
:用于标记文本短语。<obj>
和</obj>
:用于表示对象。<bbox>
和</bbox>
:用于表示边界框。<delim>
:表示单个对象或文本的多个位置点。
定位
定位是指模型需要在图像中识别特定位置以提供合适答案的任务。要执行定位任务,请在问题前加上特殊标记 <gro>
。
conversation = [
{
"role": "user",
"content": [
{"type": "text", "text": "<gro>\nDescribe the image in detail."},
{"type": "image"},
],
},
]
预期输出示例:
The image shows <obj>two cats</obj><bbox>0.521, 0.049, 0.997, 0.783<delim>0.016, 0.108, 0.512, 0.99</bbox> lying on <obj>a pink blanket</obj><bbox>0.002, 0.231, 0.999, 0.999</bbox>. The cat on the left is lying on its side with its head resting on the blanket and its body stretched out. The cat on the right is lying on its back with its paws stretched out and its head turned to the side. Both cats appear relaxed and comfortable. There are also <obj>two remote controls</obj><bbox>0.039, 0.138, 0.283, 0.257<delim>0.508, 0.166, 0.581, 0.295</bbox> placed near the cats, one on each side of them.
指称
VARCO-VISION-14B 可以使用边界框处理特定位置的问题。要执行指称任务,请在对话中使用 <obj>
和 </obj>
标记包含感兴趣的对象,并使用 <bbox>
和 </bbox>
标记指定其位置,这可以让模型理解上下文并专注于指定位置的对象。边界框以 (x1, y1, x2, y2) 的形式表示,前两个值表示边界框的左上角位置,后两个值表示右下角位置。
conversation = [
{
"role": "user",
"content": [
{
"type": "text",
"text": "<obj>이 물건</obj><bbox>0.039, 0.138, 0.283, 0.257</bbox>은 어떻게 쓰는거야?",
},
{"type": "image"},
],
},
]
预期输出示例:
**이 물건**은 리모컨으로, 주로 텔레비전이나 다른 전자 기기를 원격으로 조작하는 데 사용됩니다. 버튼을 누르면 채널 변경, 볼륨 조절, 전원 켜기/끄기 등의 기능을 수행할 수 있습니다. 리모컨의 버튼에는 일반적으로 숫자, 메뉴, 설정, 재생/일시정지 등의 기능이 포함되어 있으며, 사용자는 이를 통해 손쉽게 기기를 제어할 수 있습니다.
OCR
要执行光学字符识别(OCR)任务,请使用 <ocr>
标记。
image_file = "./assets/ocr_1.png"
raw_image = Image.open(image_file)
conversation = [
{
"role": "user",
"content": [
{"type": "text", "text": "<ocr>"},
{"type": "image"},
],
},
]
预期输出示例:
<char>백범로</char><bbox>0.172, 0.265, 0.328, 0.34</bbox>
<char>124번길</char><bbox>0.349, 0.265, 0.512, 0.34</bbox>
<char>Baekbeom-ro</char><bbox>0.171, 0.335, 0.432, 0.391</bbox>
<char>124</char><bbox>0.444, 0.34, 0.508, 0.391</bbox>
<char>만수주공아파트</char><bbox>0.109, 0.528, 0.335, 0.594</bbox>
<char>시흥</char><bbox>0.443, 0.516, 0.522, 0.578</bbox>
<char>시청</char><bbox>0.711, 0.521, 0.811, 0.594</bbox>
<char>Mansu</char><bbox>0.103, 0.601, 0.181, 0.647</bbox>
<char>Jugong</char><bbox>0.186, 0.601, 0.273, 0.658</bbox>
<char>Apt</char><bbox>0.281, 0.601, 0.327, 0.651</bbox>
<char>42</char><bbox>0.377, 0.601, 0.416, 0.647</bbox>
<char>Shieung</char><bbox>0.445, 0.578, 0.53, 0.623</bbox>
<char>인천대공원</char><bbox>0.431, 0.623, 0.609, 0.684</bbox>
<char>모래내시장역</char><bbox>0.651, 0.591, 0.873, 0.664</bbox>
<char>IncheonGrand</char><bbox>0.433, 0.684, 0.561, 0.723</bbox>
<char>Park</char><bbox>0.564, 0.684, 0.611, 0.723</bbox>
📚 详细文档
- 开发者:NC Research,多模态生成团队
- 技术报告:VARCO-VISION: Expanding Frontiers in Korean Vision-Language Models
- 博客(韩语):VARCO-VISION 技术报告总结
- 演示页面:演示页面已不可用
- 支持语言:韩语、英语
- 许可证:CC BY-NC 4.0
- 架构:VARCO-VISION-14B 遵循 LLaVA-OneVision 的架构。
- 基础模型:
- Huggingface 版本模型:NCSOFT/VARCO-VISION-14B-HF
- 韩语 VLM 基准测试:
- 你还可以在 VLMEval 工具包 中评估 VARCO-VISION-14B。
- 本模型仅用于研究目的,禁止商业使用。
📄 许可证
本模型使用的许可证为 CC BY-NC 4.0。
🔖 引用该模型
如果你在研究中使用了 VARCO-VISION-14B,请引用以下内容:
@misc{ju2024varcovisionexpandingfrontierskorean,
title={VARCO-VISION: Expanding Frontiers in Korean Vision-Language Models},
author={Jeongho Ju and Daeyoung Kim and SunYoung Park and Youngjune Kim},
year={2024},
eprint={2411.19103},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2411.19103},
}
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