> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs-staging.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# QIM SDK 简介

Qualcomm® Intelligent Multimedia SDK(QIM SDK)是一个硬件加速的多媒体和 AI 框架,用于在 Qualcomm® 平台上构建智能边缘应用。它提供可复用的管线组件、经过优化的插件和参考应用,适用于智能摄像头、机器人、无人机、家用电器、AI 设备和联网设备等用例。

<Frame caption="QIM SDK 将每个管线阶段映射到最合适的硬件模块">
  <img src="https://mintlify.s3.us-west-1.amazonaws.com/qualcomm-staging/archives/2.1/zh/AI-Developer-Workflow-Ubuntu/_images/qimsdk-hw-pipeline.png" alt="QIM SDK 跨摄像头 ISP、GPU、NPU、视频和显示模块的硬件加速管线" width="100%" style={{ width: "100%", maxWidth: "900px" }} />
</Frame>

QIM SDK 在单个应用工作流中结合了摄像头采集、媒体处理、AI 预处理、AI 推理、后处理、渲染、编码和串流。您可以从一个现成可运行的示例开始,改编参考管线,或者使用最适合您用例的编程模型构建自定义应用。

<Note>
  本页面为 AI 开发者工作流提供工作流层面的概述。有关完整的 SDK 参考资料,包括安装、插件目录、App Builder API、示例管线和参考应用,请参阅 **[Discover SDKs → IM SDKs](https://imsdkdocs.qualcomm.com)**。
</Note>

<Tip>
  如果您还没有准备好编写代码,请先运行预构建的应用。请参阅[运行 Qualcomm IM SDK 示例应用](../topic/sample-app-evk),以便在开始构建之前,在您的设备上验证可正常工作的 AI 管线。
</Tip>

## 为什么使用 QIM SDK

QIM SDK 降低了在 Qualcomm 平台上构建经过优化的 AI 和多媒体应用所需的工作量。它具有以下优势:

<CardGroup cols={2}>
  <Card title="一个统一的多媒体 + AI 框架" icon="arrows-to-circle">
    采集、预处理、推理、后处理和渲染全部位于单条 GStreamer 管线中,而不是把多个独立应用拼接在一起。
  </Card>

  <Card title="默认硬件加速" icon="rabbit-running">
    插件原生使用 Qualcomm CPU、GPU、NPU(HTP)、摄像头 ISP、视频(VPU)和 DSP,让每个阶段在合适的引擎上运行。
  </Card>

  <Card title="零拷贝(零 memcpy)缓冲区" icon="bolt">
    帧以 DMA-buf 句柄的形式在管线中传递,因此同一个缓冲区在 ISP、GPU 和 NPU 之间共享,无需 CPU 拷贝。
  </Card>

  <Card title="GPU 前处理和后处理" icon="microchip">
    缩放、颜色转换、张量布局和叠加渲染都在 Adreno GPU 上运行,让 CPU 保持空闲并确保推理持续获得数据。
  </Card>

  <Card title="灵活的 AI 运行时支持" icon="microchip-ai">
    通过 LiteRT/TFLite、ONNX、Qualcomm AI Engine Direct(QNN)或 SNPE 运行模型。可按模型选择,而无需重写管线。
  </Card>

  <Card title="Qualcomm AI Hub 集成" icon="cloud-arrow-down">
    从 [Qualcomm AI Hub](https://aihub.qualcomm.com/) 下载预训练的量化模型,并直接在参考管线中运行。
  </Card>
</CardGroup>

## QIM SDK 管线的工作方式

典型的视觉 AI 管线有五个阶段。QIM SDK 在专用硬件上加速高亮标注(⚡)的阶段,并以零拷贝 DMA-buf 句柄在各阶段之间传递帧。

```mermaid theme={null}
flowchart LR
    classDef gpu fill:#31017D,color:#fff,stroke:#31017D
    classDef npu fill:#3253DC,color:#fff,stroke:#3253DC
    classDef io  fill:#5B6770,color:#fff,stroke:#5B6770

    Cam["Data source<br/>qticamsrc · v4l2 decode · RTSP/file"]:::io
    Pre["⚡ Preprocessing: GPU<br/>qtimlvconverter<br/>resize · color convert · tensor layout"]:::gpu
    Inf["⚡ Inference: NPU/HTP<br/>qtimltflite · qtimlqnn<br/>qtimlonnx · qtimlsnpe"]:::npu
    Post["⚡ Post-processing: GPU<br/>qtimlpostprocess + qtivoverlay"]:::gpu
    Out["Use AI metadata<br/>display · RTSP/WebRTC · MQTT/Kafka · actions"]:::io

    Cam -->|"DMA-buf (zero-copy)"| Pre -->|"DMA-buf"| Inf -->|"tensors"| Post -->|"DMA-buf"| Out
```

| 阶段 | QIM SDK 插件 | 硬件引擎 |
| - | - | - |
| 采集/解码 | `qticamsrc`、`v4l2h264dec` / `v4l2h265dec` | 摄像头 ISP、视频(VPU) |
| 预处理 | `qtimlvconverter` | GPU(Adreno) |
| 推理 | `qtimltflite`(LiteRT)、`qtimlqnn`(AI Engine Direct / QNN)、`qtimlonnx`(ONNX)、`qtimlsnpe`(SNPE) | NPU/HTP(Hexagon)、CPU、GPU |
| 后处理 | `qtimlpostprocess` | CPU / GPU |
| 叠加/合成/编码 | `qtivoverlay`、`qtivcomposer`、`v4l2h264enc` | GPU、视频(VPU) |

有关构建这些管线的分阶段指南,请参阅 Discover SDKs 中的 [Building AI pipelines](https://imsdkdocs.qualcomm.com/qimsdk-overview/sdkoverview) 和[插件参考](https://imsdkdocs.qualcomm.com/plugin-reference/introduction)。

### 零拷贝如何提升性能

在朴素的管线中,每个阶段都会将帧复制到自己的缓冲区,消耗内存带宽和 CPU 周期,并增加延迟。IM SDK 则让**同一个帧缓冲区**以共享的 **DMA-buf** 句柄在解码 → 预处理 → 推理 → 叠加 → 编码之间流转:

* 摄像头 ISP 只写入一次帧;GPU 和 NPU 读取**同一个物理缓冲区**,引擎之间没有 `memcpy`。
* 插件通过 GStreamer 的 allocation-query 机制自动协商 DMA-buf 分配;当管线中的每个阶段都支持时(例如,解码/编码元素上的 `capture-io-mode=dmabuf` / `output-io-mode=dmabuf-import`),就会启用零拷贝。
* 其结果是**更低的内存流量、更低的 CPU 负载和更低的端到端延迟**,这对高分辨率和多流工作负载尤为重要。

### 在 GPU 上进行前处理和后处理

只有当 NPU 从不等待 CPU 时,NPU 上的推理才够快。IM SDK 将数据整形工作放在 Adreno GPU 上运行:

* **预处理**:`qtimlvconverter` 直接在 GPU 上执行色彩空间转换和张量布局变换,生成模型所需的精确张量,推理之前不会出现 CPU 瓶颈。
* **后处理**:`qtimlpostprocess` 将模型的输出张量解码为结构化元数据(边界框、标签、掩码),然后 `qtivoverlay` 在 GPU 上就地将这些元数据绘制回帧上。

## 后续步骤

<CardGroup cols={2}>
  <Card title="下载用于开发的源代码" icon="download" href="../topic/download-source-code">
    设置 Qualcomm IM SDK 可扩展 SDK(eSDK)并下载源代码,以开发 AI/ML 应用和插件代码。
  </Card>

  <Card title="在应用中集成自定义 AI 模型" icon="puzzle-piece" href="../topic/integrate-custom-model">
    选择合适的 Qualcomm SDK 路径,使用 Qualcomm IM SDK 或 Qualcomm AI Runtime SDK 在应用中部署自定义 AI 模型。
  </Card>

  <Card title="为自定义模型添加后处理支持" icon="sliders" href="../topic/add-postprocessing-support-custom-model">
    使用 qtimlpostprocess 插件为 Qualcomm IM SDK 管线添加自定义模型后处理支持。
  </Card>
</CardGroup>
