感受野的计算
特征图上某点的感受野:输入空间与该点有关的区域。层数越深,感受野的区域越大。
计算公式为: x i = x i − 1 + ( k i − 1 ) ∏ j = 1 i − 1 s j x_{i} = x_{i-1}+ (k_{i}-1)\prod_{j=1}^{i-1}s_{j} xi=xi−1+(ki−1)∏j=1i−1sj,其中 x i x_{i} xi 为第 i i i 层输出特征图的点对应的感受野大小, k i k_i ki 为第 i i i 层的卷积核大小或者是池化层的池化尺寸大小, s j s_j sj为步长,并且 x 0 = 1 , s 0 = 1 x_0=1, s_0=1 x0=1,s0=1。
公式理解:第 i i i层特征图的一个点在第 i − 1 i-1 i−1层的特征图上的影响区域为 k i × k i k_i \times k_i ki×ki,其中左上角的顶点的感受野为 x i − 1 × x i − 1 x_{i-1}\times x_{i-1} xi−1×xi−1,那么接下来每行的 k i − 1 k_i-1 ki−1个点在输入空间下的步长为 ∏ j = 1 i − 1 s j \prod_{j=1}^{i-1}s_{j} ∏j=1i−1sj,故有上述公式
卷积核输出尺寸的计算
给定第 i i i层输入的尺寸: n i × n i n_{i}\times n_{i} ni×ni,卷积核大小: k i k_i ki,假设输出的尺寸为 m i × m i m_i\times m_i mi×mi,则有 k i + ( m i − 1 ) s i ≤ 2 ∗ p a d d i n g s + n k_i+(m_i-1)s_i\leq 2*paddings+n ki+(mi−1)si≤2∗paddings+n,从而 m i = ⌊ 2 p a d d i n g s + n − k i s i + 1 ⌋ m_i=\lfloor\frac{2paddings+n-k_i}{s_i}+1\rfloor mi=⌊si2paddings+n−ki+1⌋,从这里可以看出,如果希望输入输出尺寸相同,则应该令 s i = 1 , p a d d i n g s = k i − 1 2 s_i=1, paddings=\frac{k_i-1}{2} si=1,paddings=2ki−1
每层的浮点计算复杂度
设第 i i i层卷积核为 k i n , k i , k i , k o u t k_{in}, k_i, k_i, k_{out} kin,ki,ki,kout,则计算复杂度为 p r o d ( o u t p u t s h a p e ) × k i n k i k i prod(output\quad shape)\times k_{in}k_ik_i prod(outputshape)×kinkiki
卷积
卷积的特点:局部连接、权值共享
局部连接:一个特征映射平面上的点只依赖于输入的局部区域
权值共享:一个特征映射平面上不同点都是通过相同的卷积核计算出来的
valid 卷积
不填充0,一般输出特征映射的的shape小于输入特征映射的shape
same卷积
特点:输入特征映射与输出特征映射的的空间尺度相同(即
H
×
W
H\times W
H×W)
做法:卷积核尺寸为奇数,四周分别填充
k
−
1
2
\frac{k-1}{2}
2k−1个0,且
s
t
r
i
d
e
=
1
stride=1
stride=1
缺点:不同区域元素被访问的次数不同。中间元素被访问的次数为
k
×
k
k\times k
k×k,而边界元素被访问的次数却明显低于
k
×
k
k\times k
k×k
full卷积
针对same卷积不同区域元素被访问的次数不同的问题,提出了full卷积。
特点:不同区域元素被访问的次数相同;输出特征映射的大小:
(
H
+
k
−
1
)
×
(
W
+
k
−
1
)
(H+k-1)\times (W+k-1)
(H+k−1)×(W+k−1)
做法:在same卷积的基础上增加填充0的个数。四周分别填充
k
−
1
k-1
k−1个0,且
s
t
r
i
d
e
=
1
stride=1
stride=1
非共享卷积
特点:局部连接,但是权重不共享
平铺卷积
对普通卷积和非共享卷积进行了折衷。学习一组核在空间移动时可以循环利用,在相邻的位置具有不同的卷积核,在不同的位置核可能被循环利用。
可分离卷积
卷积的物理意义
卷积:等效于使用傅里叶变换将输入与核都转换到频域,执行两个信号的逐点相乘,再使用傅里叶逆变换转换回时域
可分离卷积
可分离的卷积核:当一个
d
d
d维的卷积核可以表示成
d
d
d个向量(每一维一个向量)的外积时,该核被称为是可分离的
设有
N
H
W
C
NHWC
NHWC维的输入以及
M
M
M个
k
×
k
k\times k
k×k的卷积核,则计算量为
N
H
W
M
k
2
C
NHWMk^2C
NHWMk2C,如果改为
2
2
2个一维卷积,则计算量为
N
H
W
M
k
1
C
+
N
H
W
M
1
k
C
=
2
N
H
W
M
k
C
NHWMk1C+NHWM1kC=2NHWMkC
NHWMk1C+NHWM1kC=2NHWMkC
一般化,如果
d
d
d维的卷积核
k
1
k
2
.
.
.
k
d
k_1k_2...k_d
k1k2...kd,则普通卷积的计算量为
C
∏
i
=
1
i
=
d
k
i
C\prod\limits_{i=1}^{i=d} k_i
Ci=1∏i=dki,分离为
d
d
d个一维卷积的计算量为
C
∑
i
=
1
i
=
d
d
i
C\sum\limits_{i=1}^{i=d}d_i
Ci=1∑i=ddi,显然计算量大幅下降
深度可分离卷积
普通卷积操作是同时考虑输入的通道维或输入维,深度可分离卷积先考虑区域,然后再考虑通道,将两者分离,使复杂度极大下降
如何加快模型优化?hard sample mining;
如何将模型压缩?深度可分离卷积