介绍
U-Net于2015年提出,广泛用于图像分割问题。其初是专门为医学图像分割而设计的。该方法取得了良好的效果,并在以后的许多领域得到了应用。相对于很多其他语义分割网络,其规模较小,所以也可以用于一些实时的任务。
结构
这个结构概括来说前期不断的卷积池化来进行下采样,然后再不断卷积上采样,形成一个U形。而下采样的结果还会合成至对应的上采样结果,实现抽象与细节的结合。
下采样即不断抽象的过程,当抽象程度很高的时候又会失去一些细节,所以上采样还原的过程实际上已经有很多细节损失,这个时候如果将下采样时的数据与之串联起来,实现跨层连接便可以弥补一些细节损失,这也是为什么在语义分割这种比较精细的问题上表现比较好。
如果只是分类问题,那么CNN不断地抽象就会有更加高层次的feature map,形成对图像的认识,但分割问题还需要从抽象重建图像,这个事情是很困难的。而U-Net的思想就是去解决这样的问题,通过下采样过程中的feature map来重建上采样时的图像。
整个U-Net结构分为contraction,bottleneck和expansion三部分,当然这里的bottle neck和inception里的还不太一样,并非是去通过1×1卷积改变通道数,而是说下采样到最小的程度,这个部分是模型最窄的部分,后面的expansion即进行上采样,开始还原图像。
expansion的每个部分有一半都是来自下contraction部分的附加,这个动作将确保在contracting 图像时学习到的特征将被用于重建图像。然后再通过卷积对feature map数量进行控制。
至于U-Net的损失计算,转换为了一个多分类问题,具体可以参考论文。
总结一下:U-net建立在FCN的网络架构上,作者修改并扩大了这个网络框架,使其能够使用很少的训练图像就得到很 精确的分割结果。添加上采样阶段,并且添加了很多的特征通道,允许更多的原图像纹理的信息在高分辨率的layers中进行传播。U-net没有FC层,且全程使用valid来进行卷积,这样的话可以保证分割的结果都是基于没有缺失的上下文特征得到的,因此输入输出的图像尺寸不太一样。
思考
U-Net主要针对分割问题,很多分割的灵感也都是来自于U-Net。其思想也很明确,即通过下采样与上采样的层进行结合,在抽象的基础上补充细节,最后实现精细地重建。其上采样与下采样的跨层连接,从而保持图像信息的完整性,极大地减少了失真。总结一下可以借鉴的思想:
- 下采样层与上采样层的跨层连接以还原细节
- 最后一层使用了1x1的卷积层做了分类
参考资料
https://www.jianshu.com/p/14641b79a672
https://www.seoxiehui.cn/article-106308-1.html