DeepLearning

图像分割算法思路总结

首先明确图像分割算法的任务,是对图像的每一个像素进行分类。具体到我们的任务,是对一张三通道的图像(通道数宽)的(长*宽)个像素进行二分类。说到图像分类问题立即就会想到卷积神经网络,通过卷积来提取特征是非常自然而然的想法。但是卷积层到底提取出了怎样的特征?这样的特征有没有效?而算法的设计更多的关注如何利用这些特征:比如实现一个简单图像分类算法,只要卷积-池化-卷积-池化…矩阵平铺-全连接层-激活层-输出预测值。所以算法最重要的两方面:一是什么样的特征,二是如何利用特征。

再回到图像分割算法,同样是用卷积提取特征,不同之处在于要将这些特征还原成原图像尺寸(而不是通过全链接层输出每个类别的预测值),从而做到对每个像素的预测,这是一个“反卷积”的过程,“反卷积操作”如图: 反卷积

“编码器”“解码器”:

在图像分割算法中,将卷积(或者提取特征部分)称为编码器(encoder),将“反卷积”部分称为解码器(decoder)。而编码器与特征直接相关,所以大部分算法改进,会对编码器做改进。比如现在实验所用的算法库里的U-Net算法,就提供了13种编码器,ResNet,DenseNet,EfficientNet,VGG等等,其实都是一些在图像分类算法中也常见的卷积网络。所以“编码器”关注提取“什么样的特征”。

网络结构

之前实验用的U-Net,目前更多的是一个代号,是用这种结构改进出来的算法的统称。而这个算法结构的关键,就是前面说的“如何利用特征”。 unet 这张图的U形结构的左侧就是“解码器”,可以看到从原始图像到底部的特征图,解码器做了4次卷积。而每一次卷积得到的特征图,在解码器“反卷积”时又得到了利用。这样就保证了最后恢复出来的特征图融合了更多层次的特征,也使得不同范围的特征得到了的融合。 而U-Net++结构则是从“如何利用特征”角度进行改进的,换一种说法U-Net和U-Net++可以同样的“编码器”但是特征融合的方式不同。 unet++ U-Net++的每一层得到的特征图,都在每一层的特征融合和解码时得到了使用。(所以本来这周预期的实验结果U-Net++要比U-Net好一点,但是最后得到的结果却一样,预测的匹配率都是0.823)所以目前的结论是,对于现在情况,改变网络结构似乎不起作用,“编码器”应该是更好的突破口,因为它和提取“什么样的特征”关系更紧密。


发布于2021-01-27 16:48:34