边缘计算在视频结构化中的应用包括模型开发和模型部署两个步骤。模型开发即设计与训练神经网络模型,在视频结构化任务中,此处的网络模型通常指目标检测模型。模型部署即转化模型并将其部署到边缘计算设备上。
1.模型开发
在视频结构化任务中,预先定义了结构化所需的人、物类别,且当前用于训练目标检测模型的大型通用数据集较为完备,通常可以采用监督学习从给定数据集中学习出一个优化模型。
模型的开发大体分为三个阶段。
(1)准备数据。目标检测任务中常用的数据集为PASCALVOC与MSCOCO,两个数据集的标注方式为标注训练图像中目标的包围框及其类别标签。根据目标检测任务应用的场景不同,也可根据需求自行采集并标注定制化数据集。
(2)构建网络。针对任务目标搭建神经网络结构,在具体代码实现过程中,通常需要导入相关模块,如numpy、TensorFlow、PyTorch等。
(3)优化参数。通过设计合理的损失函数、学习率、优化方法、迭代次数等,训练网络并获得最佳参数,将网络保存为模型文件,用于后续的模型部署工作。
2.模型部署
模型部署的目标是期望模型能以足够的精度在目标硬件平台上稳定地运行推理过程,是一项复杂的系统工程,下面阐述模型部署的关键点。
(1)模型转换与平台选择。当前有多种边缘计算设备平台可用于部署模型,不同平台支持的模型格式不同,如NVIDIA支持TensorRT模型、华为支持OM模型,需要将训练得到的模型转换为目标平台支持的格式用于推理。不同的任务和模型需要有相应的平台自定义算子做支撑,因此对平台的依赖性很强。
(2)模型轻量化。深度学习模型需要大量的计算、内存和电能,这成为实时推理或在计算资源有限的边缘设备上运行模型推理的挑战,而模型轻量化是解决这一问题的重点,它决定了系统推理的速度和准确性。由于边缘计算设备的计算能力有限,一般需要通过剪枝、量化等模型压缩方法使模型更轻量化。剪枝是指移除模型中对结果作用较小的组件,深度学习网络模型存在着大量冗余的参数,大量神经元激活值趋近于0,将这些神经元去除后可以具备同样的模型表达能力;量化是指将浮点运算转换为整型运算,是将训练好的深度神经网络的权重、激活值等从高精度转化成低精度的操作过程,在损失少量精度的前提下对模型进行压缩。但是在轻量化过程中,可能导致模型推理的准确率下降,此时需要在推理的速度和准确率之间取得平衡。
(3)模型部署。目前模型部署形式一般有流程化部署与服务化部署两种。流程化部署需要自行构建整套管道(Pipeline)方法,可使用的SDK有很多,如NVIDIA的DeepStream、华为的MindXSDK、寒武纪的CNStream。服务化部署将模型作为一个推理的服务端,向外对客户端提供推理服务,业务逻辑等操作由客户端来完成,如NVIDIA的TritonInferenceServer、百度的PaddleServing。值得注意的是,部署形式与设备平台的选择既要考虑到开发难度、成本、系统性能,又要考虑到后期系统维护和可移植性。
---摘自《中国安防》杂志2022年7月刊