You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hugging Face VisualBERT演示Notebook如何使用本地自定义图片

本地图片传入VisualBERT预处理模块的实现方案

该需求完全可以实现,官方提供的Preprocess模块本身就兼容非URL的输入类型,不需要修改Faster R-CNN特征提取的后续逻辑,只要调整传入预处理的参数即可,具体有两种常用实现方式:

方案一:直接传入本地图片路径(最推荐)

Preprocess类的调用入口原生支持本地文件路径输入,和传入在线URL的用法完全一致,不需要额外编写图像读取代码,是最稳定的实现方式。
Colab环境下上传的文件默认存储在/content/目录下,直接传入图片的绝对路径即可:

# 替换为你上传的图片实际路径,可通过!ls /content命令确认文件名
LOCAL_IMG_PATH = "/content/your_custom_image.jpg"

frcnn_cfg = Config.from_pretrained("unc-nlp/frcnn-vg-finetuned")
frcnn = GeneralizedRCNN.from_pretrained("unc-nlp/frcnn-vg-finetuned", config=frcnn_cfg)
image_preprocess = Preprocess(frcnn_cfg)
images, sizes, scales_yx = image_preprocess(LOCAL_IMG_PATH)

output_dict = frcnn(
    images,
    sizes,
    scales_yx=scales_yx,
    padding="max_detections",
    max_detections=frcnn_cfg.max_detections,
    return_tensors="pt",
)

方案二:传入已读取到内存的图像对象

如果你已经提前将图片读取为内存中的图像对象,只要符合输入格式要求,也可以直接传入Preprocess,支持的内存对象格式包括:

  • PIL Image对象:需要先调用.convert("RGB")强制转为三通道,避免带透明通道的PNG图片报错,预处理模块会自动完成通道顺序转换、缩放等操作
  • BGR格式的numpy数组:要求dtype为uint8,shape为(图像高度, 图像宽度, 3),和OpenCV默认读取的图像格式完全匹配

以PIL读取图像为例,实现代码如下:

from PIL import Image
# 读取本地图片为PIL对象
img = Image.open("/content/your_custom_image.jpg").convert("RGB")

frcnn_cfg = Config.from_pretrained("unc-nlp/frcnn-vg-finetuned")
frcnn = GeneralizedRCNN.from_pretrained("unc-nlp/frcnn-vg-finetuned", config=frcnn_cfg)
image_preprocess = Preprocess(frcnn_cfg)
images, sizes, scales_yx = image_preprocess(img)

output_dict = frcnn(
    images,
    sizes,
    scales_yx=scales_yx,
    padding="max_detections",
    max_detections=frcnn_cfg.max_detections,
    return_tensors="pt",
)

注意事项

  • 不要传入PyTorch张量格式的图像给Preprocess模块,该模块不支持张量输入,会直接报错
  • 如果传入numpy数组,不要手动调整通道顺序为RGB,必须保持BGR顺序,否则提取的视觉特征会出现偏差,导致推理结果错误
  • 如果遇到路径不存在的报错,可在Colab中执行!ls /content命令,确认上传图片的实际文件名和路径

内容的提问来源于stack exchange,提问作者lazytux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 01:15:39