ILSVRC2016目标检测任务回顾——视频目标检测(VID)
转自知乎《深度学习大讲堂》
雷锋网(公众号:雷锋网)按:本文作者王斌,中科院计算所前瞻研究实验室跨媒体计算组博士生,导师张勇东研究员。2016年在唐胜副研究员的带领下,作为计算所MCG-ICT-CAS团队核心主力队员(王斌、肖俊斌),参加了ImageNet大规模视觉识别挑战赛(ILSVRC)的视频目标检测(VID)任务并获得第三名。目标检测相关工作受邀在ECCV 2016 ImageNet和COCO竞赛联合工作组会议(ImageNet and COCO Visual Recognition Challenges Joint Workshop)上做大会报告。
本文的姐妹篇:《ILSVRC2016目标检测任务回顾:图像目标检测(DET)》
图像目标检测任务在过去三年的时间取得了巨大的进展,检测性能得到明显提升。但在视频监控、车辆辅助驾驶等领域,基于视频的目标检测有着更为广泛的需求。由于视频中存在运动模糊,遮挡,形态变化多样性,光照变化多样性等问题,仅利用图像目标检测技术检测视频中的目标并不能得到很好的检测结果。如何利用视频中目标时序信息和上下文等信息成为提升视频目标检测性能的关键。
ILSVRC2015新增加了视频目标检测任务(Object detection from video, VID),这为研究者提供了良好的数据支持。ILSVRC2015的VID评价指标与图像目标检测评价指标相同——计算检测窗口的mAP。然而对于视频目标检测来说,一个好的检测器不仅要保证在每帧图像上检测准确,还要保证检测结果具有一致性/连续性(即对于一个特定目标,优秀的检测器应持续检测此目标并且不会将其与其他目标混淆)。ILSVRC2016针对这个问题在VID任务上新增加了一个子任务(详见第四部分——视频目标检测时序一致性介绍)。
在ILSVRC2016上,在不使用外部数据的VID两个子任务上,前三名由国内队伍包揽(见表1、表2)。本文主要结合NUIST,CUVideo,MCG-ICT-CAS以及ITLab-Inha四个队伍公布的相关资料对ILSVRC2016中的视频目标检测方法进行了总结。
表1. ILSVRC2016 VID results(无外部数据)
表2. ILSVRC2016 VID tracking result(无外部数据)
通过对参赛队伍的相关报告[2-5]进行学习了解,视频目标检测算法目前主要使用了如下的框架:
将视频帧视为独立的图像,利用图像目标检测算法获取检测结果;
利用视频的时序信息和上下文信息对检测结果进行修正;
基于高质量检测窗口的跟踪轨迹对检测结果进一步进行修正。
本文分为四部分,前三个部分介绍如何提升视频目标检测的精度,最后介绍如何保证视频目标检测的一致性。
一、单帧图像目标检测
此阶段通常将视频拆分成相互独立的视频帧来处理,通过选取优秀的图像目标检测框架以及各种提高图像检测精度的技巧来获取较为鲁棒的单帧检测结果。《ILSVRC2016目标检测任务回顾(上)--图像目标检测》已对此进行详细总结,这里不再重复。
结合自己实验及各参赛队伍的相关文档,我们认为训练数据的选取以及网络结构的选择对提升目标检测性能有至关重要的作用。
训练数据选取
首先对ILSVRC2016 VID训练数据进行分析: VID数据库包含30个类别,训练集共有3862个视频片段,总帧数超过112万。单从数字上看,这么大的数据量训练30个类别的检测器似乎已经足够。然而,同一个视频片段背景单一,相邻多帧的图像差异较小。所以要训练现有目标检测模型,VID训练集存在大量数据冗余,并且数据多样性较差,有必要对其进行扩充。在比赛任务中,可以从ILSVRC DET和ILSVRC LOC数据中抽取包含VID类别的图片进行扩充。CUVideo、NUIST和MCG-ICT-CAS使用ILSVRC VID+DET作为训练集,ITLab-Inha使了ILSVRC VID+DET、COCO DET等作为训练集。需要注意的是在构建新的训练集的时候要注意平衡样本并去除冗余(CUVideo和MCG-ICT-CAS抽取部分VID训练集训练模型,ITLab-Inha在每个类别选择一定数量图像参与训练,NUIST使用在DET上训练的模型对VID数据进行筛选)。对于同样的网络,使用扩充后的数据集可以提高10%左右的检测精度。
网络结构选取
不同的网络结构对于检测性能也有很大影响。我们在VID验证集上进行实验:同样的训练数据,基于ResNet101[6]的Faster R-CNN[7]模型的检测精度比基于VGG16[8]的Faster R-CNN模型的检测精度高12%左右。这也是MSRA在2015年ILSVRC和COCO比赛上的制胜关键。今年比赛前几名的队伍基本上也是使用ResNet/Inception的基础网络,CUVideo使用269层的GBD-Net[9]。
二、改进分类损失
目标在某些视频帧上会存在运动模糊,分辨率较低,遮挡等问题,即便是目前最好的图像目标检算法也不能很好地检测目标。幸运的是,视频中的时序信息和上下文信息能够帮助我们处理这类问题。比较有代表性的方法有T-CNN[10]中的运动指导传播(Motion-guided Propagation, MGP)和多上下文抑制(Multi-context suppression, MCS)。
MGP
单帧检测结果存在很多漏检目标,而相邻帧图像检测结果中可能包含这些漏检目标。所以我们可以借助光流信息将当前帧的检测结果前向后向传播,经过MGP处理可以提高目标的召回率。如图1所示将T时刻的检测窗口分别向前向后传播,可以很好地填补T-1和T+1时刻的漏检目标。
图1. MGP示意图[10]
MCS
使用图像检测算法将视频帧当做独立的图像来处理并没有充分利用整个视频的上下文信息。虽然说视频中可能出现任意类别的目标,但对于单个视频片段,只会出现比较少的几个类别,而且这几个类别之间有共现关系(出现船只的视频段中可能会有鲸鱼,但基本不可能出现斑马)。所以,可以借助整个视频段上的检测结果进行统计分析:对所有检测窗口按得分排序,选出得分较高的类别,剩余那些得分较低的类别很可能是误检,需对其得分进行压制(如图2)。经过MCS处理后的检测结果中正确的类别靠前,错误的类别靠后,从而提升目标检测的精度。
图2. 多上下文抑制示意图[10]
三、利用跟踪信息修正
上文提到的MGP可以填补某些视频帧上漏检的目标,但对于多帧连续漏检的目标不是很有效,而目标跟踪可以很好地解决这个问题。CUVideo, NUIST, MCG-ICT-CAS以及ITLab-Inha四支参赛队伍都使用了跟踪算法进一步提高视频目标检测的召回率。使用跟踪算法获取目标序列基本流程如下:
使用图像目标检测算法获取较好的检测结果;
从中选取检测得分最高的目标作为跟踪的起始锚点;
基于选取的锚点向前向后在整个视频片段上进行跟踪,生成跟踪轨迹;
从剩余目标中选择得分最高的进行跟踪,需要注意的是如果此窗口在之前的跟踪轨迹中出现过,那么直接跳过,选择下一个目标进行跟踪;
算法迭代执行,可以使用得分阈值作为终止条件。
得到的跟踪轨迹既可以用来提高目标召回率,也可以作为长序列上下文信息对结果进行修正。
四、网络选择与训练技巧
对于视频目标检测,除了要保证每帧图像的检测精度,还应该保证长时间稳定地跟踪每个目标。为此,ILSVRC2016新增一个VID子任务,此任务计算每个目标跟踪轨迹(tracklet)/管道(tubelet)的mAP来评测检测算法的时序一致性或者说跟踪连续性的性能。
评价指标:图像目标检测mAP评测对象是每个检测窗口是否精准,而视频时序一致性评测对象是目标跟踪轨迹是否精准;图像目标检测中如果检测窗口跟Ground Truth类别相同,窗口IoU大于0.5就认定为正例。而评价时序一致性时,如果检测得到的跟踪轨迹和Ground Truth(目标真实跟踪轨迹)是同一个目标(trackId相同),并且其中检测出的窗口与Ground Truth窗口的IoU大于0.5的数量超过一个比例,那么认为得到的跟踪轨迹是正例;跟踪轨迹的得分是序列上所有窗口得分的平均值。分析可知,如果一个目标的轨迹被分成多段或者一个目标的跟踪轨迹中混入其他的目标都会降低一致性。
那么如何保证视频检测中目标的时序一致性呢?本文认为可以从以下三个方面入手:
保证图像检测阶段每帧图像检测的结果尽量精准;
对高质量检测窗口进行跟踪并保证跟踪的质量(尽量降低跟踪中出现的漂移现象);
前面两步获取到的跟踪结果会存在重叠或者临接的情况,需针对性地进行后处理。
ITLab-Inha团队提出了基于变换点检测的多目标跟踪算法[11],该算法首先检测出目标,然后对其进行跟踪,并在跟踪过程中对跟踪轨迹点进行分析处理,可以较好地缓解跟踪时的漂移现象,并能在轨迹异常时及时终止跟踪。
针对视频目标检测的一致性问题,作者所在的MCG-ICT-CAS提出了基于检测和跟踪的目标管道生成方法。
a.基于跟踪的目标管道/跟踪轨迹
b.基于检测的目标管道
c.基于检测和跟踪的融合管道
图3. 基于检测/跟踪/检测+跟踪管道示意图
图3-a表示使用跟踪算法获取到的目标管道(红色包围框),绿色包围框代表目标的Ground Truth。可以看到随着时间推移,跟踪窗口逐渐偏移目标,最后甚至可能丢失目标。MCG-ICT-CAS提出了基于检测的目标管道生成方法,如图3-b所示,基于检测的管道窗口(红色包围框)定位较为准确,但由于目标的运动模糊使检测器出现漏检。从上面分析可知:跟踪算法生成的目标管道召回率较高,但定位不准;而基于检测窗口生成的目标管道目标定位较为精准,但召回率相对前者较低。由于两者存在互补性,所以MCG-ICT-CAS进一步提出了管道融合算法,对检测管道和跟踪管道进行融合,融合重复出现的窗口并且拼接间断的管道。
如图4所示,相对于单独的检测或者跟踪生成的目标管道,融合后目标管道对应的检测窗口的召回率随着IoU阈值的增加一直保持较高的值,说明了融合后的窗口既能保持较高的窗口召回率,也有较为精准的定位。融合后的目标管道mAP在VID测试集上提升了12.1%。
图4.不同方法生成目标管道的召回率
总结
本文主要结合ILSVRC2016 VID竞赛任务对视频目标检测算法进行介绍。相对于图像目标检测,当前的视频目标检测算法流程比较繁琐且视频自身包含的信息没有被充分挖掘。如何精简视频目标检测流程使其具有实时性,如何进一步挖掘视频包含的丰富信息使其具有更高的检测精度,以及如何保证视频目标检测的一致性或许是视频目标检测接下来要着重解决的问题。
参考文献
[3]NUIST slide
[6]He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[J]. arXiv preprint arXiv:1512.03385, 2015.
[7]Ren S, He K, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks[C]//Advances in neural information processing systems. 2015: 91-99.
[8]Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[J]. arXiv preprint arXiv:1409.1556, 2014.
[9]Zeng X, Ouyang W, Yang B, et al. Gated bi-directional cnn for object detection[C]//European Conference on Computer Vision. Springer International Publishing, 2016: 354-369.
[10]Kang K, Li H, Yan J, et al. T-cnn: Tubelets with convolutional neural networks for object detection from videos[J]. arXiv preprint arXiv:1604.02532, 2016.
[11]Lee B, Erdenee E, Jin S, et al. Multi-class Multi-object Tracking Using Changing Point Detection[C]//European Conference on Computer Vision. Springer International Publishing, 2016: 68-83.
ILSVRC2016目标检测任务回顾——视频目标检测(VID)的更多相关文章
- 语义分割(semantic segmentation) 常用神经网络介绍对比-FCN SegNet U-net DeconvNet,语义分割,简单来说就是给定一张图片,对图片中的每一个像素点进行分类;目标检测只有两类,目标和非目标,就是在一张图片中找到并用box标注出所有的目标.
from:https://blog.csdn.net/u012931582/article/details/70314859 2017年04月21日 14:54:10 阅读数:4369 前言 在这里, ...
- 视频显著性检测-----Predicting Video Saliency using Object-to-Motion CNN and Two-layer Convolutional LSTM
帧内显著性检测: 将卷积网络的多层特征进行组合通过unsampling 得到粗显著性预测: 帧间显著性检测: (粗检测结果+新卷积网络的特征图,最后+之前卷积网络的卷积特征输入到LSTM中)进行预测. ...
- CVPR2018 关于视频目标跟踪(Object Tracking)的论文简要分析与总结
本文转自:https://blog.csdn.net/weixin_40645129/article/details/81173088 CVPR2018已公布关于视频目标跟踪的论文简要分析与总结 一, ...
- 斯坦福新深度学习系统 NoScope:视频对象检测快1000倍
以作备份,来源http://jiasuhui.com/archives/178954 本文由“新智元”(微信ID:AI_era)编译,来源:dawn.cs.stanford.edu,编译:刘小芹 斯坦 ...
- 视频人脸检测——OpenCV版(三)
视频人脸检测是图片人脸检测的高级版本,图片检测详情点击查看我的上一篇<图片人脸检测——OpenCV版(二)> 实现思路: 调用电脑的摄像头,把摄像的信息逐帧分解成图片,基于图片检测标识出人 ...
- 视频人脸检测——Dlib版(六)
往期目录 视频人脸检测--Dlib版(六) OpenCV添加中文(五) 图片人脸检测--Dlib版(四) 视频人脸检测--OpenCV版(三) 图片人脸检测--OpenCV版(二) OpenCV环境搭 ...
- OpenCV + python 实现人脸检测(基于照片和视频进行检测)
OpenCV + python 实现人脸检测(基于照片和视频进行检测) Haar-like 通俗的来讲,就是作为人脸特征即可. Haar特征值反映了图像的灰度变化情况.例如:脸部的一些特征能由矩形特征 ...
- 实战小项目之ffmpeg推流yolo视频实时检测
之前实现了yolo图像的在线检测,这次主要完成远程视频的检测.主要包括推流--収流--检测显示三大部分 首先说一下推流,主要使用ffmpeg命令进行本地摄像头的推流,为了实现首屏秒开使用-g设置gop ...
- OpenCV计算机视觉学习(13)——图像特征点检测(Harris角点检测,sift算法)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 前言 ...
随机推荐
- As3截图转换为ByteArray传送给后台node的一种方法
最近将以前用As3+Php做的一个画板拿出来改成了As3+nodejs(expressjs4). Node: 1. 将图片存放的路径设置为静态公开的路径. app.use(express.static ...
- vscode 折叠所有区域代码的快捷键
折叠:ctrl + L ctrl + 0(主键盘区的0,不是小键盘区的0) 展开:ctrl + K ctrl + J 老是忘记,在此记录
- BAT文件语法和技巧
首先,批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任 ...
- 利用Maven插件将依赖包、jar/war包及配置文件输出到指定目录
写在前面 最近遇到一个朋友遇到一个项目需要将maven的依赖包和配置文件分开打包然后用脚本执行程序.这样的好处在于可以随时修改配置文件内容及查看jar包.如果将所有打成一个jar包就会有个问题(例 ...
- PHP类继承、接口继承关系概述
PHP类继承: PHP类不支持多继承,也就是子类只能继承一个父类,但是支持多层次继承,比如: class frist{ public function __construct(){ echo &quo ...
- Win10更新后真正可用VC++6版本
1.首先,我并不支持继续用VC6,毕竟太老太老了...除了VS,如果只是学C,那你完全可以用其它一些工具...当然除非你也是像我一样被逼无奈. 2.本次找了N多个版本,问题就是Win10周年更新包后, ...
- Java集合和泛型
集合 常用的集合有ArrayList,TreeSet,HashMap,HashSet. ArrayList 最常用的集合,每次插入都在后面追加元素. TreeSet 以有序状态保持并可防止重复.当你需 ...
- Sqlite的安装和简单使用
Sqlite 1 安装 首先,下载相应的版本: https://sqlite.org/download.html 其次,解压到本地,并添加到环境变量. 然后,打开 CMD 创建,输入 sqlite3 ...
- 028、HTML 标签1列表、图片、表格
内容简单看一下理解就行了. HTML 是用来描述网页的一种语言.就是用来编写网页的语言 内容:换行.分割,标签属性,编码方式设置,字体标签,特殊符号,列表.图片.表格标签############### ...
- Mysql表类型(存储引擎)的比较
面试官问:你知道mysql有哪些存储引擎,区别是啥? 我:一脸闷逼,于是乎下来补一补,以作备查 1.和大多数数据库不同,MySQL 中有一个存储引擎的概念,针对不同的存储需求可以选择最优的存储引擎. ...