一、开篇:深度学习与 U-net 引入
这一页先是点出了 "深度学习" 这个大领域,然后引出了本次的核心 ------U-net 系列算法。页面里还放了一些带有数字(像 1024、512、64)和 "CONV"(卷积,一种深度学习里常用的操作,能提取图片特征)的图表,这些是在暗示 U-net 算法会用到卷积操作,而且会处理不同大小的特征数据,为后面讲 U-net 的结构做铺垫。
二、U-net 基础介绍
(一)整体结构
- 核心过程:U-net 的整体结构核心就是 "编码 - 解码"。你可以把这个过程想象成先 "拆" 后 "装"。编码阶段就像把一张完整的图片拆开,一步步提取图片里的关键特征,比如图片里物体的边缘、纹理这些;解码阶段就是把提取到的这些特征再重新组合起来,还原出和原图对应的分割结果,比如在医学影像里,标出哪里是肿瘤、哪里是正常组织。
- 特点:结构简单但特别实用,应用范围很广。
- 应用起源与现状:最开始是为了解决医学影像分割问题而生的,直到现在,在医学领域的应用依然很广泛,比如给 CT 影像、病理切片做分割。
(二)主要网络结构
- 关键操作 ------ 特征拼接:以前有些算法在处理特征的时候,是把不同阶段的特征 "加" 起来,而 U-net 不一样,它是把编码阶段提取到的特征和解码阶段对应的特征 "拼" 起来。就好比做手工,之前是把两种材料混合在一起,现在是把两种材料并排粘在一起,这样能更全面地利用不同阶段的特征信息,让分割结果更准确。
- 效果:别看它结构不算复杂,用这样的方式就能把分割任务完成得很好。
三、U-net++ 介绍
(一)整体网络结构
- 核心改进 ------ 特征融合更全面:U-net++ 在 U-net 的基础上,把特征融合做得更彻底了。它的思路和 "DenseNet"(另一种深度学习网络)很像,简单说就是 "能拼能凑的特征全用上"。比如在不同的解码阶段,不仅会拼接和 U-net 一样的对应编码阶段特征,还会把解码过程中中间生成的一些特征也加进来一起拼接,这样能让网络获取到更丰富的特征信息,就像做菜时,不仅放主要食材,还把各种辅助调料都加进去,让菜的味道更浓郁。
- 定位:因为做了这些改进,U-net++ 可以看作是 U-net 的升级版。
(二)Deep Supervision(深度监督)
- 操作方式:这是 U-net++ 的一个重要特点,简单说就是 "多输出"。普通的网络可能只在最后输出一个结果,然后根据这个结果来调整网络参数。而 U-net++ 在网络的多个不同位置都会输出结果,比如在解码过程的中间阶段就输出几个临时的分割结果。
- 损失计算与参数更新:计算损失(可以理解为网络输出结果和真实答案之间的差距)的时候,会根据这多个位置输出的结果分别计算,然后综合这些损失来调整网络的参数。这样做能让网络在训练过程中更早地发现问题、及时调整,就像学生做题,不仅最后看总成绩,每做完一部分都批改一下,及时纠正错误。
- 应用范围:现在很多视觉相关的任务,比如图像分类、目标检测,都可以用这种 "多输出、多损失计算" 的方法来提升效果。
(三)剪枝优势
- 剪枝含义:剪枝可以理解为给网络 "减肥",去掉网络中一些作用不大的部分,让网络变得更轻巧,运行速度更快。
- U-net++ 剪枝容易的原因:因为 U-net++ 有 Deep Supervision,前面的一些中间层在训练的时候也单独进行了监督训练,这些层本身就有比较好的性能。所以在剪枝的时候,就可以根据对速度的要求,很方便地去掉一些不太重要的层,而且剪枝后网络的效果还不会太差。比如在一些对实时性要求高的场景,像手术中的影像分割,就可以通过剪枝让 U-net++ 快速运行,同时保证分割的准确性。
- 训练特点:在训练的时候,依然会用到网络较深层(比如文档里提到的 L4)的特征,这样能保证网络整体的学习效果不错。
四、U-net+++ 介绍(了解级别)
- 特征整合方式 :
- 低阶特征整合:通过不同的 max pooling(最大池化,一种能提取图片中关键信息、缩小特征图大小的操作)来整合低阶特征,比如 X1 和 X2 这些特征,它们主要对应图片里的轮廓等比较基础的信息。
- 高阶特征整合:通过上采样(一种把小特征图放大的操作)来整合高阶特征,这些特征的感受野(可以理解为网络能 "看到" 的图片范围)比较大,能捕捉到图片的全局信息,比如物体之间的整体关系。
- 特征图统一处理:对网络各层提取到的特征,都用卷积操作处理成含有 64 个特征图的形式,这样方便后续的组合。
- 最终特征组合:因为各层都处理成了 64 个特征图,所以 5 层这样的特征组合起来,就得到了 5×64=320 个特征图,通过这些特征图来得到最终的分割结果,这样能尽可能全面地利用所有提取到的特征信息。