FCN全卷积网络和Deconv转置卷积原理描述

直到RPN生成Roi的时候,MaskRcnn和FasterRcnn的结构都是一样的。
然后RPN会过滤掉一部分,剩下的Roi分成前景和背景(2分类),同时RPN会对Roi做一个初步的box回归。
接下来我们会把图上的anchor投影到feature map上,这里MaskRcnn用的是比Roi pooling更精细的Roi Align,得到每个Roi对应在feature map上的feature,
最后,对这些Roi进行分类(N类别分类)、BB位置回归和Mask生成(在每一个Roi里面进行FCN操作)。

所以新的东西其实就是

  1. Roi Align 在之前的文章里面讲过
  2. FCN

主要说一下 FCN

FCN最先被提出是在《Fully Convolutional Networks for Semantic Segmentation》
作者首先使用FCN通过一些列卷积将图像下采样到小尺度的Feature Map,这组卷积通常被称为Encoder,然后通过双线性插值或者Deconv对Feature Map进行上采样,这个部分通常被称为Decoder,这种架构是有效的,但是也有缺点:

  1. Deconv操作输出的不均匀重叠,存在棋盘伪像 Checkerboard Artifacts
  2. Encode过程中信息丢失导致在边界处的分辨率较差
    作,即进行插值操作,不断的增大其feature map,最后对每一个像素值进行分类

用FCN替代全连接层的好处

Deconv理解

为了输出与原图一样大小的图像语义分割图,我们对最后一个卷积层进行上采样,使用的方法是Deconv,在Pytorch等框架中被称为转置卷积,有些人称为反卷积只是概念上的,因为它和卷积层对称,但是这样容易和数字信号处理中的反卷积混淆,所以我们还是称之为转置卷积更好。
我们一般在需要上采样的时候使用到转置卷积,转置卷积不会使用预定义的插值方法,它具有可学习的参数,
在需要上采样的地方经常会用到它,比如实例分割对feature map恢复到原图尺寸,关键点检测提高feature map的分辨率,GAN的生成器用随机值生成一个full size的图片…

我们先看一个简单的卷积操作,然后再看它对应的deconv操作,下面是4x4的feature与3x3的kernel进行卷积得到2x2的feature的过程。其中步长为1,没有padding。

在这里插入图片描述

我们用另一种形式展示这个卷积的过程,
如下图1中所示,首先将4x4的 feature map变换成一个16x1的向量,
然后再下图2和下图3中,将3x3的kernel变换成4x16的矩阵

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们对这个4x16的矩阵和16x1的矩阵做矩阵乘法,得到4x1的矩阵,
然后再将它按照行优先resize到2x2,这样就和我们之前卷积的结果一模一样。

总体来说就是通过重新排列 卷积核 和 feature map,用矩阵的形式表达了卷积操作。

那我们可以思考,4x16矩阵和16x1矩阵可以得到4x1矩阵
那我们有了4x1矩阵和4x16矩阵的转置,是不是也可以回到16x1的原来feature map呢?

现在反过来操作

我们需要注意的是,不仅仅要保证16x4 * 4x1 得到16x1,
还要保证一个卷积结果对应原始feature map上的九个点。
如下图所示先得到16x1矩阵。再得到4x4矩阵
需要注意的是:这里的转置卷积矩阵的参数,不一定从原始的卷积矩阵中简单转置得到的,
转置这个操作只是提供了转置卷积矩阵的形状而已。

在这里插入图片描述

在这里插入图片描述

参考

博文地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值