基于全卷积神经网络的图像分割方法详解(二)

2022-09-06 10:40:36 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

最近这段时间刚好忙完学业作业,抽空来总结一下前段时间的工作。

前段时间一直忙于用深度学习做医学图像分割,采用的方法是FCN,也就是全卷积神经网络。全卷积神经网络是基于卷积神经网络的改进,使得输入和输出的尺寸一致,并且对每个像素点进行分类,达到图像分割的目的。下图是全卷积神经网络的流程图。其中第一行是提取特征步骤,然后2X conv7和4X conv7分别表示对conv7的输出进行2倍和4倍上采样,也就是反卷积操作,最后将特征图变为输入大小的尺寸,就实现了对于每个像素的分类,也就是图像分割。

在该流程中,需要注意以下几点:

  1. 使用该网络时需要关注你的数据集,看是否适用。比如说,如果你的数据集的尺寸只有100*100左右,那么这个网络结构很有可能就不会work,因为该网络结构只是最原始的FCN,对于处理一些特殊的数据集,会存在性能不足的缺点,导致网络不能收敛。而且你的数据集尺寸太小,在经过了五次池化后,基本上特征图就没什么信息了,在后续的反卷积重建结果中,会导致信息丢失严重。对于这种问题,建议采用U-NET,V-NET,以及比较新的RCF-net。这几种结构都可以结合更多层次的信息,使得重建后的结果更好。
  2. 使用该网络时需要关注所需处理问题的难度,如果难度过大,那么很有可能该网络会无法work。比如最近我做的一个工作,在一些100*100大小的图像上做四分类。当然,也不是说4分类的问题没法做,只是你得结合你的数据集的特点,比如我做的这个数据集,图像的尺寸太小,导致经过四五次池化后基本没有了信息。对于这类难度较大的问题,可以尝试减少网络的pooling层,或者同时增加的深度,当然这可能导致你的服务器OOM。
  3. 最后在训练网络时,需要在学习率上增加关注。以前我做实验室,基本上就是按照以前做过的实验来调学习率。但是到了图像分割这个领域,发现网路对于学习率较为敏感,可能小一个数量级就可以收敛,或者大一个数量级就可以更快的收敛。这个也是需要根据不同的任务来制定不同的方法

后续我会将如何用python和tensorflow来编写FCN进行详细的一步一步讲解。

最后想了想,还是用pytorch吧。(手动狗头)

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151118.html原文链接:https://javaforall.cn

0 人点赞