深度学习

理解和使用深度学习网络

深入学习使用Python和MATLAB计算机视觉

这篇文章来自总局品牌博士和能力的工程和计算机科学教授。总局是一个Sigma Xi杰出的演讲者,书的作者,AAAS后者的。他也是一个MATLAB迷,使用MATLAB 20多年来在他的教室。你可以在推特上跟随他(@ProfessorOge)。在这个博客中,总局将涵盖如何深度学习使用Python和MATLAB计算机视觉的一个例子。
深度学习(DL)技术已经明显改变了计算机视觉领域在过去的十年中,经典的任务(例如,提供先进的解决方案金宝搏官方网站对象检测图像分类),为解决具有挑战性的新问题,打开门等image-to-image翻译视觉问答(葡萄)
DL的成功和推广计算机视觉和相关领域(例如,医学图像分析)培养,在很大程度上,通过丰富的可用性工具、应用程序和框架PythonMATLAB生态系统。
在这篇文章中,我将展示你的团队如何有效地使用MATLAB和Python和提供一个浅显易懂的配方,你应该允许您利用“两全其美”构建计算机视觉解决方案使用深度学习。金宝搏官方网站

背景

Python是一种编程语言创建的Guido van Rossum在1990年代早期。它已经被许多数据科学家和机/深度学习研究人员由于受欢迎包(例如,scikit-learn)和框架(例如,Keras,TensorFlow,PyTorch)。
MATLAB是一种编程和科学计算平台用于分析数据,开发算法,并创建模型在各种科学和工程领域。它有一个成功的历史由工程师和研究人员广泛采用在工业和学术界。它功能很多专业工具箱封装相关算法、交互式工具和丰富等领域的例子吗机器学习,深度学习,图像处理,计算机视觉(更不用说但几)。MATLAB也充满活力社区用户谁提供附加功能(包括应用程序和整个工具箱)和越来越多的出现在受欢迎的代码共享库等GitHub
根据我个人的经验,我用MATLAB(25年和计数)和Python(不到十年)在不同的研究项目,课程,训练,和出版物,主要是在图像处理/分析的背景下,计算机视觉,和(最近)数据科学、机器学习、深入学习。
我也曾与多学科团队采用各种工具,精通不同的技能。我知道是多么重要促进和便利的采用流线型,证据确凿的深度学习工作流程。我也总是用最好的可用工具的强烈支持者以最好的方式完成工作。幸运的是,您可以使用这两种语言在一起,我们将显示下一个。

背景和范围

MATLAB的互操作性和Python被广为记载视频,在线研讨会、博客文章MATLAB官方文档。当学习这些资源具有极其重要的价值如何从MATLAB调用Python脚本,反之亦然的一些主要原因从Python调用MATLAB可以出于需要:
  1. 促进团队成员之间的代码集成和合作者使用不同的框架和工具。
  2. 利用功能仅可在MATLAB,等应用程序和工具箱(包括第三方的MATLAB社区提供的)。
在这个博客中,我关注的焦点将MATLAB应用程序集成到一个Python深度学习工作流程计算机视觉和图像分析任务,强调传统的深度学习工作流的数据准备阶段(图1)。更具体地说,我展示你的团队可以利用丰富的互动功能选择MATLAB应用程序准备,标签,标注,预处理数据之前使用它作为神经网络的输入,和其他传统的深度学习管道。
图1:基本深度学习工作流程。
我将假设:(1)为计算机视觉深度学习管道在Python中,您计划适应和重用的新任务(s)(组);和(2)与新任务相关联的图像(s)将需要互动的行为,如注释、标签和分割。

的基本配方

假设你有MATLAB在您的计算机上安装和配置和你最喜欢的Python安装(例如,使用Jupyter笔记本),从一个Python脚本调用MATLAB是一个简单的过程,其主要步骤是:
  1. (MATLAB)安装MATLAB引擎为Python API,它提供了一个Python包调用matlab,允许您调用matlab函数和Python和matlab之间交换数据。
  2. (在Python中)配置路径和工作目录。
  3. (在Python中)开始一个新的MATLAB过程在后台:
进口matlab.engine eng = matlab.engine.start_matlab(桌面)
  1. (在Python中)设置变量(例如,道路图像文件夹)。
  2. (在Python中)调用MATLAB应用您所选择的(如图片标志应用程序)。
  3. (MATLAB)与选定的应用程序工作(交互)和导出结果变量在工作区中。
  4. (在Python中)拯救其他工作流所需的变量,例如,图像文件名和相关标签(及其边界框)。
  5. (在Python中)根据需要使用变量,例如,处理表格数据使用熊猫和使用地面实况与图像相关的标签。
  6. 重复步骤3到7多少次就需要您的工作流。
  7. (在Python中)退出MATLAB引擎:
eng.exit ()

一个例子

这是一个例子如何使用Python和MATLAB两个不同的任务范围内的医学图像分析(使用深度学习):皮肤病灶分割,(医疗)图像(ROI)标签。
尽管它们之间的差异,每个任务遵循相同的基本配方了。每个案例的细节描述。

任务一:皮肤病灶分割

任务:给定一个数据集的图像包含皮肤损伤,我们想建立一个细分每个图像的深度学习解决方案,即:,每个像素分类属于病变(前景)或其他图像(背景)。
存在的问题:为了训练和验证深神经网络用于图像分割,我们需要输入的图像以及分割面具(图2),这实际上是二进制图像前景像素(在这种情况下对应于病变)贴上白色和背景像素标记为黑色。网络是学习的工作细分面具的新图像。
图2:皮肤病灶分割:输入图像(左);二元分割掩模(中心);分割图像,由绿色轮廓勾勒出病变区域(右)。
利用卷积的基本工作流程通常包括网络架构,如U-net和它的变体,有多种实现的例子PythonMATLAB。解决方案的一个重要成分,然而,是手动创建二进制面具需要训练和验证。除了一些公开数据集,这个耗时的和专门的任务必须执行使用一个强大的交互式工具。
解决方案:使用MATLAB图像裂殖体应用程序创建二进制面具和利用现有(Python,为了这个例子)工作流可以买其他的东西。图像裂殖体允许您手动创建面具和提供了一些(半)自动技术来加快这一进程,并细化结果(图3和4)。最后分割掩模图像和原始图像的分割版本可以被导出到MATLAB工作区和/或保存到磁盘。
图3:图裂殖体的应用:加载图像包含皮肤病变。
图4:图片裂殖体的应用:应用图切割算法后的结果选择几个前景控制点(绿色)和一个背景控制点(红色)。面具出现覆盖的原始图像。

任务B:(医疗)图像(ROI)标签

任务:在类似环境的任务,我们想建立一个探测深度学习解决方案在每幅图像感兴趣的区域(roi),即,将图像中每个相关区域边界。最常见的投资回报率将病变;其他可能的roi包括贴纸,统治者标记,水泡沫,墨水痕迹,和其他工件。
存在的问题:训练和验证ROI /对象的深层神经网络检测,我们需要输入图像以及标签和坐标相关的ROI,可以表示为矩形(最常见)、多边形或基于像素面具(类似于分割使用的面具)。网络是学习的工作位置和标签相关的roi的新图像。
再一次,类似于我们所看到的任务,一个至关重要的组成部分的解决方案是手动创建roi(多边形和标签)所需的培训和验证。除了一些公开数据集,这个耗时的和专门的任务必须执行使用一个强大的交互式工具。
解决方案:使用MATLAB图片标志应用程序创建和标签roi和利用现有的一切工作流程。图片标志允许您创建ROI标签不同的形状,分配不同的名称和颜色,并提供一些算法来帮助自动化和加速过程和改进结果(图5)。由此产生的ROI可以导出到MATLAB工作区和随后用作变量在您的Python代码(见在GitHub的例子详情)。
图5:图片标志应用程序的上下文中dermoscopic图像包含工件。所选图像包含两个矩形roi,贴上病变贴纸

关键的外卖

深度学习项目是经常合作的努力,需要使用最好的工具来完成工作,使有效的代码集成,开发和测试策略,促进沟通、确保再现性代码。您的团队可以(而且应该)利用MATLAB和Python的最好在开发你的深度学习项目。在这篇文章里我已经展示了如何使用Python和MATLAB在一起几个任务相关的计算机视觉和医学图像分析的问题。
集成的Python和MATLAB大大超出了这篇文章的范围;看看下面列出的参考资料。

了解更多关于它

这篇文章的灵感来源于加西亚卢卡斯最近的博客文章和一系列的视频希瑟·高尔,Yann r,和他的同事们。我强烈建议你跟着他们,看看他们的非常丰富的例子和教程。如果你感兴趣的其他方面深度学习工作流程,这是一些我的博文:
|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。