反卷积
一个用于分类任务的深度神经网络通过卷积来不断抽象学习,实现分辨率的降低,最后得到一个较小的FeatureMap,即特征图,通常大小为 5 × 5 5\times5 5×5或者 7 × 7 7\times7 7×7。而图像分割任务需要恢复与原尺寸大小一样的图片,所以需要从这个较小尺度的特征图回复原始图片尺寸,这是一个上采样过程。由于这个过程与卷积正好是对应的逆操作,所以通常称为反卷积。反卷积通常有几种实现方式,一种是双线性插值为代表的插值法,一种是转置卷积。
1.双线性插值
假如我们已经知道四个点,
Q
11
=
(
x
1
,
y
1
)
,
Q
12
=
(
x
1
,
y
2
)
,
Q
21
=
(
x
2
,
y
1
)
,
Q
22
=
(
x
2
,
y
2
)
Q_{11}=(x_1,y_1),Q_{12}=(x_1,y_2),Q_{21}=(x_2,y_1),Q_{22}=(x_2,y_2)
Q11=(x1,y1),Q12=(x1,y2),Q21=(x2,y1),Q22=(x2,y2),如果要知道任一点的值
Q
(
x
,
y
)
Q(x,y)
Q(x,y),则可以采用插值法。
首先对
x
x
x方向进行线性插值:
f
(
x
,
y
1
)
≈
x
2
−
x
x
2
−
x
1
f
(
Q
11
)
+
x
−
x
1
x
2
−
x
1
f
(
Q
21
)
(1)
f(x,y_1)\approx\frac{x_2-x}{x_2-x_1}f(Q_{11})+\frac{x-x_1}{x_2-x_1}f(Q_{21})\tag{1}
f(x,y1)≈x2−x1x2−xf(Q11)+x2−x1x−x1f(Q21)(1)
f
(
x
,
y
2
)
≈
x
2
−
x
x
2
−
x
1
f
(
Q
12
)
+
x
−
x
1
x
2
−
x
1
f
(
Q
22
)
(2)
f(x,y_2)\approx\frac{x_2-x}{x_2-x_1}f(Q_{12})+\frac{x-x_1}{x_2-x_1}f(Q_{22})\tag{2}
f(x,y2)≈x2−x1x2−xf(Q12)+x2−x1x−x1f(Q22)(2)
然后再对
y
y
y方向也进行线性插值:
f
(
x
,
y
)
≈
y
2
−
y
y
2
−
y
1
f
(
x
,
y
1
)
+
y
−
y
1
y
2
−
y
1
f
(
x
,
y
2
)
(3)
f(x,y)\approx\frac{y_2-y}{y_2-y_1}f(x,y_1)+\frac{y-y_1}{y_2-y_1}f(x,y_2)\tag{3}
f(x,y)≈y2−y1y2−yf(x,y1)+y2−y1y−y1f(x,y2)(3)
先对
y
y
y方向进行线性插值,再对
x
x
x方向进行线性插值也能得到相同的结果。
2.转置卷积
反卷积也被称为转置卷积,即Transposed Convolution,实际上仍然是一个卷积操作。在caffe等框架中,反卷积的实现与卷积使用的是同样的代码。
卷积如图:
图1.卷积操作
反卷积如图:
图2.反卷积操作
[参考文档]
[1]言有三.深度学习之图像识别核心技术与案例实战[M].北京:机械工业出版社,2019:110-112.