AttentionNet 详解
AttentionNet: Aggregating Weak Directions for Accurate Object Detection
在调整 Bounding Box 的位置时,大多数算法使用的都是以回归类型的损失,直接优化最后的 Bounding Box 的坐标值。通过这种方法得到的坐标值准确性可能不会很高。我们可以仔细思考动物的视觉锁定一个目标的过程,首先大体看一张图片,对于要找到的物体,我们会有一个大致的方位。然后注意力会向那个物体的大致方向转移,直到锁定目标。
AttentionNet 就可以理解为模仿动物视觉的这样一个过程。它是通过不断迭代的方法直到找到最后的 Bounding Box。同时 AttentionNet 也是一个一体的对象检测网络,它不需要分离任何的模型进行单独的训练。
图 1:AttentionNet 的过程
我们来看图 1,对于这些图片,我们大致能锁定其中人的位置,将 Bounding Box 的左上角和右下角初始化为图像的左上角和右下角,然后 Bounding Box 的左上角和右下角同时向人位置的大体方位进行迭代,迭代到一定的次数,Bounding Box 会在人的位置附近收敛。停止调整其自身位置。此过程就是 AttentionNet 进行迭代定位的过程。不过对于单独的 AttentionNet 只能实现单目标的检测。要想实现多目标的检测,请看如下章节的介绍。
这种通过迭代检测物体的方式,将物体的存在性判断与边界框的优化,集成到了一个卷积神经网络当中。将边界框的回归问题转化为物体大体方向的分类问题。其过程模仿了人类和动物定位物体的过程。换一个角度思考,也可以理解为多个模型的集成。对于定位的最终目标,需要多个步骤来预测。其中每次定位的方向都是模糊的方向。但是对于多次预测来说,多个方向的集合足以预测一个准确的位置。
一、Attention Net
我们将输入图像 warp 成固定大小。输入 AttentionNet。记 Bounding Box 的左上角坐标为 TL,右下角坐标为 BR。
那么对于左上角坐标(TL)有 5 种情况:
- 向右移动( → \rightarrow →)
- 向下移动( ↓ \downarrow ↓)
- 向右下角移动( ↘ \searrow ↘)
- 不移动( ∙ \bullet ∙)
- 不是对象(F)
同理对于右下角坐标(BR)也有 5 种情况:
- 向左移动( ← \leftarrow ←)
- 向上移动( ↑ \uparrow ↑)
- 向左上角移动( ↖ \nwarrow ↖)
- 不移动( ∙ \bullet ∙)
- 不是对象(F)
.
将图像输入 AttentionNet 后会得到左上角和右下角分别移动的方向。我们记每次移动的距离为超参数 l l l,默认的 l = 30 ( p i x e l ) l=30(pixel) l=30(pixel),迭代的最大次数为 50,防止发散。重复迭代过程,直到图像的两个角的预测值都为 F 或都为 ∙ \bullet ∙ 时停止迭代。如果两个角的预测值都为 F 时,图像将以没有实例停止迭代。如果两个角的预测值都为 ∙ \bullet ∙ 时,此时的图像的边界即为最后 Bounding Box 的边界。
记停止迭代的边界框为 b,输出的 feature map 为 Y T L , Y B R ∈ R 5 Y_{TL},Y_{BR}\in\mathbb{R}^5 YTL,YBR∈R5,检测的分数为 S b S^b Sb,其中 S