Unet++论文解读

论文地址:https://arxiv.org/pdf/1807.10165.pdf

作者知乎解读:https://zhuanlan.zhihu.com/p/44958351(推荐先看这篇解读,作者做研究的态度和方式我非常赞同,我自己也是这样做的,觉得比较有效,而且容易激起自身的研究兴趣)

Unet++论文解读_第1张图片

接下来,我总结了作者研究的心路历程:

(1)Unet这个三年不动的拓扑结构真的一点儿毛病都没有吗?

我和作者有过同样的思考,这里也同样得出这个结构最优秀的点就在于结合了深浅层特征,而且结合的方式优于FCN(优于FCN这点是我个人的理解)

(2)Unet要多深合适?

这点和作者解析的很像,并不是所有的问题增加深度就能提高性能。有些问题简单,浅层网络就能解决,增加深度并不能增加效果。有些问题难,就需要深层网络,毕竟需要将问题抽象的更猛烈些

(3)降采样对于分割网络到底是不是必须的?

这一点我认为除了作者所说的增加鲁棒性,轻微的旋转不变性,减少训练参数等原因。其实也有为了能增加卷积网络深层的原因,还有增加感受野的原因。

(4)所抓取的特征都很重要,为什么我非要降16倍了才开始上采样回去呢?

这个问题的解答其实和第一问很相似。并不是非要降低16倍,而是根据自身问题的难度选择降低的倍数。更简明的说,就是你选区多少层,这个你得试试。

(5)如何有效解决梯度回传的问题?

Unet++论文解读_第2张图片

这个梯度回传是针对上面这幅图的,这不是unet++的完整结构。从这幅图可以看出,如果只用最后的那个x0,4来计算最终的loss,那么红色三角这块就不会对网络有贡献,也就是梯度回传不会流过红色三角区域。为了缓解这个问题,就想到了2中方式:(1)中间添加短链接;(2)为x0,1和x0,2和x0,3都与真实值比较,都有一个loss,那么这块红色三角就对网络有了贡献。

(6)仅仅通过各层之间的短连接,能否有效融合深浅层特征?

Unet++论文解读_第3张图片

这个是针对第(5)问的第一个解决方法思考的,具体如上图所示。从图中可以看出,只有短链接,没有长连接,那么前面的特征似乎还是没用起来,那么就想到了dense的想法,将前层的内容都加到一起 ,完美。具体如下图:

Unet++论文解读_第4张图片

(7)Unet++网络比U-Net效果好,但是这个网络增加了多少的参数,加粗的参数可都是比U-Net多出来的啊?是不是通过增加参数就能达到Unet++的能力?

还真不是,这个其实涉及一个问题,那就是网络对特征的利用程度,这个就是unet的深浅层特征融合的想法。是不是感觉有点驴头不对马嘴,那是因为单纯的增加参数,有时并不能增加网络的能力,这就是由于网络对于特征的利用程度很有限,或者由于现如今优化方式的限制导致某种结构的网络只能达到一定的性能,增加参数也无用。所以能得出Unet++的结构更好,更能利用特征。

(8)为浅层增加loss真的好吗?也就是在训练过程中在各个level的子网络中加了这种深监督,可以带来怎样的好处呢?

我个人自己做过一点实验,我并不认为会达到最优。虽然你使得梯度能更好的回传,但为前面的网络层添加了约束,可能最后一层得到的结果是有它自己的参数形式,但你增加了一个强约束,使得它这个较优的参数形式被破坏,使得结果变差。但我不否认这种做法的一个有点,那就是网络收敛很快,减少了训练时间。

我个人不是特别喜欢这种加loss的做法,或者说我认为就这么简单增加loss,非常的不好,感觉可以有更好的加loss的方式。

(9)剪枝三联问?

  • 为什么UNet++可以被剪枝
  • 如何剪枝为什么要在测试的时候剪枝,而不是直接拿剪完的L1,L2,L3训练?怎么去决定剪多少?
  • 好处在哪里

被剪枝其实就是因为网络中间层就能得到最终结果。

就减去最外层的一排。

好处就是减少参数的同时还能保证一定的性能。

 

参考:

https://zhuanlan.zhihu.com/p/44958351

你可能感兴趣的:(论文笔记)