SegNet网络结构

SegNet网络结构

    • 网络架构
    • Encoder
    • Decoder
      • 贴一张我的处理结果吧

刚刚接触深度学习–semantic segmentation相关的研究,对SegNet的网络结构进行了学习,虽然已经有了很多的解释,还是想要自己写一下,将整体结构做一个梳理。博客底部附有参考链接,感谢大神们的分析以及代码的赞助。

SegNet是通过对图像中每一个像素点进行分类,识别每一个像素点的类别来实现图像的分割。其思路与FCN的思路十分相似,只是两者的Encoder与Decoder技术不同。

网络架构

SegNet网络结构_第1张图片 网络结构:包括Encoder和Decoder两个部分,Encoder是由4层上采样组成,Decoder由4层下采样组成,Encoder与Decoder之间呈一种对称关系。左边使用了VGG-16的前13层卷积网络,并做了少许的改动,用于提取特征并保存池化索引;右边是一个反卷积与upsampling的过程,通过反卷积使得图像分类后特征得以重现,upsampling还原到图像原始尺寸,该过程称为Decoder;最后使用Softmax输出不同分类的最大值,得到最终分割图。

Encoder

通过卷积提取特征,SegNet使用的卷积为same卷积,即卷积后保持图像原始尺寸;在Decoder过程中,同样使用same卷积,不过卷积的作用是为upsampling变大的图像丰富信息,使得在Pooling过程丢失的信息可以通过学习在Decoder得到。
其Encoder部分使用了VGG-16的前13层,与VGG-16不同的是,多了一步保存max-pooling索引的操作,目的是Decoder可以利用其来做非线性上采样。

Decoder

pooling在CNN中能够将图像缩小,包括两种方式:max和mean。文章中用到的是max-pooling的方式,在一个22的filter中,取出其中权重最大的值,同时保存最大权值在22 filter中的位置。从网络框架图可以看到绿色的pooling与红色的upsampling通过pool indices相连,实际上是pooling后的indices输出到对应的upsampling(因为网络是对称的,所以第1次的pooling对应最后1次的upsamping,如此类推)。
SegNet网络结构_第2张图片
SegNet与FCN上采样方式对比。
SegNet:图像经过max-pooling后在每一个filter中会损失3个权值,但是因为在pooling过程中同时保存了最大权值的索引位置,根据pooling-indices可以在upsampling中可以pooling相对于pooling filter的相对位置,将数据放回对应位置后进做卷积训练。在与encoder中第一层对应的decoder层中(即decoder的最后一层卷积),与原图像为RGB的3通道不同,该层产生的是一个通道为K(类别数)的multi-channel feature maps,然后将其送入softmax分类器,做逐像素的分类处理。
FCN:我还没有看~~看完了再补吧。

第一次接触神经网络模型,虽然有很多博客可以参考,也看了原文,但是理解还是不够透彻,继续加油!

贴一张我的处理结果吧

SegNet网络结构_第3张图片
因为我的电脑GPU是3G的,使用原图时一直提示内存不够,用nvidia-smi看了一下GPU的利用率,基本上是没有空间了,然后将图像缩小为之前的1/3,识别率才62%,分割效果比较差。

链接: https://blog.csdn.net/qq_41576083/article/details/84973380.
链接: https://blog.csdn.net/k87974/article/details/79926014
链接: https://blog.csdn.net/zhuzemin45/article/details/79709874

感谢男朋友把自己的CSDN借给我用,第一次写博客还有点小紧张,但是写的是什么鬼!!!

你可能感兴趣的:(媳妇专属分类)