知乎上的一篇文章

SegNet是一个由剑桥大学团队开发的图像分割的开源项目,该项目可以对图像中的物体所在区域进行分割,例如车,马路,行人等,并且精确到像素级别。图像分割的实现由一个卷积神经网络构成,该网络主要有两部分组成:encoder与decoder。encoder是一个沿用VGG16的网络模型,主要对物体信息进行解析。decoder将解析后的信息对应成最终的图像形式,即每个像素都用对应其物体信息的颜色(或者是label)来表示。后面章节会对SegNet的模型进行详解。但是由于SegNet是一个主要由卷基层组成像素处理级的网络,对于像FPGA这类移动设备来说,计算量还是有些大。在选取处理速度和计算量的平衡当中,我们在选择使用另一个轻量级的SegNet实现,使用此实现加上我们的AI芯片DV700,可以在FPGA上运行。


如上图所示,SegNet是一个由encoder(左)和decoder(右)组成的对称网络。输入一张RGB图像后,网络根据图像中物体的语义信息,把图像中的物体进行分类(例如,“马路”,“汽车”, “楼房”等),最后生成一张分割图像。

Encoder

虽然有着一个高大上的名字,但是encoder本身其实就是一连串的卷积网络。该网络主要由卷基层,池化层和BatchNormalization层组成。卷基层负责获取图像局域特征,池化层对图像进行下采样并且将尺度不变特征传送到下一层,而BN主要对训练图像的分布归一化,加速学习。

概括地说,encoder对图像的低级局域像素值进行归类与分析,从而获得高阶语义信息(“汽车”, “马路”,“行人”),Decoder收集这些语义信息,并将同一物体对应到相应的像素点上,每个物体都用不同的颜色表示。

Decoder

既然Encoder已经获取了所有的物体信息与大致的位置信息,那么下一步就需要将这些物体对应到具体的像素点上了。这一系列工作是由Decoder完成。Decoder对缩小后的特征图像进行上采样,然后对上采样后的图像进行卷积处理,目的是完善物体的几何形状,弥补Encoder当中池化层将物体缩小造成的细节损失。

换一个角度理解Encoder+Decoder

让我们换一个角度尝试理解这个过程。假设你有一本菜谱,这本菜谱有很多章节,每个章节都是文字描写如何烹饪不同的菜。现在我们讲所有文字输入到SegNet当中,注意此时SegNet接收到的只是文字信息,它并不知道这本菜谱的构成。Encoder所做的就是它能理解这本菜谱的结构,对其中的内容进行抽象,形成一些高阶的信息(比如描述做了什么菜),并将这些信息对应到一个简化的空间里。Decoder对这些简化的高阶信息进行理解与编译,并且对相同语义相近的文字进行分类并对应到具体的菜式上面(比如:凉菜,面食,鱼,肉等)。这样以来,仅从文字上,我们就可以大概知道这是描述哪个菜式了,可能是凉菜,也可能是面食。换句话说,你不仅能获得菜式信息,并且可以知道这些菜式对应的是哪一个章节,哪些字句,是不是很棒?

再回到图像的例子当中,Encoder对图像进行分析,弄清某一区域是什么物体,然后Decoder来寻找这个物体对应的是原图像当中的哪些像素点。这样,一个图像就被分割完成了!

Convolution Layer in Encoder and Decoder

我们可以看到在Encoder和Decoder中都存在卷积层。他们在算法上一模一样,但是在作用上有一点不同。Encoder阶段,卷基层的主要作用就是获取图像的局部信息,并传送给池化层,然后由2x2最大池化处理,把最大值特征再次传递到下一层。所以在这部分当中,Convolution+Pooling的主要作用从图像中获取信息。

与此相反,Decoder阶段的处理是将特征层进行上采样,然后交给卷基层进行处理。上采样后的2x2区域只有一个前一层传来的1x1特征点,其余区域都是空值,因此这些空值需要被填补成适当的特征值,来让这个区域变得完整并且平滑。这个工作就是由卷基层担任的。所以位于Decoder当中的卷积层的作用是对图像进行“填补”。

一句话总结,两个阶段的卷积层在计算上是完全一样的,但是表现出的结果是有差异的。有些人根据此差异,将Encoder阶段的卷积命名为“卷积”,Decoder阶段的卷积命名为“反卷积“(或”转置卷积“),但实际上进行的处理是一样的。

对于编码器与解码器的理解相关推荐

  1. 编码器和解码器的概念理解

    编码器和解码器最开始看概念的时候有点懵,因为说编码器先把原始信号给编码,然后解码器再给解出来得到原始信号.哈?这是干啥,原始信号本来就有,用这个搞啥,做无用功吗? 1. 首先,说一下编码器和解码器干什 ...

  2. 直播实录 | 哈工大博士生周青宇:从编码器与解码器端改进生成式句子摘要

    本文为 3 月 15 日,哈工大-微软联合培养博士生--周青宇博士在第 25 期 PhD Talk 中的直播分享实录. 3 月 15 日晚,PaperWeekly 再度联合微软亚洲研究院带来了第 25 ...

  3. 今晚直播 | 从编码器与解码器端改进生成式句子摘要

    「PhD Talk」是 PaperWeekly 的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和交流可能会让知识的传播更加有意义 ...

  4. 直播预告 | 从编码器与解码器端改进生成式句子摘要

    「PhD Talk」是 PaperWeekly 的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和交流可能会让知识的传播更加有意义 ...

  5. 基于Transformer的文本情感分析编程实践(Encoder编码器-Decoder解码器框架 + Attention注意力机制 + Positional Encoding位置编码)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...

  6. 机器翻译 MXNet(使用含注意力机制的编码器—解码器,即 Encoder编码器-Decoder解码器框架 + Attention注意力机制)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...

  7. NLP-预训练模型-2019-NLU+NLG:BART【Bert+GPT的泛化Seq2Seq模型】【噪声破坏后的原文本喂给编码器,解码器输出原文本】【噪音方案:文本填充(文本片段用单个掩码替换)】

    <原始论文:BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translat ...

  8. Pytorch:Transformer(Encoder编码器-Decoder解码器、多头注意力机制、多头自注意力机制、掩码张量、前馈全连接层、规范化层、子层连接结构、pyitcast) part1

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...

  9. NER中的一些编码器与解码器

    文章目录 参考 编码 LR-CNN FLAT Lex-BERT 解码 GlobalPointer 本篇文章是命名实体识别(NER)算法的进一步介绍,主要内容是介绍一些编码器与解码器,作为上一篇内容的补 ...

最新文章

  1. Hadoop伪集群环境搭建
  2. Go:go语言的认识理解、安装应用、语法使用之详细攻略
  3. c#截取字符串后几位_基础库的字符串设计
  4. [云炬创业基础笔记]第六章商业模式测试11
  5. 【Android】Android中WIFI开发总结(一)
  6. 流程图制作在云上 https://www.processon.com/
  7. 前端学习(1766):前端调试值之内存监控的原理和方法
  8. mysql后天命令查下显示_MySQL命令
  9. 手机 safari mac 调试
  10. vb.net 教程 8-15 数据库操作实例1
  11. 搞一下SOA | 11 SOA 系统建模
  12. 单片机复位电路的可靠性设计及精典实用复位电路
  13. 海康威视人脸识别智能终端获取设备事件二次开发Java
  14. 常见的HTTP网络状态码汇总+HttpServletResponse源码
  15. Qt setFocus无法生效问题
  16. Ant编译Java项目-QuickStart
  17. 怎样训练左右手协调_怎样练习左右手协调能力?!
  18. USB开发-USB基础知识
  19. avogadro_Avogadro分子编辑器(Avogadro软件)下载
  20. fatal: unable to auto-detect email address (got ‘tim@newton.(none)‘)

热门文章

  1. 下载Wikidata并转成TXT文档
  2. 【荐读】职场生存法则和智慧
  3. android 友盟统计 简单上手
  4. 网页编程软件:Coda 2 for Mac
  5. STM32——继电器控制灯的开关
  6. 尚驰洗车:兰州高端洗车店精致洗车流程
  7. 木马逆名欺骗:利用unicode控制符RLO
  8. Flutter企业级项目实战——博时App
  9. springboot使用poi实现Excel模板的下载功能
  10. 如何在ftp服务器编辑文件,ftp服务器怎么编辑文件