前言

1.1 视频识别场景介绍

在居家安防监控领域,基于实时视频的移动检测,发现监控环境中人、宠物、包裹等的出现,并且能实时地将检测结果通知给身处任何地方的用户是其重要的应用场景之一。但在这一场景的技术实现中面临如下的挑战:一是基于摄像头的视频检测通知,存在大量由于风、雨、移动的车等并非用户关注的事件误报,严重影响用户的使用体验。二是实现这一方案涉及的技术领域与复杂度很高,如设备端事件检测和触发、视频编解码处理、视频存储、机器视觉等,需要团队具备较强的技术和专业能力。

本文介绍的由Amazon最新推出的Amazon Rekognition Streaming Video Events很好地解决了这些挑战,接下来我们将详细介绍这一方案的实现原理与集成应用,并分析这一方案与其他实现方案的差异,基于这些分析给出技术方案选型的建议以供参考。

1.2 Amazon Kinesis Video Streams 介绍

Amazon Kinesis Video Streams(KVS) 是一项完全托管的Amazon 服务,您可以使用 Amazon KVS 捕获来自数百万种源 (包括智能手机、安全摄像头、网络摄像头、车载摄像头、无人机及其他源) 的海量实时视频数据传输到 Amazon云,或者构建应用程序以进行实时视频处理或进行面向批处理的视频。Amazon KVS的优势包括:

  • 可以为海量设备提供实时视频传输服务。
  • 通过与Amazon Rekognition等托管服务集成可以非常方便的构建智能视觉应用。
  • 使用Amazon KVS HTTP 实时流 (HLS) 可以轻松地将Amazon KVS中的实时和录制媒体流式传输到您的浏览器或移动应用程序。
  • Amazon KVS让您能够使用IAM控制对流的访问,并且提供对静态与动态数据的安全保护。完全托管无需管理基础设施。
  • Amazon KVS使用Amazon S3作为底层数据存储,借助 Amazon KVS能够根据设备和服务生成的时间戳,快速搜索和检索视频片段。

Amazon KVS可以分为Producer、Stream、Consumer三个组成部分,分别提供了Producer SDK、KVS Stream API和Consumer SDK方便开发者与Amazon KVS做功能集成。

jmx监控jboss配置 jovision监控_jmx监控jboss配置

1.3 Amazon Rekognition介绍

Amazon Rekognition提供预先训练和可定制的计算机视觉 (CV) 功能,可从您的图像和视频中提取信息和获得洞察力。提供高精度的人脸分析检测、人脸比较和人脸搜索、标签文本检测等功能。Amazon Rekognition 基于同样由Amazon计算机视觉科学家开发的成熟且高度可扩展的深度学习技术,每天能够分析数十亿图像和视频。它不需要机器学习专业知识即可使用。Amazon Rekognition 包含一个简单易用的API,该API 可快速分析存储在Amazon S3 中的任何图像或视频文件。

Amazon Rekognition

Streaming Video Events方案分析

Amazon Rekognition Streaming Video Events是新推出的一项功能,它基于设备检测到监控环境的特定事件,将设备的视频流推送到云上KVS,借助Amazon Rekognition Video按照您期望检测的标签来分析视频中的数据,并将检测结果保存到Amazon S3、发送检测结果到SNS。目前提供了对实时视频的人形、包裹、宠物标签检测的功能。

1

架构说明

Amazon Rekognition Streaming Video Events方案整体架构分为:设备端、亚马逊云科技云端、用户应用端。

  • 设备端

通常为带有自动视频检测能力的摄像头设备、通过集成Amazon KVS SDK作为Amazon KVS的Producer向云端的Amazon KVS Stream推送视频流,并按需触发Amazon云端有Amazon Rekognition提供的视频检测的API。

  • 亚马逊云科技云端

Amazon KVS Stream:提供设备视频持久化存储、视频检索、视频在线查看、视频下载等能力,并向Rekognition提供用于视频检测的数据。

Amazon Rekognition:提供自动执行视频和图像分析的能力,包括基于视频或图像的内容审核、人脸检测、人脸比较、标签检测等完全托管的能力,并且可以方便的与Amazon KVS、Amazon S3、Amazon SNS等服务集成。

Amazon S3:提供视频检测结果的存储。

Amazon SNS:完全托管的发布/订阅消息收发、SMS、电子邮件和移动推送通知在本方案中提供通知发送的能力。

该方案的整体架构图如下:

jmx监控jboss配置 jovision监控_大数据_02

2

执行流程说明

如下图所示Amazon Rekognition Streaming Video Events的执行流程分为预置阶段和事件处理阶段。

jmx监控jboss配置 jovision监控_大数据_03

  • 预置阶段

step1:创建S3存储桶和SNS topic,分别用于视频检测结果的存储和扇出。

step2:设备注册创建时,创建与之对应的KVS Stream、rekognition stream processor并将stream processor与step1中S存储桶和SNS topic绑定。

  • 事件处理阶段

step1:IPC设备检测到事件。

step2:IPC设备调用Amazon KVS Producer SDK的PutMedia API将视频流式传输到KVS stream,同时调用API 触发rekognition stream processor对视频数据进行分析。

step3:Amazon Rekognition Stream Processor根据启动参数包括处理视频的启动与停止条件、处理视频的时间等信息对视频进行分析。

step4:Amazon Rekognition Stream Processor将视频分析结果自动保存到Amazon S3并触发SNS topic。

step5:用户通过应用程序检索视频信息或者接收通知继续完成其他的业务流程。

方案集成验证

目前Amazon Rekognition Streaming Video Events这个功能支持的亚马逊云科技的区域是:US East (Ohio), US East (N. Virginia), US West (Oregon), Asia Pacific (Mumbai), and Europe (Ireland)后续会陆续在其他的地区提供该功能,本次实验我们选择在Ireland。

1

实验准备工作

本次实验需要用到的亚马逊云科技资源都在Ireland中创建,您需要提前准备好一个亚马逊云科技账号。

在Amazon IAM中创建一个Admin User,赋予arn:aws:iam::aws:policy/AdministratorAccess策略、后续的资源创建都使用这个用户来进行。

2

模拟Amazon KVS Producer

将视频推到Amazon KVS Stream

本小节中的实验步骤完全参照Amazon KVS Workshop,下面仅对实验步骤进行简要说明,详细的执行过程请参照。https://catalog.us-east-1.prod.workshops.aws/workshops/b95b9381-baf0-4bef-ba31-63817d54c2a6/en-US/ 中的Collecting and Storing Videos Using Amazon Kinesis Video Streams中的Amazon Cloud9实验环节。

创建Amazon Cloud9作为

Amazon KVS的Producer

  • Amazon Cloud9的创建方法请参考如下的链接
  • https://catalog.us-east-1.prod.workshops.aws/workshops/b95b9381-baf0-4bef-ba31-63817d54c2a6/en-US/lab-1/cloud9/step-1-b

在创建的Amazon Cloud9

启动Amazon KVS Producer应用程序

  • 执行如下命令下载Amazon KVS Producer SDK
cd
git clone --recursive https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git

*左滑查看更多

  • 执行如下的命令编译Amazon KVS Producer SDK
cmake -DBUILD_GSTREAMER_PLUGIN=ON ..
mkdir -p ~/amazon-kinesis-video-streams-producer-sdk-cpp/build
cd ~/amazon-kinesis-video-streams-producer-sdk-cpp/build

*左滑查看更多

创建Amazon KVS视频流

  • 创建Amazon KVS Stream

Amazon KVS Stream的创建方式参考:

https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/gs-createstream.html

记录下Amazon KVS Stream的ARN在后面的实验环节中将要用到。

arn:aws:kinesisvideo:eu-west-1:*AccountID*:stream/* stream-name */16*****5

*左滑查看更多

jmx监控jboss配置 jovision监控_人工智能_04

  • 设置环境Amazon Cloud9的环境变量,为后面执行上传视频到Amazon KVS Stream做准备

在Amazon Cloud9 Terminal 执行如下命令获取IAM的临时Token

aws sts get-session-token

*左滑查看更多

在Amazon Cloud9 Terminal 执行如下命令设置环境变量

export AWS_DEFAULT_REGION="The region you use (e.g. ap-northeast-1, us-west-2)"
export AWS_ACCESS_KEY_ID="The AccessKeyId value of the result above"
export AWS_SECRET_ACCESS_KEY="The SecretAccessKey value of the result above"
export AWS_SESSION_TOKEN="The SessionToken value of the result above"

*左滑查看更多

上传本地视频到Amazon KVS Stream

  • 设置Amazon KVS应用程序执行的环境变量

在Amazon Cloud9 Terminal 执行如下命令设置环境变量

export GST_PLUGIN_PATH=$HOME/amazon-kinesis-video-streams-producer-sdk-cpp/build
export LD_LIBRARY_PATH=$HOME/amazon-kinesis-video-streams-producer-sdk-cpp/open-source/local/lib

*左滑查看更多

  • 在Amazon Cloud9 Terminal 执行如下命令启动Amazon KVS应用程序
while true; do ./kvs_gstreamer_file_uploader_sample kvs-workshop-stream ~/sample.mp4 $(date +%s) audio-video && sleep 10s; done
cd ~/amazon-kinesis-video-streams-producer-sdk-cpp/build

*左滑查看更多

  • 在Amazon Console上打开Amazon KVS stream点击Media Playback查看视频是否上传成功

如下图所示,视频成功显示,说明存储在Amazon Cloud9上的视频已经成功上传到了Amaozn KVS Stream。

jmx监控jboss配置 jovision监控_数据库_05

3

准备Amazon Rekognition Streaming

Video Events 需要的资源

创建Amazon S3 Bucket

创建Amazon S3 Bucket,Bucket Name命名为:video-event-analytics,在Bucket创建文件夹video-result,创建Amazon S3 Bucket时的其他参数都保证默认配置,创建成功后Amazon S3 Bucket的信息如下。

jmx监控jboss配置 jovision监控_python_06

 如下图所示:记录下Amazon S3 Bucket ARN 后续实验环节需要用到

jmx监控jboss配置 jovision监控_python_07

创建SNS并配置邮件订阅

创建Topic,选型类型为:Standard类型,Topic名称命名为:Video-Event-SNS。

jmx监控jboss配置 jovision监控_大数据_08

  • 记录该Topic的ARN,后续实验环节需要使用

jmx监控jboss配置 jovision监控_大数据_09

  • 创建SNS Topic的订阅

其中Topic ARN选择上面创建的SNS的ARN,Protocol选择为Email,在实际应用中您可以根据需要采用的订阅方式选型相应的协议类型。

jmx监控jboss配置 jovision监控_数据库_10

创建Amazon Rekognition Service Role

创建Amazon Rekognition Service Role,该角色用于赋予Amazon Rekognition Processor操作其他服务的权限。本次实验需要给Amazon Rekognition Processor赋予操作Amazon S3和Amazon SNS的权限。

  • 如下图所示,创建Amazon IAM策略授予访问Amazon KVS、SNS、S3的必要权限
"Action": [
                "sns:Publish"
            ],
            "Resource": [
                "arn:aws:sns:eu-west-1:your-accountid:video-event-sns"
            ]
        },
        {
            "Sid": "S3Permissions",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::your-s3-bucket-name/*"
            ]
        }
    ]
}

*左滑查看更多

  • 如下图所示创建Amazon Rekognition Service Role并关联上一步创建的策略

选择Trusted Entity Type为亚马逊云科技 Service ,选择支持的亚马逊云科技服务的场景为Amazon Rekognition

jmx监控jboss配置 jovision监控_人工智能_11

  • 将上一步创建的Amazon IAM 策略关联到Amazon Rekognition Service Role

jmx监控jboss配置 jovision监控_python_12

启动Amazon Rekognition Streaming

Video Events处理流程

升级Amazon Cloud9的Amazon Cli到最新版本

因为Amazon Rekognition Streaming Video Events是2022年4月底才发布的新功能,要采用Amzon Cli创建Amazon Rekognition-Stream-Processor使用该功能,需要将您的Amazon Cli升级到包Rekognition这个新特性的版本,这里我们Amazon Cli升级到最新版本。

  • 执行如下命名升级Amazon Cli到最新版本

如果您的Amazon Cli已经是最新版本,则可以跳过这个步骤。

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
sudo ./aws/install —bin-dir /usr/local/bin —install-dir /usr/local/aws-cli —update

*左滑查看更多

创建Amazon Rekognition-Stream-Processor

  • 准备好创建Amazon Rekognition-Stream-Processor的json文件

创建Amazon Rekognition-Stream-Processor参数的json文件如下图所示,其中Amazon KinesisVideoStream-Arn、Amazon S3Destination-Bucket、Amazon S3Destination-KeyPrefix、Amazon RoleArn需要修改为您自己的实验环境中创建的资源。

ConnectedHome是Amazon Rekognition-Stream-Processor新功能提供的新参数,其中ConnectedHome的Labels目前支持包括”PERSON”, “PET”, “PACKAGE”, and “ALL。可以跟您希望检测的标签来填写。详细介绍可以参考:

https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html

{
    "DataSharingPreference": { 
      "OptIn":true
    },
    "Input": {
      "KinesisVideoStream": {
        //kvs视频来源的ARN
        "Arn": "your kvs stream arn"
      }
    },
    "Name": "video_event_stream_processor",
    "Output": {
      "S3Destination": {
        "Bucket": "video-event-analytics",
        "KeyPrefix": "video-result"
      }
    },
    "NotificationChannel": {
      //发送检测结果通知的 SNSTopicArn
      "SNSTopicArn": "your sns topic arn"
    },
    //streaming processor 执行的 Role
    "RoleArn": "your streaming processor role",
    "Settings": {
      "ConnectedHome": {
        "Labels": [
          "PERSON"
        ],
      "MinConfidence": 80
      }
    },
    "RegionsOfInterest": [
      {
        "BoundingBox": {
          "Top": 0.11,
          "Left": 0.22,
          "Width": 0.33,
          "Height": 0.44
        }
      },
      {
        "Polygon": [
          {
            "X": 0.11,
            "Y": 0.11
          },
          {
            "X": 0.22,
            "Y": 0.22
          },
          {
            "X": 0.33,
            "Y": 0.33
          }
        ]
      }
    ]
  }

*左滑查看更多

  • Amazon Stream-Processor Request主要参数说明

以下为Amazon Rekognition Streaming Video Events需要用到主要参数

jmx监控jboss配置 jovision监控_jmx监控jboss配置_13

  • 将该json文件保存到Amazon Cloud9,在Amazon Cloud9 Terminal中执行如下的命令创建Amazon Rekognition-Stream-Processor
aws rekognition create-stream-processor —region eu-west-1 —cli-input-json file://createstreamprocessor.json

*左滑查看更多

  • 执行如下命令查看Amazon Rekognition-Stream-Processor的详细信息
aws rekognition describe-stream-processor --name video_event_stream_processor --profile sunny --region eu-west-1

*左滑查看更多

 describe-stream-processor说明,如下图所示stream-processor目前处于STOPPED状态

{
    "Name": "video_event_stream_processor",
    //StreamProcessorArn
    "StreamProcessorArn": "your stream proccessor arn",
    "Status": "STOPPED",
    "CreationTimestamp": "2022-05-05T09:50:07.013000+00:00",
    "LastUpdateTimestamp": "2022-05-05T09:50:07.013000+00:00",
    "Input": {
        //kvs视频来源的ARN
        "KinesisVideoStream": {
            "Arn": "your kvs stream arn"
        }
    },
    //保存检测结果的S3
    "Output": {
        "S3Destination": {
            "Bucket": "your s3 Bucket arn",
            "KeyPrefix": "your key prefix"
        }
    },
    //streaming processor 执行的 Role
    "RoleArn": "your streaming processor role",
    "Settings": {
        "ConnectedHome": {
            "Labels": [
                "PERSON"
            ],
            "MinConfidence": 80.0
        }
    },
    //发送检测结果通知的 SNSTopicArn
    "NotificationChannel": {
        "SNSTopicArn": "Your SNSTopicArn"
    },
    "RegionsOfInterest": [
        {
            "BoundingBox": {
                "Width": 0.33000001311302185,
                "Height": 0.4399999976158142,
                "Left": 0.2199999988079071,
                "Top": 0.10999999940395355
            }
        },
        {
            "Polygon": [
                {
                    "X": 0.10999999940395355,
                    "Y": 0.10999999940395355
                },
                {
                    "X": 0.2199999988079071,
                    "Y": 0.2199999988079071
                },
                {
                    "X": 0.33000001311302185,
                    "Y": 0.33000001311302185
                }
            ]
        }
    ],
    "DataSharingPreference": {
        "OptIn": true
    }
}

*左滑查看更多

启动Amazon Rekognition-Stream-Processor

  • 准备启动Amazon Rekognition-Stream-Processor的json文件,如下图所示
{
   "Name": "video_event_stream_processor",
   "StartSelector": {
       //设置分析kvs stream视频的开始时间
      "KVSStreamStartSelector": {
         "ProducerTimestamp": 1651702500
      }
   },
   //设置分析kvs stream视频的接触时间
   "StopSelector": {
      "MaxDurationInSeconds": 30
   }
}

*左滑查看更多

StartSelector

除了通过ProducerTimestamp(Producer产生视频的时间)设置视频分析的开始位置外,您还可以通过Amazon KVS FragmentNumber(视频帧号)设置开始时间。

StopSelector

通过MaxDurationInSeconds(最大视频检测时长)设置停止检测分析外,未来您还可以通过NoDetectionForDuration(在固定检测时间中如果没有检测到设定的标签则停止检测出来)。

  • 执行如下命令启Amazon Rekognition-Stream-Processor
aws rekognition start-stream-processor —profile sunny —region eu-west-1 —cli-input-json file://startstreamprocessor.json
{
"SessionId": "16d15f11-02a1-4955-8248-f3184d66cb94"
}
}

*左滑查看更多

 观测执行结果

 stream-processor按照start-stream-processor中设定的视频检测起始与结束条件完成对设置的目标标签(Person/Package/Pet/ALl)检测处理后,将检测结果保存到Amazon S3并通过配置的Amazon SNS发送出去。

  • 观测Amazon S3中保存的检测结果

执行Amazon S3 is video-event-analytics —recursive —profile sunny显示保存到Amazon S3的检测结果,如下图所示其中:

video-result:对应stream-processor中配置的 ObjectKeyPrefix

video_event_stream_processor: 对应stream-processor中配置的name

7aa6f62b-dfba-42bb-aa80-b5e50e7403e8:对应start-stream-processor返回的SessionId。

2022-05-05 12:08:37 25072 video-result/video_event_stream_processor/7aa6f62b-dfba-42bb-aa80-b5e50e7403e8/notifications/5_1.0_heroimage.jpg
022-05-05 08:58:29 0 video-result/
2022-05-06 08:32:45 69316 video-result/video_event_stream_processor/16d15f11-02a1-4955-8248-f3184d66cb94/notifications/5_1.0.jpg
2022-05-06 08:32:46 25072 video-result/video_event_stream_processor/16d15f11-02a1-4955-8248-f3184d66cb94/notifications/5_1.0_heroimage.jpg
2022-05-05 10:15:11 69316 video-result/video_event_stream_processor/4923874d-049f-40e4-a38e-5df20955b809/notifications/5_1.0.jpg
2022-05-05 10:15:11 25072 video-result/video_event_stream_processor/4923874d-049f-40e4-a38e-5df20955b809/notifications/5_1.0_heroimage.jpg
2022-05-05 12:08:37 69316 video-result/video_event_stream_processor/7aa6f62b-dfba-42bb-aa80-b5e50e7403e8/notifications/5_1.0.jpg

*左滑查看更多

  • 观测SNS发送的结果

stream-processor检测结束后,将发送两种类型的通知消息到Amazon SNS,下图为视频标签检测的结果信息

{
    "inputInformation": {
        "kinesisVideo": {
            "streamArn": "=your kvs stream arn"
        }
    },
     //通知消息类型LABEL_DETECTED
    "eventNamespace": {
        "type": "LABEL_DETECTED"
    },
     //标签描述
    "labels": [
        {
            "id": "704ecb70-0ec5-4f14-966d-90a1837ae1b5",
            "confidence": 97.671364,
            "name": "PERSON",
            "frameImageUri": "s3://video-event-analytics/video-result/video_event_stream_processor/16d15f11-02a1-4955-8248-f3184d66cb94/notifications/5_1.0.jpg",
            "croppedImageUri": "s3://video-event-analytics/video-result/video_event_stream_processor/16d15f11-02a1-4955-8248-f3184d66cb94/notifications/5_1.0_heroimage.jpg",
            "videoMapping": {
                "kinesisVideoMapping": {
                    "fragmentNumber": "91343852333196827415010615634393321213860465930",
                    "serverTimestamp": 1651739574510,
                    "producerTimestamp": 1651739574000,
                    "frameOffsetMillis": 1000
                }
            },
            "boundingBox": {
                "left": 0.45954865,
                "top": 0.4983085,
                "height": 0.48800948,
                "width": 0.099167705
            }
        }
    ],
    "eventId": "ba763aa1-821c-3592-91e2-dec731329d1a",
    "tags": {},
    "sessionId": "16d15f11-02a1-4955-8248-f3184d66cb94",
    "startStreamProcessorRequest": {
        "name": "video_event_stream_processor",
        "startSelector": {
            "kvsProducerTimestamp": 1651702500
        },
        "stopSelector": {
            "maxDurationInSeconds": 30
        }
    }
}

*左滑查看更多

下图所示为检测处理完成的信息

{
    "inputInformation": {
        "kinesisVideo": {
            "streamArn": "your kvs stream arn",
            "processedVideoDurationMillis": 30000.0
        } 
    },
    "eventNamespace": {
        //通知消息类型STREAM_PROCESSING_COMPLETE
        "type": "STREAM_PROCESSING_COMPLETE"
    },
    "streamProcessingResults": {
        "message": "Stream Processing Success."
    },
    "eventId": "16d15f11-02a1-4955-8248-f3184d66cb94",
    "tags": {},
    "sessionId": "16d15f11-02a1-4955-8248-f3184d66cb94",
    "startStreamProcessorRequest": {
        "name": "video_event_stream_processor",
        "startSelector": {
            "kvsProducerTimestamp": 1651702500
        },
        "stopSelector": {
            "maxDurationInSeconds": 30
        }
    }
}

*左滑查看更多

 借助上面的检测结果,可以扩展丰富您的业务应用场景。

4

 生产应用参考架构

架构说明

在2.1参考架构的基础增加如下内容

后端服务:提供基于特定业务场景的API,如设备注册、检测信息保存、检测结果查看、视频事件处理API,该服务可以根据需要部署在Amazon EC2、亚马逊云科技容器服务、Amazon Lambda上。

Database:将视频检测结果与业务信息(如用户设备信息)持久化存储以供后续的查询使用,基于这些数据的类型、读写要求建议使用Amazon DocumentDB或DynamoDB来保存。

SNS订阅处理:根据业务需要可以与短信、邮箱、APP推送集成、也可以与其他的设备如(Alexa)等集成丰富您的业务功能。

扩展后的架构如下图所示:

jmx监控jboss配置 jovision监控_数据库_14

执行流程说明

如下图所示为Amazon Rekognition Streaming Video Events的执行流程,分为预置阶段和事件处理阶段

jmx监控jboss配置 jovision监控_数据库_15

  • 预置阶段

预置阶段处理与2.2 执行流程说明类似,后台服务提供统一API在设备注册时完成Amazon KVS Stream、Amazon Streaming-Processor创建和对应关系绑定。

  • 事件处理阶段

step1:IPC设备检测到事件。

step2:IPC设备调用Amazon KVS Producer SDK的PutMedia API将视频流式传输到Amazon KVS stream,同时调用后端服务的API触发Amazon Rekognition Stream Processor对视频数据进行分析。

step3:Amazon Rekognition Stream Processorr根据启动参数包括处理视频的启动与停止条件、处理视频的时间等信息对视频进行分析。

step4:Amazon Rekognition Stream Processorr将视频分析结果自动保存到Amazon S3并触发SNS topic。

step5:SNS topic的订阅触发后端服务API,该API根据一定的业务逻辑将检测结果与业务信息保存到数据库。

step6:SNS topic的订阅触发消息推送,将处理结果推送给终端用户。

step7:SNS topic的订阅触发其他集成设备。

step8:终端应用调用后端服务的API查看处理结果,显示检测结果中存储在Amazon S3中的图片或者回看Amazon KVS中存储的视频片段。

总结

在基于指定标签的视频检测的场景中,Amazon提供的技术一共有如下4种。

方案1:基于Amazon KVS+Rekognition Detecting labels in a video

方案2:基于Amazon KVS+Rekognition Detecting labels in an image

方案3:基于Amazon KVS+自建Detecting labels

方案4:基于Amazon KVS+Rekognition Detecting labels in streaming video events

其中方案1、2、3需要不间断的从Amazon KVS中读取视频或者抽取图片,然后调用Amazon Rekognition提供的API完成视频分析。这种方式对Amazon Rekognition的API调用非常频繁,相应的成本也较高,为了降低成本可以结合端侧设备侦测事件的能力,在后端服务中提供事件处理的API,由该API触发启停Amazon Rekognition分析视频的动作,但实现这种API需要考虑的因素比较多,开发的技术难度也较大。而方案4借助Amazon Rekognition近期发布的Amazon Rekognition Streaming Video Events功能提供了这种API的实现,开发者可以借助Amazon Rekognition Streaming Processor的API精确控制Amazon Rekognition Streaming Processor的创建、启动、停止,从而降低实现于预定标签的视频检测需求的难度,快速实现视频检测功能的上线。对应方案3您需要自己构建视频检测的模型、管理模型的训练推理和自动化扩展,如果Amazon Rekognition提供的API的检测能力无法满足您特定业务需求、且开发团队具备较强的AI开发能力可以考虑使用这一方案。但如果您初次为自己的产品提供智能视觉能力,Amazon Rekognition Streaming Video Events可以帮您快速实现这一需求,降低开发与维护的成本,同时后续您也能从Amazon Rekognition Streaming Video Events不断的迭代推出新的视频检测能力中收益,大大降低前期的研发投入。