1. 卷积步长
在这个例子中,用3×3的矩阵卷积一个7×7的矩阵,得到一个3×3的输出
输入和输出的维度是由下面的公式决定的
如果用一个
f
×
f
f×f
f×f的过滤器卷积一个
n
×
n
n×n
n×n的图像
而 padding 为
p
p
p,步幅为
s
s
s
在这个例子中
s
=
2
s=2
s=2,会得到一个输出
因为现在不是一次移动一个步子,而是一次移动
s
s
s 个步子
输出于是变为:
n
=
7
,
p
=
0
,
f
=
3
,
s
=
2
n=7,p=0,f=3,s=2
n=7,p=0,f=3,s=2
(7+0-3)/2+1=3,即3×3的输出
2. 卷积输出维度
如果商不是一个整数的情况下,向下取整
⌊ ⌋ 这是向下取整的符号
这也叫做对z进行地板除(floor)
这意味着z向下取整到最近的整数
这个原则实现的方式是
只在蓝框完全包括在图像或填充完的图像内部时,才对它进行运算
如果有任意一个蓝框移动到了外面
那就不要进行相乘操作,这是一个惯例
3×3的过滤器必须完全处于图像中或者填充之后的图像区域内才输出相应结果,这就是惯例
因此正确计算输出维度的方法是向下取整
⌊
(
n
+
2
p
−
f
)
/
s
+
1
⌋
×
⌊
(
n
+
2
p
−
f
)
/
s
+
1
⌋
⌊(n+2p-f)/s+1⌋ × ⌊(n+2p-f)/s+1⌋
⌊(n+2p−f)/s+1⌋×⌊(n+2p−f)/s+1⌋
以免(n+2p-f)/s不是整数
3. 三维卷积
从一个例子开始
假如说不仅想检测灰度图像的特征,也想检测RGB彩色图像的特征
彩色图像如果是6×6×3
这里的3指的是三个颜色通道,可以把它想象成三个6×6图像的堆叠
为了检测图像的边缘或者其他的特征,不是把它跟原来的3×3的过滤器做卷积
而是跟一个三维的过滤器,它的维度是3×3×3
这样这个过滤器也有三层,对应红绿、蓝三个通道
给这些起个名字(原图像)
这里的第一个6代表图像高度,第二个6代表宽度,这个3代表通道的数目
同样过滤器也有高,宽和通道数
并且图像的通道数必须和过滤器的通道数匹配相同
为了计算这个卷积操作的输出
要做的就是把这个3×3×3的过滤器先放到最左上角的位置
依次取这27个数乘以相应的红绿蓝通道中的数字
然后把这些数都加起来,就得到了输出的第一个数字
所以这个的输出会是一个4×4的图像,注意是4×4×1,最后一个数不是3了
将第一个过滤器设为
而绿色和蓝色通道全为0,那么这就是一个只对红色通道检测垂直边界的过滤器
如果第一个过滤器卷积为垂直边缘检测,第二个过滤器卷积为水平边缘检测
则同时检测垂直边缘和水平边缘
有一个
n
×
n
×
n
n×n×n
n×n×nc(通道数)的输入图像,卷积上
n
n
nc’ 个
f
×
f
×
n
f×f×n
f×f×nc
就得到
(
n
−
f
+
1
)
×
(
n
−
f
+
1
)
×
n
(n-f+1)×(n-f+1)× n
(n−f+1)×(n−f+1)×nc’
现在可以用它的一小部分直接在三个通道的RGB图像上进行操作
并且检测两个特征,比如垂直和水平边缘或者几百个不同的特征
并且输出的通道数等于检测的特征数
参考:
相关推荐:
深度学习笔记(22) Padding
深度学习笔记(21) 边缘检测
深度学习笔记(20) 端到端学习
深度学习笔记(19) 多任务学习
深度学习笔记(18) 迁移学习
谢谢!