社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

教学前沿 | 深度学习将教授的白板草图转换为可用的模型

MATLAB • 2 年前 • 440 次点击  

有些研究课题是为了回答理论问题。有些研究课题是为了解决研究人员自己的问题。伊斯坦布尔理工大学的人工智能和智能系统实验室主任、控制和自动化工程教授 Tufan Kumbasar 的研究就属于后一种情况。

控制和自动化工程师经常使用反馈控制架构 (FCA) 来设计闭环控制,目的是管理或调节系统的行为以实现预期的结果。系统会反馈当前状态并将其与期望状态进行比较,然后系统进行调整以保持期望状态。这种类型的控制系统用于设置汽车的巡航控制、调节加热系统和管理工厂。

通常,讲授控制理论的教授会在白板上绘制 FCA。为了展示和分析系统的动态行为(即,它在各种输入下的行为),教授会在模块图旁边绘图。但这需要时间,而且每次更改 FCA 后都要重新绘图。解读这些绘图可能也很困难。

FCA 白板绘图示例。(图片所有权:伊斯坦布尔理工大学)
“学生面临的主要挑战是识别我的板书和我糟糕的绘图,它们根本不成比例,”Kumbasar 说。“他们很难理解这种图。”

一种替代方法是在 MATLAB®和 Simulink® 等科学计算软件中重新创建 FCA,并将计算出的绘图投影到屏幕上。“MATLAB 有很好的可视化能力,”Kumbasar 说。”但在课堂上编码需要花费额外的时间和精力。”

然后,Kumbasar 想到了应用人工智能 (AI) 来帮助控制系统课堂上的教学。

“初衷有点自私,”他说。“当时我担任学院副院长,忙于许多行政工作。我同时承担部分教学工作。有一天,我筋疲力尽,告诉我的研究生,我真的很累。我的教学要么都在计算机上完成,要么都在白板上完成。”

然后,他找到正在积极合作研究深度学习方法的研究生 Dorukhan Erdem 和 Aykut Beke。“我说’Dorukhan,既然你们在一起研究新颖的结构。为我创建一个应用程序怎么样?我就当你们的实验小白鼠。’”

Kumbasar 教授设想的应用程序是一个深度学习系统,它可以拍摄白板的照片并在 MATLAB 中自动重新创建 FCA。这种想法在 MathWorks 框架内是可行的,其中像 Simulink 这样的控制工具与基于学科的工具箱(如 Deep Learning Toolbox™ 和 Computer Vision Toolbox™)在相同的环境中工作。

使用深度学习将白板转换为模型

甘作实验小白鼠意味着需要绘制很多 FCA。Erdem 对这些绘图进行拍摄并标注,以便计算机基于它们进行学习。五个院系的教师为六种 FCA 中的每一种至少绘制 10 个模块图,总共得到 306 张图像。教师在不同光照条件下绘制草图,使这个挑战更具有现实意义。然后,Erdem 和 Beke 手动标注所有模块和其中的符号。在训练期间,深度学习模型会猜测这些标签,并在不正确时调整其内部参数。

最终的应用程序流程发表在《IEEE Access》期刊上,包括五个步骤。

将白板草图转换为代码的步骤图。(图片所有权:伊斯坦布尔理工大学)

首先是识别草图与六种架构类型中的哪一种最匹配。Kumbasar 的团队使用了一种称为 ResNet-50 的预训练深度神经网络,它使用 50 个网络层和一些跳过中间层的长距离连接,从而提高性能。

306 张图像对于训练神经网络来说并不算多,尤其是这么大的神经网络,因此团队采用了两个技巧。首先是一种称为迁移学习的做法。他们使用预训练的 ResNet-50 网络(该网络基于成千上万张日常物品的照片进行训练)并替换了网络的最终层,从而仅基于他们自己的照片训练该层。第二个技巧是数据增强,该团队通过创建经过稍微旋转或缩放的版本来增加图像的数量。经过训练后,他们的流程的第一个步骤在对手写反馈控制架构进行分类方面达到了 89% 的准确度。

流程中的第二个步骤是检测模块。程序将图像转换为二值图像 - 在黑色背景上显示白线,没有其他颜色或灰色。然后,它去除了字符和噪声。接下来,它填充封闭的形状,并将模块与由模块之间的反馈回路创建的封闭形状分离开来。

第三个步骤是,流程识别在模块中书写的字符,包括数字和算术运算符。它将图像二值化,围绕每个字符进行裁剪,并应用基于 3920 个图像进行训练的另一个神经网络。

遇到的一个困难是区分“5”和“s”。Kumbasar 说,“我写的 5 和 s 太相似了。Dorukhan 总是抱怨我的书写很糟糕。控制工程师凭直觉会认为我不会写 55+1,写的应该是 5s+1。但 AI 系统不具备这种直觉。”尽管如此,此阶段的准确率达到了 96%。

第四个步骤是,应用程序将字符组合成 MATLAB 函数。如果一个字符位于另一个字符的右上方,系统称之为指数,并插入“^”。如果一条水平线的上下都有字符,系统将其视为除法而不是减法。

用深度学习分割和区分字符。(图片所有权:伊斯坦布尔理工大学)

在第五个步骤中,工作流将这些函数放到正确的模块中,在 MATLAB 中将它们连接成一个完整的 FCA。它还基于团队创建的模板创建一个 Simulink 图。  

Erdem 表示,对于使用 ResNet-50 这样的神经网络进行深度学习来说,MATLAB 是有用的解决方案。Kumbasar 补充说,通过 MATLAB 可以方便地进行流程步骤之间的集成。他认为,“在 MATLAB 中,将数据数组和图像从一个工具箱发送到另一个工具箱或从同一个工作区中读取数据是很容易的。”

从草图开始
“当这个 FCA 应用程序实时工作时,我感到很惊讶,”Kumbasar 说。“我们在不同光照条件下测试整个流程,并混合了各人的书写,可以说是尽一切可能增加了难度。

各个单独部分都能良好地工作。Kumbasar 补充说,“但一旦您连接整个流程,如果一个部分出错,另一个也会受到影响。因此,误差始终会在从输入到输出的过程中放大。”在这里,一切都在按部就班进行。“Dorukhan 说这是有趣的工程,让他充满动力。他找了很多超高难度的测试图像。”

整个系统的成功程度很难度量,该团队尚未考察学生在实际教学中对该系统的体验,新冠疫情就出现了。他们在 YouTube 上发布了一段视频,视频中教师在白板上绘制 FCA。片刻后,相同的 FCA 出现在白板上方的 Simulink 投影中,随后是展示其行为的绘图。

提供白板绘图的教授之一 İlker Üstoğlu 说,他对此印象深刻。如果该应用程序作为产品推出,他会使用它。“它为教学提供了便利。”

FCA 白板绘图实时转换为 Simulink。(视频所有权:伊斯坦布尔理工大学)
进入理论领域
不管该系统多么出色,仍有部分课堂不准备用 MATLAB 转换白板 FCA。Erdem 对该应用程序进行了优化,例如将 ResNet 限制在 50 层,使其可以仅在一个 GPU 上实时运行,但它仍需要一台高分辨率相机和一台具有GPU的笔记本电脑,而许多课堂并未配备这些设备。
“科学研究或者是出于好奇,或者是出于满足需求。这项研究是满足我的个人需求。”
—— Tufan Kumbasar,伊斯坦布尔理工大学人工智能和智能系统实验主任、控制和自动化工程教授
借助深度学习,应用程序能够将不同风格的书写转换为 MATLAB 函数,并将函数放在正确的模块中。(图片所有权:伊斯坦布尔理工大学)

与此同时,研究人员正在考虑进行几项改进。Erdem 希望该程序能够处理六种以上的架构。当字符接触到周围的框时,系统也会难以识别,因此 Kumbasar 增加了置信水平,使系统能够指示其标签的确定性。

集成模糊逻辑也是一个优先事项。“在模糊逻辑中,您不会说超过一定身高的每个人都是高个子,而其他人都不是,”Kumbasar 解释道。“人们可能会说个子有点高,从而导致后续更微妙的决定。在 MATLAB 中很容易建立模糊层,模糊层将其与神经网络结合使用,或用于组成完整的模糊系统。”

如果该流程真的成为一种产品,其应用范围可能不仅限于课堂上。教授可能会用它将学生的手写试卷或课下作业转换为 MATLAB 模型来评分。学生可能用它将自己的课堂笔记数字化,并在 MATLAB 中使用 FCA。Kumbasar 说他想在研究中做同样的事情。MathWorks 的工程师 Marco Rossi 指出,许多学生和研究人员更喜欢用笔和纸来分析问题,然后将手写内容放入 Simulink 中来生成 C 代码。这种习惯可能源于控制理论的教学方式。但有了类似 Kumbasar 推出的这种工具,可能会促使人们在设计过程中更早地从纸上转移到屏幕上,从而更轻松地使用模块。

除了解决他自己的问题和推进到理论研究之外,Kumbasar 还提到此项目的另一个好处。“这项研究也能很好地激励本科生,”他说。让他们认识到工程灵感可以来自每天面对的难题。“科学研究或者是出于好奇,或者是出于满足需求。”Kumbasar 说。“这项研究满足了我的个人需求。”

    ◆  

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/150465
 
440 次点击