图像分割网络设计的一些技巧
(1) 特征图分辨率
为了减小计算量、增大感受野,许多网络都采用缩小特征图分辨率的结构(比如前面提到的SegNet)。但是,过度缩小特征图分辨率则会造成严重的信息丢失,从而造成分割精度的下降。**因此,要尽可能约束下采样的比率。目前被广泛接受的下降比率不超过1/8。**那么还要继续增大感受野该怎么办呢?没错,就是用到空洞卷积了。
(2) 提前下采样
直接用原始分辨率的图片作为网络输入的代价是很高的。由于视觉信息中存在大量的冗余,在输入网络之前,可以对输入做一个预处理,也就是先用一层网络将这些信息浓缩,同时缩小空间尺寸。实验证明,这一步的特征图个数不用太多,16与32效果几乎相同。
(3) 解码器规模
前面我们接触到的编解码结构中,解码器与编码器在结构上几乎是完全对等的。这种结构看起来没有问题,但是真的合理吗?其实,编码器的规模可以大一些,因为要用来提取信息;但是解码器本质上只是对编码器结果的细节精调,因此规模可以减小。
(4) 非线性操作
这一点相信很多人在实验中已经发现了,那就是在某些情况下,ReLU的引入并不会对结果产生有利的影响。相反,用PReLU替代反而会更好。
(5) 分解卷积层
考虑到卷积层权重其实有相当大的冗余,可以用nx1和1xn的两个卷积层级联(对称卷积)来替代一个nxn的卷积层来缩小计算量。具体地,用n=5的对称卷积的计算量近似于一个3x3的普通卷积,但是由于引入了非线性,这样的操作还能够增加函数的多样性。
(6) 空洞卷积
引入空洞卷积可以减小计算量、增大感受野,同时维护了特征图的分辨率。