一、简介

图像目标检测任务在过去几年深度学习的发展背景下取得了巨大的进展,检测性能得到明显提升。但在视频监控、车辆辅助驾驶等领域,基于视频的目标检测有着更为广泛的需求。由于视频中存在运动模糊,遮挡,形态变化多样性,光照变化多样性等问题,仅利用图像目标检测技术检测视频中的目标并不能得到很好的检测结果。如何利用视频中目标时序信息和上下文等信息成为提升视频目标检测性能的关键。

对于视频目标检测来说,一个好的检测器不仅要保证在每帧图像上检测准确,还要保证检测结果具有一致性/连续性(即对于一个特定目标,优秀的检测器应持续检测此目标并且不会将其与其他目标混淆,称之为视频目标检测时序一致性)。

视频目标检测算法目前主要使用了如下的框架:

  • 将视频帧视为独立的图像,利用图像目标检测算法获取检测结果;
  • 利用视频的时序信息和上下文信息对检测结果进行修正;
  • 基于高质量检测窗口的跟踪轨迹对检测结果进一步进行修正。

二、单帧图像目标检测

此阶段通常将视频拆分成相互独立的视频帧来处理,通过选取优秀的图像目标检测框架以及各种提高图像检测精度的技巧来获取较为鲁棒的单帧检测结果。

1. 训练数据选取

需要注意,同一个视频片段背景单一,相邻多帧的图像差异较小。所以要训练现有目标检测模型,训练集可能存在大量数据冗余,并且数据多样性较差,有必要对其进行扩充。

2. 网络结构选取

不同的网络结构对于检测性能也有很大影响。同样的训练数据,基于 ResNet101 的 Faster R-CNN 模型的检测精度比基于 VGG16 的 Faster R-CNN 模型的检测精度高12%左右。今年比赛前几名的队伍基本上也是使用ResNet/Inception的基础网络。

三、改进分类损失

目标在某些视频帧上会存在运动模糊,分辨率较低,遮挡等问题,即便是目前最好的图像目标检算法也不能很好地检测目标。幸运的是,视频中的时序信息和上下文信息能够帮助我们处理这类问题。比较有代表性的方法有T-CNN中的运动指导传播(Motion-guided Propagation, MGP)和多上下文抑制(Multi-context suppression, MCS)。

1. MGP

单帧检测结果存在很多漏检目标,而相邻帧图像检测结果中可能包含这些漏检目标。所以我们可以借助光流信息将当前帧的检测结果前向后向传播,经过MGP处理可以提高目标的召回率。如图1所示将T时刻的检测窗口分别向前向后传播,可以很好地填补T-1和T+1时刻的漏检目标。

2. MCS

使用图像检测算法将视频帧当做独立的图像来处理并没有充分利用整个视频的上下文信息。虽然说视频中可能出现任意类别的目标,但对于单个视频片段,只会出现比较少的几个类别,而且这几个类别之间有共现关系(出现船只的视频段中可能会有鲸鱼,但基本不可能出现斑马)。所以,可以借助整个视频段上的检测结果进行统计分析:对所有检测窗口按得分排序,选出得分较高的类别,剩余那些得分较低的类别很可能是误检,需对其得分进行压制(如图2)。经过MCS处理后的检测结果中正确的类别靠前,错误的类别靠后,从而提升目标检测的精度。

四、利用跟踪信息修正

上文提到的MGP可以填补某些视频帧上漏检的目标,但对于多帧连续漏检的目标不是很有效,而目标跟踪可以很好地解决这个问题。

  • 使用图像目标检测算法获取较好的检测结果;
  • 从中选取检测得分最高的目标作为跟踪的起始锚点;
  • 基于选取的锚点向前向后在整个视频片段上进行跟踪,生成跟踪轨迹;
  • 从剩余目标中选择得分最高的进行跟踪,需要注意的是如果此窗口在之前的跟踪轨迹中出现过,那么直接跳过,选择下一个目标进行跟踪;
  • 算法迭代执行,可以使用得分阈值作为终止条件。

得到的跟踪轨迹既可以用来提高目标召回率,也可以作为长序列上下文信息对结果进行修正。

五、网络选择与训练技巧

对于视频目标检测,除了要保证每帧图像的检测精度,还应该保证长时间稳定地跟踪每个目标。

评价指标:图像目标检测mAP评测对象是每个检测窗口是否精准,而视频时序一致性评测对象是目标跟踪轨迹是否精准;图像目标检测中如果检测窗口跟Ground Truth类别相同,窗口IoU大于0.5就认定为正例。而评价时序一致性时,如果检测得到的跟踪轨迹和Ground Truth(目标真实跟踪轨迹)是同一个目标(trackId相同),并且其中检测出的窗口与Ground Truth窗口的IoU大于0.5的数量超过一个比例,那么认为得到的跟踪轨迹是正例;跟踪轨迹的得分是序列上所有窗口得分的平均值。分析可知,如果一个目标的轨迹被分成多段或者一个目标的跟踪轨迹中混入其他的目标都会降低一致性。
那么如何保证视频检测中目标的时序一致性呢?

  • 保证图像检测阶段每帧图像检测的结果尽量精准;
  • 对高质量检测窗口进行跟踪并保证跟踪的质量(尽量降低跟踪中出现的漂移现象);
  • 前面两步获取到的跟踪结果会存在重叠或者临接的情况,需针对性地进行后处理。

ITLab-Inha团队提出了基于变换点检测的多目标跟踪算法,该算法首先检测出目标,然后对其进行跟踪,并在跟踪过程中对跟踪轨迹点进行分析处理,可以较好地缓解跟踪时的漂移现象,并能在轨迹异常时及时终止跟踪。

针对视频目标检测的一致性问题,提出了基于检测和跟踪的目标管道生成方法。


a.基于跟踪的目标管道/跟踪轨迹

b.基于检测的目标管道

c.基于检测和跟踪的融合管道

a 表示使用跟踪算法获取到的目标管道(红色包围框),绿色包围框代表目标的Ground Truth。可以看到随着时间推移,跟踪窗口逐渐偏移目标,最后甚至可能丢失目标。MCG-ICT-CAS提出了基于检测的目标管道生成方法,如 b 所示,基于检测的管道窗口(红色包围框)定位较为准确,但由于目标的运动模糊使检测器出现漏检。从上面分析可知:跟踪算法生成的目标管道召回率较高,但定位不准;而基于检测窗口生成的目标管道目标定位较为精准,但召回率相对前者较低。由于两者存在互补性,所以MCG-ICT-CAS进一步提出了管道融合算法,对检测管道和跟踪管道进行融合,融合重复出现的窗口并且拼接间断的管道。


基于深度学习的视频检测(二)

基于深度学习的视频检测(一)相关推荐

  1. 基于深度学习的视频检测(三) 目标跟踪

    搭建环境 Ubuntu16.04+CUDA9+cudnn7+python3.5+源码编译Tensorflow1.4+opencv3.3 基于 darkflow (yolo-v2)和 sort/deep ...

  2. 基于深度学习的视频检测(六) 行人计数,监控视频人员管理

    搭建 darkflow与 sort/deep_sort 环境 修改 darkflow/net/yolov2/predict.py import numpy as np import math impo ...

  3. CV:基于深度学习实现目标检测之GUI界面产品设计并实现图片识别、视频识别、摄像头识别(准确度非常高)

    CV:基于深度学习实现目标检测之GUI界面产品设计并实现图片识别.视频识别.摄像头识别(准确度非常高) 目录 GUI编程设计界面 产品演示 GUI编程设计界面 产品演示 视频演示:https://bl ...

  4. 一种基于深度学习的目标检测提取视频图像关键帧的方法

    摘要:针对传统的关键帧提取方法误差率高.实时性差等问题,提出了一种基于深度学习的目标检测提取视频图像关键帧的方法,分类提取列车头部.尾部及车身所在关键帧.在关键帧提取过程中,重点研究了基于SIFT特征 ...

  5. 病虫害模型算法_基于深度学习的目标检测算法综述

    sigai 基于深度学习的目标检测算法综述 导言 目标检测的任务是找出图像中所有感兴趣的目标(物体),确定它们的位置和大小,是机器视觉领域的核心问题之一.由于各类物体有不同的外观,形状,姿态,加上成像 ...

  6. 综述 | 基于深度学习的目标检测算法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:计算机视觉life 导读:目标检测(Object Det ...

  7. 基于深度学习的目标检测研究进展

    前言 开始本文内容之前,我们先来看一下上边左侧的这张图,从图中你看到了什么物体?他们在什么位置?这还不简单,图中有一个猫和一个人,具体的位置就是上图右侧图像两个边框(bounding-box)所在的位 ...

  8. 【深度学习】基于深度学习的目标检测研究进展

    原文出处:http://chuansong.me/n/353443351445 开始本文内容之前,我们先来看一下上边左侧的这张图,从图中你看到了什么物体?他们在什么位置?这还不简单,图中有一个猫和一个 ...

  9. ECCV 2018论文解读 | DeepVS:基于深度学习的视频显著性方法

    作者丨蒋铼 学校丨北京航空航天大学在校博士,大不列颠哥伦比亚大学联合培养博士 研究方向丨计算机视觉 本文概述了来自北京航空航天大学徐迈老师组 ECCV 2018 的工作 DeepVS: A Deep ...

最新文章

  1. 获取窗口句柄模拟鼠标点击
  2. 密码学基础知识(八)略说数字签名
  3. 机器学习导论�_机器学习导论
  4. P1352-没有上司的舞会【树形dp】
  5. 剑指Offer_52_正则表达式匹配
  6. 用来测试的mysql建表语句_软件测试基础——MySQL建库、建表SQL语句
  7. docker命令每次需要sudo操作解决方案
  8. 继承接口Java多线程(二)、启动一个线程的3种方式
  9. oracle j2ee数据库,J2EE连接远程Oracle数据库表
  10. cydia多开微信_微信及陌陌多开教程:多开+分别推送消息+一键隐藏方法
  11. Linux命令 - tar命令
  12. linux中U盘用fdisk等命令查询不到
  13. 联想G480安装WinXp
  14. agx上搭建ros2
  15. 如何添加/去掉开机的启动项
  16. k8s安装tekton,编写task
  17. java中构造方法的理解,super()与构造方法,无参,有参构造方法,this()与构造方法
  18. 脑裂的产生与解决方案
  19. 上马”纯视觉L2/L2+级ADAS方案,特斯拉并非第一家
  20. 最新仿商城发卡网源码,带图片展示

热门文章

  1. 我的世界linux版账号,我的世界免费正版号
  2. 上海经久生物任命田丰先生为首席执行官;歌礼在欧洲多个国家递交利托那韦上市许可申请 | 医药健闻...
  3. TortoiseGit 要私钥和公钥设置
  4. 动手学深度学习之softmax实现
  5. PC端登录有道云笔记出现网络错误提示时的解决方法
  6. JAVA堆里放啥,栈里放啥,一看就懂
  7. 网络再现新的虐猫图片!!
  8. mysql 5.6 mysqli_php-如何安装MySQLi
  9. 用Python快乐学数学,Github万星神器Manim简介
  10. React 实现计时器