闲来无事,被封宿舍,代码不好码,正好有几篇综述,拿来看看,这篇文章主要从U-Net模型的结构性和非结构性改进两个方向做出综述,同时还介绍了视网膜血管,肺结节,肝脏肝脏肿瘤,脑肿瘤四种典型任务为例,阐述不同数据的分割特点和难点;
参考之前的一篇文章:U-Net代码练习
对U-Net有一定了解之后,一定要动手跑一下,加深映像;总的来说,U-Net 网 络 模 型 结 构 主 要 包 括 编 码 器 、解 码 器 和跳跃连接部分。编码器用于提取抽象特征和上 下 文 信 息 ,解 码 器 用 于 将 图 像 逐 步 恢 复 至 原 始 尺 寸 ,而 跳 跃 连 接 则 将 不 同 层 次 的 特 征 进 行 融 合 。
结构性改进就三种情况,编码器解码器改进,跳连接改进,以及模型整体结构改进;大 部 分 改 进 工 作是在原有模块的基础上,增加残差模块、Dense 模 块 、Inception 模 块 、Attention 模 块 等 经 典 网 络 模 块 , 或 综 合 运 用 其 中 的 几 种 模 块 ,以 提 高 网 络 的 分 割 性 能。
2018年的一篇MDU-Net: Multi-scale Densely Connected U-Net for biomedical image segmentation,就是添加了Dense和Inceptioon模块,然后不同层之间进行特征连接,增加网络的学习能力,结构图如下:
代码如何实现呢:应该是定义好各个卷积模块和采样模块,在def forward中来回的进行连接吧,有机会就回来实现一下代码;
2018年的另外一篇文章,Recurrent Residual Convolutional Neural Network based on U-Net (R2U-Net) for Medical Image Segmentation,与原 始 U-Net 相比,这种网络分别在编/解码器阶段用循环卷积层(RCLs)和带有残差单元的循环卷积层(RCLs)代替原有的正向卷积层,使得网络在不增加参数量的同时具有优于U-Net和ResU-Net 的分割性能,网络结构图如下:
代码如何实现呢:不太会,因为这个循环卷积层没用过,只是在NLP任务中听说过循环神经网络(RNN),不知道是否有关系?
2019年一篇顶会文章,Prostate Segmentation using 2D Bridged U-net,文章中是串联了U-Net,每个跳连接之间在通过其他方式连接起来,比较适合病灶分割,结合我之前看过的一篇文章,也是串联U-Net,主要用来进行视网膜血管分割,可以对比学习一下,文章链接:Iter-Net——迭代式U-Net变型
代码如何实现呢:可以封装U-Net,将跳连接部分的接口放出来,但是可能也不太好实现,最莽的手段就是在forward里面按部就班的写;
再来一篇2018年的顶刊文章M-Net,发表在TMI上的文章,主要思想,将输入图片缩放成不同的大小传入U-Net的每一层,同时也将U-Net每一层的输出都拿出来进行损失计算,反向传播,这样可以的大大增加拟合强度,我第一次接触这种每一层都输出结果进行计算的思想,是在
U
2
−
N
e
t
U^2-Net
U2−Net中,文章讲解:套娃式U-Net网络结构;M-Net网络结构如下:
代码如何实现:我猜将图片缩放之后,存入列表中做参数传入网络结构中,那GT图像也要进行同比例的缩放,这样计算Loss时才方便,同时,训练和测试时,输入输出可能不一样,这在 U 2 − N e t U^2-Net U2−Net中有表现;
那针对U-Net的结构型改进总结如下:
数据增强的目的是有意地从原始训练数据中生成更多的训练数据来提高网络性 能 ,常见的数据增 强方法有镜像对称、旋转 、翻转 、随机裁剪等;最最重要的,也是我新学到的:Image Patch操作,在血管分割中,将大图片裁剪成多个小图片,这样能大大增加图片数量!!
数 据 增 强 的 方 法 有 很 多 ,但 具 体 选 择 哪 些 数 据 增 强 方 法 往 往 不 是 固 定 的 ,何 种 数 据 增 强 技 术 是 最 佳 的 也 很 难 衡 量 。 在 实 际 应 用 中 ,要 根 据 训 练 数 据 集 的 特 点 进 行 合 理 选 择 ,使 网 络 具 有 最 佳 的 泛 化 能 力 和 鲁 棒 性 ,进 而 有 助 于 网 络 性 能 的 提升;
代码如何实现呢:Pytorch有自带已集成好的方法,但是传入参数是单个的PIL或者是Numpy数据,不能是object或者是List数据,意味着你需要调用两次才能实现原始图像和GT图像同时变换,而且有时候随机数不同,两者的变化也不同,因此,建议在github上找一个大神写好的,然后自己修修改改,作为自己的,同时以后也可以作为实验室祖传代码传下去,哈哈哈哈哈!
常见的是BN,BN 层可使网络中的数据分布得更 均 匀 ,从而可以缓解梯度弥散,加快训练速度,但BN算法容易受到batch size的影响,因此出现了样 本 归 一 化(IN),即 只 对 每 个 样 本 进 行 类 似 BN 的 标准化处理,使其不受通道和 batch size 的影响;组 归 一 化(GN)将 通 道 划 分 为 组 ,在 组 内 计 算 数 据 的 均 值 和 方 差 ,进 而 实 现 对 图 像 的 归 一 化 处 理,之后还有集大成者,谷歌在 2019 年提出了新的归 一 化 层 ——FRN(filter response normalization),它 既 能 解 决 mini batch 问 题 ,又 能 在 batch 较 大 时 具 有 比 使 用 BN 更 好 的 性 能,5种归一化方法介绍:BN、GN、LN、IN、SN 、FRN
激活函数可使输入输出之间生成 非 线 性 映 射 ,从 而 使 得 网 络 能 够 学 习 更 为 复 杂 的 内 容 。 U-Net 网 络 及 大 部 分 的 改 进 网 络 均 使 用 ReLU 函 数 进 行 激 活 ,能 够 有 效 避 免 和 纠 正 梯 度 消 失 问 题;但是其也存在着梯度消失问题;因此人们剔除LeakReLU,ELU,mish等激活函数,常见激活函数如下:Pytorch 非线性激活函数
代码如何实现:有时候不同的激活函数产生的效果不同,Pytorch提供的激活函数非常的全面,重点是学习前辈论文,然后有选择性的使用激活函数,这个在发表论文中,如果仅仅只是使用,是不够发论文的,除非你新发明了一种新的激活函数!
损失函数是神经网络寻找最优权重参数的指标。常用的损失函数有BCELoss,BCE,DIceLoss, IoULoss等,同时组合使用损失函数也是当前发论文的一种方向,但是想要取得成果,其实还是很难的,毕竟你不仅要有效果,还有指出为何有效果;不同的损失函数优化目标不同,有时候选择不同的损失函数,都会导致训练不收敛,因此损失函数寻找和组合需要谨慎和细心,Pytorch现有损失函数如下:Pytorch Loss
代码如何实现:Pytorch集成的损失函数只有一少部分,大部分的分割损失函数需要自己实现,这里就需要平时多看GitHub进行收集了,收集好了,作为实验室祖传代码,哈啊哈!
针对 U-Net 网络在结构改进和非结构改进方面取得的成效,按照改进的目的对改进措施和代表性网络进行了归纳总结,结果如下:
根 据 不 同 的 疾 病 图 像 特 点 ,我 们 采 取 适 当 的 措 施 对 U-Net 模 型 加 以 改 进 ,并 将 其 应 用 于 不 同 医 学 图 像 的 分 割 中 ,会 取 得 不 错 的 效 果 。 下 面 将 对 U-Net 及 其 改 进 后 的 网 络 在 视 网 膜 血 管 分 割 、肺 结 节 分 割 、肝 脏 和 肝 脏 肿 瘤 分 割 、脑 肿 瘤 分 割 四 种 不 同 医 学 图 像 分 割 中 的 应 用 研究进行总结:
二 维 彩 色 眼 底 图 和 三 维 光 学 相 干 断 层 扫 描 (OCT)图 像 是 眼 科 疾 病 最 常 见 的 诊 断 依 据;
其本身存在的困难点为 结 构 极 其 复 杂 ,具 有 很 高 的 弯 曲 度 ,且 形 态 各 异 ,同 时 视 网 膜 血 管 细 小 ,分 叉 和 交 叉 区 域 较 多,分割精度要求较为严格;文章中举例了DUNet: A deformable network for retinal vessel segmentation,在三个公开数据集DRIVE、STARE 和 CHASE上的分割效果很好,优于传统的U-Net,针对血管分割,需要提升网络学习细小血管的能力,因此需要更多的信息采集模块,文章后面提到的添加Inception模块,也是相同的思想;同时,我之前看过的一篇文章Iter-Net:Iter-Net——迭代式U-Net变型,也是通过串行U-Net提升网络分割精度的;
通 过 观 察 CT 图 像 中 肺 结 节 的 纹 理 特 征 ,可 以 较 为 清 晰 地 判 断 病 人 是 否 有 肺 癌 隐 患 ,并 量 化 分 析 肺 癌 的 恶 性 程 度 , 从 而 高 效 地 辅 助 医 生 进 行 诊 断;
其 存 在 的 分 割 难 点 在 于:肺 结 节 体 积微小,与肺实质中的血管等组织相似,且在 CT 图 像 中 存 在 边 缘 模 糊 、对 比 度 低 、灰 度 不 均 匀 等 问 题 , 容 易 受 到 噪 声 和 伪 影 的 影 响 ,从 而 在 一 定 程 度 上 对 医 生 的 诊 断 造 成 了 干 扰;
文章中举例了Dense U-Net,Res U-Net,也有添加了Inception的U-Net,分割效果都不断的优化,同时最令我注意的是,其实很多分割存在着两个阶段,第一阶段是粗分割,分割出大致区域或者是个数,第二阶段,精细分割,确定分割范围,这个我没接触过,以后可以试一试;
同时文章中主要列举了分割的改进方法:
实现肝脏精准分割有助于肝段切除和肝移植 体积测量。因此这一块主要说的是3D领域的分割;
其分割难点在于:肝脏和肝脏肿瘤在形状和大小上 都 是 不 规 则 的 ,它 们 可 能 与 周 围 的 器 官 比 较 相 似; 由 于 仪 器 设 备 参 数 不 同 ,CT 图 像 间 的 灰 度 值 也 存 在 差 异 ,进 而 肝 脏 所 显 示 的 位 置 也 不 同 。
从文中介绍的三个网络来看,增 加 三 维 条 件 随 机 场 的 3D UNet-C2 能 够 有 效 减 少 假 阳 性 ,剔 除 非 肝 脏 区 域 ,同 时 优 化 肝 脏 边 缘 的 分 割 效 果 。 BSU-Net 能 够 更 好 地 控 制 形 状 变 形 、减 少 假 阳 性 和 假 阴 性 ,从 而 验 证 了 使 用 密 集 连 接 模 块 及扩展编码路径的有效性。LV-Net 通过使用深度 监督机制使网络在减少参数量的同时仍然具有较 好的分割表现。
MRI 是 一 种 典 型 的 非 侵 入 式 成 像 技 术 ,能 够 生 成 高 质 量 的 无 损 伤 和 无 颅 骨 伪 影 的 脑 影 像 ,是 进 行 脑 肿 瘤 诊 疗 的 主 要 技 术 手 段。
脑 肿 瘤 区 域 的 分 割 难 度 相 比 其 他 种 类 图 像 的 分 割 难 度 更 大 ,不 同 的 肿 瘤 区 域 又 存 在 不 同 的 分 割 难 点 。 比 如 :
公开数据集是:BRATS,文章中提到了3D-HDC-UNet网络结构,其中通过Dice 损失和 Focal 损失的混合损失函数替换原来单一的 Dice 损 失 函 数 ,加 强 了 稀 疏 类 对 损 失 函 数 的 贡 献 ,提 高 了 肿瘤核心区域的分割精度;
从文章分析结果来看:
不 同 类 型 的 疾 病 在 进 行 诊 断 时 所 使 用 的 图 像 略 有 不 同 ,比 如 视 网 膜 区 域 的 疾 病 往 往 通 过 眼 底 彩 色 图 像 进 行 诊 断 ,肺 结 节 和 肝 脏 肿 瘤 常 通 过 CT 图 像 进 行 诊 断 ,而 脑 肿 瘤 一般通过磁共振图像进行诊断。各部位的图像具 有 各 不 相 同 的 特 点 ,因 此 在 进 行 图 像 分 割 时 也 存 在 不 同 的 分 割 难 点 。 针 对 各 种 问 题 ,研 究 人 员 采 取 了 相 应 的 改 进 措 施 ,有 效 地 提 高 了 分 割 精 度 和 网 络 性 能 。 根 据 上 述 内 容 ,本 文 对 U-Net 及 其 改 进 网 络 在 各 类 疾 病 图 像 分 割 中 的 相 关 应 用 进 行 了 总 结 ,具 体如下:
通 过 研 究 大 量 相 关 改 进 工 作 可 以 看 出 ,U-Net 模 型 的 改 进 ,网 络 结 构 改 进 中 ,残 差 模 块、Dense 模块、Inception 模块和 Attention 模块是最 常 见 的 引 入 模 块 ,这 些 模 块 能 够 使 网 络 有 效 提 取 特 征 ,充 分 利 用 上 下 文 信 息 ,从 而 提 高 分 割 精 度 ;对 于 引 入 的 卷 积 来 说 ,扩 张 卷 积 和 可 变 形 卷 积 最 为 常 见 ,它 们 能 够 调 整 感 受 野 的 大 小 ,减 少 参 数 量 ,使 网 络 可 以 利 用 不 同 层 次 的 特 征 ,从 而 有 效 避 免 过 拟 合;
非 结 构 改 进 对 网 络 性 能 提 升 的 有 效 性 也 逐 渐 得 到 了 关 注 ,有 些 研 究 者 在 进 行 网 络 结 构 改 进 的 同 时 ,充 分 考 虑 了 数 据 增 强 和 数 据 归 一 化 方 法 的 综 合 运 用 ,并 提 出 了 一 些 新 的 混 合 损 失 函 数 ,有 针 对 性 地 训 练 网 络 ,从 而 提 升 了 网 络 的 性 能;
自己的想法: