随笔 - 934, 文章 - 0, 评论 - 247, 阅读 - 344万

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

Win本地运行PaliGemma

Posted on   蝈蝈俊  阅读(111)  评论(0编辑  收藏  举报

PaliGemma 是 Google 开发的轻量级的具有多模态功能的视觉语言模型 (VLM)。

https://ai.google.dev/gemma/docs/paligemma?hl=zh-cn

它将图片和文本作为输入,可以回答有关图片的问题并提供详细信息和上下文。

这意味着 PaliGemma 可以对图片进行更深入的分析,并提供有用的数据洞见,例如:为图片和短视频添加说明、对象检测以及读取图片中嵌入的文字。

下面是环境搭建和演示代码:

环境搭建

涉及到显卡驱动、CUDA、Python环境、PyTorch这些。

显卡驱动

我这里的3060显卡,Nvidia官方驱动会报跟Win不兼容,查看硬件id,是一个官方驱动中没有的SUBSYS:

说明:SUBSYS 代表的是显卡的子系统供应商和特定配置(通常包括具体的显卡型号和制造商的定制信息)。如果这个ID在NVIDIA的官方列表中找不到,可能是因为该显卡是某个OEM(原始设备制造商)的特别版本,或者是一个非常新的产品,或者是所谓的山寨魔改版本。

最终我是用驱动总裁来完成显卡驱动更新的。

从显卡驱动的数字签名、驱动日期等信息判断我这个是个山寨魔改的3060显卡。

非官方下载的Nvidia驱动中也才有这个驱动,比如:
https://www.driverscloud.com/en/services/GetInformationDriver/76270-0/nvidia-56070-desktop-win10-win11-64bit-international-dch-whqlexe

CUDA

注意,最新版本的PyTorch需要的CUDA版本不是最新的,我们不能安装最新的CUDA。

https://pytorch.org/get-started/locally/

所以我们不能直接下载最新版本的CUDA:
https://developer.nvidia.com/cuda-downloads

而是下载之前版本的:
https://developer.nvidia.com/cuda-toolkit-archive
从上面链接找到12.1版本的CUDA下载。

下载,完成安装后,重启后,可以用下面命令查看

# 显示 CUDA 编译器驱动的版本信息
nvcc -V

默认情况下,CUDA 安装在 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA 目录下。

开发环境搭建

Miniconda3 提供了一个最小化的安装器,只包含 Conda(一个包和环境管理器)和 Python。这种设置允许用户自己选择安装所需的额外库,从而节省空间并避免安装不必要的包。

下载地址:
https://docs.anaconda.com/miniconda/miniconda-install/

默认会安装在下面目录:

c:\ProgramData\miniconda3

注意要把这个对应的执行目录c:\ProgramData\miniconda3\condabin放入PATH环境变量中,方便使用。

安装完成后,就是搭建环境:

conda create -n pg python=3.12
conda activate  pg
conda install pip

PyTorch

按照CUDA版本和环境选择出现的安装命令安装。

https://pytorch.org/get-started/locally/


pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

演示代码

导入依赖库

pip install transformers
pip install Pillow requests
  • transformers:用于加载和使用预训练的模型和处理器。
  • requests:用于从网络获取图像。
  • Pillow:用于图像处理。

下面演示了,结合图像和文本提示来生成相关的答案代码。


from transformers import AutoProcessor, PaliGemmaForConditionalGeneration,AutoConfig
import requests
from PIL import Image

access_token="your_huggingface_access_token" # 替换为你的访问令牌

model_id = "google/paligemma-3b-mix-224"

# 加载预训练的模型和相应的处理器
model = PaliGemmaForConditionalGeneration.from_pretrained(model_id,token=access_token)
processor = AutoProcessor.from_pretrained(model_id,token=access_token)

prompt = "What is on the flower?"
image_file = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg?download=true"
raw_image = Image.open(requests.get(image_file, stream=True).raw)
inputs = processor(prompt, raw_image, return_tensors="pt")

# max_new_tokens参数限制生成的最大新词数量。
output = model.generate(**inputs, max_new_tokens=20)

# skip_special_tokens=True参数用于在输出中去掉特殊令牌。
# [len(prompt):]这部分代码意在去除输出中与输入提示相同的部分,只显示模型生成的答案。
print(processor.decode(output[0], skip_special_tokens=True)[len(prompt):])
# bee

总结

从上面代码我们可以看出,PaliGemma不仅能够理解图像本身的视觉信息,还能结合相关的文本描述,提供更加丰富和精准的数据解读。

这种能力使其在各种应用场景中都显得非常有用,比如在自动化客服、智能教育、以及内容创作等领域。通过有效地结合视觉和语言信息,PaliGemma能够提供更为细致和深入的互动体验,极大地拓宽了人工智能在日常生活中的应用范围。

相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
点击右上角即可分享
微信分享提示