> ## 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.

# 集成自定义 AI 模型

> 在应用中引入自定义 AI 模型时，选择合适的 Qualcomm SDK 路径，使用 QIM SDK 或 Qualcomm AI Runtime SDK。

本页帮助您选择将自定义 AI 模型集成到应用中的正确 SDK 路径。当您的模型适用于受支持的多媒体用例，并且可以通过标准的预处理、推理和后处理管线运行时，**请从 Qualcomm IM SDK (QIM SDK) 开始**。**仅当**您需要更底层的运行时控制、自定义张量处理，或超出 QIM SDK 路径的应用工作流时，**才使用 Qualcomm AI Runtime SDK (QAIRT)**。

<Info>
  **[应用开发工作流](../topic/imsdk-app-development#application-development-workflow)的步骤 2a。** 在实施之前，将本页作为决策点。它会告诉您是否可以直接继续使用 QIM SDK、是否需要先在步骤 3a 中添加自定义后处理，或者模型是否应转向 QAIRT 路径。
</Info>

## 决策概览

使用以下决策流程确定最适合您的模型和应用的集成路径。按顺序完成每个决策点，从模型就绪情况开始，到推荐的实施方法结束。

<Note>
  **如何使用此流程图：**按顺序回答每个问题（**Q1–Q3**）。如果您的用例受 QIM SDK 支持，请检查现有的 `qtimlpostprocess` 模块是否支持您的模型输出。如果支持，请继续执行**步骤 4**，[构建应用](../topic/imsdk-build-application)。否则，请完成**步骤 3a**，[添加自定义后处理模块](../topic/add-postprocessing-support-custom-model)，然后继续执行**步骤 4**。仅当 QIM SDK 工作流无法满足您的需求时，才使用 QAIRT。[下表](#choose-the-right-integration-path)更详细地解释了每个决策。
</Note>

```mermaid theme={null}
%%{init: {"themeVariables": {"fontSize": "11px"}, "flowchart": {"htmlLabels": true, "nodeSpacing": 12, "rankSpacing": 22, "curve": "basis", "padding": 3}}}%%
flowchart TD
    classDef decision fill:#FFFFFF,stroke:#3253DC,stroke-width:1px,color:#1B1B1B;
    classDef sdk fill:#31017D,stroke:#31017D,color:#fff;
    classDef alt fill:#3253DC,stroke:#3253DC,color:#fff;

    Q1{"Q1 · 是否受<br/>QIM SDK 支持？"}:::decision
    Q1 -->|"否"| RT["AI Runtime SDK /<br/>自定义运行时"]:::alt
    Q1 -->|"是"| Q2{"Q2 · 模型是否在<br/>AI Hub 上？"}:::decision
    Q2 -->|"是"| Ref["调整 AI Hub<br/>参考管线"]:::sdk
    Q2 -->|"否"| BYOM["自带<br/>模型"]:::sdk
    Ref --> Q3{"Q3 · 是否支持<br/>后处理模块？"}:::decision
    BYOM --> Q3
    Q3 -->|"是"| Mod["使用现有<br/>qtimlpostprocess 模块"]:::sdk
    Q3 -->|"否 · 步骤 3a"| Custom["添加自定义<br/>qtimlpostprocess 模块"]:::sdk
    Mod --> Build["步骤 4 ·<br/>构建应用"]:::sdk
    Custom --> Build
```

## 选择合适的集成路径

选择以下集成路径之一。**我们建议从 QIM SDK 路径开始**，因为它支持大多数多媒体 AI 用例，并可利用现有组件和参考管线实现快速开发。**仅当**您的模型或应用需求不受 QIM SDK 支持，并且需要自定义实现或更底层的运行时控制时，才选择 Qualcomm AI Runtime SDK (QAIRT) 路径。

| 选项 | QIM SDK（推荐） | Qualcomm AI Runtime SDK |
| - | - | - |
| **适用场景** | 您的用例受 QIM SDK 支持，并且 AI Hub 提供兼容的模型，或模型可以适配 QIM SDK 管线。 | 您的用例需要 QIM SDK 目前不支持的功能、自定义张量处理，或对模型执行的直接控制。 |
| **开发方法** | 基于 QIM SDK 多媒体管线，使用预构建的推理和后处理组件进行构建。 | 使用 Qualcomm AI Runtime SDK API 开发自定义 AI 应用。 |
| **集成工作量** | 低到中等。复用现有管线并配置模型特定参数。 | 高。需要自定义应用开发、集成和验证。 |
| **后续步骤** | 如果需要自定义后处理，请继续执行步骤 3a，然后进入步骤 4。 | 按照 [Qualcomm AI Runtime SDK 文档](../topic/develop-your-own-application-qairt-cpp)构建和部署自定义 AI 应用。 |

### QIM SDK（推荐）

QIM SDK 是大多数多媒体 AI 应用的推荐集成路径。当您的用例受 QIM SDK 支持，并且您的模型可以集成到标准的预处理、推理和后处理管线中时，请使用此路径。

按照以下决策点确定是否需要额外的自定义。

| 决策点 | 是 | 否 |
| - | - | - |
| 目标用例是否受 QIM SDK 支持？ | 继续使用 QIM SDK 工作流，并选择合适的管线组件。 | 使用 Qualcomm AI Runtime SDK (QAIRT) 开发自定义 AI 应用。 |
| Qualcomm AI Hub 上是否有兼容的模型？ | 使用 AI Hub 模型，并根据您的应用调整参考管线。 | 集成您自己的模型，并验证其格式、张量规格和运行时兼容性。 |
| 模型输出是否受现有后处理模块支持？ | 使用合适的后处理模块，并继续执行**步骤 4**，[构建应用](../topic/imsdk-build-application)。 | 完成**步骤 3a**，[添加自定义后处理模块](../topic/add-postprocessing-support-custom-model)，然后继续执行**步骤 4**。 |

要确定现有后处理模块是否支持您的模型输出，请运行：

```shell theme={null}
gst-inspect-1.0 qtimlpostprocess
```

将支持的输出张量格式与模型的输出张量进行比较。**如果有兼容的模块，您可以直接使用。否则，您必须在构建应用之前实现自定义后处理模块**——这项后处理检查是决定您的模型能否开箱即用的关键决策。

### Qualcomm AI Runtime SDK

<Warning>
  \*\*仅在 QIM SDK 不适用时使用。\*\*当用例不受 QIM SDK 支持、应用需要直接的运行时级控制，或模型需要在标准 QIM SDK 管线之外进行自定义张量处理时，请选择 [Qualcomm AI Runtime SDK](../topic/develop-your-own-application-qairt-cpp)。此路径通常需要更多的设计、集成和验证工作。
</Warning>

使用下表将常见集成场景映射到推荐的 SDK 路径和预期工作量。

| 场景 | 推荐的 SDK 路径 | 原因 | 预期集成工作量 |
| - | - | - | - |
| 使用 Qualcomm AI Hub 模型的受支持用例 | QIM SDK | 最快的路径，因为预处理、推理和后处理已与 SDK 工作流保持一致。 | 低。从参考管线开始，并更新模型特定参数。 |
| 使用自定义但兼容模型的受支持用例 | QIM SDK 加模型适配 | 用例适用于 QIM SDK，但可能需要更新模型输入、输出、标签或阈值。 | 中等。验证张量形状，并更新预处理或后处理配置。 |
| 输出格式不受支持的受支持用例 | QIM SDK 加自定义后处理 | 管线仍可使用 QIM SDK，但需要自定义逻辑将原始张量转换为元数据。 | 中到高。实现并验证自定义后处理模块。 |
| 不受支持的用例或高度自定义的运行时流程 | Qualcomm AI Runtime SDK | 当应用需要直接的运行时控制、自定义张量处理，或超出 QIM SDK 支持模式的工作流时，请使用此路径。 | 高。需要规划额外的集成、验证和应用级管线工作。 |

## 集成前检查清单

在集成模型之前，请收集影响集成路径和管线配置的关键信息。这些细节有助于确定模型是否可以使用现有的 QIM SDK 组件、是否需要自定义后处理，或者是否更适合使用 Qualcomm AI Runtime SDK (QAIRT) 进行自定义实现。

| 项目 | 重要性 | 使用位置 |
| - | - | - |
| 模型格式 | 决定模型是否与受支持的推理框架和运行时兼容。 | 推理配置 |
| 输入张量形状 | 必须与预处理生成的张量格式一致。 | 预处理配置 |
| 预处理要求 | 输入格式、尺寸调整、归一化和颜色转换可能会影响模型精度。 | 预处理配置 |
| **输出张量结构** | **决定现有后处理模块能否处理模型输出——这是判断您是否需要自定义模块的关键因素。** | 后处理配置 |
| 运行时目标 | 影响推理所用的运行时和硬件加速配置。 | 推理配置 |
| 后处理要求 | 定义如何将模型输出转换为可供应用使用的元数据，例如分类、检测、掩码或关键点。 | 后处理和应用管线 |

<Note>
  在继续之前，请确保您了解模型的输入和输出规格、预处理要求、目标运行时和预期输出格式。选择正确的集成路径和管线组件需要这些信息。
</Note>

## 后续步骤

根据后处理检查的结果选择下一步。如果现有模块支持模型输出，请继续构建。如果没有模块支持该输出，请先添加自定义后处理模块。如果用例超出 QIM SDK 的范围，请使用 QAIRT 路径。

<CardGroup cols={3}>
  <Card title="支持后处理——构建应用" icon="hammer" href="../topic/imsdk-build-application">
    **步骤 4**——现有后处理模块支持您的模型。使用正确的模块选项构建应用。
  </Card>

  <Card title="不支持——添加后处理" icon="sliders" href="../topic/add-postprocessing-support-custom-model">
    **步骤 3a**——没有后处理模块接受您的输出。编写并部署自定义模块，然后继续执行步骤 4。
  </Card>

  <Card title="超出 QIM SDK 范围——使用 QAIRT" icon="code" href="../topic/develop-your-own-application-qairt-cpp">
    **高级**——用例不受支持或需要运行时级控制。请改用 Qualcomm AI Runtime SDK。
  </Card>
</CardGroup>

## 相关信息

* [Qualcomm AI Hub](../topic/ai-hub)——浏览并导出预优化的模型。
* [使用 QAIRT C++ API 开发 AI 应用](../topic/develop-your-own-application-qairt-cpp)——高级的运行时级路径。
* [使用自定义训练的模型运行示例应用](../topic/customize-reference-app)——将模型替换到现有示例应用中。
