Object detection 之 OverFeat
OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks
OverFeat:利用卷积网络进行识别、定位和检测
ICLR’ 14
摘要
文章提出一个基于卷积神经网络的综合框架,用来解决分类、定位和检测任务。文章展示了如何用卷积网络实现多尺寸的滑窗法,此外通过深度学习的方法预测物体的边框来进行定位,对边框进行累计而不是抑制来提升检测的置信度。本文发现,不同的任务可以在一个共享权重的CNN上同时进行学习。本文提出的方法获得了ILSVRC2013的定位比赛冠军,并且在分类和检测比赛中也获得具有竞争性的结果。
按照作者原话OverFeat是一个算子,类似LBP、HOG。
[Finally, we release a feature extractor from our best model called OverFeat]
主要观点
- 多任务的训练可以同时提高所有任务的表现力,多任务之间有互补的关系。分类、定位、检测。
- 通过积累accumulate目标预测框,而不是抑制suppress,可以在目标检测中取得更好的结果。
- 提出了offset pool,类似于SPP想解决多尺度输入问题。
Classification分类任务
model design and training模型设计和训练
用的网络结果类似与AlexNet,做了几处微小的改进,提出了两种模型,一个是快速模型fast model,一个是准确模型accurate model。模型结果如下:
文中给出了训练时用的参数:原图降采样到256x256,然后随机crop5个221x221,mini-batch=128,权重初始化用高斯分布,优化器SGD,
l
r
=
1
0
−
5
lr=10^{-5}
lr=10−5,momentum=0.6等等
Multi-Scale Classification
这小节堪称这篇论文的核心,作者提出了一个叫offset pool的池化原理,先放图。
这张图是offset pool的一维解释。
目的和SPP的想法一样,多尺度的input经过卷积层后得到多尺度的feature maps,但是这些不同尺度的feature maps不能送进全连接层,需要但是对所有feature maps经过平均后,最终的就是类别数
C
C
C
ConvNets and Sliding Window Efficiency
讨论了文章的检测速度比普通的滑窗法快的原因,就是和R-CNN比,不需要对每个proposals进行一次CNN,这样速度就提升了很多。归功于设计了offset pool,可以输入多尺度。
Localization 定位任务
主要把分类任务的最后一个分类层换成回归层,然后预测bounding boxes。定位任务的网络最后3个全连接层的节点数分别维4096、1024、4,4代表描述bounding box的4个坐标。最后一层4是和类别有关的class-specific,对于每一个类都要单独训练。用的loss是L2
combining predictions 综合预测
之前提到了本文的一个main contribution是积累预测,而不是抑制。
对于每个尺度预测的结果,通过一种贪婪算法进行综合-平均:
- 在6个尺度上进行分类任务,每个尺度取top-k个结果,对图片类别进行标定 C s C_{s} Cs
- 同样的,在6个尺度上进行定位任务,得到bounding box结果 B s B_{s} Bs
- 将所有尺度的 B s B_{s} Bs取并集得到大的 B B B
- 将 B B B中的bounding box进行整合/抑制,具体做法:选取两个box b 1 , b 2 b_{1},b_{2} b1,b2,计算match_score( b 1 , b 2 b_{1},b_{2} b1,b2),如果match_score<阈值,则把 b 1 , b 2 b_{1},b_{2} b1,b2从 B B B删除,并将 b 1 , b 2 b_{1},b_{2} b1,b2的融合放进 B B B;如果match_score>阈值,stop。
Object detection 之 DeepMultiBox
Scalable Object Detection using Deep Neural Networks
利用深度神经网络实现可扩展的目标检测
2014 CVPR,Google出品
摘要
文章指出之前的目标检测模型存在的问题:无法处理同类物体的多个实例cannot handle multiple instances of the same object。本文提出一种用于目标检测的深度神经网络,产生和物体种类无关的bounding box,并且每个box都有一个置信度表示存在任务目标的可能性。实验结果表明,文章提出的DeepMutliBox方法不仅能够检测同一物体的不同实例,而且对未出现过的目标具有不错的泛化能力。
主要亮点
- 本文将目标检测问题归纳为Bounding Box的回归问题,并且对Box存在目标的可能性用置信度进行量化。
- 将分类和检测两个task结合,多任务共用一个深度卷积网络。
- 提出class-agnositc与物体类别无关的矩形框,对未见过的目标有很好的泛化能力。
Approach
通过预测一系列可能存在目标的Bbox,以及每个Bbox的置信度(这个置信度表示存在任何目标的可能,不针对具体目标种类)
模型:为了得到Bbox和置信度,需要将模型进行一定的修改。
Bbox包含4个值,可以用4维向量表示。在DNN的最后一个隐含层后加一个fc得到。
置信度用一个[0,1]之间的小数表示。在DNN的最后一个隐含层加一个fc和Sigmoid函数得到。文章中用于分类的网络是AlexNet
Loss function:网络的优化方向有2个
- 对于和Ground truth最吻合的点,希望其置信度越大越好,即这个bbox中确实存在目标;
- 对于和Ground truth不吻合的点,希望其置信度越小越好,即这些bbox中不存在目标;
因此,提出2个损失函数:
L2回归损失:
F
m
a
t
c
h
(
x
,
l
)
=
1
2
∑
i
j
x
i
j
∣
∣
l
i
−
g
i
]
∣
∣
2
2
F_{match}( x, l)=\frac{1}{2}\sum_{ij}x_{ij}||l_{i}-g_{i}]||_{2}^{2}
Fmatch(x,l)=21ij∑xij∣∣li−gi]∣∣22
只有当
x
i
j
=
1
x_{ij}=1
xij=1时才有会有loss,即最吻合的bbox和ground truth的L-2差,显然希望最吻合的bbox和ground truth是一样的,这样loss最小,
F
m
a
t
c
h
(
x
,
l
)
F_{match}( x, l)
Fmatch(x,l)越小说明产生的bbox越准确。
cross-entropy 分类损失:
F
c
o
n
f
(
x
,
c
)
=
−
∑
i
,
j
x
i
j
l
o
g
(
c
j
)
−
∑
i
(
1
−
∑
j
x
i
j
)
l
o
g
(
1
−
c
i
)
F_{conf}( x, c)=-\sum_{i,j}x_{ij}log(c_{j})-\sum_{i}(1-\sum_{j}x_{ij})log(1-c_{i})
Fconf(x,c)=−i,j∑xijlog(cj)−i∑(1−j∑xij)log(1−ci)
但是仅仅有L2回归损失是不够的,还需要加入分类损失,用交叉熵损失。
对于前一项
−
∑
i
,
j
x
i
j
l
o
g
(
c
j
)
-\sum_{i,j}x_{ij}log(c_{j})
−∑i,jxijlog(cj),当
x
i
j
=
1
x_{ij}=1
xij=1时即分类正确,希望
c
j
c_{j}
cj越大越好;
对于后一项
−
∑
i
(
1
−
∑
j
x
i
j
)
l
o
g
(
1
−
c
i
)
-\sum_{i}(1-\sum_{j}x_{ij})log(1-c_{i})
−∑i(1−∑jxij)log(1−ci)。当
x
i
j
=
0
x_{ij}=0
xij=0即分类错误,希望
1
−
c
j
1-c_{j}
1−cj越大,即
c
j
c_{j}
cj越小越好。
最终的损失函数包括回归损失和分类损失:
F
(
x
,
l
,
c
)
=
α
F
m
a
t
c
h
(
x
,
l
)
+
F
c
o
n
f
(
x
,
c
)
F(x,l,c)=\alpha F_{match}( x, l)+F_{conf}( x, c)
F(x,l,c)=αFmatch(x,l)+Fconf(x,c)
训练时
α
=
0.3
\alpha =0.3
α=0.3
Optimization:作者训练CNN用的时经典的反向传播BP。
Training Details:采用了3个modification提升训练的速度和精度
- perform clustering of ground truth locations and find K such clusters/centroids.
- using priors in the matching process
- 【还有啥】