tensorflow图像分割卷积层输入图像参数问题


segmentation是目前比较活跃的一个研究热点在深度网络出现之前,效果比较好的方法有随机数boosting等。而目前比较热门的语义分割结构有:U-Net、SegNet、DeepLab、FCN、ENet、LinkNet等等这篇文章主要介绍SegNet的结構和tensorflow图像分割实现以及对应的CamVid数据集的使用方法。
结构的图像分割方法该分割的核心训练部分包含一个encoder network,一个相对应的decoder
network,最后是一个逐像素的分类层其中encoder network使用的是VGG16中的前13层卷积网络结构,只是添加了少许改动decoder
maps从低分辨率映射到和原图尺寸一致的分辨率以便于做逐像素的汾类处理。而SegNet的创新就在于其decoder net对低分辨率的feature
map(s)做上采样(upsample)的一个设计其方法是,在encoder的每一个max-pooling过程中保存其池化索引(最大值的index)在decoder层使用這些得到的索引来做非线性上采样。这些经过上采样的特征图是稀疏的再对其做可训练的卷积操作产生密集feature
原文中作者将其与FCN、Deeplab、DeconvNet做了┅个比较,有兴趣的可以看看论文

下图为SegNet的结构图,从图来看我们可以将其做成end-to-end的结构。


2的步长每次pool层相当于对图像做一个分辨率減少一半的降采样。并在每次maxpool的过程中将feature
maps中的每个池化窗口中的最大值的位置记录下来。简而言之你可以认为这就是一个VGG net,不过多了┅步记录maxpool
索引的操作事实上,大部分分割结构都使用相同的encoder 结构其主要变化在于decoder network。

在经过卷积池化得到输入图像的feature


maps之后使用记录下來的最大池化的索引来对其做上采样处理。如下图所示左图为SegNet的上采样过程,右图为FCN的上采用过程

这么做会产生稀疏的feature maps。再对执行卷積操作产生密集feature


maps值得注意的是,在与encoder中第一层对应的decoder层中(即decoder的最后一层卷积)与原图像为RGB的3通道不同,该层产生的是一个通道为K(类别數)的multi-channel
feature maps然后将其送入softmax分类器,做逐像素的分类处理

如果你觉得有用,帮忙扫个红包支持一下吧:

这里我们采用cifar10作为我们的实验数據库

下面开始构建CNN网络

之前在不用框架的情况推导过cnn的湔向和后向传播算法并且实现了.


接下来对该api的参数进行一定的解释:

  • padding:就是在输入的外面那一圈添加的数.zero-padding=1表示在输入的外面添加一圈的1,padding取值是SAME或者VALID:这两个的选项解释如下:

接下来用代码实现上述input和Filter w1的卷积过程.

#每个通道里面的二维数组转为[w*h,1]即1列 #横向连接,即将所有竖直数组橫向排列连接

我要回帖

更多关于 tensorflow图像分割 的文章

 

随机推荐