社区供稿 | 视频目标检测(IJCAI 2023) 流感知优化 DAMO-StreamNet 开源

简介: 传统视频目标检测(Video Object Detection, VOD)任务以一段视频作为输入,利用视频的时序信息进行目标检测,并最终输出每一帧视频帧的检测结果。

论文&代码


论文链接:

https://arxiv.org/abs/2303.17144


开源直达:

https://modelscope.cn/models/MorningsunLee/cv_cspnet_video-object-detection_damo-streamnet/summary


https://github.com/zhiqic/DAMO-StreamNet


背景介绍


传统视频目标检测(Video Object Detection, VOD)任务以一段视频作为输入,利用视频的时序信息进行目标检测,并最终输出每一帧视频帧的检测结果。其相比图像目标检测(Image Object Detection, IOD)任务,优势在于能够利用视频的时序信息,对运动模糊、图像失焦、遮挡、物体姿态变化等困难的场景具有更强的鲁棒性。然而,传统的VOD和IOD都是离线(offline)的检测,即仅考虑算法的检测精度,未考虑算法的延时。


为了更加贴近现实场景,ECCV 2020 论文《Towards Streaming Perception》[1](获得Best Paper Honorable Mention)首次提出了流感知Streaming Perception)任务,该任务作为VOD的一个细分方向,提出了流平均精度(Streaming Average Precision, sAP)指标,衡量算法的在线(online)检测能力,即同时衡量算法的精度和延时。具体地,如下图所示,离线目标检测算法对T 时刻的视频帧进行检测,得到轿车检测结果,即橙色的矩形框,而因为算法处理存在一定的延时,此时现实环境已经处于T+Latency 时刻,轿车的实际位置也已经发生变化,即红色的矩形框。由此可见,实际应用中,算法进行目标检测时,应同时考虑环境变化,这正是在线检测(如Streaming Perception任务)考虑的事情,这一类的算法在T 时刻的检测结果,橙色的矩形框,与T+Latency 时刻的实际环境,红色的矩形框,能有较好的吻合。

图1 离线检测与在线检测对比


技术难点


早期的方法如Streamer[1]和Adaptive Streamer[2]尝试通过提出一些策略,来进行精度和延时之间的平衡,但是这些方法精度较低。CVPR 2022 oral工作StreamYOLO[3]通过引入强大的实时目标检测器YOLOX[4],将Streaming Perception任务简化为一个预测任务。


为了更好地理解为什么引入实时目标检测器能够简化Streaming Perception任务,需要先介绍一下此任务的评价指标。流平均精度(Streaming Average Precision, sAP)可以分为两个部分理解,其中"Average Precision"和通用检测一致,而"Streaming"表示,某个时刻的预测结果,会与算法处理完成后下一时刻的真实值(Ground True, GT)匹配,并计算对应的"Average Precision"。具体地,如下图所示,对于非实时的算法,It 时刻的预测结果在下一时刻It+1到来之后才能得到,如下图左半部分绿色箭头所示,因此与该预测结果配对的是It+2时刻的GT,而It+1时刻的GT,会默认使用前一次预测结果进行配对,这样一来,算法一方面“错过”了It+1时刻的GT,另一方面需要预测更“远”的It+2时刻的真实环境,因此对算法的挑战更大。相对地,对于实时的算法,It时刻的预测结果在下一时刻It+1到来之前可以得到,如下图右半部分绿色箭头所示,因此与该预测结果配对的是It+1时刻的GT,该情况下,算法一方面不会“错过”任何时刻的GT,另一方面仅需要预测下一时刻的真实环境。因此说,引入实时算法能够简化Streaming Perception任务为一个对下一帧真实环境的预测任务

图2 非实时方法和实时方法的评估示意图

虽然StreamYOLO简化了Streaming Perception任务,但是它仅使用当前帧和前一帧两帧的短时序信息作为输入,难以表征一些复杂的运动状态。在实际自动驾驶环境中,经常会出现以下的,除了匀速直线运动以外的运动状态以及情况:1)非匀速运动(比如加速超车);2)非直线运动(比如转弯);3)遮挡以及小目标。


因此,我们在之前的工作中提出了LongShortNet[5],将长时序信息引入到Streaming Perception任务中,并提出了长短时序融合模块,在一些困难场景下,能够达到比StreamYOLO更高的精度。


在LongShortNet中,存在一个遗留的问题:我们发现当使用大尺寸输入(1200x1920)的时候,模型对大物体的检测精度sAPl反而有所下降,我们推测是因为网络的感受也不足造成大物体的检测精度下降,如下图3所示。
因此,在本文中,我们提出了DAMO-StreamNet,一方面,探索如何通过增加网络的感受野来提升模型对大物体的检测精度,进而提升最终的整体精度;另一方面,我们也探索了如何引入更多的监督信息,来进一步提升模型的精度。

图3 感受野不足示意图


方法介绍


DAMO-StreamNet的整体结构如下图所示:

图4 DAMO-StreamNet示意图


主要的贡献点如下:


  1. 我们提出动态感受野FPN (Dynamic Receptive Field FPN, DRFPN),使网络具备可变的感受野,从而提升在大分辨率下对大物体的检测性能;
  2. 我们提出了一种非对称的蒸馏方案 (Asymmetric Knowledge Distillation, AK-Distillation),在训练阶段利用教师网络对“未来信息”的知识,进一步提升学生网络的精度;
  3. 我们还提出了一种新的评估方式 (K-step sAP),评估模型对于更长时序的预测能力。


此外,我们仍然采用和LongShortNet一致的双支路结构,且仍然保持模型的实时性前提。


Dynamic Receptive Field FPN (DRFPN)

DRFPN最主要的贡献在于:使网络具备可变(可学习)的感受野,其结构如下图所示:

图5 PAFPN和DRFPN示意图

我们知道PAFPN[6]是检测网络中基础的neck结构,它采用了top-down和bottom-up结合的形式,另外,GFPN[7]验证了neck结构对于检测网络的重要性,因此,我们在PAFPN的基础上进行了如下几点改进,以适应我们的需求:


  1. 我们提出了DR模块,替换PAFPN原来的CSP模块,主要的改进点有:1)引入可变形卷积,使网络具备可学习的感受野;2)使用重参数化卷积[8],使网络具备更强的表征能力;3)引入了ELAN[9]结构,增强特征融合。

  2. 另外,我们增加了bottom-up的辅助连接支路,进一步利用低层特征的细节信息对高层特征进行补充。


Asymmetric Knowledge Distillation (AK-Distillation)

AK-Distillation最主要的贡献点在于:利用教师网络对“未来信息”的学习,来指导学生网络的学习,最终提升其预测的能力


具体地,有视频序列S={It ,…It Nδt},其中Nδt分别表示输入历史视频帧的数量以及历史视频帧的间隔步长(其含义和LongShortNet一致),那么DAMO-StreamNet可以用下面的公式表示:T=F(S,W)



其中,W表示网络的权重而T表示网络最终输出的特征图,可以通过解码操作Decode(T)来得到网络最终的预测结果R(包括目标物体的位置、类别和置信度)。在训练阶段,学生网络可以用下面的公式表示:Tstu=Fstu(S,Wstu


另外,教师网络可以用下面的公式表示:Tstu=Fstu(It+1,Wtea

WstuWtea分别表示学生网络和教师网络的权重参数。可以看到,学生网络以S作为输入,而教师网络以It+1作为输入,这就是“非对称”(Asymmetric)的核心思想,即教师网络是一个以未来帧作为输入的静态预测网络(所谓的静态预测网络就是以当前帧作为输入,预测当前帧的结果),教师网络和学生网络的输入是不一致的(以往大部分的蒸馏工作教师网络和学生网络的输入都是一致的仅网络结构上有差别),最终教师网络将对未来帧预测的能力“传授”给学生网络
我们利用教师网络和学生网络输出的特征图进行蒸馏,如下所示:


K-step Streaming Metric

K-step sAP的核心思想在于:衡量网络对更长的时序的预测能力(之前的StreamYOLO和LongShortNet都只是针对下一帧进行预测)。


图6 不同的K取值下K-step匹配示意图

其中,(a)和(b)是对原始的sAP的展示(对应non-real-time和real-time),此时相当于K=1,而(c)展示的是K=2的情况,依此类推,(d)表示K去更大的值的时候,K-step sAP将衡量模型对更长时序的预测能力。


实验结果


本文基于Streaming Perception任务的公开数据集,Argoverse-HD[1],进行算法实验,并与StreamYOLO&LongShortNet等工作保持相同的训练/验证集划分。同样使用small/middle/large三种尺寸的网络,分别对应DAMO-StreamNet-S/DAMO-StreamNet-M/DAMO-StreamNet-L。


SOTA对比

首先,与目前SOTA方法的对比如下表所示,DAMO-StreamNet在常规分辨率((600, 960))下,取得了37.8%的sAP,而在高分辨率((1200, 1920))下,取得了43.3%的sAP,均超过了目前的SOTA精度。且值得注意的是,DAMO-StreamNet在高分辨率的情况下,sAPl指标有了明显提升,这也证明了DRFPN引入可变感受野的作用。

表1 与SOTA对比


消融实验

首先,我们对DRFPN进行了消融实验,我们在StreamYOLO和LongShortNet的基础上,加上了DRFPN,如下表所示,可以看到,对于不同量级的网络,DRFPN都能带来精度的提升。


表2 DRFPN消融实验


我们对Nδt的取值进行了消融实验,结果如下表所示,相关的观察和LongShortNet类似。其中,(1, 1)等价于StreamYOLO,由此可见,引入长时序信息有助于算法对复杂运动的预测,从而提升最终的精度。

表3 N和delta t消融实验


我们同时对AK-Distillation进行了消融实验,在大部分情况下,AK-Distillation可以为学生网络带来进一步的精度提升。

表4 AK-Distillation消融实验


我们还对K-step进行了实验,可以看到,输入更长时序(N=2/3)的情况下,在各个step下均能有更优的表现,但是我们发现,N=1和N=2/3的精度差距,并没有随着K的增加而增大,说明对于更长时序的预测是很有挑战的,值得更多的探索。

表5 K-step sAP实验


最后,我们对模型的推理时效也做了分析,虽然相比LongShortNet速度有所下降,但模型仍然保持了实时性的前提。

表6 模型推理速度分析


模型传送门


流感知模型


流感知模型DAMO-StreamNet:https://modelscope.cn/models/MorningsunLee/cv_cspnet_video-object-detection_damo-streamnet/summary


流感知模型LongShortNet:https://modelscope.cn/models/damo/cv_cspnet_video-object-detection_longshortnet/summary


流感知模型StreamYOLO:https://modelscope.cn/models/damo/cv_cspnet_video-object-detection_streamyolo/summary


检测相关模型


实时目标检测模型YOLOX:https://modelscope.cn/models/damo/cv_cspnet_image-object-detection_yolox/summary


高精度目标检测模型DINO:https://modelscope.cn/models/damo/cv_swinl_image-object-detection_dino/summary


实时目标检测模型DAMO-YOLO:https://modelscope.cn/models/damo/cv_tinynas_object-detection_damoyolo/summary


垂直行业目标检测模型:https://modelscope.cn/models?page=1&tasks=vision-detection-tracking%3Adomain-specific-object-detection&type=cv



关键点相关模型


2D人体关键点检测模型-HRNet: https://modelscope.cn/models/damo/cv_hrnetv2w32_body-2d-keypoints_image/summary


2D人脸关键点检测模型-MobileNet:https://modelscope.cn/models/damo/cv_mobilenet_face-2d-keypoints_alignment/summary


2D手部关键点检测模型-HRNet:https://modelscope.cn/models/damo/cv_hrnetw18_hand-pose-keypoints_coco-wholebody/summary


3D人体关键点检测模型-HDFormer:https://modelscope.cn/models/damo/cv_hdformer_body-3d-keypoints_video/summary


3D人体关键点检测模型-TPNet:https://modelscope.cn/models/damo/cv_canonical_body-3d-keypoints_video/summary

更多模型详见 ModelScope 主页:https://modelscope.cn/home


检测套件开发工具


ModelScope社区视觉检测开发套件AdaDethttps://github.com/modelscope/AdaDet



参考文献

[1] M. Li and D. Ramanan, “Towards streaming perception,” in ECCV, 2020, vol. 12347, pp. 473–488.

[2] A. Ghosh, A. Nambi, A. Singh, and et al., “Adaptive streaming perception using deep reinforcement learning,” CoRR, vol. abs/2106.05665, 2021.

[3] J. Yang, S. Liu, Z. Li, and et al., “Real-time object detection for streaming perception,” in CVPR, 2022, pp. 5385–5395.

[4] Z. Ge, S. Liu, F. Wang, and et al., “YOLOX: exceeding YOLO series in 2021,” CoRR, vol. abs/2107.08430, 2021.

[5] C. Li, Z. Cheng, J. He, and et al., “Longshortnet: Exploring temporal and semantic features fusion in streaming perception,” ICASSP, 2023.

[6] S. Liu, L. Qi, H. Qin, and et al., “Path aggregation network for instance segmentation,” CVPR, 2018.

[7] Y. Jiang, Z. Tan, J. Wang, and et al., “GiraffeDet: A heavy-neck paradigm for object detection,” ICLR, 2022.

[8] X. Ding, X. Zhang, N. Ma, and et al., “Repvgg: Making vgg-style convnets great again,” CVPR, 2021.

[9] C. Wang, A. Bochkovskiy, H. Liao, and et al., “Yolov7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors,” ICLR, 2022.

[10] H. Rezatofighi, N. Tsoi, J. Gwak, and et al., “Generalized intersection over union: A metric and a loss for bounding box regression,” CVPR, 2019.

相关文章
|
机器学习/深度学习 人工智能 编译器
YOLO-NAS:面向目标检测的下一代模型
YOLO-NAS:面向目标检测的下一代模型
|
11月前
|
存储 弹性计算 安全
阿里云服务器租用价格参考:最新包年包月收费标准与活动价格整理
购买阿里云服务器一年多少钱?2025年阿里云服务器价格又调整了,轻量云服务器2核2G200M峰值带宽38元一年、2核4G4M带宽60GB ESSD云盘298元一年,e实例云服务器2核2G3M带宽99元1年,u1实例2核4G5M带宽199元一年、4核8G云服务器955元一年,4核16G10M云服务器70元1个月、210元3个月,8核32G10M带宽160元1个月、480元3个月。对于想要上云的用户来说,了解阿里云服务器的价格体系是选择合适产品的第一步。那么,2025年购买阿里云服务器到底需要多少钱呢?本文为大家整理汇总了截止目前阿里云服务器的最新包年包月收费标准和活动价格情况,以供参考。
|
存储 安全 前端开发
基于springboot的流浪动物救助管理系统
基于springboot的流浪动物救助管理系统
|
机器学习/深度学习 存储 TensorFlow
YOLOv11改进策略【Head】| (独家改进)轻量化检测头:利用 EfficientNet 中的移动倒置瓶颈模块 MBConv 改进检测头
YOLOv11改进策略【Head】| (独家改进)轻量化检测头:利用 EfficientNet 中的移动倒置瓶颈模块 MBConv 改进检测头
2819 11
YOLOv11改进策略【Head】| (独家改进)轻量化检测头:利用 EfficientNet 中的移动倒置瓶颈模块 MBConv 改进检测头
|
机器学习/深度学习 数据可视化 算法
YOLOv9改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
YOLOv9改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
949 5
YOLOv9改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
|
机器学习/深度学习 编解码 计算机视觉
RT-DETR改进策略【注意力机制篇】| CVPR-2023 FSAS 基于频域的自注意力求解器 结合频域计算和卷积操作 降低噪声影响
RT-DETR改进策略【注意力机制篇】| CVPR-2023 FSAS 基于频域的自注意力求解器 结合频域计算和卷积操作 降低噪声影响
462 2
|
Java Spring
spring restTemplate 进行http请求的工具类封装
spring restTemplate 进行http请求的工具类封装
724 3
|
Java Android开发 C++
🚀Android NDK开发实战!Java与C++混合编程,打造极致性能体验!📊
【7月更文挑战第28天】在 Android 开发中, NDK 让 Java 与 C++ 混合编程成为可能, 从而提升应用性能。**为何选 NDK?** C++ 在执行效率与内存管理上优于 Java, 特别适合高性能需求场景。**环境搭建** 需 Android Studio 和 NDK, 工具如 CMake。**JNI** 构建 Java-C++ 交互, 通过声明 `native` 方法并在 C++ 中实现。**实战** 示例: 使用 C++ 计算斐波那契数列以提高效率。**总结** 混合编程增强性能, 但增加复杂性, 使用前需谨慎评估。
518 4
|
机器学习/深度学习 算法
【机器学习】梯度消失和梯度爆炸的原因分析、表现及解决方案
本文分析了深度神经网络中梯度消失和梯度爆炸的原因、表现形式及解决方案,包括梯度不稳定的根本原因以及如何通过网络结构设计、激活函数选择和权重初始化等方法来解决这些问题。
3425 0
|
编译器 Linux 开发者
【cmake 交叉编译配置设置】CMAKE_TOOLCHAIN_FILE:跨平台编译的秘密武器
【cmake 交叉编译配置设置】CMAKE_TOOLCHAIN_FILE:跨平台编译的秘密武器
2285 0

热门文章

最新文章