🌔 moondream
一个小巧但功能强大的视觉语言模型,可在任何地方运行
网站 | Hugging Face | 演示
基准测试
模型 | VQAv2 | GQA | TextVQA | TallyQA(简单) | TallyQA(完整) |
---|---|---|---|---|---|
moondream1 | 74.7 | 57.9 | 35.6 | - | - |
moondream2(最新) | 79.4 | 63.1 | 57.2 | 82.1 | 76.6 |
示例
图片 | 示例 |
---|---|
这个女孩在做什么? 这个女孩正坐在桌前吃一个大汉堡。 这个女孩的头发是什么颜色的? 这个女孩的头发是白色的。 | |
这是什么? 这是一个计算机服务器机架,用于存储和管理多台计算机服务器的设备。机架内装满了各种计算机服务器,每台服务器都有自己专用的空间和电源。服务器通过多条电缆连接到机架,表明它们是更大系统的一部分。机架放置在铺有地毯的地板上,附近还有一张沙发,这表明该设置位于起居室或娱乐区。 机架后面是什么? 机架后面是一面砖墙。 |
使用方法
使用transformers(推荐)
pip install transformers einops
from transformers import AutoModelForCausalLM, AutoTokenizer
from PIL import Image
model_id = "vikhyatk/moondream2"
revision = "2024-05-20"
model = AutoModelForCausalLM.from_pretrained(
model_id, trust_remote_code=True, revision=revision
)
tokenizer = AutoTokenizer.from_pretrained(model_id, revision=revision)
image = Image.open('<图片路径>')
enc_image = model.encode_image(image)
print(model.answer_question(enc_image, "描述这张图片。", tokenizer))
模型会定期更新,因此我们建议将模型版本固定到特定的发布版本,如上所示。
要在文本模型上启用Flash Attention,在实例化模型时传入attn_implementation="flash_attention_2"
。
model = AutoModelForCausalLM.from_pretrained(
model_id, trust_remote_code=True, revision=revision,
torch_dtype=torch.float16, attn_implementation="flash_attention_2"
).to("cuda")
也支持批量推理。
answers = moondream.batch_answer(
images=[Image.open('<图片路径1>'), Image.open('<图片路径2>')],
prompts=["描述这张图片。", "这张图片中有人吗?"],
tokenizer=tokenizer,
)
使用此仓库
克隆此仓库并安装依赖。
pip install -r requirements.txt
sample.py
提供了运行模型的命令行界面。当不提供--prompt
参数时,脚本将允许您交互式地提问。
python sample.py --image [图片路径] --prompt [提示]
使用gradio_demo.py
脚本启动模型的Gradio界面。
python gradio_demo.py
webcam_gradio_demo.py
提供了一个使用网络摄像头作为输入并实时进行推理的Gradio界面。
python webcam_gradio_demo.py
局限性
- 模型可能会生成不准确的陈述,并且难以理解复杂或微妙的指令。
- 模型可能不能完全避免社会偏见。用户应该意识到这一点,在使用模型时要谨慎并保持批判性思维。
- 如果被要求这样做,模型可能会生成冒犯、不适当或伤害性的内容。