从智能单品到全屋智能,随着消费者对生活品质追求的提升,智能化产品逐渐走入大众家庭,从而推动智能家居市场蓬勃发展。从 2017 年开始,智能家居设备已经应用于日常生活各项任务。2017 年其市场规模约为 4.3 亿美元。据 IDC 预测,智能家居市场年复合增长率为 18.5%,2022 年智能家居设备销售额将达到 9.4 亿美元。面对潜力无限的智能家居市场,各企业纷纷发力,然而由于智能家居产品多涉及音视频技术,自行开发往往门槛过高。如何轻松构建具有实时计算机视觉功能的应用程序?亚马逊云科技 Tech Talk 特别邀请解决方案架构师李寅祥带来分享《基于 Amazon KVS 打造智能视觉产品》。
早在 2015 年左右,智能家居设备就已经出现。2017 年,智能家居开始应用于生活的各个场景。早期的智能家居产品还是手动控制,如通过开关去控制酒店窗帘。近两年,智能家居产品已转变为远程遥控的形式,如可远程控制通电和断电的智能插座,手机可操控的智能扫地机器人等。目前,智能家居的应用场景主要可分为三个部分。
第一类,家庭智能自动化。常见的智能控制类产品有智能照明系统,可以手机远程控制灯的开关与灯光模式,此外,扫地机器人、智能家庭助手等产品也属于此类。
第二类,家居网络的连接。这类比较普通和普遍,应用最广泛的就是无线路由器类设备。
第三类,家居安全。不管在国内还是海外,家居安全类智能产品都是近年比较热门的品类,如安防摄像头、可视门铃等。
在智能家居的三大应用场景中,智能视觉类产品占有相当大的比重,但这类产品的开发却存在一定的复杂性。原因主要在于两个方面:
第一,打造和管理 IoT 应用的复杂性。智能视觉类的物联网设备大多需要进行数据交互。首先,需要保证设备连接及所产生数据的安全性;其次,设备的数量极有可能到达百万级,如何以可扩展、低成本的方式来管理成千上万的设备也是一大难题;此外,保证多种供应商设备及语音助手的互操作性也比较复杂。
第二,复杂的媒体服务设计和实现。智能视觉产品因为涉及音视频流的传输、处理,也存在一定的技术复杂性。其一,编码对技术有一定门槛,需支持多种媒体流技术、协议、编码以及开发环境;其二,需要创建及管理基础设施以实现安全、快速及可靠的流媒体传输;其三,扩展性需求高,要能够支持百万级设备,视频流对于带宽的要求是文本消息流的多倍,设备数量达到百万级时,如何保证后端服务器的可靠性和稳定性是非常棘手的问题;其四,音视频涉及非常专业的技术,如视频的编解码、压缩、传输等,存在技术壁垒,需要拥有音视频专业知识的工程师团队。
亚马逊云科技在智能视觉和可视化类智能家居产品进行了深入地探索与创新实践。家居安防监控类的产品有安防摄像头、可视化门铃,集成摄像头电器有宠物喂食器,还有健身器材、健身设备等品类相关的智能产品等等。亚马逊云科技是如何解决视觉类智能家居产品存在的问题呢?主要是依托于 Amazon IoT+KVS 的解决方案。
如图所示,从左到右分别是设备端、云平台端、消费端。设备端通常是带有摄像头的设备或 IoT 设备,如安防摄像头、无线路由器、语音助手等。云平台端主要提供 IoT 相关的能力以及管理设备连接。Amazon KVS 主要用来进行视频接收存储和处理,此外,亚马逊云科技还提供机器学习、数据库等产品,帮助开发者完成业务目标。Amazon IoT+ Amazon KVS 一站式解决方案具体是如何工作的呢?
Amazon KVS(Amazon Kinesis Video Streams),其名字直接翻译的意思是实时的动态流的视频流。具体来说,它是一个完全托管的媒体流服务,能够从百万设备中安全的接收视频流数据,并按照时间进行存储。当用户想要回看某个特定时段的视频,可按照时间进行检索,快速方便地获取原始视频。
Amazon KVS 将视频存储起来后,最重要的是将视频给到消费端去消费。在消费方面,Amazon KVS 提供实时与按需回放、实时与批处理两种方式。实时查看用于查看摄像头现在所处的实时环境、状态;按需回放就是定位到一个特定的时间段进行查看。那么,基于 Amazon KVS 是如何打造智能视觉产品的呢?
首先,是媒体摄取。Amazon KVS 的媒体摄取主要有两种方式,第一,它可以直接从摄像机中获取视频流。第二,它可以使用与同一网络上的设备连接的代理 / 网关。两种方式都可以使用?Kinesis Video Streams producer SDKs。
其次,是 Producer SDK。Producer SDK 其实就是通过 SDK 将视频流的信号打到 Amazon 打到 Amazon KVS 上。它提供的 SDK 多种多样,比如,最底层的 C SDK 层,适用于期望固件级集成的硬件设备制造商。上层的 Docker 镜像层则适用于针对特定操作系统的应用开发者。
第三,是储存和检索媒体。媒体流进入 Amazon KVS 之后可以时间为索引进行存储,最长可以存储十年,并且支持按小时或者按天检索。不仅如此,开发者还可以通过简单的 API 实现存储策略的修改、检索实时与历史媒体,并能够轻松监控和审计使用情况。另外,比较重要的一点是 Amazon KVS 在开始传输或者接收视频流和存储视频流的时候都是可以加密的。
第四,实时 / 历史视频回放。Amazon KVS 的回放支持 HTTP Live Streaming (HLS) 、Dynamic Adaptive Streaming over HTTP (DASH) 两种协议。HLS 相对来说比较标准,Web 浏览器可直接播放。DASH 是有对应的播放器来提供播放。在音视频编码方面,Amazon KVS 支持多种音频和视频编码格式。
通过 Amazon KVS 视频流完成接收后,如何通过机器学习的方式来进行内容感知?大致有以下几种方式。
第一,采用 Amazon KVS 与 Amazon Rekogniton Video 整合参考架构。Amazon Rekogniton 是一个 API 服务,可直接用来进行图片或者视频的分析,也就是说,视频流可以在 Rekogniton 里面进行常见的人脸识别或者物品检测。
第二,当 Amazon Rekogniton 中常用的图片或者视频识别能力,无法满足用户的场景需求的时候,就需要进行更加个性化地识别场景定制。这种情况就需要借助 Amazon SageMaker 去训练模型,模型训练完成后再进行推理。Amazon SageMaker 是一个托管式机器学习平台,代码可直接放在 Amazon SageMaker 上进行训练,当训练完成后,可以很方便的把模型部署到 EC2 上并进行后续的推理。
上图是 Amazon KVS 和 Amazon Rekognition Video 整合的参考架构。由采集端、存储端、处理 / 分析端三部分组成。该实例在 Raspberry Pi 环境中运行,用 RTSP 摄像头去拉流,拉流完成之后,通过 C++ 的 Producer SDK 打到 KVS 上,后面用 Rekognition Video Processor 处理实时的视频流,处理完成后,会把结果放到 Kinesis Date Streams 消息管道中,消息管道将数据给到 Kinesis Data Firehose,对消息管道的数据稍作转换加工,然后投递到 Amazon S3,由 Amazon S3 将结果存储起来。另外一条线路,可以触发 Amazon Lambda,Amazon Lambda 将调用 IoT Core 对设备下发控制指令。
在实际应用过程中,首先,需要创建一个 Rekognition Video stream Processor 来处理视频流;然后指定一个 Kinesis Date Streams 的位置;第三,也是比较重要的一点是指定搜索目标,比如在人脸识别场景中就是进行人脸的 ID。用户可按需调整阈值,来控制检测的相似度,检测完成后可对应定义名称及备注。
实时双向通讯在安防摄像头或可视门铃场景下是比较常见的需求。Kinesis Video Streams WebRTC 的定位就是满足此需求。它具有超低延迟的流媒体直播,支持数百万相机设备的双向交互,其特点有:
低延迟的实时媒体流:点对点音视频直播,1 秒以下的播放延时;
实时,双向通讯:嵌入式设备、移动设备与 Web 应用程序实现双向通讯;
兼容标准:与 Web 和移动平台兼容,轻松实现无插件播放;
全托管:完全托管的 WebRTC 信令, TURN, STUN 服务 。易于使用的 SDK。
WebRTC 不仅仅是一个媒体流协议。它是一个开放的标准实时通信与技术规范。它的技术组成中有四点比较关键。
第一,信令。信令用于交换连接元数据,也就是双方支持哪些协议,支持哪些编码等。第二,联通。联通即建立点对点的连接。很多设备都是在防火墙后面,点对点的连接也叫打洞,如果点对点连接失败,还要通过中继服务器来进行转发,通过中继服务器建立连接。第三,媒体交换。它能够低延迟交换媒体和任意数据。第四,加密。这一点所有服务都类似,端到端的加密对于保障安全性非常重要。
分享中,李寅祥以可视门铃的案例介绍了实时通讯大概的流程,如下图。
左边是一个可视门铃,右边是手机 APP。假如有人按门铃。可视门铃会向服务器发出请求,请求再转到手机端,手机端接受请求后将尝试互相交换信息,交换的信息主要是协议编码等。交换完成后,会尝试通过 STUN 打洞,如果打洞不成功,那么就会通过 TURN 服务进行中继转发。通常来说,两个设备处于同样的网络的情况下比较容易打通。
在 Kinesis Video Streams WebRTC 中有几个比较重要的概念。
首先是信令频道。信令频道允许应用程序通过交换信令消息来发现、设置、控制和终止点对点连接的资源。其次是 Peer。Peer 通常指移动客户端、Web 应用程序、Camera 等。第三是 Master。Master 用于连接到 Channel,与任意的 Viewer 实现点对点通信,一个 Channel 只有一个 Master。第四是 Viewer。Viewer 用于连接到 Channel,只能与 Master 实现点对点通信,一个 Channel 最多可以有十个 Viewer。
此外,还有服务组件和 SDK。SDK 主要支持协议嵌入式 SDK 和客户端 SDK。嵌入式 SDK 支持的视频编码协议有 H264 和 VP8,以及支持的音频编码协议有 Opus 和 G711。客户端的 SDK 是与 WebRTC 兼容的浏览器和移动平台无缝协作的开源客户端 SDK。
Kinesis Video Streams WebRTC 还可以与 Alexa 语言助手进行协作。假设有人在按智能可视门铃,但是用户刚好在厨房做饭,不方便去直接查看,可以语言控制 Alexa。Alexa 会与 WebRTC 交换数据,交换完数据后可建立双向语言通讯,可视门铃的视频信号将直接显示到 Echo Show 上,就可以直接看到门口是谁。
视觉安防相关的产品,安全是企业和用户关注的重点。亚马逊云科技针对智能产品的安全性也有相应的解决方案。摄像头在向 Amazon KVS 做推流的过程中,是需要进行验证的,只有验证通过后,经过授权才能获取资源的访问权限。摄像头利用 IoT 设备的证书来访问资源,流程如下:
首先,认证的 IoT 设备发起一个 Credentials provider 的认证请求,IoT 的认证请求会去检测证书是否合法、有效。如果合法,就会生成一个临时凭证,设备端拿到临时凭证后就可以基于这个临时凭证去调动亚马逊云科技的其他服务,如 Amazon KVS。临时凭证是有有效期的,当有效期过期后,将无法再进行访问。由此借助 Amazon IoT,就可以以一种安全的方式访问 KVS 资源。
针对如何用 Amazon KVS 打造智能视觉产品,亚马逊云科技提供了一些比较推荐的方案。
亚马逊云科技提倡无服务器架构。设备端按需推送视频流及其元数据至亚马逊云,视频数据保存至 Amazon KVS,视频原信息保存至 DynamoDB。手机端按需基于视频元数据获取回放 URL,通过播放器观看。
相对来说,基于 Amazon KVS 为 IPC 附加人工智能 / 机器学习能力属于更高阶的功能,如检测门口是否有宠物或者包裹,甚至一些更加个性化的定制场景。它的实现分为三个步骤。首先,设备端推送视频流至 KVS;第二步,根据需要从视频提取图片保存至 S3;第三步,AI 处理模块可组合使用自建模型、Rekognition API 对图片、视频实现同步、异步推理,结果异常时通知手机客户端。
主要依赖 WebRTC 集成。左边是硬件设备,如安防摄像头、可视门铃等,里面会包含各种 SDK,中间是 Amazon KVS,右边是消费端。通过 WebRTC 连接到 Alexa 云,实现双向实时通讯。
基于 Amazon KVS 打造智能视觉产品目前已有丰富的实践案例。
科技公司 Wyze Labs (Wyze) 将 Amazon Kinesis Video Streams 与 WebRTC 结合使用,以提高实时视频流的质量和在其相机产品和智能助手 (如 Alexa) 之间实现更好地连接。凭借此功能,Wyze 能够将 Wyze 新功能的上市时 间缩短 50%。Wyze 的高级首席架构师 Keith Ho 解释说:“在亚马逊云科技 上, 我们能够将时间线缩短 6 个月,并将工程成本减少两倍,因为基础设施、可扩展性、性能和系统已经存在。”
九安智能 2021 年起,正式和亚马逊云科技进入深度合作阶段,利用亚马逊云科技提供的全球广泛而深入的云服务,构建九安智能最新一代的音视频监控云平台。利用 Amazon KVS 构建九安智能的新一代音视频监控云平台,主要为用户提供远程实时的视频预览和录像查看、存储、云端的 AI 识别服务、智能音箱链接和推送报警信息。
分享的最后,李寅祥总结了 Amazon KVS 的几大优势,并提供了相关的参考资料供大家了解。
智能视觉市场技术复杂 Amazon IoT 使得您可以简便的构建可扩展的 IoT 应用管理物联网设备,而不需要维护任何基础设施。KVS 提供可扩展的方案用于接收、存储、分析及回放摄像头传输的媒体流。
安全保障 使用亚马逊云科技提供的内置设备认证机制初始化设备,根据需要授权资源访问、加密数据,并主动检测威胁来确保设备、数据的安全。
扩展性及互操作性 利用亚马逊云科技的基础设施便捷的批量注册百万级设备。使用 Amazon IoT 及 KVS 实现与 Alexa、Google Home 之类的语音助手集成。
易于实现且实用的功能 通过 WebRTC 实现实时、双向音视频通信。无需额外软件,灵活存储不同的文件格式(mp4/mkv)。通过简单的 API 使用 HLS/MPEG-DASH 协议回看与其他亚马逊云科技服务集成进行分析从视频获取信息。
专注于更快地打造解决方案 通过托管服务释放精力用于产品创新、研发。
参考资料
Fleet Provisioning -
https://aws.amazon.com/blogs/iot/how-to-automate-onboarding-of-iot-devices-to-aws-iot-core-at-scale-with-fleet-provisioning/?
IoT Authorization Calls -
https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html?
KVS Producer Libraries -
https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk.html?
KVS Playback documentation -
https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/how-playback.html?
KVS Developer Guide -
https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/kinesisvideo-dg.pdf?
KVS Security -
https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/security.html?
KVS WebRTC FAQs -
https://docs.aws.amazon.com/kinesisvideostreams-webrtc-dg/latest/devguide/what-is-kvswebrtc.html?
Wyze Labs-
https://youtu.be/c9crp1vQ0lI?t=1643?
扫码加入IoT行业交流群👇