Azure AI 视频索引器自带 (BYO) AI 模型概述
本文概述 Azure AI 视频索引器自带 AI 模型。
简介
你可以合并来自其他源(包括第三方、分类和检测模型)的见解,以生成媒体数据的详细分析。 可以使用Microsoft、外部自定义模型或 Azure 视频索引器提供的自定义人员、品牌、语音或语言模型提供的一个或多个任何模型。
此功能也可用于 Arc 启用的 VI。
免责声明:Microsoft的 Azure OpenAI 服务的 行为准则适用于你使用自带模型功能,其中包括Microsoft停止访问和使用此功能的权利,以便不符合。
定价
借助视频索引器 BYO 模型,用户可以向视频见解对象添加自定义见解,而不会产生除索引过程列出的成本之外的任何其他成本。 但是,与外部环境和模型相关的任何成本不应被视为视频索引器的计费价格的一部分。 强烈建议查看最佳做法部分,以优化外部逻辑并降低成本。
常规工作流
- 视频是使用 Azure AI 视频索引器上传和编制索引的。
- 索引过程完成后,将创建事件。
- 自定义代码侦听事件并启动视频后处理过程。
- 获取视频索引器提取的见解。
- 获取视频部分的关键帧。
- 将关键帧发送到自定义 AI 模型。
- 将自定义见解修补回视频索引器。
先决条件
在开始将 BYO 模型功能与 Azure AI 视频索引器配合使用之前,必须:
- 训练或引入用于接收视频资产并返回见解的外部 AI 模型。
- 创建自定义代码,该代码:
- 侦听事件中心事件。
- 从
video id
事件中提取数据。 - 通过调用 VI API 检索相关资产。 在此方案中,请求 获取视频索引 和 获取帧 SAS URL。
- 将资产发送到外部 AI 模型。
- 基于从自定义 AI 模型检索到的见解创建 JSON 对象。
- 请求 修补程序更新视频索引。
架构
用于填充自定义数据的值如下所示:
名称 | 描述 | 必需 |
---|---|---|
name | 外部 AI 模型名称 | 是 |
displayName | 要显示在视频索引器中的见解组名称 | 是 |
displayType | 定义此特定见解组的 UI 表示形式类型。 默认值:胶囊 可能的类型: 胶囊 - 仅一级文本 CapsuleAndTags -Two level text only more will added in the future. |
false |
结果 | 表示外部 AI 模型检测到的见解的对象数组 | 是 |
results.id | 用户提供的结果对象的 ID 在结果范围内应是唯一的 | 是 |
results.type | 此字段表示由外部 AI 模型分类的见解类型。 它用于表示一般见解类别,这意味着特定帧中可能存在此类型的多个见解。 见解类型的示例包括:“篮球”、“人群鼓掌”、“白衬衫”。 | 是 |
results.subType | 此字段表示由外部 AI 模型分类的见解类型。 它用于表示特定见解类别,这意味着只能在特定帧中识别此类型的单个见解。 见解类型的示例包括:“篮球 #23”、“John clapping”、“Dana 的白衬衫”。 | false |
results.metaData | 有关见解的更多数据 | false |
results.instances | 表示检测到见解的时间窗口的数组。 | 是 |
results.instances.confidence | 使用从外部模型返回的置信度分数进行设置 | false |
results.instances.start | 视频中实例的开始时间。 格式:hh.mm.ss.ff |
false |
results.instances.end | 视频中实例的结束时间。 格式:hh.mm.ss.ff |
false |
results.instances.adjustedStart | 在 UI 中显示时使用,使用“开始”中的值进行设置 | false |
results.instances.adjustedEnd | 在 UI 中显示时使用,使用 End 中的值进行设置 | false |
Framerate
Azure AI 视频索引器支持一个 FPS,用于基本/标准视频级别,4 FPS 用于高级级别。 不支持更高的帧速率。 可以通过以下方法优化索引编制:
- 仅处理感兴趣的特定段,例如包含检测到的声音、对象或人员或帧或
- 例如,每隔 5 秒采样一次较低的 FPS。
框架选择
可以使用跳过帧和页面大小参数进行时间选择。 公式是跳过帧值乘以 FPS 加上页大小值乘以 FPS 来确定时间范围。
URL:https://api.videoindexer.ai/{location}/Accounts/{accountId}/Videos/{videoId}/FramesFilePaths[?urlsLifetimeSeconds][&pageSize][&skip][&accessToken]
参数:
名称 | 描述 | 必需 |
---|---|---|
videoId | 视频的 ID | 是 |
urlsLifetimeSeconds | URL 的生存期(以秒为单位) | 是 |
pageSize | 返回每个调用的最大帧数 | false |
skip | 要跳过的帧 | false |
accessToken | 应在 URL 查询字符串或 Authorization 标头中作为持有者令牌作为参数提供。 访问令牌范围应为“帐户”,权限应为“读取者”。 | 是 |
响应: FrameFilePathsResult
名称 | 描述 | 必需 |
---|---|---|
结果 | FrameUriData 列表 | False |
NextPage | 分页数据 (skip, pageSize, isDone) | False |
FrameFilePathData
名称 | 描述 |
---|---|
name | 帧文件的名称 |
frameIndex | 框架的索引 |
StartTime | 视频中帧的开始时间 |
EndTime | 视频中帧的结束时间 |
filePath | 云环境中帧的 Sas URI 或边缘环境中的文件路径 |
以架构格式从自定义应用程序发送的示例数据
"customInsights": [
{
"Name": "tattoo",
"displayName": "Tattoo’s model",
"displayType": "CapsuleAndTag",
"Results": [
{
"id": 1,
"Type": "Dragon",
"WikiDataId": "57F",
"SubType": "Leg tattoo",
"Metadata": "",
"Instances": [
{
"Confidence": 0.49,
"AdjustedStart": "0:00:32.72",
"AdjustedEnd": "0:00:42.72",
"start": "0:00:32.72",
"end": "0:00:42.72",
}
]
}
]
}...