深度学习网络研讨会2020,第6部分:医学图像深度学习概述
从系列中:2020年深度学习网络研讨会
深度学习是人工智能领域取得显著进展的一项重要技术。虽然你可能知道深度学习的主流应用,如Xfinity语音遥控器、Siri或Alexa,但你对医疗工程和科学中的人工智能应用了解多少呢?
MathWorks开发人员已经在MATLAB中应用了深度学习函数®到工程和科学工作流程。通过一个心脏MRI例子的镜头来了解使用MATLAB的深度学习。你会看到:
- 深度学习在医学工程和科学中的应用在哪里?它是如何推动MATLAB的发展的
- 如何研究、开发和部署您自己的深度学习应用程序
- MathWorks工程师可以做些什么来帮助您通过深度学习获得成功万博1manbetx
您还将看到技术演示,包括:
- 半自动地真图像标注
- 训练和评估磁共振成像语义分割算法
- 生成优化的本地嵌入式代码
今天的议程主要包括,今天演讲的三个主要章节。我们会快速概述一下深度学习在工程和科学领域的应用或者我们作为一个公司在图像深度学习方面所做的工作,然后我们会讲一个实际的例子。我们将在MATLAB中开发一个实际的深度学习解决方案,然后在MathWorks中介绍在哪里可以找到一些深度学习支持。万博1manbetx
所以这里只是一种非常非常高水平的概述——深度学习是一种真正推动人工智能大趋势的技术。自20世纪50年代以来,人们对人工智能产生了极大的兴趣。为了便于定义,我们认为人工智能是指任何能够让计算机或机器模仿人类智能的技术。这并不一定意味着它本身必须是智能的,它只需要能够欺骗人类,以便相信与他们互动的机器具有智能。
直到80年代,我们才开始研究算法和方法,让机器从数据中学习任务,而不需要明确地编程去做那些测试。这就是事情开始变得令人兴奋的地方。然后,让我们进入今天的主题,使用深度学习,使用神经网络直接从数据中学习任务,这是一种使用机器深度学习执行人工智能的更高层次、更复杂的方式。
因此,深度学习已经成为我们日常生活的一部分。当我们对着设备说话时,我们就能看到它。我知道我有一个苹果手表,我不断地告诉它提醒我做这个或尝试做那个,或为我自己总是忘记做的事情设置计时器,人脸检测,以及一个特别令人兴奋的改变商业空间的方式,自动驾驶。
通常,我们倾向于在一些有趣的项目的背景下听到机器学习和深度学习,有人在做一些有趣的项目,然后把它发布到网上,从很多事情中得到很多有趣的,兴奋的东西,比如探测物体——一只狗,一只猫,一只松鼠或任何东西,然后,当然,延伸到像自动驾驶,识别自行车,行人和其他汽车。
但如果你看一下这个例子看一下右边的图片,我们可以看到深度学习在工程和科学中的应用。这个例子是关于壳牌工业的生产线,我相信是这样。他们是某种监控机器,确保一切看起来都很好。
我见过很多——或者和很多顾客交谈过,我个人发现,一个更可怕的例子是在手术过程中监控外科医生,他们实际上会注意外科医生是否拿了手术刀,用了它,然后确保他们把手术刀放回托盘上,因为很明显,偶尔一个人可能会犯一个小错误,把异物留在人体内。这是我听说过的最可怕的应用之一,但使用机器学习和人工智能有望缓解这个问题。所以深度学习真的,真的开始渗透到当今世界。
这里还有一些在行业中使用MATLAB进行深度学习的例子。实际上,我们已经在许多方面被应用到自动缺陷检测中。我看到它到处都是,而且它显然对质量控制非常重要——在其他一些行业中,车辆控制和地震事件检测也是如此。
我们也非常热衷于研究,如果你有兴趣了解这方面的信息,这里有几个例子和链接。我们会做一个和左边这个类似的例子。我们将看看如何在MRI扫描中分割感兴趣的区域。很明显,这是一个组织切片,所以看看做这些类型的任务。
以上就是深度学习的概述以及到目前为止我们在MATLAB中所做的一些事情。这是一个非常快速的时间轴来展示深度学习在MATLAB中的发展,说实话,这个时间轴早在2016年之后就已经存在了。我们提供的工具中有一个神经网络工具箱已经很多年了,直到2017年,我们决定将名称从神经网络改为深度学习,以便与时代同步。然后你可以看到每年我们都在增加越来越多的功能来应对这个领域,真的。
其中一些新功能和新工具本身就是深度学习工具——创建神经网络,不同类型的层,权重共享和训练循环等等,还有支持代码生成等功能,当你最终需要部署你的深度学习算法时,它以一种非常简单的方式成为可能。万博1manbetx现在,到2020年的一半,我们已经有了一个相当大的新功能列表。然后到2020年下半年,我们肯定会看到更多,所以要睁大眼睛。
这里有几个例子,关于图像和视频的深度学习——自动驾驶,符号检测,当你开车穿过一个空间时能够识别物体,然后是一个语义分割的例子,能够在视频中逐像素地标记感兴趣的物体。这里还有几个例子,这次是关于信号的。所以我不会在这个问题上花太长时间,因为我们今天的主要兴趣是图像。
我简单地说一下,我们确实有一个强化学习工具箱。有人知道强化学习的概念吗?这是你们熟悉的,不熟悉的,感兴趣的还是不感兴趣的?我们有一个人对强化学习很熟悉——有一些兴趣,他曾经做过这方面的工作。好了,好了。
对于那些不是特别熟悉的人来说,这就像是在一个全新的层面上学习。我喜欢把它想象成你把一个婴儿放在一个环境里,让他试着做一些事情,和你一起学习。这就像适应性学习,如果你愿意的话,只是尝试不同的模拟,最终学会如何——在右边的例子中,走路。在左边的箱子里,穿过车流。这有点像实时学习。
所以我不会在强化学习上花太多时间。这完全是另一个话题了。让我们看看专注于图像的深度学习。
我们已经讲了很多我们可以支持的工程科学领域特定深度学习应用的例子。万博1manbetx还有其他几个原因可能会让你想认真考虑使用MATLAB进行深度学习。所以我们有多平台部署解决方案。万博 尤文图斯我们的目标是能够将你的深度学习算法部署到你最终部署系统的任何环境中。
我们有各种各样的功能和工具来提高平台生产力,能够加速使用gpu,在云上工作,等等。而且,我们在PyTorch万博1manbetx中支持与TensorFlow的很多互操作性。我们知道世界不是围着我们转的。在这个领域有很多玩家,我们尽最大努力确保我们和操场上的其他孩子玩得友好。
而一切的中心是人,对吧?所以我们有支持你的人。万博1manbetx我们有一个非常非常丰富的客户基础,他们也提供了很多社区工具。所以这一切都是围绕着那些制造这些伟大工具的人。
这是我们今天将要看到的更多的预览,一些关于平台生产力的信息。所以这里有一些工具,你可以看看如何提高你的工作效率。但还有一件事我们今天不会讲,但我绝对鼓励你们去探索,那就是我们如何连接到其他资源,比如AWS、Azure、Docker和NVIDIA容器。
因此,为了给MathWorks在深度学习方面的其他工作打上一个漂亮的小蝴蝶结,今年早些时候,根据独立的Gartner深度学习和机器学习平台Magic Quadrant,我们很高兴被标记为领导者,试图创建一个尽可能完整的平台,以支持典型的深度学习工作流的所有需求。万博1manbetx
好了,现在让我们真正进入一些重要的部分。接下来的课程将会围绕这四个方面展开。所以我们要看一下AI驱动系统设计的这四个步骤,从数据准备开始,到实际训练AI模型,一小段模拟和测试,最后,讨论部署。
让我们来看看今天的问题。对于今天的例子,我承诺了一些MRI和一些语法分割。
对于你们中可能熟悉或不熟悉的人来说,这是一个公开的数据集,我想,它包含了大约45名患有不同心脏疾病的患者以及一些专家标记的心脏不同部位的轮廓。所以我们今天的目标是正确分割这些心脏图像的左心室。我们实际上会利用一个已经存在的已经训练过的神经网络,VGG16神经网络,并调整它来适应我们这里的用例。
就像我承诺的,我们将从数据准备开始。这里有什么动机吗?这是卡帕西先生在2018年TrainAI会议上展示的一张幻灯片。他评论说,当他在攻读博士学位时,他花了最多的时间,也许是,专注于开发模型和算法,真正专注于它的科学。这很好,因为当你进行研究时,有很多公开的数据集可以使用。
突然之间,当你进入商业领域时,这些数据就是你的财富。这是你的金子。所以你实际上花了很多时间来确保你的应用程序和你的目标有正确的数据而花在模型和算法上的时间更少。因此,数据准备实际上是一项相当重要的任务,因为,如果你在此之前一直在研究深度学习,我相信你可能已经以某种方式、形状或形式找到了答案。
所以我们要看一看一些帮助处理数据的工具。特别地,我将尽力强调更多的用于医学图像处理的工具,不仅仅是一般的图像处理。我们来看看今天的例子。
我们会快速介绍一下MATLAB桌面。这是MATLAB的最新版本,MATLAB R2020a。这是我们的桌面。这是你们第一次打开MATLAB时将会看到的。
在大多数情况下,与您交互的主要面板都在这里——命令窗口。你可以创建一些变量,对这些变量执行操作,创建可视化,等等。在大多数情况下,这是相当直接的。我认为命令窗口有点像我的谷歌聊天或者我的Skype或者别的什么因为你在这里与MATLAB对话,偶尔发现一些整洁的小彩蛋。
当你用MATLAB工作时,你会对你的工作空间进行跟踪。这只会告诉你你可以使用什么样的数据。现在我知道我打开了一些不同的东西。我可以处理变量,比如b或x等等。
最后,还有一个命令历史记录。听起来就是这样。它是您使用过的所有命令的历史记录。如果我想重复我的步骤,我可以快速地做。
特别是对于新手,甚至是一些MATLAB老手,请注意上面的工具条。这是一个发现MATLAB新特性的好地方。通常情况下,你会从将数据导入MATLAB开始,对吧?我也非常喜欢plot选项卡因为我很直观,我们今天会花很多时间在APPS选项卡上。好了,这就是MATLAB的概述,我们将进入演示。
就像我提到的,我们会看一下心脏图像我们会准备一些数据。我在这里所做的是一个包含几个文件夹的项目——第1部分、第2部分和第3部分。我认为这是不言自明的。当你打开这个项目时,你会得到打开那些部分的快捷方式它会为你加载所有东西。
现在我们继续,从数据集开始。这是一个MATLAB实时脚本的例子。顺便说一下,如果你不熟悉它,一个很好的跳过不同部分的方法是选择你感兴趣的部分,然后点击运行,运行这里的部分,这将允许你浏览演示。让我们开始吧。
就像我说的,只是试图处理数据,甚至加载数据有时可能是一个挑战。这是我最喜欢的方法。我喜欢使用MATLAB中所有可用的应用程序。所以现在,我很幸运。我碰巧在MathWorks工作,所以我拥有我们创造的每一个工具箱。你的应用程序列表可能比我的小一点。
然而,我们今天在处理图像,所以我只对Apps选项卡的这一部分感兴趣,更具体地说,我们正在处理DICOM,所以我要继续,打开DICOM浏览器,拉入我的心脏DICOM图像。继续并选择我的dicom所在的文件夹,然后我们将拉入我们的心脏切片来查看。
非常快速和简单。图像设置在两个时间点[?]和[?Asis ?] [?远侧地。我们可以做很多事情。首先,我们可以将该系列导入到工作区中。然后我们就可以在MATLAB中使用它来进行运算。
我们还可以把它形象化。我们可以在音量查看器中查看。等一下,让我,开始。我们还有音量查看器。我个人非常喜欢这个,特别是在处理医学图像时,因为很多医学图像本质上是体积的,对吧?所以我可以探索体积。
如果我已经有了标签,我可以把它拉进来,你可以看到标签覆盖在我的图像上。操纵方式,以查看图像,但我想。然后也导出渲染。导出我想要可视化我的图像的方式,这样我也许可以为论文,报告或演示重新创建这个可视化。
这是对MATLAB中dicom的快速介绍。我们实际上有一个非常丰富的使用dicom的集合——在我们的图像处理工具箱中有一个非常丰富的使用dicom的函数集合。找到它的方法是去我们的“读取和写入图像数据文件”部分,你可以在这里找到完整的列表。这是一个很好的资源可以利用,看一看。
现在我们已经学习了如何在MATLAB中引入dicom,让我们谈谈如何组织数据为深度学习做准备。到目前为止,我认为最好的方法是与imageDatastores合作。这真的是一个容器。我指向图像所在的位置然后创建这个指向图像所在位置的容器。这是我想要的文件扩展名。
现在,如果我看一下我创建的这个图像数据存储,我有105张图像要处理,还有一堆信息关于它们存在的位置,它们位于哪个文件夹,等等,以及如何读取它们。通过使用数据存储,你现在可以在图像处理和计算机视觉工具箱中解锁更多的功能。其中一个例子就是快速加载图像并为它们贴上标签,为深度学习做准备。快速做一下,图像标签。
我会尽力找出感兴趣的区域。就像我提到的,我们实际上已经有了专家标签,但如果你没有专家为你的图像标签,这是一种开始这样做的方式。我们有很多选择——你可以创建一个多边形你可以尝试用这种方式抓取你感兴趣的区域,这取决于你有多少时间。
但对我来说,我真的喜欢贴标签机我可以开始一个小标签的数据集,但是如果我有一种算法或者half-trained神经网络这种已经很好地找到感兴趣的地区,我可以导入到镜像贴标签机和半自动的过程,然后就用我的人类时间仔细检查标签是多好,在培训前,在你的神经网络。
我们有几个问题。对于非常大的数据集,如何处理标签呢?所以,在这种情况下,能够实现半自动化将是一件非常好的事情。在某些情况下,这是可能的。在某些情况下,并非如此。
您一次可以处理多少个标签,并保持任务的实际速度?这是一个非常好的问题,这完全取决于您的应用程序。你可能需要很多标签,或者你只关心几件事。
如果你要制造一辆自动驾驶汽车,你可能真的只需要担心你可能会在路上发现的东西。但你不一定需要能够识别——我不知道,一栋房子和一栋摩天大楼之间的区别,对吧?只要知道他们不在路上而你只需要保持在路上。当然,这取决于你的问题的性质。最后,一旦你有了足够的数据你至少可以开始工作了,你就可以导出你的标签然后开始真正的训练。
这就到数据准备的最后一步了。好,让我们开始讨论如何训练一个人工智能模型。最棒的是,当你试图在MATLAB中解决这个问题时,我们基本上可以从一套完整的算法和预先构建的模型开始。这里有一些算法的例子可以用于机器学习——决策树,朴素贝叶斯;在深度学习中,cnn,它在图像处理中非常常见;GANs, LSTM等等,还有很多。
我们还支持导入预万博1manbetx构建的模型,这就是今天这个例子要用到的,还有很多很多的参考例子,用于医学图像处理和深度学习,以及其他特定于行业的例子,你可以参考和构建它们。我很喜欢这些参考例子的一点是,你可以直接换出数据集,这样就可以从代码中得到很多好处,而不需要做很多改变,这很好。
好的,如果你参加了我们本周之前的一些系列讲座,网络研讨会,其中一些可能看起来很熟悉。但我们有一些工具,旨在使创建神经网络的过程更容易。对于这个例子来说,这是深度网络设计者应用程序,它只是一个创建或导入现有神经网络的视觉环境,修改它们,改变它们,用它们做新事情,然后导出它进行训练。所以能以一种可视化的方式来做这个非常非常好,就像有一个完整的列表一样。有时,当您开始使用一个新的工具箱时,您并不总是知道有哪些函数可用,但拥有完整的列表确实很好。
2020A的新功能是在同一个应用程序中导入数据和执行培训,所以它实际上更像是一个工作流应用程序,而不是简单地创建深度网络。这对你们来说是可行的。还有一件事要补充,我想在这个视频中没有展示出来,就是你可以导出代码,哦,在这个视频中展示了,你可以为培训导出代码。如果你有一个本地数据集你想弄清楚它是如何工作的,然后你想要扩展或扩大训练到一个更大的数据集,你可以通过生成代码然后在云上或其他地方重新运行它来实现。
这也是相当新的。实际上我开始爱上这个特别的应用程序了。所以我绝对鼓励大家尝试一下。它是我们的实验管理器,基本上,它允许你用不同的参数尝试一系列不同的训练设置,看看你会得到什么样的结果。最棒的是,它实际上保存了你尝试过的所有不同的事情——你尝试过的所有不同的事情,不同的实验,如果你愿意的话。这样的话,你就可以参考它如果你要写一份报告的话,你已经为你保存了所有的资料现在你可以在发表你的作品时参考所有的资料。这个应用程序叫做实验管理器。
好吧,让我想想,问你几个问题。是的,幻灯片会在演讲结束后与观众分享。好的,继续。
我们也支持硬件加万博1manbetx速。我提到过这个,我没有时间详细讲,但基本上你可以在任何地方进行训练,放大或缩小,在GPU上,你可以使用的东西。然后,如果在这方面有问题,我肯定想把它转移到最后,但如果与其他框架进行互操作——将TensorFlow或PyTorch神经网络导入MATLAB或导出到PyTorch或TensorFlow,等等,所有这些事情——通过我们对ONNX框架的支持,这是可能的。万博1manbetx如果大家有兴趣,我们可以在问答环节讨论这个问题。
实验经理[?Mron, ?]只适用于神经网络。这是深度学习工具箱的一部分。但我们确实有一些更传统的机器学习的东西,可以做类似的事情,比如贝叶斯优化,所以如果你感兴趣的话,也许可以在另一个环节来探索。
实验管理器自动链接。Melissa问了一个很好的问题,实验管理器会自动链接到工作项目吗?是的,的确如此。实际上,你们的实验管理器项目就是你们的MATLAB项目,这很方便,所有东西都放在一起了。
好了,让我们快速看一下建模。这将会有点长,但我们会尽最大努力达到目标。好,回到左心室分割。下面是第2部分,建模的过程。好了,我们开始吧。
一开始,我们做的和上次我们在MATLAB中输入数据时做的完全一样。我们使用imageDatastore来指向数据所在的位置。让我展示一下输出,我们可以看到它是实时运行的。再说一次,我们有大约805张图像要处理。我们实际上已经明确指定了我们希望dicom如何被读取。
在另一个文件夹中,我们也有地面真相蒙版。与其创建一个imageDatastore的地面真相掩码,我们实际上会告诉MATLAB这些是像素标签,我们会创建一个pixelLabelDatastore来做那个。现在它知道文件夹里的所有东西都是像素标签。它们有两类——背景和左心室容积,等等,等等,现在它被定义了。
其中一个好处是,我非常喜欢数据存储。我喜欢数据存储的一些原因是,它让我对我的800多张图像的巨大数据集的运行情况有一个很好的、高水平的概述。现在我很快就能看到我有一个不平衡的数据集,背景像素比左心室容积像素要多得多,这可能是我以后训练或准备训练我的神经网络时需要考虑的东西。是的,而且标签是分开存放的。Mron,问得好。
在这里,为了让我们知道这些图像到底是什么样子的,我创建了自己的函数它会随机选择一张图像并显示轮廓,像素标签对应心脏图像。我们在整个心脏上都有切片。我看看能不能得到几个不同的。他们现在都正夹在中间。
好了,开始吧。这里更接近心脏的顶点。有些更——哦,这个在心脏的顶端,那个在更尖的地方。还有一些在中间。所以我们的图像中有一些多样性这可能会影响我们神经网络的学习方式。
很快地,我知道在幻灯片中我展示了一个如何通过应用执行训练的视频,现在,这个例子将带我们通过编程代码行来执行训练。我想让大家注意的关键函数是trainNetwork函数。它有三个输入,一个是数据源,所以我们必须把两个数据存储合并成一个数据源,交给列车网络;神经网络本身,层图,这就是这个图的意思;还有训练选项,训练超参数。这就是我们下一节要讲的三件事。
这只是题外话,但您可以执行数据增强操作,如旋转图像、翻译图像、放大或缩小图像,作为增强或增强您正在处理的数据的一种方式,特别是在处理相当小的数据集时。这可能是值得一用的东西。创建一个包含您想要的所有不同类型的增强的数据增强器相当容易,然后将它们组合到指定了额外数据增强的数据源中。这就是我们的数据源。我们现在明白了。
现在,有一个小步骤需要注意,这是很重要的,特别是当你试图证明你创建的神经网络可以在从未见过的数据上完成工作时。这就是将数据集划分为训练集,验证集和测试集。我们简单讲一下。你可以看到图像的分布。
现在我们要创建神经网络。我做的很快,很简单。我只是用VGG16创建一个段层图。如果您非常好奇,可以打开关于这个函数的文档来了解更多信息。
我们来看看标签的不平衡。我们讲过背景像素比左心室容积像素要多得多。所以你能做的一件事就是你可以处理像素分类层的类权值,也就是神经网络的最后一层,用它来惩罚背景像素的过度分类。
另一个很好的新特性,实际上,你可以使用骰子作为精确度的度量。这实际上考虑到了语义分割问题中可能存在的不平衡。我不创建权重,我只会使用DicePixelClassificationLayer。基本上,我已经移除了最后一层,并在最后添加了我的新层,现在我有了一个可以执行语义分割的神经网络,以及这种内建的方法来处理有偏差的数据集。
跳过本节。这只是做了一个可视化和双重检查,以确保神经网络看起来不错。现在我们要讲训练网络函数的最后一个输入,就是设置执行训练的超参数。现在,我不打算进行训练,因为上次我这样做,花了大约10个小时,我们肯定没有时间。相反,我要向你们展示的是进行这种训练的样子。
当我运行这行代码时,它会给我一个很好的图告诉我在x段时间内,我的准确率有多高。所以我选最后一个。我是在服务器上运行还是在云上运行?这个问题问得很好,我想借此机会强调一些东西。
在本例中,我将其设置为自动,所以不管我是否有自己的并行池或计算机能检测到的任何资源,它都会在那里运行。我们的深度学习工具的优点在于我们一直在努力包容你完成培训的方式。所以你可以在你的单个CPU或GPU上进行训练,恰巧与你的计算机相连,你也可以连接到一个并行池,这就是你现在可以开始访问云的地方。通常,当我训练这个时,我实际上会选择并行,以便将工作发送到我在云中心创建的集群。
在这里结束。基本上,一旦一个神经网络被充分训练,我们就可以把我们的测试数据集拉进来并对其进行语义分割,处理图像,然后利用这个很好的内置函数来评估我的神经网络在测试数据集上的表现。这将需要一些时间来运行,所以我不打算完成这个示例,但是当我将最终结果发送给您时,欢迎您查看结果。
好的,继续,我们有——我确实想花点时间谈谈模拟和测试,特别是在医疗成像的背景下,因为我知道很多人,特别是在医疗设备领域,一直在问一些问题——比如,把人工智能引入临床环境意味着什么?对于食品和药物管理局来说,使用带有人工智能算法的设备意味着什么?所以这是需要注意和思考的,以及你需要对你的AI执行什么样的验证和验证。
答案有点含糊不清。我们还不知道。FDA仍在决定如何在他们的设备上使用人工智能系统。我知道他们已经批准了一些,但就我所知,肯定没有一个自主系统,没有任何人工干预。这是一件值得关注的有趣事情。但这只是一个旁注。
我会快速地过一遍,但我们确实有办法部署你最后的神经网络。在这个例子的最后,我基本上保存了一个神经网络。这个神经网络是我最后的迭代。我如何把它放到最终部署的解决方案中,是嵌入的还是服务器上的?我们有解决方案,我这里有一个这万博 尤文图斯样的解决方案的例子,我现在很快地过一遍。
基本上,这个例子是建立在这个特定的文档例子之上的,所以当你收到代码时,你可以打开这个文档例子。基本上,这里重要的部分是阅读先决条件,因为需要进行一些设置。你要建立你的语义分割网络,让它在GPU上本机运行。还有一些额外的库和东西要处理。
但归根结底,重要的是你有办法部署你的最终网络。这是一个算法的例子,我想把它放到我的最终设备上,加载它,预测,这是我的算法。最美妙的是,我们可以,首先,自动地做这个。我们将自动生成代码,这是最终代码的一个示例。
这些都是由MATLAB自动生成的,非常好。我能看到它是如何分解的。你可以看到代码中所有的注释也在最终结果中,我可以很好地概述我的结果是什么。该代码已经可以部署了。把它带到该去的地方。
相关产品s manbetx 845
了解更多
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。