在Seeed Studio reComputer Jetson Orin使用英伟达最新发布的VLM视觉语言大模型

在Seeed Studio reComputer Jetson Orin使用英伟达最新发布的VLM视觉语言大模型

所有教程都免费开源,请动动小手点个小星星https://github.com/Seeed-Projects/jetson-examples

简介

视觉语言模型(VLMs)是支持图像、视频和文本的多模态模型,它们结合了大型语言模型和视觉变换器。基于这一能力,它们能够支持通过文本提示来查询视频和图像,从而实现与视频聊天、定义基于自然语言的警报等功能。VLM AI服务能够快速部署VLMs,以用于视频洞察应用。VLM服务公开了REST API端点,用于配置视频流输入、设置警报并以自然语言询问关于输入视频流的问题。

本教程将指导如何在Seeed Studio reComputer J4012 Jetson Orin NX上运行VLM。

在reComputer Jetson Orin使用英伟达最新发布的VLM视觉语言大模型

要求

在开始设置过程之前,请确保您的系统满足以下前提条件:

  • 运行Ubuntu 22.04或更高版本的Seeed Studio reComputer J4012 Orin NX 16G
  • 驱动版本:535.113.01,Jetpack版本:6.0,CUDA版本:12.2
  • 确保已安装JetPack和相关的Jetson服务包。
    sudo apt-get install nvidia-jetpack
    sudo apt install nvidia-jetson-services
    
  • 可以通过RTSP流传输IP摄像头或本地视频(推荐使用我们的NVStreamer教程进行RTSP流传输)。

开始使用

步骤 1:从NGC下载应用程序包 vlm-1.1.0.tar.gz 到Jetson。使用此链接:NGC参考工作流和资源。你需要输入NGC凭证。在页面上,使用**Download**菜单(右上角)中的选项之一:

tar -xvf vlm-1.1.0.tar.gz
cd ~/vlm/example_1

步骤 2:VLM AI服务将使用jetson-ingressjetson-monitoring服务。你需要配置这两个服务以与VLM AI服务集成。将提供的默认配置复制到相应的服务配置目录:

sudo cp config/vlm-nginx.conf /opt/nvidia/jetson/services/ingress/config
sudo cp config/prometheus.yml /opt/nvidia/jetson/services/monitoring/config/prometheus.yml
sudo cp config/rules.yml /opt/nvidia/jetson/services/monitoring/config/rules.yml

步骤 3:运行基础服务:

sudo systemctl start jetson-ingress
sudo systemctl start jetson-monitoring
sudo systemctl start jetson-sys-monitoring
sudo systemctl start jetson-gpu-monitoring
sudo systemctl start jetson-redis
sudo systemctl start jetson-vst

步骤 4:首次启动VLM服务时,它将自动下载并量化VLM。此过程可能需要一些时间。如果在Orin NX16上部署,你可能需要挂载更多的SWAP空间,因为量化过程可能会消耗大量内存。运行以下命令以挂载更多的SWAP空间:

sudo fallocate -l 10G /data/10GB.swap
sudo mkswap /data/10GB.swap
sudo swapon /data/10GB.swap

步骤 5:启动VLM AI服务:

cd ~/vlm/example_1
sudo docker compose up -d

要检查所有必需的容器是否已启动,你可以运行以下命令:

sudo docker ps

添加RTSP流输入

你可以首先为VLM模型添加RTSP流,使用以下curl命令。建议使用NVStreamer教程进行流传输。

  • 步骤 1:将0.0.0.0替换为你的Jetson IP,将liveStreamUrl链接替换为你的RTSP链接,然后在终端中输入以下命令:

    curl --location 'http://0.0.0.0:5010/api/v1/live-stream' \
    --header 'Content-Type: application/json' \
    --data '{
    "liveStreamUrl": "rtsp://0.0.0.0:31554/nvstream/root/store/nvstreamer_videos/car.mp4"
    }'
    

    注意:除了curl命令,你还可以直接通过API文档页面测试REST API,该页面在零样本检测服务启动时可通过http://0.0.0.0:5010/docs访问。

  • 步骤 2:执行第一个步骤后,将返回一个ID。你需要记录此ID以在后续步骤中使用:

    {"id": "a782e200-eb48-4d17-a1b9-5ac0696217f7"}
    

    你也可以使用以下命令稍后获取ID:

    curl --location 'http://0.0.0.0:5010/api/v1/live-stream'
    

    要根据ID删除流,可以使用以下命令:

    curl --location --request DELETE 'http://0.0.0.0:5010/api/v1/live-stream/{id}'
    

设置警报

警报是VLM将在直播输入上持续评估的问题。对于每个警报规则集,VLM将尝试根据直播流的最新帧判断其是否为True或False。由VLM确定的True和False状态将发送到websocket和Jetson监控服务。

设置警报时,警报规则应以是/否问题的形式表达。例如“是否有火?”或“是否有烟?”。请求的主体还必须包含与添加RTSP流时返回的流ID相对应的“id”字段。

默认情况下,VLM服务最多支持10个警报规则。这可以通过调整配置文件来增加。

步骤 1:将0.0.0.0替换为你的reComputer IP地址,修改alerts以包含你需要警报的对象,使用上一步返回的id。完成命令后,在终端中输入以下内容:

curl --location 'http://0.0.0.0:5010/api/v1/alerts' \
--header 'Content-Type: application/json' \
--data '{
    "alerts": ["is there a fire?", "is there smoke?"],
    "id": "a782e200-eb48-4d17-a1b9-5ac0696217f7"
}'

查看RTSP流结果

检测输出将通过rtsp://reComputer_ip:5011/out进行流式传输。我们提供了一个Python脚本用于可视化视频流输出。你需要提前安装opencv-python库,然后运行以下Python脚本:

  • 步骤 1:安装opencv-python库:
    pip install opencv-python
    
  • 步骤 2:运行以下Python脚本:
    import cv2
    rtsp_url = "rtsp://reComputer_ip:5011/out"
    cap = cv2.VideoCapture(rtsp_url)
    if not cap.isOpened():
        print("Cannot open RTSP stream")
        exit()
    while True:
        ret, frame = cap.read()
        if not ret:
            print("Failed to retrieve frame")
            break
        cv2.imshow('RTSP Stream', frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    cap.release()
    cv2.destroyAllWindows()
    

关闭服务

要停止零样本检测服务,请在compose.yaml文件所在目录

中运行以下命令:

sudo docker compose down

参考链接🔧

内容贡献者

Seeed Studio–Zhu Yaohui

  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值