生成式-图像分割 深度学习图像算法简介

GAN

GAN有很多变种和衍生的算法,如pix2pix GAN、CycleGAN、DiscoGAN、PAN、StarGAN 等。。

原理不多说,一个G(生成器)和一个 D(判别器),整体的目标函数很简洁明确,先训练 D,再训练 G,交替进行,D 的训练用真实样本+生成的假样本,可进行 K 次迭代(默认1),外层再迭代进行 Number 次交替训练。

D 是共享的,G 和 D 的训练过程以及参数迭代过程是分离的。伪代码如下,非常清晰:
在这里插入图片描述
GAN 是一种结构或者说设计的思路,跟具体实现关系不大,可非常简单,也可复杂。比如这个用简单的网络来设计生成 mnist 数字图像;DCGAN(Deep Convolutional GAN) 就是将 D 和 G 换成 CNN 来实现,同时,也修改了很多网络的结构,具体参见,以提高样本的质量和收敛的速度。

cGAN

前面的这种传统的GAN有一个问题是每次训练后,所有的随机噪声很有可能产生相同的样本,为了可以产生不同的样本,条件GAN就出来了,也就是cGAN。cGAN其实和GAN在训练过程上完全一样,所不同的是对于输入的样本,除了样本外,还要加上一个条件,这个条件可以是label,也可以是其他的广义的东西(广义的label),比如张三李四

pix2pix(image to image)

参考
相比之前的 GAN,这里需要成对的图作为输入来进行训练,可以理解为上一步中的 label 就是另外一张图(广义的 label),判别器同时判别一对图像 A&B(合并成6通道)是否为一对 pair,同时用生成器输入 A 生成 B',将 A&B'输入到判别器,除非 B'跟 B 非常相似,以此来欺骗判别器,否则输出0,从而达到给定一个图片生成另一张对应的图的目的。

同时,这里因为是一对图的输入,所以目标函数有些调整,除了 GAN 原始的目标函数,还加了一个对于生成器的输出与真实 label image 之间的约束,可以理解为重建误差。

到这里,对于 GAN 的思路理解的就更清晰了些,我们想训练一个网络来做一些从 A 到 B 的事情(生成器),A 和 B 可能不是同类事物,如何做到呢?因为这样的话,A 跟 B 没有直接的映射关系,可能是{噪声、向量、单词、图片}到{图片、文字}等等,似乎没办法定义损失函数,所以索性想到能否用另一个神经网络来学习一下这样的映射(这也就是所谓的GAN 可以自动学习样本的真实分布),来告诉我们什么样的映射是正常的对的,其他的是不对的,这就是判别器。

而 pix2pix 因为是以图生成图,那这里就产生了可比较性,生成的图与原始 label 的图之间是可以定义损失函数的,所以在这里损失函数加了一个重建误差项。那问题来了,这种情况下能否不需要前面的判别器了呢?我理解是可以的。所以看下面的 Unet。

FCN

插播一下深度学习图像分割的鼻祖 FCN(全卷积网络),与 CNN 的主要区别是没有了最后的全连接层,输出的是同等尺寸的一个map 图(通过上采样),然后pixel-wise prediction 来预测每个像素点所属的类别,完成分割。
借图侵删,此图很清晰的介绍了不同的几个 pool 层进行融合和上采样的过程,注意这里的融合是相加。与 Unet 区分。
在这里插入图片描述
缺点:8倍上采样,不精细,细节丢失;pixel-wise 没有考虑像素之间的关联,未使用空间规整(spatial regularization)步骤,缺乏空间一致性。

unet

参考 & 参考
decoder-encoder 结构,4次下采样,4次上采样,中间存在快捷链接。输入图像尺寸572 * 572 > 输出388 * 388,因为对输入图做了边缘的镜像操作,这样可以保留更多边缘部分的上下文纹理信息,大多数情况下的医学图像都是很大的图,需要切成 patch 来进行分割。

网络重点:特征的融合采用了拼接的方式;但结构上跟 FCN 还是有些明显的区别,上采样的过程中还有进一步的卷积过程,比直接拿特征图去上采样然后 softmax 更 make sense 一点,所以效果也很好。

优点是能够适应很小的数据集(大约30张图),结构设计简单清晰。

回到上面的 pix2pix 的网络设计,这里我们明白起始 pix2pix 的生成器也是可以基于 Unet 来实现的,只是判别的过程,除了通用的 label & predict 之差,还用了一个判别器网络来进行增强,相当于额外请了一个专家。

unet++

参考
引一段介绍:

文章对Unet改进的点主要是skip connection。作者认为skip connection 直接将unet中encoder的浅层特征与decoder的深层特征结合是不妥当的,会产生semantic gap。整篇文章的一个假设就是,当所结合的浅层特征与深层特征是semantically similar时,网络的优化问题就会更简单,因此文章对skip connection的改进就是想bridge/reduce 这个semantic gap。

听起来是那么回事,所以在 Unet 的 skip connection 之上做的改进就是缓慢的过渡到 upsampling 的流程中来,以此来降低这个 gap。同时,过渡的过程,又加了一些不同层级之间的互联,来融合更多的信息。但是似乎参数多了很多?但原作者说是相同参数量效果都更好,待定。

DCGAN demo制作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值