使用 HEVC 标注区域 SEI 消息的端到端分布式视频分析系统

2021-12-09 15:00:20 浏览数 (1)

来源: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 码流中传输。云服务端会解码得到这部分人脸区域信息,并进一步对人脸的年龄和性别进行判别。

目录

  • 介绍
  • 标注区域的补充增强信息
    • 1. HEVC 补充增强信息
    • 2. 标注区域的补充增强信息
    • 3. 标注区域 SEI 的特点
  • 使用 GStreamer 架构对视频分析和 AR SEI 进行优化
  • 实验结果
    • 1. 视频播放系统
    • 2. 使用 AR SEI 信息的端到端分布式视频处理系统
  • 结论和未来工作
  • 参考文献

介绍

随着人工智能技术的发展,目标检测和跟踪任务在端到端视频架构中逐渐普及。下图是端到端智能视频处理架构的一个示例:系统边缘的智能相机中部署了入侵者检测、人脸/目标检测等算法,并将提取到的信息随压缩的视频流一起传输到视频网关 (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) 的头部。该方法主要有以下几方面不足:

  • 不是所有视频格式都支持自定义字段的传输;
  • 即使可以传输自定义字段,该字段中也往往需要携带其他一些辅助信息,如 copyright、时间戳等,并且在转码过程中,头部的自定义内容也很容易丢失;
  • 由于该头部内容是自定义的,因此很难保证端到端各个环节的互通性和一致性,这会带来部署和维护上的问题;
  • 视频编码器无法获得这部分附加信息,因此在编解码过程中很难有效利用到该内容。

为了克服前述方法的不足,本文通过将区域标注 SEI 信息扩增到视频编码标准中,来对视频语义信息进行传输,目前该工作已被包括在 HEVC 第 7 版标准中,并将被 AVC 和 VVC 标准接收。

标注区域的补充增强信息

1. HEVC 补充增强信息

在 HEVC 视频流中添加的补充增强信息(SEI),不会被用于解码端对视频帧像素的正常解码,但可被用于其他各种用途,例如视频帧输出计时、损失检测与损失修复等。SEI 信息被放在专属的 AU (Access Unit) 中进行传输,可以保证与视频流的时间对齐。一个 AU 中可能包括多个 SEI NALU (Network Abstract Layer Unit),而一个 SEI NALU 中包含一个或多个 SEI 信息。HEVC 标准定义了多种不同的 SEI 信息以适应不同的场合和目的。

2. 标注区域的补充增强信息

作者提出了一种新的 SEI 信息类型,即 "Annotated Regions SEI(AR SEI)",用于对视频的语义分析结果进行编码,如下图所示。

图3. 目标检测任务下的 AR SEI 信息(目标框):左图为无遮挡情况,右图为有遮挡情况

利用这一方法,视频网关(video gateway)需要进行如下一系列操作:

  • 首先,它要将收到的视频比特流进行解码 然后对解码得到的视频帧进行下采样(下采样倍数依应用场合不同而不同),如果收到的码流中含有 AR SEI NAL,则也对其进行解码,并将得到的视频语义内容存储起来。
  • 随后,对下采样视频也进行语义分析(e.g.目标检测),并将分析结果与解码得到的 AR SEI 信息进行比对:如果二者没有差别,则直接传输收到的原始码流,无需进行修改或进一步分析;而如果二者不同,则需要将收到的 AR SEI 信息进行修改,并将其复用到码流中进行传输。

如果视频网关和云端之间的可用带宽降低,则网关可以把码流中视频信息的部分丢掉,只传输 AR SEI NAL, 云端的解码端可以利用 AR SEI 的内容进行有效的错误修复。此外,在某些场景下(e.g. 需要对收到的视频码流进行转码,或要将其保存在云端留档备份),网关服务器或云端服务器需要对视频内容重新编码(re-encoding),此时可以利用 AR SEI NAL 中的信息来辅助编码,给感兴趣区域(regions of interest, ROI)分配更多的比特。

相比于现有方法,文中提出的 AR SEI 方法具有很多优势

  • 其被囊括于 HEVC 编码标准之中,因此系统各个环节的互通性得到了很好的保证。即使某解码器不支持 AR SEI 信息的解码,它也可以直接忽视 SEI 信息的内容,并只对除此以外的码流信息进行解码。
  • 视频网关或服务器只需要进行极少的工作量,就可以对 AR SEI 信息进行编码,因此相比于目前其他方法,本文方法能耗更低、速度更快。
  • 由于视频的语义分析结果被包含于编码层(codec layer),因此系统边缘或网关的服务器可以利用该信息,来对视频帧中的 ROI 信息进行高效处理。当要对存储的本地视频进行快速检索或进一步分析时,AR SEI 信息将会起到非常重要的作用。
  • 在整个系统中,如果前一个环节的语义分析任务发生了错误,则可以轻易地被后续节点检测出来并进行修正,因为该过程只涉及到对 AR SEI 信息的操作。
  • 如果网络环境不佳造成丢包,则根据 AR SEI 信息,网关或云端的服务器可以进行有效的检错与纠错,保证解码的准确性。

3. 标注区域 SEI 的特点

文中方法的语法信息参见 [4] 和 [1],其特点可概括如下:

  • 一帧中最多可以捕捉跟踪 255 个目标,每个目标都有自己的检测方框,也可能会有自己的标签;
  • 每个目标检测框都用四个参数表示:左上角点的位置 (x,y) 和宽、高信息;
  • 目标选择算法具有一致性,因此更新信息时,只需要对改变了的目标进行修改即可;
  • 提供了对码流优化目标的描述能力,即接收方可以根据收到码流的 SEI 信息,得知该码流进行的优化是出于什么目的(用户观看、目标分类等);
  • 包含了视频流中是否包含部分可见(遮挡)的目标的信息;
  • 将目标信息和标签信息解耦,因此多个相同类型的目标可以共用同一个标签索引;标签信息可以用任何语言进行编码(包括英语),也支持一些特殊符号(如逗号、分号等)的编码;
  • 支持对目标检测结果的置信程度(confidence percentage)表示,并且可以指定用来表示的码字数量;
  • 如果相较于之前帧,目标保持静止,则只需要极少的码字就可以对其进行编码;如果目标相较前帧有运动,则只需要给运动造成的新像素位置进行编码,而剩余其他位置保持不变。

下图展示了文中方法的一个示例,在第 0 帧中有两个目标,车和人,检测框分别用 BB_A 和 BB_B 表示。到第 1 帧,车没有移动,仍用 BB_A 表示,而人发生了移动,新的检测框用 BB_C 表示。因此 AR SEI 信息将只对 BB_C 的新参数进行编码传输,其他位置复用之前的信息即可。同理,第 2 帧中,新目标的所有信息和 BB_E 的目标框参数要编码传输,其他位置信息和标签信息直接复用,并且由于 BB_A 目标到该帧已不再出现,因此要在语法中加入 "BB_A 失效" 的信息。

图4. AR SEI 信息示例

使用 GStreamer 架构对视频分析和 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 信息的用法。

  1. 视频回放系统:AR SEI 中的目标检测信息被用于在视频回放时绘制可见的目标框;
  2. 短道短分布式视频分析系统:通过额外的分析处理步骤,即人脸检测和基于此的性别分类,可以对 AR SEI 中的信息进行增强提升。

文中方法的源代码发布于 [9]。

1. 视频播放系统

该系统使用 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 的系统。

2. 使用 AR SEI 信息的端到端分布式视频处理系统

该系统中,先用 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 信息的支持。

附上演讲视频:

http://mpvideo.qpic.cn/0bc3emaboaaatyag2x5ntnqvai6dc4rqafya.f10002.mp4?dis_k=26c2b19a158998c644b339d6b96e1b11&dis_t=1639033122&vid=wxv_2167059816660205569&format_id=10002&support_redirect=0&mmversion=false

参考文献

[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?

0 人点赞