Skip to main content

如何使用 Jetson 平台服务在 reComputer 上运行零样本检测

note

本文档由 AI 翻译。如您发现内容有误或有改进建议,欢迎通过页面下方的评论区,或在以下 Issue 页面中告诉我们:https://github.com/Seeed-Studio/wiki-documents/issues

简介

生成式 AI 视觉变换器(如 CLIP)使得构建能够进行开放词汇对象检测的零样本检测模型成为可能。这意味着模型不受限于一组预定义的检测类别,用户可以在运行时配置需要检测的对象。零样本检测 AI 服务通过 Jetson 服务快速部署生成式 AI,用于视频直播输入的开放词汇检测。零样本检测 AI 服务提供 REST API 接口,用于控制流输入和检测对象。

本维基提供了如何在 reComputer J4012 上运行零样本检测的教程。

要求

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

  • 一台运行 Ubuntu 22.04 或更高版本的 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
  • IP 摄像头或本地视频可以通过 RTSP 流进行传输。(我们推荐使用提供的 NVStreamer 教程 来进行 RTSP 流传输。)

入门指南

步骤 1:从 NGC 下载应用程序包 zero_shot_detection-1.1.0.tar.gz 到您的 Jetson,使用以下链接:NGC 参考工作流和资源。您需要输入您的 NGC 凭证。在页面顶部右侧的 Download 菜单中选择一种下载选项:

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

步骤 2:零样本检测 AI 服务将使用 jetson-ingressjetson-redis 服务。您需要配置 jetson-ingress 服务以暴露零样本检测 REST API。将提供的默认配置复制到对应的服务配置目录。

sudo cp config/zero_shot_detection-nginx.conf /opt/nvidia/jetson/services/ingress/config

步骤 3:运行基本服务。

sudo systemctl start jetson-monitoring
sudo systemctl start jetson-sys-monitoring
sudo systemctl start jetson-gpu-monitoring

步骤 4:验证平台 ingress 配置文件(用于监控服务)中的所有行是否已取消注释,文件路径如下:

/opt/nvidia/jetson/services/ingress/config/platform-nginx.conf

步骤 5:启动 API 网关以访问监控仪表板。

sudo systemctl restart jetson-ingress
sudo systemctl restart jetson-redis
sudo systemctl restart jetson-vst

步骤 6:启动零样本检测 AI 服务。

sudo docker compose up -d

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

sudo docker ps

添加 RTSP 流输入

您可以首先通过以下 curl 命令为零样本检测模型添加 RTSP 流。推荐使用 NVStreamer 教程 进行流传输。

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

    ```bash
    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}'

添加检测类别

零样本检测模型能够在运行时更新其检测类别。此端点接受一个对象列表和相关的阈值。阈值表示检测的敏感度。较高的值将减少误报,较低的值将增加误报。目前此服务仅支持一个流,但未来此 API 将支持多流。

  • 步骤 1:将 0.0.0.0 替换为您的 reComputer IP 地址,修改 objects 以包含您需要检测的对象(最多十个),为每个类别设置 thresholds,并使用前一步返回的 id。完成命令后,在终端输入以下内容:
    curl -X 'POST' \
    'http://192.168.49.101:5010/api/v1/detection/classes' \
    -H 'accept: application/json' \
    -H 'Content-Type: application/json' \
    -d '{
    "objects": [
    "a car", "a people"
    ],
    "thresholds": [
    0.2, 0.04
    ],
    "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("无法打开 RTSP 流")
    exit()
    while True:
    ret, frame = cap.read()
    if not ret:
    print("无法获取帧")
    break
    cv2.imshow('RTSP 流', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
    break
    cap.release()
    cv2.destroyAllWindows()

关闭服务

要停止零样本检测服务,请在 compose.yaml 文件所在的同一目录中运行以下命令:

sudo docker compose down

更多详情

Jetson 平台服务的零样本检测: https://docs.nvidia.com/jetson/jps/inference-services/zero_shot_detection.html

技术支持与产品讨论

感谢您选择我们的产品!我们致力于为您提供各种支持,以确保您使用我们的产品时体验顺畅。我们提供了多个沟通渠道,以满足不同的偏好和需求。

Loading Comments...