U-Net普遍应用在生物医学影像领域,其在架构设计和其他利用卷积神经网络基于像素的图像分割方面更成功,它甚至对有限数据集的图像更有效。U-Net的命名源自它的结构,它的网络结构可视化的结果很像一个字母U。
U-NET网络性能机制
Unet构建思路可以分为三个部分:第一部分是主干特征提取部分,我们可以利用主干部分获得一个又一个的特征层,用一堆又一堆的卷积神经网络进行特征提取,Unet的主干特征提取部分为卷积和最大池化的堆叠。利用主干特征提取部分我们可以获得五个初步有效特征层,在第二步中,我们会利用这五个有效特征层可以进行特征融合。
第二部分是加强特征提取部分,我们可以利用主干部分获取到的五个初步有效特征层进行上采样,对获取到的特征进行反卷积及一层又一层又一层的图像重新放大,并且进行特征融合,获得一个最终的、融合了所有特征的有效特征层。再加入不同的跳跃连接。
第三部分是预测部分,我们会利用最终获得的最后一个有效特征层对每一个特征点进行分类,相当于对每一个像素点进行分类。
最特殊的部分是结构的后半部分也就是编码部分,该网络结构没有全连接层,只采用了卷积层,每个标准的卷积层后面都紧跟着一个Relu激活函数。
图像去噪过程
如图为本次项目的去噪过程。 该去噪过程首先提取红色、绿色和蓝色从原始CFA图像中提取成分,形成3通道分割CFA图像。然后将提取的绿色分量进一步分离为两个通道,形成四通道分割CFA图像。随后,该算法仅提取非0的像素值来压缩4通道分割CFA图像。压缩的四通道图像作为生成器在GAN中的输入。生成器的输出是插值的3通道全彩色图像。然后将G的输出图像和真实样本图像输入鉴别器进行鉴别。
网络结构
生成器
卷积操作也就是下采样操作:对面积进行收缩,对通道数进行扩张。(通俗讲像素是越来越小,模糊了),经过一个最大化池化层,像素缩小,通道数增加。但是本次项目中并没有用到池化层,反而去除了池化层,这样可以避免特征图中有用信息的丢失,并提高了训练过程的稳定性。通俗的讲就是每经过一个池化层图像的大小就会发生变化,只要图像的长宽发生了变化,像素就会发生变化,图像就会或多或少的损失一些信息。因此这样做可以避免图像有用信息的损失。
上图所示,为卷积过程中的补零操作,可以看到补零操作之后,输入特征图和输出特征图大小没有发生变化。
反卷积操作也就是上采样操作:对卷积操作后的图像进行恢复,对它进行上采样操作。此时通道数目是缩小的,从512缩小到32。但是这时候我们还要进行一种操作,我们要把之前的一些高像素特征给他复制过来,因为前一阶段的像素特征肯定要比现在的像素要高,我们把高像素特征保留过来,就可以更方便的复原一些具体的细节和边缘。这个操作就相当于是如图的一个跳跃连接,将对应的卷积层连接到反卷积层上。假如此时图像大小不一样的话,卷积层64×64,反卷积层56×56;则是从64×64里面挖出一部分56×56的大小,然后跟现在这个56×56拼接起来,然后正好两个的通道数也是一样的,跟高像素的拼接起来。再对他进行进行一个反卷积,通道数目会缩小一半。大体就是利用跳跃链接,从对应的层上面挖出一部分跟现在拼接起来,因为要保留一部分高像素。
可以通俗的理解:特征信息的压缩就是编码,特征信息的提取就是解码,比如图像,文本,视频的压缩与解压。
鉴别器
鉴别器应用了深度残差稠密网络,输入生成样本和真实样本,经过5个RDB模块且使用不同程度的跳跃连接。经过卷积层和sigmoid函数进行判别真假。
每个RDB之后的跳远连接有助于将此RDB的输出传输到最终卷积层。在每个RDB中,有几个单元,每个单元由ReLU激活函数、卷积层和BN操作组成。在这些单元上有不同距离的密集连接。使用sigmoid激活函数将最终卷积层的输出映射为0或1。
总结
上面的生成器使用了U-Net网络结构,但是不是很直观。可以在纸上将通道数和卷积层卷积核大小以及每个层都画一下,画成U型结构。这样看就更明白啦。
另外此次项目中,去除池化层和增加跳跃连接是一个很好的选择。池化层会丢失图像信息和降低图像分辨率且是不可逆的操作,对图像分割任务有一些影响,
并且上采样操作对于信息补充的肯定不全,所以还需要与左边的分辨像素率比较高的图片相连接起来(直接复制过来再裁剪到与上采样图片一样大小),因为随着卷积次数增多,提取的特征也更加有效,更加抽象,上采样的图片是经历多次卷积后的图片,肯定是比较高效和抽象的图片,然后把它与左边不怎么抽象但更高分辨率的特征图片进行连接,这样得到的图像结果也就越准确。