从智能单品到全屋智能,随着消费者对生活品质追求的提升,智能化产品逐渐走入大众家庭,从而推动智能家居市场蓬勃发展。从年开始,智能家居设备已经应用于日常生活各项任务。年其市场规模约为4.3亿美元。据IDC预测,智能家居市场年复合增长率为18.5%,年智能家居设备销售额将达到9.4亿美元。面对潜力无限的智能家居市场,各企业纷纷发力,然而由于智能家居产品多涉及音视频技术,自行开发往往门槛过高。如何轻松构建具有实时计算机视觉功能的应用程序?亚马逊云科技TechTalk特别邀请解决方案架构师李寅祥带来分享《基于AmazonKVS打造智能视觉产品》。
智能家居应用场景与挑战
早在年左右,智能家居设备就已经出现。年,智能家居开始应用于生活的各个场景。早期的智能家居产品还是手动控制,如通过开关去控制酒店窗帘。近两年,智能家居产品已转变为远程遥控的形式,如可远程控制通电和断电的智能插座,手机可操控的智能扫地机器人等。目前,智能家居的应用场景主要可分为三个部分。
第一类,家庭智能自动化。常见的智能控制类产品有智能照明系统,可以手机远程控制灯的开关与灯光模式,此外,扫地机器人、智能家庭助手等产品也属于此类。
第二类,家居网络的连接。这类比较普通和普遍,应用最广泛的就是无线路由器类设备。
第三类,家居安全。不管在国内还是海外,家居安全类智能产品都是近年比较热门的品类,如安防摄像头、可视门铃等。
在智能家居的三大应用场景中,智能视觉类产品占有相当大的比重,但这类产品的开发却存在一定的复杂性。原因主要在于两个方面:
第一,打造和管理IoT应用的复杂性。智能视觉类的物联网设备大多需要进行数据交互。首先,需要保证设备连接及所产生数据的安全性;其次,设备的数量极有可能到达百万级,如何以可扩展、低成本的方式来管理成千上万的设备也是一大难题;此外,保证多种供应商设备及语音助手的互操作性也比较复杂。
第二,复杂的媒体服务设计和实现。智能视觉产品因为涉及音视频流的传输、处理,也存在一定的技术复杂性。其一,编码对技术有一定门槛,需支持多种媒体流技术、协议、编码以及开发环境;其二,需要创建及管理基础设施以实现安全、快速及可靠的流媒体传输;其三,扩展性需求高,要能够支持百万级设备,视频流对于带宽的要求是文本消息流的多倍,设备数量达到百万级时,如何保证后端服务器的可靠性和稳定性是非常棘手的问题;其四,音视频涉及非常专业的技术,如视频的编解码、压缩、传输等,存在技术壁垒,需要拥有音视频专业知识的工程师团队。
为视觉设备附加人工智能能力
亚马逊云科技在智能视觉和可视化类智能家居产品进行了深入地探索与创新实践。家居安防监控类的产品有安防摄像头、可视化门铃,集成摄像头电器有宠物喂食器,还有健身器材、健身设备等品类相关的智能产品等等。亚马逊云科技是如何解决视觉类智能家居产品存在的问题呢?主要是依托于AmazonIoT+KVS的解决方案。
如图所示,从左到右分别是设备端、云平台端、消费端。设备端通常是带有摄像头的设备或IoT设备,如安防摄像头、无线路由器、语音助手等。云平台端主要提供IoT相关的能力以及管理设备连接。AmazonKVS主要用来进行视频接收存储和处理,此外,亚马逊云科技还提供机器学习、数据库等产品,帮助开发者完成业务目标。AmazonIoT+AmazonKVS一站式解决方案具体是如何工作的呢?
AmazonKVS(AmazonKinesisVideoStreams),其名字直接翻译的意思是实时的动态流的视频流。具体来说,它是一个完全托管的媒体流服务,能够从百万设备中安全的接收视频流数据,并按照时间进行存储。当用户想要回看某个特定时段的视频,可按照时间进行检索,快速方便地获取原始视频。
AmazonKVS将视频存储起来后,最重要的是将视频给到消费端去消费。在消费方面,AmazonKVS提供实时与按需回放、实时与批处理两种方式。实时查看用于查看摄像头现在所处的实时环境、状态;按需回放就是定位到一个特定的时间段进行查看。那么,基于AmazonKVS是如何打造智能视觉产品的呢?
首先,是媒体摄取。AmazonKVS的媒体摄取主要有两种方式,第一,它可以直接从摄像机中获取视频流。第二,它可以使用与同一网络上的设备连接的代理/网关。两种方式都可以使用?KinesisVideoStreamsproducerSDKs。
其次,是ProducerSDK。ProducerSDK其实就是通过SDK将视频流的信号打到Amazon打到AmazonKVS上。它提供的SDK多种多样,比如,最底层的CSDK层,适用于期望固件级集成的硬件设备制造商。上层的Docker镜像层则适用于针对特定操作系统的应用开发者。
第三,是储存和检索媒体。媒体流进入AmazonKVS之后可以时间为索引进行存储,最长可以存储十年,并且支持按小时或者按天检索。不仅如此,开发者还可以通过简单的API实现存储策略的修改、检索实时与历史媒体,并能够轻松监控和审计使用情况。另外,比较重要的一点是AmazonKVS在开始传输或者接收视频流和存储视频流的时候都是可以加密的。
第四,实时/历史视频回放。AmazonKVS的回放支持HTTPLiveStreaming(HLS)、DynamicAdaptiveStreamingoverHTTP(DASH)两种协议。HLS相对来说比较标准,Web浏览器可直接播放。DASH是有对应的播放器来提供播放。在音视频编码方面,AmazonKVS支持多种音频和视频编码格式。
通过AmazonKVS视频流完成接收后,如何通过机器学习的方式来进行内容感知?大致有以下几种方式。
第一,采用AmazonKVS与AmazonRekognitonVideo整合参考架构。AmazonRekogniton是一个API服务,可直接用来进行图片或者视频的分析,也就是说,视频流可以在Rekogniton里面进行常见的人脸识别或者物品检测。
第二,当AmazonRekogniton中常用的图片或者视频识别能力,无法满足用户的场景需求的时候,就需要进行更加个性化地识别场景定制。这种情况就需要借助AmazonSageMaker去训练模型,模型训练完成后再进行推理。AmazonSageMaker是一个托管式机器学习平台,代码可直接放在AmazonSageMaker上进行训练,当训练完成后,可以很方便的把模型部署到EC2上并进行后续的推理。
上图是AmazonKVS和AmazonRekognitionVideo整合的参考架构。由采集端、存储端、处理/分析端三部分组成。该实例在RaspberryPi环境中运行,用RTSP摄像头去拉流,拉流完成之后,通过C++的ProducerSDK打到KVS上,后面用RekognitionVideoProcessor处理实时的视频流,处理完成后,会把结果放到KinesisDateStreams消息管道中,消息管道将数据给到KinesisDataFirehose,对消息管道的数据稍作转换加工,然后投递到AmazonS3,由AmazonS3将结果存储起来。另外一条线路,可以触发AmazonLambda,AmazonLambda将调用IoTCore对设备下发控制指令。
在实际应用过程中,首先,需要创建一个RekognitionVideostreamProcessor来处理视频流;然后指定一个KinesisDateStreams的位置;第三,也是比较重要的一点是指定搜索目标,比如在人脸识别场景中就是进行人脸的ID。用户可按需调整阈值,来控制检测的相似度,检测完成后可对应定义名称及备注。
WebRTC实现双向实时通讯
实时双向通讯在安防摄像头或可视门铃场景下是比较常见的需求。KinesisVideoStreamsWebRTC的定位就是满足此需求。它具有超低延迟的流媒体直播,支持数百万相机设备的双向交互,其特点有:
低延迟的实时媒体流:点对点音视频直播,1秒以下的播放延时;
实时,双向通讯:嵌入式设备、移动设备与Web应用程序实现双向通讯;
兼容标准:与Web和移动平台兼容,轻松实现无插件播放;
全托管:完全托管的WebRTC信令,TURN,STUN服务。易于使用的SDK。
WebRTC不仅仅是一个媒体流协议。它是一个开放的标准实时通信与技术规范。它的技术组成中有四点比较关键。
第一,信令。信令用于交换连接元数据,也就是双方支持哪些协议,支持哪些编码等。第二,联通。联通即建立点对点的连接。很多设备都是在防火墙后面,点对点的连接也叫打洞,如果点对点连接失败,还要通过中继服务器来进行转发,通过中继服务器建立连接。第三,媒体交换。它能够低延迟交换媒体和任意数据。第四,加密。这一点所有服务都类似,端到端的加密对于保障安全性非常重要。
分享中,李寅祥以可视门铃的案例介绍了实时通讯大概的流程,如下图。
左边是一个可视门铃,右边是手机APP。假如有人按门铃。可视门铃会向服务器发出请求,请求再转到手机端,手机端接受请求后将尝试互相交换信息,交换的信息主要是协议编码等。交换完成后,会尝试通过STUN打洞,如果打洞不成功,那么就会通过TURN服务进行中继转发。通常来说,两个设备处于同样的网络的情况下比较容易打通。
在KinesisVideoStreamsWebRTC中有几个比较重要的概念。
首先是信令频道。信令频道允许应用程序通过交换信令消息来发现、设置、控制和终止点对点连接的资源。其次是Peer。Peer通常指移动客户端、Web应用程序、Camera等。第三是Master。Master用于连接到Channel,与任意的Viewer实现点对点通信,一个Channel只有一个Master。第四是Viewer。Viewer用于连接到Channel,只能与Master实现点对点通信,一个Channel最多可以有十个Viewer。
此外,还有服务组件和SDK。SDK主要支持协议嵌入式SDK和客户端SDK。嵌入式SDK支持的视频编码协议有H和VP8,以及支持的音频编码协议有Opus和G。客户端的SDK是与WebRTC兼容的浏览器和移动平台无缝协作的开源客户端SDK。
KinesisVideoStreamsWebRTC还可以与Alexa语言助手进行协作。假设有人在按智能可视门铃,但是用户刚好在厨房做饭,不方便去直接查看,可以语言控制Alexa。Alexa会与WebRTC交换数据,交换完数据后可建立双向语言通讯,可视门铃的视频信号将直接显示到EchoShow上,就可以直接看到门口是谁。
视觉安防相关的产品,安全是企业和用户