SuperAPI AI 工具集

deepstream-generate-pipeline

编程与开发

查看项目

更新于 10-15 18:37

技能介绍

用途

DeepStream Pipeline Builder 用于交互式构建 NVIDIA DeepStream SDK 的 GStreamer 管道。当用户需要视频/图像推理、检测、跟踪或流媒体相关的管道时,该技能通过问卷收集需求,并生成可直接运行的 gst-launch-1.0 管道命令。

主要能力

  • 通过交互式问卷收集管道需求,从用户查询中推断已明确的参数,仅询问未知项。
  • 使用独立的 BM25 检索后端,对 270 多条已验证管道做相似度搜索,并带结构元数据加权,零外部依赖。
  • 支持多种输入:本地视频(.mp4/.h264/.h265)、本地图片(.jpg/.png)、RTSP 流、USB 摄像头、测试图案。
  • 支持推理模式:无、主推理(nvinfer)、主+次推理、带预处理器、Triton(nvinferserver)。
  • 支持跟踪器:无、NvDCF、IOU、NvSORT、DeepSORT。
  • 支持输出:显示(dGPU/Jetson)、保存(JPG/PNG/MP4/H264)、RTSP 输出、fakesink。
  • 支持平台:x86 dGPU(T4、A100、L40、RTX 等)或 aarch64——Jetson(Orin、Xavier、Nano)/ SBSA(Grace、GH200)。
  • 支持附加操作:缩放、旋转/翻转、裁剪、色彩格式转换。
  • 提供管道验证脚本,执行语法、元素、属性、实时解析四阶段检查。
  • 提供数据质量检查脚本,可报告并自动修复管道 CSV 中的问题。

使用方式

前置条件:

  • Python 3.8+(仅标准库,无需 pip 包)。
  • DeepStream SDK 安装在 /opt/nvidia/deepstream/deepstream/(用于 gst-inspect-1.0 验证和元素检查)。
  • GStreamer 的 gst-launch-1.0 和 gst-inspect-1.0 在 PATH 中(随 DeepStream 安装)。
  • 平台为 x86 dGPU 或 aarch64(Jetson/SBSA)。

使用示例:

  • 完全指定:detect and track on 4 rtsp streams and display on jetson(跳过大部分问题)。
  • 部分指定:give me a pipeline to infer on an image(询问剩余问题)。
  • 最少指定:build a pipeline(询问全部 7 个问题)。

工作流程:

  1. 收集管道需求:先阅读 references/requirement-extraction.md,从查询中推断已明确的参数,再通过 AskUserQuestion 一次性询问未知项,并回显已推断的参数。
  2. 构建自然语言查询:按模式 Please provide a GStreamer pipeline that [operation] on [num_sources] [input_type] [input_detail] [tracker_detail] and [output_action] [platform_detail] 构造查询字符串。
  3. 运行管道生成脚本:
python3 <skill-path>/scripts/generate_pipeline.py \
  --query "<constructed_query>" \
  --source-type "<Local video file|Local image file|RTSP stream|USB camera|Test pattern>" \
  --num-sources <N> \
  --inference "<None|primary|primary+secondary|primary+preprocess|primary+secondary+preprocess|primary-triton|primary+secondary-triton>" \
  --tracker "<none|NvDCF|IOU|NvSORT|DeepSORT>" \
  --sink "<display|display-jetson|save-jpg|save-png|save-mp4|save-h264|rtsp-out|fakesink>" \
  --platform "<dGPU|Jetson|SBSA>" \
  --extras "<none|resize|rotate|crop|color-convert|osd>" \
  --format compact

始终传入 --format compact。脚本会加载管道数据集、提取结构元数据、用 BM25 加同义词扩展打分、应用结构加权,返回带置信度(high/medium/low)的 top-K 结果。 4. 验证管道:

python3 <skill-path>/scripts/validate_pipeline.py "<assembled_pipeline>" --format summary

始终传入 --format summary。验证器执行语法检查、元素检查、属性检查、实时解析检查(多流管道自动跳过实时解析)。若验证失败,修复后重新验证,最多重试 2 次;若仅有警告,则呈现管道并告知用户。 5. 呈现管道:输出必须为五个块,依次为:一行状态徽章(验证+置信度)、单个 bash 代码块包含完整 gst-launch-1.0 -e 命令(单行、绝对路径、无续行符、无 shell 变量)、按阶段分组的分解表、建议列表、以及(仅当预检失败时)状态徽章上方的 ⚠ 行。 6. 提供细化选项:询问用户是否要调整流数量、增删跟踪器或次推理、切换显示与文件输出、更改平台等。 7. 可选保存脚本:仅当用户明确要求时,用 Write 工具创建文件,默认 /tmp/pipeline.sh,内容为 shebang 加与聊天中完全相同的单行管道。

适用场景

  • 需要为视频或图像推理、检测、跟踪、流媒体构建 DeepStream GStreamer 管道。
  • 在 x86 dGPU 或 aarch64(Jetson/SBSA)平台上快速生成可运行的 gst-launch-1.0 命令。
  • 需要从多种输入源(本地文件、RTSP、USB 摄像头、测试图案)到多种输出(显示、文件、RTSP、fakesink)的组合。
  • 需要主/次推理、Triton 推理、预处理器以及多种跟踪器的组合。

限制

  • 需要安装 DeepStream SDK 和 GStreamer,且 gst-launch-1.0、gst-inspect-1.0 在 PATH 中。
  • 平台限于 x86 dGPU 或 aarch64(Jetson/SBSA)。
  • 当 generate_pipeline.py 返回 confidence: low 时,需依赖技能内的组装规则而非检索示例。
  • 多流管道会跳过实时解析检查(因 fakesrc 无法通过命名 pad 协商 caps)。
  • 验证失败最多重试 2 次,之后按原样呈现并附警告。
  • 若脚本未找到,需确认技能目录已符号链接到 .claude/skills/ 或 .cursor/skills/。
  • 安全姿态、已知限制和操作说明记录在 references/security-and-limitations.md 中。

测试

运行测试套件验证检索质量和验证器正确性:

python3 -m unittest discover -s <skill-path>/tests -v

测试套件包括 BM25 检索器单元测试、验证器单元测试、20+ 查询到预期结果的黄金回归测试。数据质量检查:

python3 <skill-path>/scripts/lint_data.py          # report issues
python3 <skill-path>/scripts/lint_data.py --fix     # auto-fix and overwrite