Azure AI 视频索引器自定义 (BYO) AI 模型概述

本文概述了通过自带 AI 模型启用的 Azure AI 视频索引器。

简介

你可以合并来自其他来源(包括第三方、分类和检测模型)的见解,以对媒体数据进行详细分析。 可以使用 Microsoft 提供的任何一个或多个模型、从外部来源获取的自定义模型,或 Azure 视频索引器提供的自定义人员、品牌、语音或语言模型。

此功能也适用于 Arc 启用的 VI

注释

免责声明:Microsoft的 Azure OpenAI 服务的行为准则 适用于你使用自带模型功能,Microsoft有权因不合规而停止你对该功能的访问和使用。

定价

使用视频索引器的BYO模型,您可以将自定义的见解添加到视频见解对象中,而无需支付除索引过程列出的成本之外的额外费用。 但是,与外部环境和模型相关的任何成本不应被视为视频索引器的计费价格的一部分。 强烈建议查看最佳做法部分,以优化外部逻辑并降低成本。

常规工作流

  1. 视频是使用 Azure AI 视频索引器上传和编制索引的。
  2. 索引过程完成后,将创建事件。
  3. 自定义代码侦听事件并启动视频后处理过程。
    1. 获取视频索引器提取的见解。
    2. 获取视频部分的关键帧。
    3. 将关键帧发送到自定义 AI 模型。
    4. 将自定义见解修补回视频索引器。
      常规自带设备工作流流程示意图。

先决条件

在开始将 BYO 模型功能与 Azure AI 视频索引器配合使用之前,必须:

  1. 训练或引入用于接收视频资产并返回见解的外部 AI 模型。
  2. 创建自定义代码,该代码:
    1. 侦听 Event Hubs 事件。
    2. video id 事件中提取数据。
    3. 通过调用 VI API 检索相关资产。 在此方案中,请求 获取视频索引获取帧 SAS URL
    4. 将资产发送到外部 AI 模型。
    5. 基于从自定义 AI 模型检索到的见解创建 JSON 对象。
    6. 请求修补程序更新视频索引。

架构

用于填充自定义数据的值如下所示:

名称 描述 必需
名字 外部 AI 模型名称
显示名称 要显示在视频索引器中的见解组名称
displayType 定义此特定见解组的 UI 表示形式类型。 默认值:胶囊
可能的类型
胶囊 - 仅一级文本
CapsuleAndTags-目前只有两个级别的文本,未来会增加更多。
结果 表示外部 AI 模型检测到的见解的对象数组
results.id 用户提供的结果对象的 ID 在结果范围内应是唯一的
results.type 此字段表示由外部 AI 模型分类的见解类型。 它用于表示一般见解类别,这意味着特定帧中可能存在此类型的多个见解。 见解类型的示例包括: basketballcrowd clappingwhite shirt
results.subType 此字段表示由外部 AI 模型分类的见解类型。 它用于表示特定见解类别,这意味着只能在特定帧中识别此类型的单个见解。 见解类型的示例包括: basketball #23John clappingDana’s white shirt
results.metaData 有关见解的更多数据
results.instances 表示洞察被检测到的时间窗口的数组。
results.instances.confidence 使用从外部模型返回的置信度分数进行设置
results.instances.start 视频中实例的开始时间。 格式:hh.mm.ss.ff
results.instances.end 视频中实例的结束时间。 格式:hh.mm.ss.ff
results.instances.adjustedStart 在 UI 中显示时使用,使用“开始”中的值进行设置
results.instances.adjustedEnd 在 UI 中显示时使用,使用 End 中的值进行设置

帧速率

Azure AI 视频索引器支持一个 FPS,用于基本/标准视频级别,4 FPS 用于高级级别。 不支持更高的帧速率。 可以通过以下方法优化索引编制:

  • 仅处理特定感兴趣的片段,例如包含检测到的声音、物体或人员的帧或
  • 例如,每隔 5 秒采样一次较低的 FPS。

框架选择

可以使用跳过帧和页面大小参数进行时间选择。 公式是跳过帧值乘以 FPS 加上页大小值乘以 FPS 的结果,用于确定时间范围。

URLhttps://api.videoindexer.ai/{location}/Accounts/{accountId}/Videos/{videoId}/FramesFilePaths[?urlsLifetimeSeconds][&pageSize][&skip][&accessToken]

参数:

名称 描述 必需
videoId 视频的 ID
urlsLifetimeSeconds URL 的生存期(以秒为单位)
pageSize 每次调用返回的帧数上限
跳过 要跳过的帧数
accessToken 应在 URL 查询字符串中作为参数提供,或在 Authorization 标头中作为 Bearer 令牌提供。 访问令牌范围应为“帐户”,权限应为“读取者”。

响应:FrameFilePathsResult

名称 描述 必需
结果 FrameUriData 列表
NextPage 分页数据 (skip,pageSize,isDone)

FrameFilePathData

名称 描述
名字 帧文件的名称
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",
                    }
                ]
            }
        ]
    }... 

自带模型示例