标签:神经元 voc int 精度 figure 样本 学习 pascal 水平
改进点:
基础网络,如VGG,截断到分类层之前,作为基础网络。后面接附属架构,附属架构有以下特点:
选择用于检测的default box和尺度集合、难样本挖掘、数据增广策略。
训练:
$$
\left{\begin{align}
& g:ground truth box\
& l:predicted box\
& d:default bounding box\
& w:width\
& h:height
\end{align}\right.
$$
LOSS计算公式:
$$L(x,c,l,g)=\frac {1} {N}(L_{conf}(x,c))+αL_{loc}(x,l,g)\tag{1}$$
定位LOSS:
$$L_{loc}(x,l,g) = \sum_{i\in Pos}^{N}\sum_{m\in{cx,cy,w,h}}x_{ij}^ksmooth_{L1}(l_i^m-\hat{g}_j^m)$$
$$\hat{g}_j^{cx}=(g_j^{cx}-d_i^{cx})/d_i^w \quad \tag{2} \hat{g}j^{cy}=(g_j^{cy}-d_i^{cy})/d_i^h$$
$$\hat{g}j^{w}=log(g_j^{w}/d_i^h) \quad \hat{g}j^{h}=log(g_j^{h}/d_i^h)$$
置信度损失(confidence loss):
$$L{conf}(x,c)=-\sum{i\in Pos}^N x{ij}^p log(\hat{c}i^p) - \sum{i\in Neg} log(\hat{c}_i^0) \quad where \quad\hat{c}_i^p = \frac {exp(c_i^p)}{\sum_p exp(c_i^p)}\tag{3}$$
在默认框上选择尺度和宽高比:同时使用低层和高层特征图来检测。
一般来说,一个 CNN 网络中不同的 layers 有着不同尺寸的 感受野(receptive fields)。这里的感受野,指的是输出的 feature map 上的一个节点,其对应输入图像上尺寸的大小。具体的感受野的计算,参见两篇 blog:
http://blog.csdn.net/kuaitoukid/article/details/46829355
http://blog.cvmarcher.com/posts/2015/05/17/cnn-trick/
但是在SSD 结构中,default boxes 不必要与每一层 layer 的 receptive fields 对应。本文的设计中,feature map 中特定的位置负责图像中特定的区域,以及物体特定的尺寸。假如我们用 $m$ 个 feature maps 来做 predictions,每一个 feature map 中 default box 的尺寸大小计算如下:
$$s_k = s_{min} + \frac{s_{max} - s_{min}}{m-1}(k-1), k \in [1, m]$$
其中$s_{min}=0.2,s_{max}=0.9$
再对每个default box做不同宽高比,
令aspect ratio:$a_r\in {1,2,3,\frac {1}{2},\frac{1}{3}}$
宽:$w_k^a=s_k\sqrt {a_r}$,
高:$h_k^a=s_k/\sqrt{a_r}$;
宽高比为1时,额外加一个$s‘k=\sqrt{s_ks{k+1}}$。
整理如下:
$$
\left{
\begin{array}{l}
s_k = s_{min} + \frac{s_{max} - s_{min}}{m-1}(k-1), k \in [1, m] \
s‘k=\sqrt{s_ks{k+1}} \
\hskip -1.3mm {
\left.
\begin{array}{l}
w_k^a=s_k\sqrt {a_r} \
h_k^a=s_k/\sqrt{a_r} \
\end{array}
\right} a_r\in {1,2,3,\frac {1}{2},\frac{1}{3}}
}
\end{array}
\right.
$$
e.g.:
$$设m=6,s_{min}=0.2,s_{max}=0.9 $$
$$
\left{\begin{align}
& s_1=0.2+\frac {0.7}{5}(1-1)=0.2 ,\
& w_1^a=0.2\sqrt{{1,2,3,\frac{1}{2},\frac{1}{3}}}=
0.2{1,1.41,1.73,0.71,0.58} ,\
& h_1^a=0.2/\sqrt{{1,2,3,\frac{1}{2},\frac{1}{3}}} ,\
& s‘_1=\sqrt{s_1s_2}\approx 0.2608
\end{align}\right.
$$
$$
s_2=0.2+\frac {0.7}{5}(2-1)=0.34 \
s_3=0.2+\frac {0.7}{5}(3-1)=0.48 \
s_4=0.2+\frac {0.7}{5}(4-1)=0.62 \
s_5=0.2+\frac {0.7}{5}(5-1)=0.76 \
s_6=0.2+\frac {0.7}{5}(6-1)=0.9
$$,
$$
\left{
\begin{array}{l}
\left.
\begin{array}{l}
s_1=0.2+\frac {0.9-0.2}{6-1}(1-1)=0.2 ,\
w_1^a=0.2*\sqrt{{1,2,3,\frac{1}{2},\frac{1}{3}}},\
h_1^a=0.2/\sqrt{{1,2,3,\frac{1}{2},\frac{1}{3}}},\
s‘_1=\sqrt{s_1s_2}\approx 0.2608\
\end{array}
\right} {(w_1^a,h_1^a)={(0.2,0.2),(0.282,0.1418),(0.346,0.1156),\\quad\quad\quad\quad\quad(0.142,0.2816),(0.116,0.3448),(0.2608,0.2608)}}
\\
\left.
\begin{array}{l}
s_2=0.2+0.14(2-1)=0.34 ,\
w_2^a=0.34{1,1.41,1.73,0.71,0.58},\
h_2^a=0.34/{1,1.41,1.73,0.71,0.58},\
s‘_2=\sqrt{s_2s_3}\approx 0.4040\
\end{array}
\right} {(w_2^a,h_2^a)={(0.34,0.34),(0.4794,0.2411),(0.5882,0.1965),\\quad\quad\quad\quad\quad(0.2414,0.4789),(0.1972,0.5862),(0.4040,0.4040)}} \\
\left.
\begin{array}{l}
s_3=0.2+0.14(3-1)=0.48 ,\
w_3^a=0.62{1,1.41,1.73,0.71,0.58},\
h_3^a=0.62/{1,1.41,1.73,0.71,0.58},\
s‘_3=\sqrt{s_3s_4}\approx 0.5455\
\end{array}
\right} {(w_3^a,h_3^a)={(0.48,0.48),(0.6768,0.3404),(0.8304,0.2775),\\quad\quad\quad\quad\quad(0.3408,0.6760),(0.2784,0.8276),(0.5455,0.5455)}}
\\
\left.
\begin{array}{l}
s_4=0.2+0.14(4-1)=0.62 ,\
w_4^a=0.62{1,1.41,1.73,0.71,0.58},\
h_4^a=0.62/{1,1.41,1.73,0.71,0.58},\
s‘_4=\sqrt{s_1s_2}\approx 0.1632\
\end{array}
\right} {(w_4^a,h_4^a)={(0.62,0.62),(0.8742,0.4397),(1.0726,0.3584),\\quad\quad\quad\quad\quad(0.4402,0.8732),(0.3596,1.0690),(0.1632,0.1632)}}
\\
\left.
\begin{array}{l}
s_5=0.2+0.14(5-1)=0.76 ,\
w_5^a=0.9{1,1.41,1.73,0.71,0.58},\
h_5^a=0.9/{1,1.41,1.73,0.71,0.58},\
s‘_5=\sqrt{s_1s_2}\approx 0.8270\
\end{array}
\right} {(w_5^a,h_5^a)={(0.76,0.76),(1.0716,0.5390),(1.3148,0.4393),\\quad\quad\quad\quad\quad(0.5396,1.0704),(0.4408,1.3103),(0.827,0.827)}}
\\
\left.
\begin{array}{l}
s_6=0.2+0.14(6-1)=0.9 ,\
w_6^a=0.9{1,1.41,1.73,0.71,0.58},\
h_6^a=0.9/{1,1.41,1.73,0.71,0.58},\
s‘_6=\sqrt{s_6s_7}\approx 1.04\
\end{array}
\right} {(w_6^a,h_6^a)={(0.9,0.9),(1.269,0.6382),(1.557,0.5202),\\quad\quad\quad\quad\quad(0.639,1.2676),(0.522,1.5517),(1.04,1.04)}} \
\end{array}
\right.
$$
每一个 default box 的中心,设置为:$(i+0.5|fk|,j+0.5|fk|),其中|f_k|表示第k个正方形特征图的大小,i,j\in[0,|f_k|)$。
难样本挖掘: 由于正负样本不均衡,因此对default boxes以confidence loss由高到低排序,取最高的一些值,把将正负样本控制在3:1的范围。
Base network 实验基于VGG16,z ILSVRC CLS-LOC上做了预训练。把fc6和fc7改成了卷积层,并对fc6和fc7参数进行降采样。把pool5的2x2-s2改为3x3-s1,并使用atrous算法填充“空洞”1。
这样做之后可以让pool5的feature maps 保持较大的尺寸,这篇ECCV16论文也采用了同样的策略使得feature maps 分辨率比传统的更高,有利于小物体的检测。
pool5这样改变这之后,后面层的感受野将改变,因此也不能用原来网络的参数进行finetune,为了解决这样的矛盾,atrous算法提出。
图(a)展示是传统的过程,经过3x3-s2的pooling后,接一个3x3的conv,那么卷积层的一个神经元感受野是7
图(b)是atrous过程,现在Pooling层是3x3-s1,后面的卷积层为了能够使用原来的参数初始化必须使用带孔的卷积,这里卷积层的一个神经元的感受野也是7。
如图所示,
conv4_3,conv7(fc7),conv8_2,conv9_2,conv10_2,conv11_2这些层用来预测位置和置信度。
在conv4_3上设置default box尺度0.1。
新增的层都用Xavier初始化参数。
对于conv4_3,conv10_2,conv11_2,每个feature map的location上只关联4个default box,(因为conv4_3的尺寸比较大,size为$38\times 38$,放6个default box的话计算量会过大),去掉了aspect ratio为$\frac {1} {3}和3$的那俩。其他层都设置了6个default box。
文献2中指出,conv4_3和其他层相比有着不同的feature scale
Figure 2: Features are in different scale. We show the features for a position from conv4 3, conv5 3, fc7 and pool6
when we concatenate them together.
我们使用ParseNet中的L2 Normalization将conv4_3 feature map中每个位置的feature归一化到scale为20的大小,并在BP中学习这个scale。
开始的40K次迭代,learning rate为$10^{-3}$,之后减少到$10^{-4}$,再迭代20K次。
定量分析:
Atrous 使得SSD又好又快
如前面所描述,我们根据 ICLR 2015, DeepLab-LargeFOV,使用结合 atrous algorithm 的 VGG16 版本。
如果我们使用原始的 VGG16 版本,即保留 pool5 的参数为:2×2?s2,且不从 FC6,FC7 上采集 parameters,同时添加 conv5_3 来做 prediction,结果反而会下降 0.7%。同时最关键的,速度慢了 50%。
为了进一步的验证本文的 SSD 模型,我们将 SSD300、SSD500 在 MS COCO 数据集上进行训练检测。
因为 COCO 数据集中的检测目标更小,我们在所有的 layers 上,使用更小的 default boxes。
这里,还跟 ION 检测方法 进行了比较。
总的结果如下:
本文的方法一开始会生成大量的 bounding boxes,所以有必要用 Non-maximum suppression(NMS)来去除大量重复的 boxes。
通过设置 confidence 的阈值为 0.01,我们可以过滤掉大多数的 boxes。
之后,我们再用 Thrust CUDA library 进行排序,用 GPU 版本的实现来计算剩下的 boxes 两两之间的 overlap。然后,进行 NMS,每一张图像保留 top 200 detections。这一步 SSD300 在 VOC 20 类的每张图像上,需要耗时 2.2 msec。
下面是在 PASCAL VOC 2007 test 上的速度统计:
标签:神经元 voc int 精度 figure 样本 学习 pascal 水平
原文地址:https://www.cnblogs.com/ocean1100/p/9552469.html