近年来,随着人们安全需求的不断增加,监控摄像头的数量爆发式增长。根据相关预测,到 2023 年视频流将占据互联网总流量的80%,通过视频监控实现防护的方式,在安全领域将发挥重要作用。同时,人们对视频监控系统的性能有了更高的要求。作为计算机视觉领域的一个分支,智能监控技术成为近年的研究热点,传统的人工查看方法已经难以应对海量的监控视频流数据,会耗费巨大的人力成本,因此需要利用智能视频分析技术自动提取视频数据中的关键信息,对一个或多个摄像头产生的视频流内容自动进行分析和理解,实时进行视频流分析,从而在视频数据产生和传输的同时完成目标检测识别等任务。上世纪 70 年代至今,智能视频分析就一直是学术和工业界的热点问题,由于监控摄像头持续地产生视频流,智能视频分析必须能够实时进行。实时视频流分析可以被应用在智能安防、智慧城市、自动驾驶等领域,不仅能替代传统的人工监控业务,还可以拓展视频分析任务的应用边界。
面对当前监控摄像头产生的爆炸式增长的海量视频数据,传统的云计算模式将受到严重的挑战。数据通过运营商的网络回传,并经过核心网处理,这对于当前的运营商网络是极大的挑战。以当前网络的能力,海量数据造成的数据拥塞、传输时延会极大地限制智能视频分析的实时性。此外,海量数据传输过程中的安全、能耗问题也需要得到重视。因此,急需寻找一种更为合理的方式解决现有问题。
2014 年由欧洲电信标准协会提出了边缘计算(Edge Computing,EC)这一全新概念,它指的是通过在移动用户附近的无线接入网,为用户提供互联网技术和云计算功能。边缘计算通过将传统的云计算数据中心下降到网络边缘,在数据源头实现数据采集、分析处理工作,既保证系统实时处理的要求也极大地优化了网络资源利用率。带有边缘计算的视频监控系统采用计算机数据结构、数字信号处理、计算机视觉等技术,对摄像头采集的视频图像实现自动检测监控场景中的各种目标,节省了大量的人力物力,提高了监控效率。
边缘计算将存储、计算资源集中在网络边缘侧,在靠近人、物、移动设备、传感器等数据源头的边缘侧,采用网络、计算、存储、应用为一体的平台,就近提供服务。
2016 年,施巍松等人意识到在万物互联时代,云计算的效率不足以支撑大量部署在边缘侧应用程序使用的互联网设备因数量激增带来的海量数据,认为边缘计算作为新的计算范式,在网络边缘处理数据,有可能解决计算能力限制、响应时间要求、节省带宽成本、数据安全和隐私以及电池寿命约束等问题。施巍松等人将“边缘”定义为数据源头和云端之间路径上的任何计算和网络资源节点,讨论了边缘计算在智慧城市、视频分析、智能家居等场景的可能性。同年,孙翔等人为了克服传统物联网的可扩展问题,提出了一种新的移动边缘计算方法物联网架构 EdgeIoT,用于处理海量物联网设备产生的原始数据流,EdgeIoT 可以显著降低核心网络的流量负载以及物联网设备和计算资源之间的端到端延迟,以促进物联网服务的开通。
2017 年,Satyanarayanan 等人讨论了边缘计算及其邻近性的重要性,通过边缘计算能够实现快速准确的响应,能够提高应用的可扩展性,同时实现对数据更精细的把控从而实现隐私保护,并且降低网络或云故障对服务的影响。2019 年,王日昕等人提出了一种基于许可区块链和边缘计算的视频监控系统,该系统采用边缘计算实现对大规模无线传感器的信息采集和数据处理,利用分布式存储服务实现海量视频数据的存储,并结合卷积神经网络实现视频分析、实时监控,是边缘计算在视频监控中的成功应用。2020 年,亓慧等人发明了一种基于边缘计算的仓库视频监控系统,将视频的任务下沉到边缘计算节点,在保证数据可靠性的前提下,对监控摄像头短时间内产生的大量实时数据进行预处理,有效降低处理和传输时延。
国内外众多科技公司对嵌入式设备进行了性能提升,使得边缘计算成为现实。
(1)英伟达推出的 Jetson 平台以及 GPU 能够高效的利用 GPU 实现各种深度学习计算。2021年 11 月,英伟达发布了一款体积小、功能强的Jetson AGX Orin,可用于机器人、自主机器、医疗器材及嵌入式边缘运算场景。
(2)华为推出了面向边缘应用的产品 Atlas 500 智能小站,使用昇腾 310 处理器。昇腾 310 是一款高效、灵活、可编程的 AI 处理器,采用达芬奇架构 AI 核心实现深度学习加速。同时华为也为深度学习提供了 AI 框架 MindSpore,用于简化开发流程。
(3)比特大陆 SE5 AI 计算盒是基于芯片和模组的面向广泛场景的高性能、低功耗边缘计算产品,搭载比特大陆自主研发的第三代 TPU 芯片,INT8算力高达 17.6TOPS,可同时处理 16 路高清视频,为多种行业项目智能运算提供算力。
(4)Google 设计的深度学习加速器 Edge TPU 能够在高能耗比的情况下进行高清视频实时深度学习推理。
(5)寒武纪科技推出的 NPU 神经处理单元,在搭载了华为麒麟 970 SOC 的手机中成功商用,助力华为手机的实时图像智能优化功能。
视频结构化是一种视频智能分析技术,对视频数据进行内容分析与信息提取。结构化后的数据存储到结构化数据库,便于进一步的分析与共享。目标检测算法是视频结构化的关键技术之一,常用于提取视频图像中的人、物、属性。
(1)目标检测算法概述
目标检测任务要求判断输入数据包含的物体种类,并定位物体位置。目标检测技术不单是智能视频监控领域的基石,在其他领域也应用广泛,如图像检索、医学图像分析等。基于深度卷积神经网络的目标检测算法通常分为 Two-Stage 目标检测算法与 One-Stage 目标检测算法。
Two-Stage 目标检测算法将目标检测分为两步,先提取图片中目标可能存在的子区域,然后再将所有的子区域作为输入,使用卷积神经网络进行特征提取,最后再进行检测分类和边框回归修正。其中具有代表性算法的是Fast R-CNN,将整张图像作为输入来提取特征,同时引入感兴趣区域(Region of Interest,ROI)的概念,在之前算法的基础上提高了检测效率。One-Stage 目标检测算法是直接将边框预测视为回归预测,不再提前提取候选区域,原始图像作为输入,然后直接输出预测结果,是一种端到端的单网络框架,代表算法是 YOLO,其重大突破在于仅牺牲较小的准确率,而使得检测速度得到很大提升。
(2)边缘端常用轻量级网络
2016 年提出的轻量级网络 SqueezeNet 在参数比 AlexNet 少 50 倍的情况下,能够在 ImageNet 数据集上达到与 AlexNet 近似的效果,开拓了模型压缩这一方向。
2017 年 Google 提出了 MobileNet,采用深度可分离卷积构建轻量级深度神经网络,在保持模型性能的基础上,显著降低参数量,适用于移动端和嵌入式平台的视觉任务。后续提出的 MobileNetV2、MobileNetV3 是基于该算法的改进。2017 年提出的ShuffleNet与MobileNet有类似的思想,在保持准确性的同时大大降低了计算成本,可用于计算能力非常有限的设备。2020 年提出的 GhostNet,采用原始卷积自定义卷积核数量,再用简单的线性变换获取更多特征,该算法压缩效果与准确率较好,可部署在内存和计算资源有限的边缘计算设备。
边缘计算在视频结构化中的应用包括模型开发和模型部署两个步骤。模型开发即设计与训练神经网络模型,在视频结构化任务中,此处的网络模型通常指目标检测模型。模型部署即转化模型并将其部署到边缘计算设备上。
在视频结构化任务中,预先定义了结构化所需的人、物类别,且当前用于训练目标检测模型的大型通用数据集较为完备,通常可以采用监督学习从给定数据集中学习出一个优化模型。
模型的开发大体分为三个阶段。
(1)准备数据。目标检测任务中常用的数据集为 PASCAL VOC 与 MS COCO,两个数据集的标注方式为标注训练图像中目标的包围框及其类别标签。根据目标检测任务应用的场景不同,也可根据需求自行采集并标注定制化数据集。
(2)构建网络。针对任务目标搭建神经网络结构,在具体代码实现过程中,通常需要导入相关模块,如 numpy、TensorFlow、PyTorch 等。
(3)优化参数。通过设计合理的损失函数、学习率、优化方法、迭代次数等,训练网络并获得最佳参数,将网络保存为模型文件,用于后续的模型部署工作。
模型部署的目标是期望模型能以足够的精度在目标硬件平台上稳定地运行推理过程,是一项复杂的系统工程,下面阐述模型部署的关键点。
(1)模型转换与平台选择。当前有多种边缘计算设备平台可用于部署模型,不同平台支持的模型格式不同,如 NVIDIA 支持 TensorRT 模型、华为支持 OM 模型,需要将训练得到的模型转换为目标平台支持的格式用于推理。不同的任务和模型需要有相应的平台自定义算子做支撑,因此对平台的依赖性很强。
(2)模型轻量化。深度学习模型需要大量的计算、内存和电能,这成为实时推理或在计算资源有限的边缘设备上运行模型推理的挑战,而模型轻量化是解决这一问题的重点,它决定了系统推理的速度和准确性。由于边缘计算设备的计算能力有限,一般需要通过剪枝、量化等模型压缩方法使模型更轻量化。剪枝是指移除模型中对结果作用较小的组件,深度学习网络模型存在着大量冗余的参数,大量神经元激活值趋近于 0,将这些神经元去除后可以具备同样的模型表达能力;量化是指将浮点运算转换为整型运算,是将训练好的深度神经网络的权重、激活值等从高精度转化成低精度的操作过程,在损失少量精度的前提下对模型进行压缩。但是在轻量化过程中,可能导致模型推理的准确率下降,此时需要在推理的速度和准确率之间取得平衡。
(3)模型部署。目前模型部署形式一般有流程化部署与服务化部署两种。流程化部署需要自行构建整套管道(Pipeline)方法,可使用的 SDK 有很多,如 NVIDIA 的 DeepStream、华为的 MindX SDK、寒武纪的 CNStream。服务化部署将模型作为一个推理的服务端,向外对客户端提供推理服务,业务逻辑等操作由客户端来完成,如 NVIDIA的 Triton Inference Server、 百 度 的 Paddle Serving。值得注意的是,部署形式与设备平台的选择既要考虑到开发难度、成本、系统性能,又要考虑到后期系统维护和可移植性。
边缘计算是近几年学术界与产业界的研究热点,通过对边缘计算的调研,本文较为直观地展开了边缘计算及其在视频结构化中的应用,阐述了目标检测模型在边缘计算设备中的部署方法。目前,智能安防、智慧城市等领域中的实时视频流分析与视频结构化是典型的应用场景边缘计算范式,边缘计算在这些领域中的成功部署是其进一步发展的关键动力,也是其面向更广泛场景的重要支撑。
■ 文/ 姜淼 赵士贤 任俊星 李敏
中国科学院信息工程研究所