来源:SPIE2021 Optical Engineering + Applications 作者:Palanivel Guruvareddiar, Jill Boyce, Rajesh Poornachandran 内容整理:赵研 SEI (Supplemental Enhancement Information,补充增强信息) 提供了在码流中加入与音视频同步的额外信息的方法。HEVC AR (Annotated Regions) SEI 信息通过传输视频中不同物体的边界框 (bounding box), 来支持目标检测、目标跟踪等任务。 本文扩展了 HEVC 码流,向其中加入了 AR SEI 的内容,然后将 GStreamer 框架与 AR SEI 信息结合,提出了一种端到端的分布式视频处理流程。框架中包括一个边缘节点 (edge node) 和一个云服务节点 (cloud server node),通过在边缘节点上部署轻量级的人脸检测算法,可以将检测到的脸部信息以 AR SEI 的形式在 HEVC 码流中传输。云服务端会解码得到这部分人脸区域信息,并进一步对人脸的年龄和性别进行判别。
目录
随着人工智能技术的发展,目标检测和跟踪任务在端到端视频架构中逐渐普及。下图是端到端智能视频处理架构的一个示例:系统边缘的智能相机中部署了入侵者检测、人脸/目标检测等算法,并将提取到的信息随压缩的视频流一起传输到视频网关 (video gateway),然后在网关执行更复杂的视频分析任务,如人脸识别、车辆检测等,并将得到的分析数据与转码的视频流一起传输到边缘云服务器 (edge cloud)。边缘云对得到的视频语义信息进行进一步分析处理,最终的分析结果会被送到云端的视频应用服务器。云端对收到的码流数据进行两方面处理:1) 将视频转码为低分辨率版本,并保存副本;2) 分析视频,并与收到的视频语义信息进行对应关联。
图1. 分布式端到端智能视频处理系统,将视频语义分析信息随码流一同传输
为了在码流中传输视频语义信息,一种常见的前处理方法是:对视频帧内容进行修改,也就是将目标检测框 (bounding box) 直接嵌入在视频帧内容中,如下图所示。具体来说,智能相机会先在视频帧中检测到人体区域,将相应的目标检测框嵌入在原始视频中,再对视频流进行压缩,并将其传输到视频网关。网关会对接收到的视频流进行进一步语义分析,这部分信息也会以目标检测框的形式嵌入到视频帧中,经压缩后传输到云服务器中。这种目标检测框的直接嵌入方法要对原视频进行修改,因此会带来一些不足。举例来说,对于犯罪监控等应用场合,需要将未经修改的原视频保存在网关的 NVR (Network Video Recorder) 和边缘云服务器中;而且未经处理的原始视频还可以用作机器学习的训练与测试样本。此外,如果在系统的下游节点 (e.g. IP camera) 位置出现了检测错误,那么这种错误是很难被中间节点 (e.g. Edge cloud) 修正的,并且该修正过程会带来很多的额外计算开支。同时,嵌入的目标边框也会影响到视频的压缩编码过程。
图2. 通过嵌入目标检测框的方式传输视频语义信息
视频语义信息传输的另一种流行方法是:将语义信息作为自定义字段,添加到视频文件 (e.g. MP4, AV1, MOV) 的头部。该方法主要有以下几方面不足:
为了克服前述方法的不足,本文通过将区域标注 SEI 信息扩增到视频编码标准中,来对视频语义信息进行传输,目前该工作已被包括在 HEVC 第 7 版标准中,并将被 AVC 和 VVC 标准接收。
在 HEVC 视频流中添加的补充增强信息(SEI),不会被用于解码端对视频帧像素的正常解码,但可被用于其他各种用途,例如视频帧输出计时、损失检测与损失修复等。SEI 信息被放在专属的 AU (Access Unit) 中进行传输,可以保证与视频流的时间对齐。一个 AU 中可能包括多个 SEI NALU (Network Abstract Layer Unit),而一个 SEI NALU 中包含一个或多个 SEI 信息。HEVC 标准定义了多种不同的 SEI 信息以适应不同的场合和目的。
作者提出了一种新的 SEI 信息类型,即 "Annotated Regions SEI(AR SEI)",用于对视频的语义分析结果进行编码,如下图所示。
图3. 目标检测任务下的 AR SEI 信息(目标框):左图为无遮挡情况,右图为有遮挡情况
利用这一方法,视频网关(video gateway)需要进行如下一系列操作:
如果视频网关和云端之间的可用带宽降低,则网关可以把码流中视频信息的部分丢掉,只传输 AR SEI NAL, 云端的解码端可以利用 AR SEI 的内容进行有效的错误修复。此外,在某些场景下(e.g. 需要对收到的视频码流进行转码,或要将其保存在云端留档备份),网关服务器或云端服务器需要对视频内容重新编码(re-encoding),此时可以利用 AR SEI NAL 中的信息来辅助编码,给感兴趣区域(regions of interest, ROI)分配更多的比特。
相比于现有方法,文中提出的 AR SEI 方法具有很多优势:
文中方法的语法信息参见 [4] 和 [1],其特点可概括如下:
下图展示了文中方法的一个示例,在第 0 帧中有两个目标,车和人,检测框分别用 BB_A 和 BB_B 表示。到第 1 帧,车没有移动,仍用 BB_A 表示,而人发生了移动,新的检测框用 BB_C 表示。因此 AR SEI 信息将只对 BB_C 的新参数进行编码传输,其他位置复用之前的信息即可。同理,第 2 帧中,新目标的所有信息和 BB_E 的目标框参数要编码传输,其他位置信息和标签信息直接复用,并且由于 BB_A 目标到该帧已不再出现,因此要在语法中加入 "BB_A 失效" 的信息。
图4. AR SEI 信息示例
Intel Deep Learning Streamer[5] (DL Streamer) 是一个基于 GStreamer[6] 的流媒体处理分析架构,旨在实现各种复杂的多媒体应用程序。它还利用跨平台(CPU、 GPU 和 Intel Movidius VPU)的 Intel Distribution of OpenVino Toolkit 来实现系统中媒体和推理组件之间的互操作性。 下图为 DL Streamer 的软件架构,其中优化的媒体组件由 GStreamer 框架支持,而视频分析组件由以 OpenVino 为后端的 DL Streamer 提供。GStreamer 框架被广泛用于流媒体系统管理、视频编解码和其他前处理、后处理操作,如视频格式转换、视频分辨率缩放、色彩格式转换等。而在支持并行加速运算的平台中(如 Intel iGPU等),DL Streamer 将提供基于 Media SDK 的多媒体加速处理。
图5. Intel DL Streamer 的软件架构
下表列举了 Intel DL Streamer 中常用的插件,以及它们功能的大致描述。
表1. DL Streamer 常用插件及功能描述
"gvametapublish" 插件将视频分析结果的元数据(metadata)用 Json 文件形式或 Kafka/MQTT message broker 的形式进行发布,这两种方式都会将视频语义元数据作为单独的数据内容,并将其与原始视频信息分开处理。因此需要附加额外的处理来对之前节点的视频分析数据进行可视化,并(或)对视频语义分析内容在分布式架构中进一步处理。 文中方法将视频语义分析的元数据以 AR SEI 的形式嵌入到压缩视频流中,因此可以方便地进行存储、传输,或在分布式计算系统中进行进一步处理。作者对 GStreamer 架构进行修改,在 h264parse/h265parse 组件中添加了对 AR SEI 数据的处理。因此如果码流中包含了 AR SEI 元数据,即目标坐标、标签、检测置信度等,相同的信息也会被转换到 GstVideoRegionOfInterestMeta 格式(GStreamer 中一种便于存储 ROI 信息的数据格式)
作者展示了两种视频分析处理系统,并展示了系统中 AR SEI 信息的用法。
文中方法的源代码发布于 [9]。
该系统使用 GStreamer 架构进行视频播放,并根据 AR SEI 信息,在视频帧中绘制可见的目标检测框和标签信息。下图展示了一个使用 DL streamer 在 H.265 压缩视频上使用该系统的示例,h265parse 组件会对压缩的 H.265 视频流和其中的 AR SEI 信息进行解析,该组件维护了一个状态机,可以确保编码的 ROI 信息可以与之前编码器发送的静态字段相关联。举例来说,目标的标签信息一般来说是静态的,编码器可只将其发送一次,而 h265parse 组件会将这些静态信息与 ROI 区域相关联。
图6. 基于 intel DL Streamer 架构和 AR SEI 信息的 H.265 视频播放系统
视频帧中所有 ROI 区域信息会被转换为 GstVideoRegionOfInterestMeta 格式,msdkh265dec 组件和 videoconvert 组件会将解码的视频像素从 YUV 格式转换为 RGB 格式,填充在 frame buffer 中。如果需要的话,videoscale 组件会将解码得到的原始分辨率帧转化为其他分辨率,并将该 frame buffer 传递给 gvawatermark 组件,gvawatermark 组件会根据视频帧的 GstVideoRegionOfInterestMeta 数据,在其上绘制可见的目标框和标签。最后,videoconvert 组件将 RGB 数据转化为 RGBA 格式,并在显示器上显示数据。下面的视频是该系统的一个示例( https://doi.org/10.1117/12.2593619.1 )。
视频1. 在 H.265 视频码流中添加 AR SEI 信息 —— https://doi.org/10.1117/12.2593619.1
值得注意的是,除了 gvawatermark 组件以外,其他所有部分都直接采用 GStreamer 框架的内容,不需要针对 AR SEI 任何修改。而所有的 AR SEI 信息都由 h265parse组件进行处理,不需要对应用程序进行任何修改。此外,只需要将 h265parse 和 msdkh265dec 组件分别替换为 h264parse 和 msdkh264dec 组件,就可以实现类似的基于 H.264 的系统。
该系统中,先用 IP 摄像头捕获视频,并在此基础上进行人脸检测。检测到的人脸信息会被转化为 AR SEI 信息,然后嵌入在压缩比特流中。将码流传输给系统边缘的服务器,基于人脸信息进行年龄、性别估计,并将分析结果添加到 AR SEI 的标签部分,传输给云服务器。云服务器使用更加复杂的算法,进行姿态估计等高级分析,进一步增强 AR SEI 信息,并将最终的码流信息存储在云端作为备份。下图是 IP 摄像头的运行流程,其中输入文件是 YUV 格式的原始视频,videoconvert 组件会将其转换为 RGB 格式,然后由以 intel OpenVino 为后端支持的 gvadetect 组件进行目标检测,gvatrack 组件会对检测到的目标进行跟踪,并为他们各自分配专属 id。
图7. IP 摄像头系统
下面的视频展示了 IP 摄像头的人脸检测输出效果( https://doi.org/10.1117/12.2593619.2 ),包括了人脸区域检测的目标框和对应标签("Face")。
视频2. IP 摄像头的输出效果 —— https://doi.org/10.1117/12.2593619.1
下图展示了系统边缘服务器和云服务器通用的系统架构,与上一例子中的视频播放架构类似。视频中展示的是边缘服务器的输出效果( https://doi.org/10.1117/12.2593619.3 ),图中标签信息添加了边缘服务器的预测结果(年龄、性别)。
图8. 服务器系统流程
图9. 边缘服务器的输出结果 —— https://doi.org/10.1117/12.2593619.3
云端服务器的流程结构和边缘服务器相同(如图 8 所示),其输出视频示例如下所示( https://doi.org/10.1117/12.2593619.4 ),即在 IP 摄像头和边缘服务器分析结果的基础上,添加了头部姿势角度的高级语义信息。
视频3. 云服务器的输出效果 —— https://doi.org/10.1117/12.2593619.4
本文提出了一种区域标注 SEI 信息,即 AR SEI。它可以表示和传输视频中目标检测的高级语义信息,如目标检测框、语义标签等。AR SEI 信息已经被 H.265 视频编码标准接收,也将被引入到新一版的 AVC 和 VSEI 标准中。通过使用 AR SEI 信息,可以在视频流中传输语义分析的结果,因而分布式系统中的各个节点都可以便捷地使用之前节点的分析结果,而不需要添加任何额外操作。 FFmpeg 是一个被广泛使用的多媒体分析框架,因此作者的下一步工作是在 FFmpeg 架构中添加对 AR SEI 信息的支持。
附上演讲视频:
[1] High Efficiency Video Coding, “Recommendation ITU-T H.265 and ISO/IEC 23008-2 (HEVC),” (2019). http://scholar.google.com/scholar_lookup?title=Recommendation+ITU-T+H.265+and+ISO/IEC+23008-2+(HEVC)&publication_year=2019 [2] Versatile supplemental enhancement information messages for coded video bitstreams, “Recommendation ITU-T H.274 and ISO/IEC 23002-7,” (2020). http://scholar.google.com/scholar_lookup?title=Recommendation+ITU-T+H.274+and+ISO/IEC+23002-7&publication_year=2020 [3] R. Sjoberg, “Overview of HEVC High-Level Syntax and Reference Picture Management,” IEEE Transactions on Circuits and Systems for Video Technology, 22 (12), 1858 –1870 (2012). https://doi.org/10.1109/TCSVT.2012.2223052 [4] Jill Boyce and Palanivel Guruvareddiar, “Update to annotated regions SEI,” (2019). http://scholar.google.com/scholar_lookup?title=Update+to+annotated+regions+SEI&author=Jill+Boyce&author=Palanivel+Guruvareddiar&publication_year=2019 [5] Intel DL Streamer, http://scholar.google.com/scholar_lookup?&author=Intel+DL+Streamer [6] GStreamer. The GStreamer Library, (2001). http://scholar.google.com/scholar_lookup?&publication_year=2001 [7] Intel Openvino, http://scholar.google.com/scholar_lookup?&author=Openvino+Intel [8] Intel MediaSDK, http://scholar.google.com/scholar_lookup? [9] AR SEI gstreamer http://scholar.google.com/scholar_lookup?