AB
AiBoss站
教程

HuggingFace

教程

用 Hugging Face Transformers 加载预训练模型完成图像描述

从注册账号、搭建 Python 虚拟环境,到安装 transformers 与 PyTorch,再到从模型库挑选模型并跑通图像描述推理,这篇教程把 Hugging Face 的入门路径拆成可照做的步骤,并说明模型卡、许可证与硬件资源这些容易踩坑的地方。

Hugging Face 是一个围绕机器学习模型、数据集与在线演示应用构建的平台。它最有代表性的产物是 Transformers 库:把大量预训练模型封装成几行代码即可调用的接口,让文本分类、分词、翻译、摘要、图像描述这类任务不必从零训练。适合两类读者:一类是想直接试用现成 AI 应用、不写代码的人,可以走 Spaces;另一类是有 Python 基础、想把预训练模型接进自己项目的人,可以走 Transformers 加模型库这条路。本文以「加载一个预训练模型并跑出图像描述结果」为主线,把环境准备、模型挑选、代码运行和常见限制讲清楚。想先浏览站内可用的相关工具,可以从 Hugging Face 这一条目入手。

准备工作

账号与平台结构

使用平台资源前需要先注册账号。注册完成后,站点主要有三个入口需要熟悉:

  • Models:预训练模型仓库,覆盖自然语言处理、计算机视觉、音频处理等任务,模型由社区与平台方共同贡献,架构包括 BERT、GPT、T5 等。
  • Datasets:数据集库,提供文本、音频、图像、表格数据,跨多个领域与语言,并与 Transformers、Tokenizers 等库打通。
  • Spaces:在线演示与部署平台,可以把模型做成可交互应用分享出去,不需要自己准备服务器。

如果完全没有编程基础,直接从 Spaces 开始最省事:进入 Spaces 目录,按图像生成、文本生成、语言翻译等分类浏览,点开任意应用名称进入详情页,按页面提示操作即可试用。本文余下部分走的是代码路线。

本地环境要求

代码路线需要以下组件:

  • 一个代码编辑器,VS Code 或其他均可
  • Python 解释器
  • Transformers 库
  • 一个深度学习框架,PyTorch 或 TensorFlow 二选一

硬件方面,用 PyTorch 跑 Transformers 时,建议至少 8 GB 内存加 4 GB 显存的 GPU;如果要跑更大的模型并追求较好性能,64 GB 内存加 24 GB 显存的 GPU 更合适。这只是运行层面的建议配置,具体模型的实际需求要看模型卡说明。

操作步骤

第一步:安装 Python 与创建虚拟环境

在 Linux 环境下可以用包管理器安装 Python:

sudo apt update
sudo apt install python3

不建议把依赖装进全局环境,先建一个虚拟环境再激活:

python3 -m venv venv
source venv/bin/activate

在 Windows 上激活脚本的路径不同,需要执行虚拟环境目录下的 venv\scripts\activate。如果使用 uv 管理环境,激活方式与 pip 流程略有差异,安装完成后可以用 uv pip freeze > requirements.txt 导出依赖清单,便于复现。

第二步:安装 Transformers 与配套库

激活虚拟环境后,一次装好核心依赖:

pip install transformers datasets evaluate accelerate

其中 transformers 提供预训练模型与微调工具,datasets 负责数据集加载,evaluate 用于评估指标,accelerate 负责设备与分布式相关的加速配置。

接着安装深度学习框架。PyTorch 由 Facebook 的 AI 研究团队(FAIR)开发,2016 年发布,以易用和灵活著称;TensorFlow 由 Google Brain 团队开发,2015 年开源,是历史更久、采用面更广的框架之一。本文示例使用 PyTorch:

pip install torch

如果需要 GPU 加速,还要按显卡厂商的说明安装对应版本的 CUDA 驱动。CUDA 是面向该厂商 GPU 的并行计算平台与 API,让开发者能把 GPU 用于通用计算,从而加速机器学习、科学计算、数据分析等任务。

第三步:在模型库中挑选模型

打开模型库页面,浏览可用模型。找到目标模型后点进去,模型页通常会给出可直接复制的调用代码。需要注意,页面上给出的代码不一定只基于 Transformers,也可能涉及其他库,复制后要按实际依赖补齐安装。

每个模型都配有模型卡,写明预期用途、局限性和性能指标。挑选时至少确认三件事:任务类型是否匹配、许可证是否允许你的使用场景(并非所有模型都可免费商用)、运行所需算力是否在你的机器承受范围内。

本文以 Salesforce/blip-image-captioning-base 为例,它的任务是根据图片生成描述性文字,属于图像转文本。

第四步:编写并运行推理代码

把下面的代码放进编辑器,替换图片地址后运行:

import requests
from PIL import Image
from transformers import BlipProcessor, BlipForConditionalGeneration

processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base")

img_url = ''
raw_image = Image.open(requests.get(img_url, stream=True).raw).convert('RGB')

# 条件式图像描述
text = "a photography of"
inputs = processor(raw_image, text, return_tensors="pt")
out = model.generate(**inputs)
print(processor.decode(out[0], skip_special_tokens=True))
# >>> a photography of a woman and her dog

# 无条件图像描述
inputs = processor(raw_image, return_tensors="pt")
out = model.generate(**inputs)
print(processor.decode(out[0], skip_special_tokens=True))

代码分两段。第一段传入图片和一段提示文本 a photography of,模型会在此基础上续写描述;第二段只传图片,让模型自由生成描述。两段都通过 processor.decode 把输出的 token 序列还原成可读文本,skip_special_tokens=True 用于去掉特殊标记。

按这个模式,模型库中上千个模型都可以用类似方式调用,区别主要在处理器类、模型类和输入构造方式。

一个完整示例

下面把前面的步骤串成一次从零到出结果的完整流程,假设使用一台干净的 Linux 机器。

环境搭建

sudo apt update
sudo apt install python3
python3 -m venv venv
source venv/bin/activate
pip install transformers datasets evaluate accelerate
pip install torch

如果机器有可用的 GPU,此时按显卡厂商说明装好 CUDA 驱动,再继续下一步。

准备图片

找一张本地或网络上的图片,把可访问的图片地址填入代码中的 img_url。示例代码通过 requests 拉取图片并以流式方式读取,再用 PIL 打开并转换为 RGB 模式,避免灰度图或带透明通道的图片导致处理异常。

运行推理

python caption.py

首次运行会从模型库下载权重,耗时取决于网络与模型体积。运行结束后终端会打印两行描述:一行是带提示续写的结果,一行是自由生成的结果。示例中带提示的结果为 a photography of a woman and her dog,说明模型正确识别了画面主体。

结果核对

拿到输出后建议做两件事:一是换几张不同类型的图片再跑,观察模型在复杂场景下的稳定性;二是回到模型卡对照其声明的用途与局限,确认输出质量是否落在预期范围内。如果输出明显偏离,先检查图片是否成功加载、提示文本是否合适,再考虑换模型。

注意事项

模型相关的限制

  • 高性能模型往往需要可观的算力和显存才能有效运行,本地机器配置不足时推理会非常慢甚至无法加载。
  • 并非所有模型都允许免费商用,使用前必须查看该模型的具体许可证信息。
  • 模型卡是判断适用性的第一手材料,其中的预期用途、局限性和性能指标应当逐项阅读。

数据集相关的限制

  • 部分数据集体量极大,磁盘空间和内存不足时难以处理。
  • 部分数据集对使用场景有限制,商用前要确认许可证。
  • 数据质量不一定符合你的具体需求,通常还需要额外的清洗或预处理。

Spaces 相关的限制

  • 免费 Spaces 的默认硬件为 16 GB 内存、2 个 CPU 核心、50 GB 非持久化磁盘空间。这些默认值可能调整,以平台当前页面显示为准。
  • 计算资源存在限制,托管重型模型或大数据集时性能会受影响。
  • 账号等级(免费或付费订阅)会影响可维护的 Spaces 数量及其可消耗的资源。
  • Spaces 可以设为公开供所有人访问,也可以设为私有,仅限指定协作者或团队成员。

环境与依赖的坑

  • 虚拟环境激活命令在不同操作系统上不一样,Windows 下是 venv\scripts\activate,照抄 Linux 命令会失败。
  • 模型页给出的示例代码可能依赖 Transformers 之外的库,直接复制运行容易报缺少模块,先看导入语句再补装。
  • GPU 加速不是装完 PyTorch 就自动可用,还需要匹配的 CUDA 驱动。
  • 依赖版本、模型可用性、Spaces 的硬件规格与订阅方案都会变化,涉及价格、配额与功能范围的信息以官网当前信息为准。