部署CogVLM图像描述API

在本文中,将探讨如何利用CogVLM这一多模态语言模型,为图像生成描述性文字。这些描述不仅能够为视障人士提供图像的可访问性描述,还能为图像搜索功能增添更多上下文信息,这仅仅是众多应用场景中的几个例子。

将通过一个指南,逐步介绍如何在自己的基础设施上部署一个由CogVLM和Roboflow Inference支持的图像描述API。考虑以下这张图片:

# 假设这是一张图片的路径 image_path = "./warehouse.jpg"

当向CogVLM提出“为这张图片生成一个描述。”的请求时,系统返回了如下描述:

在仓库中精准导航:一位专注的工人正使用他可靠的Hyster叉车确保操作的顺畅。

通过本指南的学习,将能够拥有一个API,通过编程方式为类似上述示例中的图片生成描述。现在,让开始吧!

要求

在本指南中,需要一块至少与T4 GPU相当或更强大的NVIDIA GPU。这是因为将要使用的CogVLM模型体积庞大。可以在如Google Cloud Platform或AWS等云平台上部署T4和其他GPU。

提供了一个如何在AWS虚拟机上设置CogVLM的指南,如果想将描述API部署在AWS上,可以按照该指南操作。只需要按照AWS教程操作到“设置推理服务器”;本指南将涵盖其余部分。

还需要一个免费的Roboflow账户。

步骤 #1:安装Roboflow Inference

要开始,需要安装RoboflowInference。Inference是一个开源服务器,用于运行计算机视觉模型。可以运行像YOLOv8这样的微调模型,以及像CLIP和CogVLM这样的基础模型。

# 安装Inference的命令 pip install inference inference-cli inference-sdk

步骤 #2:启动推理服务器

要生成描述,需要启动一个推理服务器。要启动推理服务器,需要安装Docker。请参考官方Docker安装指南,了解如何在设备上安装Docker。

# 启动推理服务器的命令 inference server start

推理服务器将在http://localhost:9001启动。

步骤 #3:生成图像标签

有了推理服务器,可以开始生成图像描述了。

# 创建一个新的Python文件并添加以下代码 import os from inference_sdk import InferenceHTTPClient # 设置客户端 CLIENT = InferenceHTTPClient(     api_url="http://localhost:9001", # 仅支持本地托管     api_key=os.environ["ROBOFLOW_API_KEY"] ) # 发送请求并打印结果 result = CLIENT.prompt_cogvlm(     visual_prompt="./image.jpg",     text_prompt="为这张图片生成一个描述。", ) print(result)

在这段代码中,使用Inference SDK连接到推理服务器。然后,将一个名为“image.jpg”的图片发送到服务器。请将“image.jpg”替换为想要发送到服务器的图片名称。

发送图片时附带的提示是“为这张图片生成一个描述。”。如果想要询问图片的特定属性——例如,某个特定物体是否存在——可以调整提示,提出不同的问题。

在幕后,这段代码向推理服务器发送了一个HTTP请求。推理HTTP服务器处理请求。CogVLM生成一个描述。然后,应用程序返回一个描述。

当首次运行此脚本时,CogVLM模型将被下载。CogVLM是一个大型模型——超过10 GB——因此获取模型将需要几分钟时间。模型然后需要加载到内存中,这可能还需要几分钟时间。一旦模型加载到内存中,在T4上处理请求大约需要10秒,或者在更强大的GPU上需要的时间更少。

设置好图片和提示后,运行脚本。

让在以下图片上运行脚本:

这是模型为图片生成的描述:

在仓库中精准导航:一位专注的工人正使用他可靠的Hyster叉车确保操作的顺畅。

服务器成功为提供的图片生成了相关的描述。

可以使用CogVLM和RoboflowInference作为图像描述API,运行在自己的硬件上。在本指南中,介绍了如何在GPU设备上部署CogVLM和Roboflow Inference。讨论了如何安装Inference,如何设置推理服务器,以及如何向服务器发送请求。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485