DeNet: Scalable Real-time Object Detection with Directed Sparse Sampling ICCV2017
An easily extendedTheanobased code:
https://github.com/lachlants/denet
本文针对候选区域提取这个步骤进行加速: 使用角点提取来初步过滤大部分候选区域
1.2. Probabilistic Object Detection
这里对候选区域提取这个步骤使用了一些符号表示方法来描述, 可能的候选区域位置有很多,计算量很大。 所以在损失一定定位精度的情况下, subsampling the output bounding boxes 是一个合理的选择,例如 Faster R-CNN and YOLO 大概采样了一万到十万个 bounding boxs
2 Directed Sparse Sampling (DSS)
2.1. Corner-based RoI Detector
估计每个位置是否是 4 corner types 中的一个, Pr(t|k,y,x) ,其中 t 是一个二值变量, indicating the presence of a corner of type k ∈ { top left,top right,bottom left,bottom right } at position (x,y) in the input image
因为问题中天然的平移不变性,可以使用一个 标准的CNN网络来快速有效的进行角点分布估计,这个CNN可以在 有矩形框标记的数据上训练。
有了 corner distribution 之后,我们使用一个 Naive Bayesian Classifier 来确定每个角点对应得矩形框内是否包含物体
对于含有物体的矩形框,我们对矩形框相对固定位置进行采样,得到一个固定长度的 feature vector ,我们使用这个向量输入分类器,得到最终结果:该矩形框是否包含物体。
It is important that the feature is uniquely associated with each bounding box 特征是独一无二的 uniquely
2.2. Training
我们的损失函数定义如下: corner probability distribution, final classification distribution and bounding box regression cost
2.3. Detection Model
这里我们使用了 Residual neural networks 作为基础模型,一个34层,一个是 101层。
As the base model to our networks we selected the 34 layer, 21M parameter ResNet-34 model (DeNet-34) and the 101 layer, 45M parameter ResNet-101 model (DeNet-101)
我们的输入图像尺寸是 512*512,去掉最后的均值池化和全连接层,在角点检测器后面加了两个反卷积层。 corner detector 用于生成 corner distribution,通过一个 learnt linear projection 生成一个 feature sampling map。 反卷积层主要用于放大特征图尺寸。
corner detector 之后是 sparse layer,通过观察角点生成 一组 bounding boxes 。然后我们在这些矩形框里对应的 feature sampling map 采样,得到一个长度为 7 × 7 × F s + 2 的特征向量,该向量输入 a relatively shallow fully connected network 得到最终结果: generate the final classification and fine tuned bounding box for each sampling RoI
2.3.1 Skip Layer Variant
加了一些 Skip Layer 改进
2.3.2 Wide Variant
用了更大的特征图尺寸,采样了更多的位置
3.2. Identifying Sampling Bounding Boxes (RoIs)
角点分布的快速搜索如下: