人工智能

应用机器学习和深度学习

使用GANs生成合成图像

本文来自Oge Marques,博士工程与计算机科学教授。Oge是一个书的作者,美国科学促进会莱什纳研究员.他也是一个MATLAB爱好者,在他的课堂上使用MATLAB已经超过20年了。你可以关注他的推特(@ProfessorOge).
偶尔会出现一种新颖的神经网络架构,能够以真正独特的方式解决特定的深度学习问题。生成式对抗网络(GANs)就是这种情况,最初由Ian Goodfellow等人提出2014年的一篇论文这篇文章自发表以来被引用了3.2万多次。在其他应用中,GANs已成为合成图像生成的首选方法。使用GANs创建逼真图像的结果不存在的人养了很多伦理问题一路走来。
在这篇博客文章中,我们将重点介绍如何使用GANs生成皮肤病变的合成图像,用于皮肤科的医学图像分析。 图1:生成式对抗网络(GAN)如何工作。

快速GAN课程

本质上,GANs由两个神经网络代理/模型(称为发电机而且鉴频器)在零和游戏中相互竞争,在零和游戏中,一个代理的收益就是另一个代理的损失。的发电机用于从问题域生成新的似是而非的例子,而鉴频器用于将示例分类为真实的(从域中)或假(生成的).然后更新鉴别器,以便在后续迭代中更好地区分真实和虚假样本,并且根据生成的样本欺骗鉴别器的程度更新生成器(图1)。
在其历史上,文献中提出了许多架构的变化和对原始GAN想法的改进。今天的大多数GANs至少松散地基于DCGAN(深度卷积生成对抗网络)架构,由Alec Radford, Luke Metz和Soumith Chintala在他们2015年的论文
你可能会看到DCGAN,LAPGAN,PGAN用于非监督技术,如图像合成,和cycleGAN而且Pix2Pix用于跨模态图像到图像的转换。

医学图像的GANs

使用GANs创建合成医学图像的动机来自以下几个方面:
  1. 医学(成像)数据集严重不平衡,也就是说,它们包含的健康患者的图像比任何病理图像都要多。创建特定病理的合成图像(以不同的形式)的能力可以帮助缓解这一问题,并为深度学习模型提供更多更好的样本。
  2. 医学图像的手动注释是一个昂贵的过程(与普通日常图像的类似任务相比,可以使用众包或智能图像标注工具).如果基于gan的解决方案足够可靠,可以生成适当的图像,只需由医学专家进行最少的标记/注释/验证,那么节省的时间和成本将具有吸引力。
  3. 由于图像是合成生成的,因此不存在患者数据或隐私问题。
一些主要的挑战然而,使用GANs创建合成医学图像的,是:
  1. 在改进模型的同时,仍然需要领域专家来评估合成图像的质量,这将为部署可靠的合成医学图像生成器增加大量时间。
  2. 由于我们最终要处理的是患者的健康问题,使用合成图像训练(或微调)预测模型所涉及的风险比在非关键人工智能应用中使用类似技术要高。本质上,如果模型从数据中学习,我们必须信任这些模型所训练的数据。
在过去几年中,在医疗应用中使用GANs的流行度一直在快速增长。除了在各种医学领域、专业和图像形态中的合成图像生成外,GANs的其他应用,如跨模态图像到图像转换(通常在MRI、PET、CT和MRA之间)也正在世界各地的著名实验室、大学和研究中心进行研究。
在皮肤病学领域,无监督合成图像生成方法已被用于创建高分辨率的合成皮肤病变样本,该方法也已成功用于皮肤病变分类器的训练。最先进(SOTA)算法已经能够合成高分辨率的皮肤病变图像,而专家皮肤科医生无法可靠地将其与真实样本区分开。图2显示了由a生成的合成图像示例最近发布的解决方案以及训练数据集中的真实图像。 图2:(L)合成生成的图像使用最先进的技术;(R)来自典型训练数据集的实际皮肤损伤图像。

一个例子

这是一个例子如何使用MATLAB生成皮肤病变的合成图像。
训练数据集由带有注释的图像组成ISIC 2016挑战,任务3 (损伤的分类)数据集,包含900张JPEG格式的皮肤镜病变图像。
代码是基于一个例子使用更通用的数据集,然后为医学图像进行定制。它突出了MATLAB的最近添加的功能用于处理更复杂的深度学习任务,包括:
  • 创建深度神经网络自定义图层,除了常用的内置层
  • 使用自定义训练循环训练深度神经网络自动分化
  • 处理和管理小批量图像,并使用自定义小批量处理功能。
  • 评估每个小批的模型梯度-并相应地更新生成器和鉴别器参数。
代码从头到尾使用GANs创建合成图像扩充数据集)来完成(训练模型并生成新的图像)。
使用MATLAB创建合成图像的最佳特性之一是能够在训练网络时可视化生成的图像和评分图(并且,在训练结束时,在嵌入到Live Script的“电影播放器”类型的界面中倒带并观看整个过程)。图3显示了600次epoch / 4200次迭代后的流程截图。一台配备16gb内存、没有GPU的2021年M1 Mac mini的训练总时间接近10个小时。 图3:经过600次/ 4200次迭代训练后的GAN快照。左边:25张随机选择生成的图片;右侧显示生成器(蓝色)和鉴别器(红色)曲线分数(在0和1之间,其中0.5是最好的)。
图4显示了训练完成后随机选择的25个合成生成图像的额外示例。产生的图像类似于皮肤损伤,但还不够逼真,不足以愚弄外行,更不用说皮肤科医生了。它们表明解决方案是有效的(注意图像在本质上是非常多样化的,捕捉了鉴别器使用的训练集的多样性),但它们显示了一些缺陷,其中包括:一个嘈杂的周期模式(在图像中似乎是一个8x8的块网格)和其他可见的工件。值得一提的是,该网络还学习了一些有意义的工件(如彩色贴纸),这些工件实际上存在于训练集中的大量图像中。
图4:合成生成图像的示例。

实用的提示和技巧

如果您选择改进、扩展和调整示例以满足您的需要,请记住:
  1. 使用GANs的图像合成是一个非常费时的过程(就像大多数深度学习解决方案一样)。金宝搏官方网站确保尽可能多地保护计算资源。
  2. 有些事情可能会出错并且可以通过检查训练进度来检测,在他们中间收敛失败(当生成器和鉴别器在训练中没有达到平衡,其中一个压倒另一个)和模式崩溃(当GAN产生的图像种类很少,重复的图像很多,输出的多样性很小)。我们的例子不受这两个问题的影响。
  3. 你的结果可能看起来不“好”(对比图4和图2),但这是意料之中的。毕竟,在这个例子中,我们基本上使用的是标准深度卷积生成对抗网络(DCGAN)合成皮肤病变图像生成的专业工作已经大大超越了DCGAN;SOTA解金宝搏官方网站决方案(如由Bissoto等人。另一个是鲍尔等人。)使用更复杂的架构、标准化选项和验证策略。

关键的外卖

GANs(及其众多变体)将继续存在。根据Yann LeCun的说法,“自切片面包以来最酷的东西。”许多不同的GAN架构已经成功地用于生成真实的(即语义上有意义的)合成图像,这可能有助于在真实图像很少、难以找到和注释昂贵的情况下训练深度学习模型。
在这篇博客文章中,我们使用MATLAB演示了如何使用简单的DCGAN和ISIC档案中的训练图像生成皮肤病变的合成图像。
医学图像合成是一个非常活跃的研究领域,在不久的将来,GANs在不同的医学领域、专业和图像形式中成功应用的新例子可能会出现。如果你有兴趣了解更多,看看这个回顾论文并以我们的例子作为进一步实验的起点。
|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。