目标检测与目标识别
2020-09-21
目标检测(Object Detection)和目标跟踪(Object Tracking)的区别
Object Recognition: which object is depicted in the image?
-
input: an image containing unknown object(s) Possibly, the position of the object can be marked in the input, or the input might be only a clear image of (not-occluded) object.
-
output: position(s) and label(s) (names) of the objects in the image
The positions of objects are either acquired form the input, or determined based on the input image.
When labeling objects, there is usually a set of categories/labels which the system "knows" and between which the system can differentiate (e.g. object is either dog, car, horse, cow or bird).
Object detection: where is this object in the image?
-
input: a clear image of an object, or some kind of model of an object (e.g. duck) and an image (possibly) containing the object of interest
-
output: position, or a bounding box of the input object if it exists in the image (e.g. the duck is in the upper left corner of the image)
参考:https://www.ziiai.com/blog/260
在计算机视觉中,目标检测是在图像和视频(一系列的图像)中扫描和搜寻目标,概括来说就是在一个场景中对目标进行定位和识别,如下图中展示的,我们要检测图像中的车辆,这就是典型的目标检测实例。
目标跟踪就像你跟踪某个人,一直尾随着他。我们在动画图像(.gif)或者视频中跟踪一个目标是如何移动的,它要到哪里去,以及它的速度。实时锁定一个(一些)特定的移动目标。
有两种方式来“跟踪”一个目标。密集跟踪(a series detections)和稀疏跟踪(estimation+common sense)。
1.跟踪是一系列的检测。假设在交通录像中,想要检测一辆车或者一个人,我使用录像不同时刻的快照(通过暂停键)来检测我的目标,一辆车或一个人。然后通过检查我的目标是如何在录像不同的画面中移动(对录像每一帧进行目标检测,比如YOLO算法,就能知道我的目标在不同的画面里的坐标),由此实现对目标的追踪。
比如要计算目标的速度,就可以通过两帧图像中目标坐标的变化来计算目标移动距离,除以两帧画面的间隔时间。
因为我们要处理录像所有的快照(每一帧)的像素,这些算法需要密集的跟踪方法(dense method of tracking)来实现,对于每一帧画面图像,都要进行目标检测。
就拿滑窗法来举例,需要处理图像中的所有像素,所以这种方法进行目标跟踪,计算量将会非常大。
当我们只是把跟踪处理为“一系列的检测”,就会得到如下的轨迹。根据不同时间点目标的位置,把这些位置坐标由时间线串联起来得到目标轨迹。
2.第一种方法(上述的方法)更像是欺骗,我们实际上并没有“跟踪”而是在不同的时间点来“检测”它。改进以后的方法是“动态检测(detection with dynamics)”,考虑同样的场景,你想要跟踪路上的一辆车或者一个人,通过检查它在某个时刻t的位置,我们首先估计它在其他某个时刻的位置,比如t+5时刻。所以,我们要试图判断出车的轨迹。使用我们的估计和车在t+5时刻的实际图像,我们用不同的算法来跟踪它。
当我们只处理估计位置附近的像素时,就是稀疏跟踪方法。当然,它更快(处理更少的像素),我们只需要检测我们估计的位置附近的像素就行,相比于密集跟踪方法,减少了大量的计算。。使用动态检测方法,我们得到更平滑的曲线来刻画目标的移动位置(轨迹),因为我们将我们的估计(estimation)和一般的认识(common sense)应用到了跟踪中。
目标检测和目标跟踪的异同:
(1)目标检测可以在静态图像上进行,而目标跟踪就是需要基于录像(视频)。
(2)如果对每秒的画面进行目标检测,也可以实现目标跟踪。
(3)目标跟踪不需要目标识别,可以根据运动特征来进行跟踪,而无需确切知道跟踪的是什么,所以如果利用视频画面之间(帧之间)的临时关系,单纯的目标跟踪可以很高效的实现。
(4)基于目标检测的目标跟踪算法计算非常昂贵,就如之前讲的,需要对每帧画面进行检测,才能得到目标的运动轨迹。而且,只能追踪已知的目标,这个容易理解,因为目标检测算法就只能实现已知类别的定位识别。
因此,目标检测要求定位+分类。而目标跟踪,分类只是一个可选项,根据具体问题而定,我们可以完全不在乎跟踪的目标是什么,只在乎它的运动特征。实际中,目标检测可以通过目标跟踪来加速,然后再间隔一些帧进行分类(好几帧进行一次分类)。在一个慢点的线程上寻找目标并锁定,然后在快的线程上进行目标跟踪,运行更快。