Review of Course Computer Vision Lecture 13:Object Detection

Review of Course Computer Vision Lecture 13:Object Detection

January 04, 2024

为期末考试复习做个准备。

总文章地址

Lecture 13: Object Detection

目标检测就是检测并定位目标,且分类。

几个难点:

  1. 光照的不同。
  2. 视角的不同。
  3. 形状的畸变。
  4. 相同种类但也形状各异。

过去有许多目标检测的比赛,不过看起来现在都基本停办了。

接下来给出一些标准的定义。

True Positive: The overlap of the prediction with the ground truth is more than 0.5。

False Positive: The overlap of the prediction with the ground truth is less than 0.5。

False Negative: The objects that our model doesn’t find。

True Negative: There is no object and our model doesn’t find。

Precision: 多少个目标检测是正确的。

Recall: 多少个目标被正确地检测了出来。

我们的算法会对一个检测评分。而如果要认可这个检测,我们应设置阈值,大于该阈值时才认可该检测。若阈值过小,则 recall 会极高无比,precision 则会极低;若阈值过大,recall 会极低,但 precision 会极高。以下是不同的阈值 recall 和 precision 的图表。

A simple object detector

一个简单的思路是使用 HOG 和滤波器来检测。

预先地,我们对每个目标会求出其的 HOG 特征图模板。

在这个基础上,我们使用滑动窗口,对每个窗口进行 HOG 来提取特征图,来比较特征图模板。若比较吻合,则认为找到了该目标。

但实际上由于窗口大小被固定了,我们好像不好去找所有目标。所以需要多尺度窗口。

一个比较容易想到的思路就是创建 HOG 金字塔。

这种检测方法叫做 Dalal-Triggs Detector。

Deformable parts model

上文提到的检测方法是需要物体模板的,但很多时候物体会畸变,此时就没有特征模板能使用了。

也就是说,整体性考虑物体已经不能处理畸变情况了,我们将考虑局部特征。

Deformable parts model 的思路就是将一个目标看作多个部分的集合,每个部分都是局部特征。

一般将这种模型构建成星型模型的形式,比如检测人,人有头有左手右手等等,此时星的根是整个人,头和其它部位都是叶子。

于是,每个模型就有多种特征图,一种是全局特征图,也就是目标的整体特征图,一种是目标的各个部位的局部特征图。一般而言,局部特征图的分辨率会更高,这样就能检测到更多细节。

一个模型可以被描述成这样一个向量 $(F_0,P_1,\cdots,P_n,b)$,其中 $F_0$ 是根滤波器 (全局滤波器),$P_1,\cdots,P_n$ 分别是局部模型,$b$ 是偏差。$P_i$ 可以被描述成一个三维向量 $(F_i,v_i,d_i)$,其中 $F_i$ 是对应的局部滤波器;$v_i$ 是向量,表示目标位置 (不畸变时的位置) 与根位置的相对位置差;$d_i$ 表示目标位置 (不畸变时的位置) 所有可能的替换的畸变损失函数。

此时定义检测的评估分数为
$$
\mathrm{score}=\sum_{i=0}^n F_i\phi(p_i,H)-\sum_{i=1}^n d_i(\Delta x_i,\Delta y_i,\Delta x_i^2, \Delta y_i^2).
$$
前半部分是容易理解的,即所有局部滤波器和全部滤波器的分数和。

后半部分中,$\Delta x_i$ 表示在 $x$ 方向上,第 $i$ 个部分实际上应该在的位置和现在的位置之差,$\Delta y_i$ 定义类似,$d_i$ 是个设定的函数。

Detection pipeline

检测步骤如下:

  1. 确定全局和局部滤波器 $F_i$。
  2. 计算输入图像的 HOG 特征图。
  3. 应用滤波器们 $F_i\phi(p_i,H),i=0,1,\cdots,n$。
  4. 计算畸变带来的损失,即上文中的 $v_i=(\Delta x_i,\Delta y_i)$ 以及 $d_i(\Delta x_i,\Delta y_i, \Delta x_i^2, \Delta y_i^2)$。
  5. 计算每个部分的分数,即 $\mathrm{score}=F_i\phi(p_i,H)-d_i(\Delta x_i,\Delta y_i, \Delta x_i^2, \Delta y_i^2)$。
  6. 求和,即 $\mathrm{score}=\sum_{i=0}^n F_i\phi(p_i,H)-\sum_{i=1}^n d_i(\Delta x_i,\Delta y_i,\Delta x_i^2, \Delta y_i^2).$