视频中的目标检测与图像中的目标检测具体有什么区别?
对于这个问题在知乎中看到了一篇文章,感觉讲的不错,虽然是17年写的,连接在文末给出。
原文如下:
抽空来简答一下这个问题,恰好也是我们比较关注的一个方向。
简单来说,视频检测是比单张图片检测多了Temporal Context(时间上下文)的信息。不同方法想利用这些Context来解决的问题并不相同。一类方法是关注如何使用这部分信息来加速Video Detection。因为相邻帧之间存在大量冗余,如果可以通过一些廉价的办法来加速不损害性能,在实际应用中还是很有意义的。另一类方法是关注这部分信息可以有效减轻单帧图片检测中由于运动模糊,物体面积过小导致的困难,从而来提升性能。
当然最理想的方法是能又快又好啦:)当然,这里有一些很简单的baseline方法,例如直接使用tracking关联。这类方法其实并没有深入到模型本身,一般仅仅局限于后处理步骤,虽然也可以取得一定的结果提升,但是个人觉得并不是很优美。比较关注的是来自以下两个组的工作吧。
-
CUHK: Xiaogang Wang 这面我了解到的有三篇文章,最开始 (TPAMI Short)是通过Motion的信息以及多类之间的Correlation来对单帧图像detector的输出进行后处理,算是在前面提到的Baseline方法上的小改进。后续的文章(CVPR 16)在这个基础上,引入了一个Temporal CNN对每一个Tubelet进行rescore。这样通过Temporal的信息来重新评估每个proposal的置信度。最近的工作(CVPR17)将Proposal生成这个步骤,也从静态图片拿到了时序上来做。除此之外,对于每个Tubelet的分类,也采取了流行的LSTM。
-
MSRA: Jifeng Dai 相对来讲,这面的工作更干净,思路更清晰一些。个人来说更喜欢。这面的两个工作其实思想类似,但是恰好对应于前文提到的加速和性能提升两个目的。其核心都在于通过快速计算Optical Flow来捕捉视频中的Motion信息,然后通过这个Flow的信息使用Bilinear Sampling对之前的Feature Map进行Warp(也就是通过Optical Flow来预测当前帧的Feature Map)。有了这样的信息之后,如果我们想加速,那么可以直接使用预测的Feature Map来输出结果;如果想得到更好的结果,可以将预测的Feature Map和当前帧计算出来的Feature Map融合起来一起输出结果。值得一提的是,后者也是目前唯一一个End to End的Video Detection方法。
另外有一些零碎一些的工作,基本都是在后处理过程中,处理rescore detection的问题,例如Seq-NMS等等。
最后呢,想来抛砖引玉,提出一个我们观察到在Video Detection中的问题,我们也写了一篇paper来讲这个事情([1611.06467] On The Stability of Video Detection and Tracking) 也就是在Video Detection中的稳定性(Stability)的问题。见下面这个Video,其实两个Detector如果论准确性来讲,差别并不大,然而对于人眼来看,孰优孰劣一目了然。
这样的稳定性的问题,在实际的应用中其实也会带来很多困扰。例如在自动驾驶中,需要稳定的2D检测框来进行车辆距离和速度的估计。不稳定的检测都会极大影响后续任务的准确性。所以呢,我们在文章中首先提出了一个定量的指标来衡量这种稳定性,然后评测了几种简单的Baseline。我们还计算了这个Stability指标和常用的Accuracy指标之间的Correlation,发现其实这两种指标其实相关性并不大,也就是说分别捕捉到了Video Detection中两方面的一个质量。希望这个工作能给大家一些启发,在改进准确性之余,也考虑一下同等重要的稳定性如何改进。
综上,Video Detection这个问题,不管是从实用性而言,还是从学术研究的角度来说,都是很不错的题目。在RBG大神和Kaiming大神不断的工作下,Still Image Detection改进空间越来越少。与其拼命在Still Image下拼那么0.x个点的mAP,不如退一步,挖掘一些新的设定,会是一篇海阔天空 😄